Flutter 类型 'RxList<dynamic>' 不是类型 'RxList<DropdownMenuItem<ListItem>>' 的子类型

时间:2021-03-11 09:57:55

标签: flutter

我尝试制作的小部件是一个下拉按钮,我使用 flutter Get 包进行状态管理。

控制器:

fsspec

小部件:

xarray: 0.17.0
zarr: 2.6.1
fsspec: 0.8.4

错误:

  // Getter and Setter for Downdown List Item
  RxList<DropdownMenuItem<ListItem>> _dropdownMenuItems = [].obs;
  set setDropdownValues(value) => _dropdownMenuItems(value);
  List<DropdownMenuItem<ListItem>> get getDropdownValues => _dropdownMenuItems
    .map((e) => DropdownMenuItem(
      value: e.value,
      child: Text(e.value.name))).toList();

  // Getter and Setter for Items Selected from the dropdown
  Rx<ListItem> _selectedItem = ListItem().obs;
  set setSelectedItem(value) => _selectedItem(value);
  get getSelectedItem => _selectedItem.value;

  // OnInit
  @override
  void onInit() {
    super.onInit();
    setDropdownValues = buildDropDownMenuItems(); // Sets dropdown list
    setSelectedItem = getDropdownValues[0].value; // Sets selected item as the first entry to the list
  }

  // Sample to populate the Dropdown List
  List<DropdownMenuItem<ListItem>> buildDropDownMenuItems() {
    
    List<ListItem> _dropdownItems = [
      ListItem(value: 1, name: "Recent"),
      ListItem(value: 2, name: "Oldest"),
    ];

    List<DropdownMenuItem<ListItem>> items = [];
    for (ListItem listItem in _dropdownItems) {
      items.add(
        DropdownMenuItem(
          child: Text(listItem.name),
          value: listItem,
        ),
      );
    }
    return items;
  } 

我是否为 RxList 分配了错误的类型?我是否错误地将其映射到列表?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

我唯一需要做的就是将 obs 列表转换为它所指的类型。

所以,以前是

RxList<DropdownMenuItem<ListItem>> _dropdownMenuItems = [].obs;

我已将其更新为

RxList<DropdownMenuItem<ListItem>> _dropdownMenuItems = <DropdownMenuItem<ListItem>>[].obs;