按下新屏幕后,默认后退按钮不显示

时间:2019-05-21 15:03:25

标签: dart flutter

我从主屏幕上推送了一个新的屏幕,它已经顺利导航并显示了后退按钮,但是现在我运行该按钮,默认按钮就没有显示在我的代码中。

我所做的唯一更改是将主文件中的路由从taskScreen()更改为task()。 但这是必不可少的,因为我想从第二个屏幕中获取更多路线,因此必须返回Material App。 我如何才能将默认的后退按钮找回来?

我的代码:

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: DefaultTabController(length: 2,child: MyHomePage(title: '')),
      routes: <String, WidgetBuilder>{
       "/TaskScreen": (BuildContext context) => new task(), //CHANGED HERE 
      },
    );
  }
}

class MyHomePage extends StatelessWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

 @override
  Widget build(BuildContext context){

   return Scaffold(

     appBar: AppBar(
    ..
     ),
     body: ...
 }
}

我的第二个屏幕

class task extends StatelessWidget{
  @override
  Widget build(BuildContext context) {

    return MaterialApp(
        title: 'Task',
        home: new taskScreen(),
        routes: <String, WidgetBuilder>{
          "/Completed": (BuildContext context) => new Completed()
        }
    );
  }
}

class taskScreen extends StatefulWidget{
  @override
  taskState createState() => new taskState();
}

class taskState extends State<taskScreen> {

  @override
  Widget build(BuildContext context) {

  Column taskScreen = Column (...)

    return Scaffold(
      appBar: AppBar(
          title: Text('Task Screen')),
      body: taskScreen,
    );
  }

}

3 个答案:

答案 0 :(得分:1)

类名必须以大写字母开头。您的结构有误,MaterialApp必须只有一次。 https://dart.dev/guides/language/language-tour

答案 1 :(得分:0)

对我来说,这发生在我向所有各种AppBar添加绘图时...快速搜索提供了一种对我有用的解决方案: 我在AppBar中添加了以下内容,这些内容使flutter可以有意识地决定是否有返回到...的内容。

automaticallyImplyLeading: true,

然后,我定义了“行距”的外观(也显示在应用程序栏中):

leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: () => Navigator.pop(context, false),
        ),

长话短说:在相应的AppBar中添加以下内容即可完成工作:

        leading: IconButton(
      icon: Icon(Icons.arrow_back),
      onPressed: () => Navigator.pop(context, false),
    ),

答案 2 :(得分:-1)

移除第二条路由 MaterialApp 并用 AppBar 替换