【发布时间】:2020-08-27 12:45:11
【问题描述】:
当另一个有状态小部件中的值发生变化时,如何更新我的 UI?
我创建了一个有状态的类 (Test2),它构建了一个小部件。然后在我的主课中,我有一个 Test2 小部件列表。最后,我正在遍历列表并呈现 Test2 小部件。
但是,我想更新 Test2 小部件之一中的值,然后相应地更新主 UI。
我该怎么做?
文件:test2.dart
class Test2 extends StatefulWidget {
Test2({this.responseId, this.message});
final String responseId;
final String message;
bool strike =false;
@override
_Test2State createState() => _Test2State();
}
class _Test2State extends State<Test2> {
@override
Widget build(BuildContext context) {
return Container(
child: Text(
widget.responseId + widget.message,
style: (widget.strike)?TextStyle(decoration: TextDecoration.none):TextStyle(decoration: TextDecoration.underline)
),
);
}
}
文件:home.dart
主类
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<Test2> _counter =List();
int cnt =0;
@override
void initState() {
super.initState();
_counter.add(Test2(message: "message",responseId:"1"));
_counter.add(Test2(message: "message",responseId:"2"));
_counter.add(Test2(message: "message",responseId:"3"));
}
在我的构建方法中
for(int i=0;i<_counter.length;i++)...[
_counter[i]
],
按钮点击
void _incrementCounter() {
for(int i=0;i<_counter.length;i++){
if(_counter[i].responseId =="1"){
_counter[i].strike =true;
}
}
setState(() {
});
}
【问题讨论】:
标签: flutter