有关构造函数
假如说有这样的代码:
class AnimatedListRoute extends StatefulWidget {
const AnimatedListRoute({Key? key}) : super(key: key);
...
}
其中的AnimatedListRoute({Key? key}) : super(key: key)
是啥呢
其实这就是和C艹里面的类的构造函数语法很相似的构造函数,不过嘛……C艹的构造函数继承就没这么简单了
有关展开操作符
像
children: [
if (flag)...[
Text('233'),
Text('666')
]
]
这样就能将if
后面的东西都添加到children
里面了
有关命名
在Flutter里面,dart文件是不能有大写字母的,于是只能用下划线来隔开单词,这就和安卓原生的观感差别不小
命名路由的命名也是如此,但是不小心用大写字母甚至不会报错,非常丑陋
有关界面更新
真是常见呢
setState(() {});
是setState()
的常见形态,花括号里当然放的是函数体
setState()
可以告诉框架当前组件的状态(State) 发生了某些变化,界面需要重新构建(rebuild) 了
用人话来说,就是执行完函数体里面的代码后重新加载这个组件使其更新
构建的时候要调用build()
这个方法,所以千万不要在build()
里面放setState()
,会死循环的
当然,就算花括号里什么也不写,界面也是会被更新的……
// 来自deepseek的例子
class User {
String name;
}
final user = User(name: 'Alice');
void _updateName() {
user.name = 'Bob'; // 修改对象属性
setState(() {}); // ✅ 必须调用 setState
}
上篇这一天天的