Dart 避免无限活动创建

Dart 避免无限活动创建,dart,navigator,flutter,Dart,Navigator,Flutter,每次活动我都使用这个抽屉: final MyDrawer _drawer = new MyDrawer(); class MyDrawer extends StatefulWidget { @override _MyDrawerState createState() => new _MyDrawerState(); } class _MyDrawerState extends State<MyDrawer> { @override Widget build(

每次活动我都使用这个抽屉:

final MyDrawer _drawer = new MyDrawer();

class MyDrawer extends StatefulWidget {
  @override
  _MyDrawerState createState() => new _MyDrawerState();
}

class _MyDrawerState extends State<MyDrawer> {
  @override
  Widget build(BuildContext context) {
    return new Drawer(
      child: new ListView(
          children: <Widget> [
            new DrawerHeader(
              child: new Text("Header"),
            ),
            new ListTile(
              leading: new Icon(Icons.home),
              title: new Text("Home"),
              onTap: () {
                Navigator.popAndPushNamed(context, "/");
              },

            ),
            new ListTile(
                leading: new Icon(Icons.android),
                title: new Text("Another Page"),
                onTap: () {
                  Navigator.popAndPushNamed(context, AnotherPage.routeName);
                },

            ),new ListTile(
                leading: new Icon(Icons.email),
                title: new Text("Third Page"),
                onTap: () {
                  Navigator.popAndPushNamed(context, ThirdPage.routeName);
                }
            )
          ]
      ),
    );
  }
}
我正在寻找一种方法,使“活动”只有一个实例,而不是在每次单击菜单项时创建一个新的“活动”,我尝试了:

ThirdPage.routeName: (BuildContext context) =>
        _thirdPage == null ? _thirdPage = new ThirdPage(title: "Third Page") : _thirdPage

是否可以根据当前活动调整抽屉实例?

我想您正在尝试实现单例类,即只有一个实例的类

Singleton类的一个示例:

class MyDrawer extends StatefulWidget{
  static final MyDrawer _drawer = new MyDrawer._internal();

  factory MyDrawer() {
    return _drawer;
  }

  MyDrawer._internal();

  @override
  Widget build(BuildContext context){
    return new Text("Drawer")
  }
}
有关在dart中实现单例类的其他方法,您可以查看答案

希望有帮助

class MyDrawer extends StatefulWidget{
  static final MyDrawer _drawer = new MyDrawer._internal();

  factory MyDrawer() {
    return _drawer;
  }

  MyDrawer._internal();

  @override
  Widget build(BuildContext context){
    return new Text("Drawer")
  }
}