我从主屏幕上推送了一个新的屏幕,它已经顺利导航并显示了后退按钮,但是现在我运行该按钮,默认按钮就没有显示在我的代码中。
我所做的唯一更改是将主文件中的路由从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,
);
}
}
答案 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 替换