【问题标题】:Cupetino navigation bar middle title not showingCupertino 导航栏中间标题未显示
【发布时间】:2020-06-22 17:26:08
【问题描述】:

您好,我正在尝试为 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,
                ),
              ],
            ),

      )

【问题讨论】:

    标签: flutter


    【解决方案1】:

    我刚刚遇到了类似的问题,发现 middle 小部件没有显示,因为我的 trailing 小部件被认为(不知何故)对于导航栏的该部分来说太大了。

    由于需要较小尺寸的 leadingtrailing 小部件,有些人似乎遇到了类似的问题:https://github.com/flutter/flutter/issues/36689

    这是我用来让它工作的代码(旧的和新的)。

    原始代码(不起作用):

    @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()],
          ),
        ),
      );
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多