Flutter中的Scaffold和MaterialApp有什么区别?

ric*_*hah 12 dart flutter

我有两个屏幕,其中
第一个: Firebase中的数据列表
第二个:在该屏幕中添加数据,所以我想回到第一个屏幕,一切正常,只有当我返回时出现黑屏。现在问题已经不复存在,我已经搜索了它的工作原理,但是仍然不清楚我对此的概念,谁能描述它的工作原理吗?

之前:

return new MaterialApp(
      title: "AddEditNames ",
      home: new AddEditNameScreen(),
);
Run Code Online (Sandbox Code Playgroud)

之后:当我替换为

 return new Scaffold(
      backgroundColor: Color.fromRGBO(30, 30, 30, 1.0),
      body: new AddEditNameScreen(),
      appBar: new AppBar(
        elevation: 0.0,
        backgroundColor: Colors.blueAccent,
        actions: <Widget>[
        ],
        title: new Text(
          "AddEditNames",
          style: new TextStyle(color: Colors.white),
        ),
        centerTitle: true,
      ),
 );
Run Code Online (Sandbox Code Playgroud)

Cop*_*oad 15

MaterialApp 是应用程序的起点,它告诉Flutter您将使用材料组件并遵循应用程序中的材料设计。

Scaffold下使用时MaterialApp,它给你很多基本功能,如AppBar,BottomNavigationBar,Drawer,FloatingActionButton等。

因此,这就是典型应用程序的开始方式。

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(),
      body: YourWidget(),
    ),
  ));
}
Run Code Online (Sandbox Code Playgroud)

  • @BalajiRamadoss 整个应用程序应该只有一个“MaterialApp”,除非您要做一些古怪的事情。 (2认同)
  • 如果 MaterialApp 已经告诉我们可以使用 AppBar 等 Material 组件,那么为什么还要使用 Scaffold?反之亦然。 (2认同)

ibh*_*ana 5

MaterialApp是引入了许多微件的微件(Navigator,Theme)所需要的构建材料设计的应用程序。

虽然Scaffold可以实现大多数应用程序具有的实质性标准应用程序小部件。如AppBar,BottomAppBar,FloatingActionButton,BottomSheet,Drawer,Snackbar。

在Scaffold被设计为用于MaterialApp单顶层容器虽然没有必要要嵌套Scaffold。

另请查看Flutter官方文档中的MaterialApp和Scaffold。

  • Imo“虽然没有必要嵌套 Scaffold,但`Scaffold` 被设计为`MaterialApp` 的单个顶级容器”听起来像`MaterialApp` 通常只包含一个`Scaffold`。多页和“导航器”不是这种情况。 (2认同)