MaterialApp、Scaffold 与主题系统

理解 MaterialApp、Scaffold、AppBar、ThemeData 的关系,建立全局主题管理习惯。

Material主题

MaterialApp 是应用入口

MaterialApp 提供路由、主题、本地化、标题等应用级配置。多数 Material 风格 App 都会从 MaterialApp 开始。Scaffold 则提供页面骨架,例如 AppBar、body、drawer、bottomNavigationBar、floatingActionButton。

主题不要写散

颜色、字号、圆角、按钮风格如果散落在每个页面,后期改版会很痛苦。建议尽早使用 ThemeData 做全局管理。

MaterialApp(
  title: 'Flutter Blog',
  theme: ThemeData(
    colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
    useMaterial3: true,
    inputDecorationTheme: const InputDecorationTheme(
      border: OutlineInputBorder(),
    ),
  ),
  home: const HomePage(),
)

页面骨架示例

Scaffold(
  appBar: AppBar(title: const Text('文章列表')),
  body: const ArticleList(),
  floatingActionButton: FloatingActionButton(
    onPressed: () {},
    child: const Icon(Icons.add),
  ),
)

官方参考