细碎的玩意·其二
有关构造函数
Section titled “有关构造函数”假如说有这样的代码:
class AnimatedListRoute extends StatefulWidget { const AnimatedListRoute({Key? key}) : super(key: key); ...}其中的AnimatedListRoute({Key? key}) : super(key: key)是啥呢
其实这就是和C艹里面的类的构造函数语法很相似的构造函数,不过嘛……C艹的构造函数继承就没这么简单了
有关展开操作符
Section titled “有关展开操作符”像
children: [ if (flag)...[ Text('233'), Text('666') ]]这样就能将if后面的东西都添加到children里面了
在Flutter里面,dart文件是不能有大写字母的,于是只能用下划线来隔开单词,这就和安卓原生的观感差别不小
命名路由的命名也是如此,但是不小心用大写字母甚至不会报错,非常丑陋
有关界面更新
Section titled “有关界面更新”真是常见呢
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}