我想使用 Dart 代码动态设置特定容器的子小部件,特别是在按下按钮时。我应该从哪里开始完成这项工作?我已经探索过使用 PageView,但这并不是我真正想要的。
如果我是 Web 开发者,我可以很容易地通过它的 ID 来编辑一个元素。是否有相当于 HTML ID 的 Flutter?控制器似乎在这里受到限制。
尝试这个
class MyHomePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyHomePageState();
}
}
class _MyHomePageState extends State<MyHomePage> {
Widget _dynamicWidget = FlutterLogo();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_dynamicWidget,
FlatButton(
onPressed: () {
setState(() {
_dynamicWidget = Container(
color: Colors.red,
width: 50,
height: 50,
);
});
},
child: Text('Change')),
],
),
),
);
}
}
Flutter 并不是这样工作的。Flutter 和 React 一样,是一种声明式环境,而不是命令式环境。小部件树是从状态构建的,因此,树中较高的小部件不知道,甚至不关心它的孩子。
https://flutter.dev/docs/get-started/flutter-for/declarative