在我的应用程序中,我有3个无状态屏幕,屏幕“ A”,屏幕“ B”,屏幕“ C”。
在我的物料应用程序中,我将屏幕“ A”用作主页。
MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
textTheme: Theme.of(context).textTheme.apply(
bodyColor: LightColors.kDarkBlue,
displayColor: LightColors.kDarkBlue,
fontFamily: 'Poppins'
),
),
home: ScreenA(),
debugShowCheckedModeBanner: false,
),
在屏幕“ A”内部,我导航到屏幕“ B”,从屏幕“ B”中,我导航到屏幕“ C”。
内部屏幕“ A”
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ScreenB(),
),
);
内部屏幕“ B”
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ScreenC(),
),
);
但是当我检查颤振布局时,我就变成了这样。
实际
ScreenA
ScreenB
ScreenC
例外
ScreenA
ScreenB
我是新手。有人可以帮我解释或实现吗?
谢谢
答案 0 :(得分:0)
您可以尝试其他方法。也许改用命名路由。 您可以将每个屏幕设置为独立屏幕,然后使用路径浏览它们。
https://flutter.dev/docs/cookbook/navigation/named-routes
通过这种方式,您可以在每个单独的页面中注入所需的内容。
为此,您必须在创建应用时定义路线:
MaterialApp(
// Start the app with the "/" named route. In this case, the app starts
// on the FirstScreen widget.
initialRoute: '/',
routes: {
// When navigating to the "/" route, build the FirstScreen widget.
'/': (context) => FirstScreen(),
// When navigating to the "/second" route, build the SecondScreen widget.
'/second': (context) => SecondScreen(),
},
);
然后只需使用Navigator.pushNamed()方法调用每个路由。例如,如果您在按钮内执行此操作。
//Within the `FirstScreen` widget
onPressed: () {
//Navigate to the second screen using a named route.
Navigator.pushNamed(context, '/second');
}