Flutter 如何从multi_select_颤振中获得选择?
必须是一些简单的东西,我不明白,但已经为此奋斗了太久。如果有人能帮我,我将不胜感激。我相信这与某种类型的问题有关,比如当我做出选择时,我有一个打印语句,然后打印出我要返回的内容: [多选择项实例,'分析'实例,'分析'实例] 不确定如何将上述内容转换为分析列表,并且无法按照包的示例执行:Flutter 如何从multi_select_颤振中获得选择?,flutter,Flutter,必须是一些简单的东西,我不明白,但已经为此奋斗了太久。如果有人能帮我,我将不胜感激。我相信这与某种类型的问题有关,比如当我做出选择时,我有一个打印语句,然后打印出我要返回的内容: [多选择项实例,'分析'实例,'分析'实例] 不确定如何将上述内容转换为分析列表,并且无法按照包的示例执行: MultiSelectDialogField( items: _animals.map((e) => MultiSelectItem(e, e.name)).toList(), listType:
MultiSelectDialogField(
items: _animals.map((e) => MultiSelectItem(e, e.name)).toList(),
listType: MultiSelectListType.CHIP,
onConfirm: (values) {
_selectedAnimals = values;
},
),
我还必须在代码中使用“强制转换”。我的尝试:
MultiSelectDialogField(
items: _analyses.map((analysis) => MultiSelectItem<Analysis>(analysis, analysis.name)).toList(),
initialValue: outwardsData.outwards[widget.index].lossFeed
.map((analysis) => MultiSelectItem<Analysis>(analysis, analysis.name))
.toList(),
title: Text(
"Loss Feeds:",
style: TextStyle(color: Colors.black),
),
selectedColor: kConvexGreen,
unselectedColor: kConvexLightGreen,
backgroundColor: kConvexGreen,
decoration: BoxDecoration(
color: kConvexGreen.withOpacity(0.1),
borderRadius: BorderRadius.all(Radius.circular(5)),
border: Border.all(
color: kConvexGreen,
width: 2,
),
),
confirmText: Text(
'Submit',
style: TextStyle(color: Colors.white),
),
cancelText: Text(
'Cancel',
style: TextStyle(color: Colors.white),
),
searchable: true,
buttonText: Text("Loss Feeds"),
onSelectionChanged: (results) {
**print(results)**;
},
onConfirm: (results) {
// this is different than what example shows; without cast it errors
// "A value of type 'List<Object?>' can't be assigned to a variable of type 'List<Analysis>'". (Documentation)
_selectedAnalyses = results.cast();
},
chipDisplay: MultiSelectChipDisplay(
chipColor: kConvexGreen,
textStyle: TextStyle(color: Colors.white),
onTap: (value) {
setState(() {
_selectedAnalyses.remove(value);
// crashes here even though both are of same type List<Analyses> (theoretically)
// this is just here for testing purposes as am through many iterations trying to get
// data into lossFeed.
outwardsData.outwards[widget.index].lossFeed =
_selectedAnalyses;
});
},
),
),
MultiSelectDialogField(
items:_analysis.map((analysis)=>MultiSelectItem(analysis,analysis.name)).toList(),
initialValue:outwardsData.outwards[widget.index].lossFeed
.map((analysis)=>MultiSelectItem(analysis,analysis.name))
.toList(),
标题:正文(
“损失反馈:”,
样式:TextStyle(颜色:Colors.black),
),
所选颜色:KCONVEX绿色,
未选择的颜色:KCONVEXLIGHT绿色,
背景颜色:kConvexGreen,
装饰:盒子装饰(
颜色:KCONVEX绿色。不透明度(0.1),
borderRadius:borderRadius.all(半径.圆形(5)),
边界:边界(
颜色:kConvexGreen,
宽度:2,
),
),
确认文本:文本(
“提交”,
样式:TextStyle(颜色:Colors.white),
),
取消文本:文本(
“取消”,
样式:TextStyle(颜色:Colors.white),
),
可搜索:正确,
buttonText:Text(“丢失馈送”),
OnSelection更改:(结果){
**打印(结果)**;
},
onConfirm:(结果){
//这与示例所示不同;没有强制转换错误
//“无法将'List'类型的值分配给'List'类型的变量。”(文档)
_selectedAnalyses=results.cast();
},
芯片显示器:多选芯片显示器(
chipColor:kConvexGreen,
textStyle:textStyle(颜色:Colors.white),
onTap:(值){
设置状态(){
_所选分析。删除(值);
//即使两者属于同一类型列表(理论上),此处也会发生崩溃
//这只是出于测试目的,因为am通过多次迭代试图获得
//将数据输入lossFeed。
outwardsData.outwards[widget.index].lossFeed=
_选择性分析;
});
},
),
),
我相信更有经验的颤振人员会理解这一点(可能),但我发现,我不能只让初始值来自用于项目的同一列表类型(列表_rData.lossFeed = results.toList().cast<Analysis>()
\u rData.lossFeed=results.toList().cast()
当数据以列表_rData.lossFeed = results.toList().cast<Analysis>()