如何在 Flutter 中将 List<dynamic> 转换为 List<Object>

Eza*_*uri 10 flutter

我制作了两个列表 List <Animal> _animals 和 List <Animal> _selectedanimals

static List<Animal> _animals = [
    Animal( name: "Tiger"),
    Animal(name: "Lion"),
    Animal( name: "Panda"),
    Animal( name: "Anaconda"),];

  List<Animal> _selectedAnimals2 = [];
Run Code Online (Sandbox Code Playgroud)

然后我制作了一个多选表,用户可以在其中选择他最喜欢的动物,并在确认/或由用户选择时将所选值存储在名为 value 的动态列表中,并从 List<dynamic> 值存储到另一个列表 List< Animal> _selectedAnimals2 但我收到一个错误,如下所述:

类型“List<dynamic>”不是类型“List<Animal>”的子类型

MultiSelectBottomSheetField(
                         initialChildSize: 0.4,
                         listType: MultiSelectListType.CHIP,
                         searchable: true,
                         buttonText: Text("Favorite Animals",style: GoogleFonts.montserrat(color: Colors.white),),
                         title: Text("Animals"),
                         items: _items,
                         onConfirm: (values) {
                            _selectedAnimals2=values;
                            final List<String> choose=_selectedAnimals2.map((Animal animal) => animal.name).toList();
                           saveUserInfoToFireStore(choose);
                         },
Run Code Online (Sandbox Code Playgroud)

Afi*_* EM 23

如果我们想将列表动态转换为其类型,我们可以使用该方法cast()

List sample = ["test1", "test2"]; /// dynamic list

List<String> stringList = []; /// string list

/// for casting
stringList = sample.cast<String>();
Run Code Online (Sandbox Code Playgroud)

同样,我们可以将列表转换为

List<CustomModel> list = dynamicList.cast<CustomModel>();
Run Code Online (Sandbox Code Playgroud)


Moa*_*zhy 0

如果你的 _items 是字符串列表,你可以尝试这个

_selectedAnimals2 = values.map((val) => Animal( name: val)).toList()
Run Code Online (Sandbox Code Playgroud)