一、创建Flutter应用模板
// 1、导入了 Material UI 组件库
import 'package:flutter/material.dart';
// 2、应用入口
// main 函数中调用了runApp 方法,
//它的功能是启动Flutter应用。
//runApp它接受一个 Widget参数,
//在本示例中它是一个MyApp对象,
//MyApp()是 Flutter 应用的根组件
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
// MaterialApp 是Material 库中提供的 Flutter APP 框架,
//通过它可以设置应用的名称、主题、语言、首页及路由列表等。MaterialApp也是一个 widget。
theme: ThemeData(
// 主题颜色
primarySwatch: Colors.red,
),
debugShowCheckedModeBanner: false, // 去除右上角Debug
home: const MyHomePage(), // 应用首页路由
);
}
}
// 无状态组件
// 快捷ssw
class MyHomePage extends StatelessWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
// Scaffold 是 Material 库中提供的页面脚手架,
//它提供了默认的导航栏、标题和包含主屏幕 widget 树(后同“组件树”或“部件树”)的body属性
//,组件树可以很复杂。本书后面示例中,路由默认都是通过Scaffold创建。
appBar: AppBar(
// 应用名称
title: const Text("你好Flutter,我是appBar"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: const [Text('我是页面body部分')],
),
),
);
}
}
二、有状态的组件(Stateful widget) 和无状态的组件(Stateless widget)有两点不同
1、Stateful widget 可以拥有状态,这些状态在 widget 生命周期中是可以变的,而 Stateless widget 是不可变的。
2、Stateful widget 至少由两个类组成:
一个StatefulWidget类。
一个 State类; StatefulWidget类本身是不变的,但是State类中持有的状态在 widget 生命周期中可能会发生变化。