【问题标题】:Navigator.pop(context) throws exceptionNavigator.pop(context) 抛出异常
【发布时间】:2018-07-24 14:10:58
【问题描述】:

我试图实现一个同时具有抽屉和 TabBar 演示的 UI,为此我尝试了以下操作:-

        import 'package:flutter/material.dart';

void main() => runApp(new NewApp());

class NewApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: DefaultTabController(
        length: 3,
        child: Scaffold(
          drawer: Drawer(
            child: ListView(

              padding: EdgeInsets.zero,
              children: <Widget>[
                DrawerHeader(
                  child: Text("Drawer Header"),
                  decoration: BoxDecoration(
                    color: Colors.blue,
                  ),
                ),
                ListTile(
                  title: Text("Item1"),
                  onTap: (){
                    Navigator.pop(context);
                  },
                ),
                ListTile(
                  title: Text("Item2"),
                  onTap: (){
                    Navigator.pop(context);
                  },
                ),

              ],
            ),
          ),
          appBar: AppBar(
            bottom: TabBar(
              tabs: [
                Tab(icon: Icon(Icons.room),text: "Room",),
                Tab(icon: Icon(Icons.restaurant),text: "Restaurant",),
                Tab(icon: Icon(Icons.school),text: "School"),
              ],
            ),
            title: Text("Tab Bar View + Drawer"),
          ),
          body: TabBarView(
            children: [
              Icon(Icons.room),
              Icon(Icons.restaurant),
              Icon(Icons.school),
            ],
          ),
        ),
      ),
    );
     }
     }

现在这给了我一个错误:- 引发了另一个异常: Navigator operation requested with a 不包含导航器的上下文。

如果有人有解决方案,请帮助清除它。 谢谢。

【问题讨论】:

    标签: android dart flutter drawer navigator


    【解决方案1】:

    我不知道错误/修复的原因(我做了并且有效)。有人,请解释它是如何工作的。我只是将DefaultTabController 包装到另一个无状态小部件Home 中。它工作正常。请参考下面的代码。

    import 'package:flutter/material.dart';
    
    void main() => runApp(new NewApp());
    
    class NewApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          home: Home(),
        );
      }
    }
    
    class Home extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return DefaultTabController(
          length: 3,
          child: Scaffold(
            drawer: Drawer(
              child: ListView(
    
                padding: EdgeInsets.zero,
                children: <Widget>[
                  DrawerHeader(
                    child: Text("Drawer Header"),
                    decoration: BoxDecoration(
                      color: Colors.blue,
                    ),
                  ),
                  ListTile(
                    title: Text("Item1"),
                    onTap: (){
                      Navigator.pop(context);
                    },
                  ),
                  ListTile(
                    title: Text("Item2"),
                    onTap: (){
                      Navigator.pop(context);
                    },
                  ),
    
                ],
              ),
            ),
            appBar: AppBar(
              bottom: TabBar(
                tabs: [
                  Tab(icon: Icon(Icons.room),text: "Room",),
                  Tab(icon: Icon(Icons.restaurant),text: "Restaurant",),
                  Tab(icon: Icon(Icons.school),text: "School"),
                ],
              ),
              title: Text("Tab Bar View + Drawer"),
            ),
            body: TabBarView(
              children: [
                Icon(Icons.room),
                Icon(Icons.restaurant),
                Icon(Icons.school),
              ],
            ),
          ),
        );
        // TODO: implement build
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-11
      • 2023-04-09
      • 2013-05-24
      • 2022-01-25
      • 2019-08-28
      • 2019-05-12
      • 1970-01-01
      • 2021-08-17
      • 2011-05-30
      相关资源
      最近更新 更多