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=
_选择性分析;
});
},
),
),

我相信更有经验的颤振人员会理解这一点(可能),但我发现,我不能只让初始值来自用于项目的同一列表类型(列表\u分析),但实际上我必须映射它以使用相同的项目数据(\u分析)

此小部件还存在其他问题,例如我发现无法将OnConfigRM的结果直接映射到列表,但必须执行以下操作:

_rData.lossFeed = results.toList().cast<Analysis>()
\u rData.lossFeed=results.toList().cast()
当数据以列表的形式返回时

在网上找不到很好的例子,在某个时候,信任体验将是万应良药

_rData.lossFeed = results.toList().cast<Analysis>()