【问题标题】:Instance of 'Future<GroupBy>' in my flutter code我的颤振代码中的 \'Future<GroupBy>\' 的实例
【发布时间】:2022-11-05 10:07:40
【问题描述】:

从原始代码我无法得到相同的结果

这是原始代码

 loadPreviousEvents() {
    mySelectedEvents = {
      "2022-09-13": [
        {"eventDescp": "11", "eventTitle": "111"},
        {"eventDescp": "22", "eventTitle": "22"}
      ],
      "2022-09-30": [
        {"eventDescp": "22", "eventTitle": "22"}
      ],
      "2022-09-20": [
        {"eventTitle": "ss", "eventDescp": "ss"}
      ]
    };
    print(mySelectedEvents);
  }

我想从我的数据库中检索相同的东西

这是我尝试但没有成功的方法

loadPreviousEvents() async {
    var url = 'http://prospection.global-aeit.com/getEvents.php';
    var res = await http.get(Uri.parse(url));
    var response = json.decode(res.body) as List;
    print(response);
    var mySelectedEvents =
        (response.map((e) async => GroupBy.fromJson(e))).toList();
    print(mySelectedEvents);
    return mySelectedEvents;

  }

通过打印print(mySelectedEvents);

[Instance of 'Future<GroupBy>', Instance of 'Future<GroupBy>', Instance of 'Future<GroupBy>', Instance of 'Future<GroupBy>', Instance of 'Future<GroupBy>']

打印print(response); 给出

[{date: 2022-09-17, eventDescp: azerty, eventTitle: azertyui}, {date: 2022-09-17, eventDescp: 11, eventTitle: AZE}, {date: 2022-09-17, eventDescp: 22, eventTitle: 4556}, {日期: 2022-09-20, eventDescp: 77, eventTitle: HHJ}, {日期: 2022-09-17, eventDescp: 44, eventTitle: BYYY}]

【问题讨论】:

    标签: flutter


    【解决方案1】:

    由于async 关键字,您正在强制map 方法返回Future

    删除它,你会没事的。

    测试以下它可以帮助你:

    Future<void> main() async {
      final res = await dbRequest();
      print(res);
      final mySelectedEvents = (res.map((e) => GroupBy.fromJson(e))).toList();
      print(mySelectedEvents);
    }
    
    Future<List<dynamic>> dbRequest() async {
      return [
        {'date': '2022-09-17', 'eventDescp': 'azerty', 'eventTitle': 'azertyui'},
        {'date': '2022-09-17', 'eventDescp': '11', 'eventTitle': 'AZE'},
        {'date': '2022-09-17', 'eventDescp': '22', 'eventTitle': '4556'},
        {'date': '2022-09-20', 'eventDescp': '77', 'eventTitle': 'HHJ'},
        {'date': '2022-09-17', 'eventDescp': '44', 'eventTitle': 'BYYY'}
      ];
    }
    

    【讨论】:

    • [“GroupBy”实例、“GroupBy”实例、“GroupBy”实例、“GroupBy”实例、“GroupBy”实例]
    • 是的,这就是想要的结果。尝试实现一个正确的toString 方法或toJson 方法并将其打印出来。如果您的 GroupBy 类设计良好,您将看到完全相同的结果。
    【解决方案2】:

    而不是使用 final mySelectedEvents = (res.map((e) =&gt; GroupBy.fromJson(e))).toList();List&lt;GroupBy&gt; mySelectedEvents = (res.map((e) =&gt; GroupBy.fromJson(e))).toList(); 。现在您可以在打印时查看列表中的所有数据

    【讨论】:

      【解决方案3】:

      未解决的问题

      [“GroupBy”实例、“GroupBy”实例、“GroupBy”实例、“GroupBy”实例、“GroupBy”实例]

          @override
        void initState() {
          // TODO: implement initState
          super.initState();
          _selectedDate = _focusedDay;
      
          loadPreviousEvents();
        }
      
        Future<void> loadPreviousEvents() async {
          print("object");
          final res = await dbRequest();
          final mySelectedEvents = (res.map((e) => GroupBy.fromJson(e))).toList();
          print(mySelectedEvents);
        }
      
        Future<List<dynamic>> dbRequest() async {
          var url = 'http://prospection.global-aeit.com/getEvents.php';
          var res = await http.get(Uri.parse(url));
          var response = json.decode(res.body);
          print(response);
          return response;}
      

      【讨论】:

      • 除非您已获得问题的解决方案并且想在此处分享,否则不要回答您自己的问题
      猜你喜欢
      • 2021-10-23
      • 2021-10-07
      • 1970-01-01
      • 2021-06-06
      • 2019-08-26
      • 2021-11-28
      • 2021-01-05
      • 2017-10-30
      • 2020-07-04
      相关资源
      最近更新 更多