2017-10-07 11 views
0

残りのAPIから返されたJSONを取得してドロップダウンメニューに移そうとしていますが、子値と異なる値を設定する必要があります。誰かがこれをやったことがありますか、または例や助言がありますか?私は基本的な例を使用しており、静的リストの代わりにJSONを使用する方法を見つけることができないようです。私が試したことは以下の通りですが、それでも価値は見つけられません。私はダーツヌルエラーを取得し続けます。どんな助けも素晴らしいだろう。私はJSONをどのように入手してデコードするかを更新しました。私はいくつかのことを試みました。これもエラーですが、値がnullでないことをデバッグで確認しました。したがって、JSONで何かをする必要があります。私は静的なリストを試して、それは動作します。JSONでフラッターポップアップドロップダウンメニュー

'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を初期化しているため、このエラーを得ている、とあなたが表すプロパティDropDownButtonvalue、それを供給しています現在選択されているアイテムです。アイテムがまだ選択されていない場合は、nullでなければなりません。あなたがnullエラーが出るん

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(), 
     ), 
     ), 
    ); 

    }