Flutter 是否可以在颤振中使用从for循环创建的单选列表平铺来输出和选择构造函数中的数据
这是我做的构造器Flutter 是否可以在颤振中使用从for循环创建的单选列表平铺来输出和选择构造函数中的数据,flutter,Flutter,这是我做的构造器 class User { String strength1; String strength2; String strength3; String strength4; String strength5; User({this.strength1, this.strength2, this.strength3,this.strength4,this.strength5}); Map<Str
class User {
String strength1;
String strength2;
String strength3;
String strength4;
String strength5;
User({this.strength1, this.strength2, this.strength3,this.strength4,this.strength5});
Map<String, dynamic>toMap(){
var map = <String, dynamic>{
'strength1' : strength1,
'strength2' : strength2,
'strength3' : strength3,
'strength4' : strength4,
'strength5' : strength5,
};
return map;
}
User.fromMap(Map <String, dynamic>map){
strength1 = map['strength1'];
strength2 = map['strength2'];
strength3 = map['strength3'];
strength4 = map['strength4'];
strength5 = map['strength5'];
}
}
类用户{
弦强度1;
弦强度2;
弦强度3;
弦强度4;
弦强度5;
用户({this.strength1,this.strength2,this.strength3,this.strength4,this.strength5});
MaptoMap(){
变量映射={
“强度1”:强度1,
“强度2”:强度2,
“强度3”:强度3,
“强度4”:强度4,
“强度5”:强度5,
};
返回图;
}
User.fromMap(地图地图){
strength1=地图['strength1'];
strength2=map['strength2'];
strength3=地图['strength3'];
strength4=地图['strength4'];
strength5=地图['strength5'];
}
}
然后循环应该是
List<Widget> createRadioListUsers() {
List<Widget>widgets = [];
for (User user in users) {
widgets.add(
RadioListTile(
value: user,
groupValue: selectedUser,
title: Text(user.strengths),
onChanged: (currentUser) {
print('Current User ${currentUser.strengths}');
setSelectedUser(currentUser);
},
selected: selectedUser == user,
activeColor: Colors.green,
);
}
return widgets;
}
列出createRadioListUsers(){
Listwidgets=[];
for(用户中的用户){
widgets.add(
放射科医师(
值:用户,
groupValue:selectedUser,
标题:文本(用户.优势),
onChanged:(当前用户){
打印('Current User${currentUser.strengths}');
setSelectedUser(当前用户);
},
已选择:selectedUser==用户,
activeColor:Colors.green,
);
}
返回窗口小部件;
}
我从一个教程中学习了这个循环,并尝试更改构造函数的类型,但显然单选按钮的值不起作用,因为在教程中已经给出了值,但对于我正在制作的程序,我必须从另一个页面获取用户输入,并将其显示在单选列表块中StreamBuilder: 首先,让我们声明控制器、流和getter
final BehaviorSubject<User> _radioController = BehaviorSubject<User>();
Stream<User> get radioStream => _radioController.stream;
Function(User) get updateRadio => _radioController.sink.add;
final BehaviorSubject\u radioController=BehaviorSubject();
Stream get radioStream=>\u radioController.Stream;
函数(用户)get updateRadio=>\u radioController.sink.add;
然后,将构建器放入小部件中
StreamBuilder(
stream: radioStream,
initialData: null,
builder: (BuildContext context, AsyncSnapshot<User> snapshot) {
for (User user in users) {
widgets.add(
RadioListTile(
value: user,
groupValue: snapshot.data, // The value will be updated when you select an other radio
title: Text(user.strengths),
onChanged: updateRadio, // Update the groupValue
selected: selectedUser == user,
activeColor: Colors.green,
);
},
// Return your widgets, for example Column(children: widgets),
},
),
...
StreamBuilder(
流:无线流,
initialData:null,
生成器:(BuildContext上下文,异步快照){
for(用户中的用户){
widgets.add(
放射科医师(
值:用户,
groupValue:snapshot.data,//当您选择其他电台时,该值将被更新
标题:文本(用户.优势),
onChanged:updateRadio,//更新groupValue
已选择:selectedUser==用户,
activeColor:Colors.green,
);
},
//返回小部件,例如列(子项:小部件),
},
),
...
所以我在用户中做了一个int id1-5更新,并做了一个int id1-5更新。现在,当我按下1单选按钮时,所有东西都被选中了Behavior Subject是关键字,或者我应该输入类似列表之类的内容吗?我使用Behavior Subject,但它只是一种StreamController。你可以通过获取rxdart包或使用StreamController来获得它。