跳转到内容

细碎的玩意·其二

假如说有这样的代码:

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
}