Json 带有HTTP数据库的颤振下拉菜单

Json 带有HTTP数据库的颤振下拉菜单,json,flutter,drop-down-menu,Json,Flutter,Drop Down Menu,我试图从数据库中检索JSON代码映射,并试图将该映射的一部分放入下拉菜单中。我对这一切都很陌生,非常感谢你的帮助。我在这个网站上找到了不同的解决方案,但就是无法开始工作。我得到了不同的错误,我现在得到的错误如下。提前谢谢你 I/flutter (30929): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ I/flutter (30929):

我试图从数据库中检索JSON代码映射,并试图将该映射的一部分放入下拉菜单中。我对这一切都很陌生,非常感谢你的帮助。我在这个网站上找到了不同的解决方案,但就是无法开始工作。我得到了不同的错误,我现在得到的错误如下。提前谢谢你

I/flutter (30929): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (30929): The following NoSuchMethodError was thrown building AddSubCategory(dirty, dependencies:
I/flutter (30929): [_ModalScopeStatus], state: _AddSubCategoryState#a24b3):
I/flutter (30929): The method 'map' was called on null.
I/flutter (30929): Receiver: null
I/flutter (30929): Tried calling: map<DropdownMenuItem<String>>(Closure: (dynamic) => DropdownMenuItem<String>)
I/flutter (30929):
I/flutter (30929): The relevant error-causing widget was:
I/flutter (30929):   AddSubCategory file:///D:/apps/reboo/lib/main.dart:45:46
I/flutter (30929): 
I/flutter (30929): When the exception was thrown, this was the stack:
I/flutter (30929): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
I/flutter (30929): #1      _AddSubCategoryState.build (package:reboo/screens/admin_screens/add_subcategory_screen.dart:272:37)
I/flutter (30929): #2      StatefulElement.build (package:flutter/src/widgets/framework.dart:4744:28)
I/flutter (30929): #3      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4627:15)
I/flutter (30929): #4      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter (30929): #5      Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)      
I/flutter (30929): #6      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
I/flutter (30929): #7      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4791:11)
I/flutter (30929): #8      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
I/flutter (30929): ...     Normal element mounting (132 frames)
I/flutter (30929): #140    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
I/flutter (30929): #141    Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18) 
I/flutter (30929): #142    RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5705:32)
I/flutter (30929): #143    MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
I/flutter (30929): #144    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15) 
I/flutter (30929): #145    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (30929): #146    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter (30929): #147    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)      
I/flutter (30929): #148    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
I/flutter (30929): #149    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15) 
I/flutter (30929): #150    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (30929): #151    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)      
I/flutter (30929): #152    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)  
I/flutter (30929): #153    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:183:11)
I/flutter (30929): #154    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15) 
I/flutter (30929): #155    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
I/flutter (30929): #156    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15) 
I/flutter (30929): #157    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (30929): #158    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter (30929): #159    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)      
I/flutter (30929): #160    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
I/flutter (30929): #161    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
I/flutter (30929): #162    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
I/flutter (30929): #163    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15) 
I/flutter (30929): #164    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
I/flutter (30929): #165    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15) 
I/flutter (30929): #166    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (30929): #167    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (30929): #168    StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
I/flutter (30929): #169    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15) 
I/flutter (30929): #170    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (30929): #171    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)      
I/flutter (30929): #172    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)  
I/flutter (30929): #173    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15) 
I/flutter (30929): #174    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
I/flutter (30929): #175    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
I/flutter (30929): #176    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
I/flutter (30929): #177    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
I/flutter (30929): #178    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
I/flutter (30929): #179    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
I/flutter (30929): #180    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
I/flutter (30929): #181    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
I/flutter (30929): #182    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
I/flutter (30929): #186    _invoke (dart:ui/hooks.dart:251:10)
I/flutter (30929): #187    _drawFrame (dart:ui/hooks.dart:209:3)
I/flutter (30929): (elided 3 frames from dart:async)
I/flutter (30929):
I/flutter (30929): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (30929): {-MJld0iwmyBsLs3wwp17: {icon: https://some link, title: Beauty}, -MK9sJCCMTbvdzzUQZFl: {icon: https://https://some link, title: Fun & Adventure}}
I/flutter (30929): {-MJld0iwmyBsLs3wwp17: {icon: https://, title: Beauty}, -MK9sJCCMTbvdzzUQZFl: {icon: https://some link, title: Fun & Adventure}}
I/flutter (30929): Another exception was thrown: NoSuchMethodError: The method 'map' was called on null.
我的JSON代码来自数据库

{
  "category" : {
    "-MJld0iwmyBsLs3wwp17" : {
      "icon" : "https:https://Some link",
      "title" : "Beauty"
    },
    "-MK9sJCCMTbvdzzUQZFl" : {
      "icon" : "https://Some link",
      "title" : "Fun & Adventure"
    }
  }
}
第一部分:

class AddSubCategory extends StatefulWidget {
  static const routeName = '/addsubcategory';

  @override
  _AddSubCategoryState createState() => _AddSubCategoryState();
}

class _AddSubCategoryState extends State<AddSubCategory> {

final _form = GlobalKey<FormState>();

  String _mySelection;

  Map<String, dynamic> map;
  List<dynamic> data;

  Future<String> getSWData() async {
    final url = "some link";
    var response = await http.get(url);
    var resBody = json.decode(response.body) as Map<String, dynamic>;
    print(resBody);
    setState(() {
      map = resBody;
      data = map["id"];
      
    });

    print(map);
    return "Sucess";
  }

  @override
  void initState() {
    this.getSWData();
    super.initState();
  }

数据
变量不包含
'id'
的条目


这就是为什么
data
设置为
null
,这会导致错误。

items:data.map((item)这里你的数据为null。你能用print(resBody)编辑你的问题吗;I/flatter(30929):{-mjld0iwmybsls3wpp17:{icon:,title:Beauty}尝试更改这个:data=map[“title”];我将它更改为“title”,但得到一个类似的错误。(我已经更新了原始帖子中的新错误)谢谢你的回复。有什么建议我可以解决这个问题吗?
class AddSubCategory extends StatefulWidget {
  static const routeName = '/addsubcategory';

  @override
  _AddSubCategoryState createState() => _AddSubCategoryState();
}

class _AddSubCategoryState extends State<AddSubCategory> {

final _form = GlobalKey<FormState>();

  String _mySelection;

  Map<String, dynamic> map;
  List<dynamic> data;

  Future<String> getSWData() async {
    final url = "some link";
    var response = await http.get(url);
    var resBody = json.decode(response.body) as Map<String, dynamic>;
    print(resBody);
    setState(() {
      map = resBody;
      data = map["id"];
      
    });

    print(map);
    return "Sucess";
  }

  @override
  void initState() {
    this.getSWData();
    super.initState();
  }
DropdownButton(
 isDense: true,
      hint: new Text("Select Category"),
      items: data.map((item) {
      return new DropdownMenuItem(
       child: new Text(item['title']),
       value: item['id'].toString(),
     );
   }).toList(),
   onChanged: (newVal) {
    setState(() {
      _mySelection = newVal;
    });
  },
  value: _mySelection,
),