细碎的玩意·其二

 

有关构造函数

假如说有这样的代码:

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
}