颤振屏幕层次结构

时间:2020-05-20 06:30:35

标签: flutter flutter-layout

在我的应用程序中,我有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

    • ScreenC

我是新手。有人可以帮我解释或实现吗?

谢谢

1 个答案:

答案 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');
     }