我尝试生成的小部件是一个下拉按钮,我正在使用 flutter Get包进行状态管理。
\n控制器:
\n // Getter and Setter for Downdown List Item\n RxList<DropdownMenuItem<ListItem>> _dropdownMenuItems = [].obs;\n set setDropdownValues(value) => _dropdownMenuItems(value);\n List<DropdownMenuItem<ListItem>> get getDropdownValues => _dropdownMenuItems\n .map((e) => DropdownMenuItem(\n value: e.value,\n child: Text(e.value.name))).toList();\n\n // Getter and Setter for Items Selected from the dropdown\n Rx<ListItem> _selectedItem = ListItem().obs;\n set setSelectedItem(value) => _selectedItem(value);\n get getSelectedItem => _selectedItem.value;\n\n // OnInit\n @override\n void onInit() {\n super.onInit();\n setDropdownValues = buildDropDownMenuItems(); // Sets dropdown list\n setSelectedItem = getDropdownValues[0].value; // Sets selected item as the first entry to the list\n }\n\n // Sample to populate the Dropdown List\n List<DropdownMenuItem<ListItem>> buildDropDownMenuItems() {\n \n List<ListItem> _dropdownItems = [\n ListItem(value: 1, name: "Recent"),\n ListItem(value: 2, name: "Oldest"),\n ];\n\n List<DropdownMenuItem<ListItem>> items = [];\n for (ListItem listItem in _dropdownItems) {\n items.add(\n DropdownMenuItem(\n child: Text(listItem.name),\n value: listItem,\n ),\n );\n }\n return items;\n } \n
Run Code Online (Sandbox Code Playgroud)\n小部件:
\n DropdownButton(\n icon: Icon(Icons.arrow_drop_down),\n value: controller.getSelectedItem,\n items: controller.getDropdownValues)\n
Run Code Online (Sandbox Code Playgroud)\n错误:
\n\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 Exception caught by widgets library \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nThe following _TypeError was thrown building MyHomePage(dirty):\ntype \'RxList<dynamic>\' is not a subtype of type \'RxList<DropdownMenuItem<ListItem>>\'\n
Run Code Online (Sandbox Code Playgroud)\n我是否为 RxList 分配了错误的类型?我是否错误地将其映射到列表?
\n非常感谢任何帮助。
\n我已经解决了这个问题。
我唯一需要做的就是将 obs 列表转换为它所引用的类型。
所以,之前是
RxList<DropdownMenuItem<ListItem>> _dropdownMenuItems = [].obs;
Run Code Online (Sandbox Code Playgroud)
我已经将其更新为
RxList<DropdownMenuItem<ListItem>> _dropdownMenuItems = <DropdownMenuItem<ListItem>>[].obs;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3744 次 |
最近记录: |