简体   繁体   English

带有 HTTP 数据库的 Flutter 下拉菜单

[英]Flutter drop down menu with HTTP database

I am trying to retrieve JSON code map from my database and I am trying to put part of that map into a drop-down menu.我试图从我的数据库中检索 JSON 代码映射,我试图将该映射的一部分放入下拉菜单中。 I am pretty new to all of this and appreciate any help.我对这一切都很陌生,感谢任何帮助。 I found different solutions on this website but just cannot get to work.我在这个网站上找到了不同的解决方案,但就是无法开始工作。 I get different errors and the error I now get is below.我收到不同的错误,我现在得到的错误如下。 Thank you in advance!先感谢您!

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.

print(resBody);打印(resBody);

I/flutter (30929): {-MJld0iwmyBsLs3wwp17: {icon: somelink.png, title: Beauty}}

My JSON code from the database我来自数据库的 JSON 代码

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

The first part:第一部分:

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

The part for the drop-down下拉部分

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

The data variable does not contain an entry for 'id' . data变量不包含'id'的条目。

This is why data is set to null , which leads to the error.这就是data设置为null ,这会导致错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM