flutter - Cupetino 导航栏中间标题未显示
问题描述
您好,我正在尝试为 cupertinonavigationbar 中间小部件的应用栏提供标题,但文本未显示。我尝试更改中间标题文本颜色仍未显示。我在这里缺少什么?
static buildAppBar(
{bool isIOS,
Function onPressedShoppingSearch,
String heroTag,
String middleTitle}) {
return (isIOS == true)
? CupertinoNavigationBar(
middle: (middleTitle != null)
? Text(
middleTitle,
style: TextStyle(color: Colors.grey, fontSize: 18),
)
: Text(''),
transitionBetweenRoutes: false,
automaticallyImplyMiddle: true,
automaticallyImplyLeading: true,
heroTag: heroTag,
backgroundColor: Colors.white,
trailing: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
GestureDetector(
child: Icon(
FrinoIcons.f_search_classic,
color: Colors.red,
size: 23,
),
onTap: onPressedShoppingSearch,
),
const SizedBox(width: 6),
const Icon(
FrinoIcons.f_cart,
color: Colors.red,
size: 23,
),
],
),
)
解决方案
我刚刚遇到了类似的问题,发现middle
小部件没有显示,因为我的trailing
小部件被认为(不知何故)对于导航栏的该部分来说太大了。
由于需要较小尺寸的小部件,有些人似乎遇到了类似的问题:leading
https : //github.com/flutter/flutter/issues/36689trailing
这是我用来让它工作的代码(旧的和新的)。
原始代码(不起作用):
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
leading: Container(),
middle: Text(
'Filters'.tr,
),
trailing: _closeButton(),
),
backgroundColor: Colors.white,
child: SafeArea(
child: Stack(
children: [_closeButton()],
),
),
);
}
Widget _closeButton() {
return Align(
alignment: Alignment.topRight,
child: Padding(
padding: EdgeInsets.fromLTRB(0, 0, 0, 0),
child: Container(
height: 32,
width: 32,
child: TextButton(
onPressed: () => _closeView(),
child: Image(
color: Colors.black,
image: AssetImage(SignalAsset.imagePath('icon_cross')),
)),
),
),
);
}
新代码(有效):
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
leading: Container(),
middle: Text(
'Filters'.tr,
),
trailing: GestureDetector(
child: Image(
color: Colors.black,
image: AssetImage(SignalAsset.imagePath('icon_cross')),
),
onTap: () => _closeView(),
),
),
backgroundColor: Colors.white,
child: SafeArea(
child: Stack(
children: [_closeButton()],
),
),
);
}
推荐阅读
- java - 基于人员类参数的优先队列
- excel - 运行时错误 424:需要对象。我错过了什么?
- asp.net - Asp.net core 2.1 Web App 无法在 IIS 上正确呈现
- javascript - scrollIntoView 函数不会滚动到任何地方
- reactjs - React:编译失败;index.js
- javascript - JavaScript 中的动画问题
- angularjs - angular 7 *ngFor 嵌套数组迭代
- ruby-on-rails - 无法将 IP 地址“xxx”的 RSA 主机密钥添加到已知主机列表 (/home/webapp/.ssh/known_hosts)
- string - 如何在 CMake 表达式中连接两个文字字符串?
- c# - 使用数据契约在所有层中使用 DTO 是否很好?