【问题标题】:TabBar is not showing another screen as a full screen - flutterTabBar 未将另一个屏幕显示为全屏 - 颤动
【发布时间】:2019-12-26 09:24:35
【问题描述】:

我使用底部导航栏作为我的主页。 比在项目的底部导航中单击打开一个包含 TabBarView 的屏幕。 在我的标签栏视图中,我正在点击容器::

onTap: (){
                  // _tabController.animateTo(value)
                  Navigator.push(context,
                      MaterialPageRoute(builder: (context) => Screen(),fullscreenDialog: true));
                }

我从上面的代码中得到了如下图所示的输出,我需要将第二个屏幕显示为全屏,就像没有标签栏屏幕的应用栏一样。

【问题讨论】:

  • 您想隐藏特定屏幕的应用栏和标签栏吗?
  • 是的,当然@easeccy
  • 你知道吗? @Nardeepsinh Vaghela

标签: flutter flutter-layout


【解决方案1】:

我发现要从存在 appBar 的屏幕导航到隐藏 appBar 的屏幕,最适合我的方法是稍微修改 MaterialPageRoute

      Navigator.of(context, rootNavigator: true).push(
        MaterialPageRoute(
          builder: (context) => HomeScreen(),
        ),
      );

对我来说,完成您正在寻找的关键位是将rootNavigator: true 添加到命令中,因为这会将页面推送到 appBar 的顶部。

【讨论】:

  • 请注意,使用根导航器会中断屏幕跟踪以进行分析,因为它无法在 RouteObserver.didPop 上提供正确的先前路线
【解决方案2】:

如果你想为特定状态隐藏 AppBar 和 TabBarView,你可以在你的小部件树上放置条件。

class _ExampleState extends State<Example> {
  bool _control = true;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: _control
            ? AppBar(
                title: Text("Title Text"),
              )
            : null,
        body: RaisedButton(
          onPressed: () {
            setState(() {
              _control = !_control;
            });
          },
          child: Text('Toggle AppBar'),
        ));
  }
}

【讨论】:

  • 我有两个不同的屏幕,所以设置状态不起作用
  • 我需要了解更多关于您的应用程序结构的信息。这取决于您如何进行状态管理。
猜你喜欢
  • 2019-07-18
  • 2019-08-13
  • 2023-01-11
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
相关资源
最近更新 更多