flutter学习1

1.StatelessWidget与StatefulWidget

StatelessWidget是一种内部数据不需要随数据变化而更新的widget,反之,StatefulWidget是需要随数据变化的

2.Stateless

1.需要重写build方法

Dart 复制代码
class MyPaddingText extends StatelessWidget {
  const MyPaddingText({super.key, required this.text});
  // 构造参数需要final
  final String text;
  // 需要返回一个widget
  @override
  Widget build(BuildContext context) => Padding(
    padding: EdgeInsetsGeometry.all(12),
    child: Text(text),
  );
}

2.fun => result

可以观察上面重写的build方法,他的方法体就是直接return了一个结果

还有一种写法如下

Dart 复制代码
@override
Widget build(BuildContext context) {
  return Padding(
    padding: EdgeInsetsGeometry.all(12),
    child: Text(text),
  );
}

如果使用koltin来理解,就是下面这种写法

Kotlin 复制代码
fun build(context: BuildContext) = Padding(
    padding: EdgeInsetsGeometry.all(12),
    child: Text(text)
)

3.StatefulWidget

从我看这个写法来讲,我觉得是把状态Widget分为了两部分,一部分是直接的普通无状态的数据定义,类似于外部声明一些和Widget无关的属性,另一部分是状态和对应的Widget

直观来讲的话重写这个需要做两件事:

  1. 重写createState返回一个State<StatefunWidget>
  2. 重写要返回的这个state中的build方法返回widget

1.需要重写createState方法

关键是内容当中返回一个State对象

1.State对象的Demo

Dart 复制代码
class MyHomePageState extends State<MyHomePage> {
  // 计数器
  int counter = 0;

  void incrementCounter() {
    setState(() {
      counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    Color barBackgroundColor = Theme.of(context).colorScheme.inversePrimary;
    Text text = Text(widget.title);
    return Scaffold(
      // appBar
      appBar: AppBar(backgroundColor: barBackgroundColor, title: text),
      // 这个是中间的部分
      body: Center(
        child: Column(
          // 枚举类型可以直接.center, 相当于MainAxisAlignment.center
          mainAxisAlignment: .center,
          children: [
            MyPaddingText(text: "这是第一行内容"),
            Text("这是第一行内容"),
            Text("这是第2行内容"),
            Text("这是第3行内容"),
            Text("这是第4行内容"),
            Text("这是第5行内容"),
          ],
        ),
      ),
      // 这个是浮动按钮
      floatingActionButton: FloatingActionButton(
        onPressed: incrementCounter,
        tooltip: '加法浮动按钮',
        child: const Icon(Icons.add),
      ),
    );
  }
}

2.State对象中的注意事项

  1. State对象持有他在继承时,泛型里填写的StatefulWidget类型的对象
  2. 持有的StatefulWidget对象就是调用createState时的那个对象

2.重写State中的build方法

这个build方法返回的值就是这个StatefulWidget真正的要看见的Widget

相关推荐
微祎_2 小时前
Flutter for OpenHarmony:形状拼图游戏开发全指南 - 基于Flutter CustomPaint的可拖拽矢量拼图实现与设计理念
flutter
red_redemption2 小时前
自由学习记录(116)
学习
不爱吃糖的程序媛3 小时前
解锁Flutter鸿蒙开发新姿势——flutter_ohfeatures插件集实战指南
flutter
r i c k3 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦4 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
一只大侠的侠4 小时前
React Native开源鸿蒙跨平台训练营 Day16自定义 useForm 高性能验证
flutter·开源·harmonyos
子春一4 小时前
Flutter for OpenHarmony:绿氧 - 基于Flutter的呼吸训练应用开发实践与身心交互设计
flutter·交互
ujainu4 小时前
告别杂乱!Flutter + OpenHarmony 鸿蒙记事本的标签与分类管理(三)
android·flutter·openharmony
浅念-4 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
ZH15455891315 小时前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter