颤动与JSON填充dropdownmenu

问题描述:

我想从JSON从休息API返回并填充下拉菜单,我需要有不同的值的孩子值。有没有人做过这个或有一个例子或建议。我正在使用基本示例,似乎无法找到使用JSON而不是静态列表的方式。以下是我所尝试过的,但它仍然没有找到价值。我不断收到一个dart空错误。任何帮助都会很棒。我已经更新了我如何获得JSON和解码。我尝试了几件事情。这也是错误,但我已经在调试中确认该值不会为空,所以它必须是JSON。我已经尝试了一个静态列表,它的工作原理。颤动与JSON填充dropdownmenu

'package:flutter/src/material/dropdown.dart': Failed assertion: line 433 pos 15: 'value == null 

String _referPractice = '<New>'; 

JSON看起来是这样的:

​​
+0

你从哪里获得空错误:

我一直在使用你提供的JSON复制你的榜样?您究竟是如何将JSON文件解码到您的应用程序中的? – aziza

+0

最初在'_referPractice'中有什么?以及“惯例”地图结构如何? – aziza

+0

您提供的JSON代表您的代码中的哪个变量? – aziza

,因为你是一个值!null初始化_referPractice您收到此错误,并且您将其送入DropDownButton的财产value,它代表当前选择的项目,如果尚未选择项目,则必须为空。

enter image description here

String _mySelection; 
    List<Map> _myJson = [{"id":0,"name":"<New>"},{"id":1,"name":"Test Practice"}]; 

    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     body: new Center(
      child: new DropdownButton<String>(
      isDense: true, 
      hint: new Text("Select"), 
      value: _mySelection, 
      onChanged: (String newValue) { 

       setState(() { 
       _mySelection = newValue; 
       }); 

       print (_mySelection); 
      }, 
      items: _myJson.map((Map map) { 
       return new DropdownMenuItem<String>(
       value: map["id"].toString(), 
       child: new Text(
        map["name"], 
       ), 
      ); 
      }).toList(), 
     ), 
     ), 
    ); 

    }