2017-10-07 62 views
0

我想從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

回答

1

,因爲你是一個值!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(), 
     ), 
     ), 
    ); 

    }