Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 将API中的数据设置为变量-颤振_Flutter_Dart - Fatal编程技术网

Flutter 将API中的数据设置为变量-颤振

Flutter 将API中的数据设置为变量-颤振,flutter,dart,Flutter,Dart,因此,我目前正在从模拟api获取一个数据数组,我试图将该数据放入我创建的对象中,然后在屏幕上呈现它。目前我已经从API获取了数据,但是当我尝试将数据放入变量并打印结果时,它不起作用,但是当我在调用数据的函数中打印数据时,它确实起作用(如下所示)。它还在页面的init(或state,我不确定)上调用Future函数(getUserFeed)——这是当前代码: class SocialPage extends StatefulWidget { final String argument; c

因此,我目前正在从模拟api获取一个数据数组,我试图将该数据放入我创建的对象中,然后在屏幕上呈现它。目前我已经从API获取了数据,但是当我尝试将数据放入变量并打印结果时,它不起作用,但是当我在调用数据的函数中打印数据时,它确实起作用(如下所示)。它还在页面的init(或state,我不确定)上调用Future函数(getUserFeed)——这是当前代码:

class SocialPage extends StatefulWidget {
  final String argument;
  const SocialPage({Key key, this.argument}) : super(key: key);

  @override
  _SocialPageState createState() => _SocialPageState(argument);
}

  Future getUserFeed() async {
  final response = await http.get(
      'https://cartalkio-mock-api.s3.eu-west-2.amazonaws.com/textfeed.json');

  print(response.statusCode);

  if (response.statusCode == 200) {
    print(json.decode(response.body));
    return json.decode(response.body);
  } else {
    throw Exception('Failed to load album');
  }
}

class _SocialPageState extends State<SocialPage> {
  String argument;
  _SocialPageState(this.argument);
  Future feedData;

  setFeedData() {
    setState(() {
      feedData = getUserFeed();
    });
  }

  checkFeedData() {
    print(feedData);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: (FloatingActionButton(onPressed: () async {
        Navigator.pushNamed(context, SectionSelectRoute, arguments: argument);
      })),
      body: SafeArea(
        child: Column(
          children: <Widget>[
            FlatButton(
              onPressed: setFeedData,
              child: (Text('Set data')),
            ),
            FlatButton(
              onPressed: checkFeedData,
              child: (Text('Check data')),
            ),
          ],
        ),
      ),
    );
  }
}
getUserFeed函数打印来自API的实际数据,但当我调用checkFeedData函数时,它打印空值

[编辑2]

作用

  setFeedData() async{
    feedData = await getUserFeed();
    print('-----------'); // It's not running this print function 
    print(feedData); // Dont think its running this function
  }
控制台

I/flutter ( 6245): 200
I/flutter ( 6245): [{id: 2, photoUrl: https://cartalkio-image-storage-dev.s3.eu-west-2.amazonaws.com/o85DvOaTXXE.jpg, description: Magna duis consectetur sit ut commodo non eiusmod., dateAdded: 0001-01-01T00:00:00, isMain: false, publicId: null, isImage: true, mainImage: https://randomuser.me/api/portraits/men/76.jpg, userId: 9, likers: null, username: Larsen, thumbnail: null, likes: 0}, {id: 4, photoUrl: https://cartalkio-image-storage-dev.s3.eu-west-2.amazonaws.com/lXR833PRh3g.jpg, description: Magna duis consectetur sit ut commodo non eiusmod., dateAdded: 0001-01-01T00:00:00, isMain: false, publicId: null, isImage: true, mainImage: https://randomuser.me/api/portraits/men/4.jpg, userId: 8, likers: null, username: Lloyd, thumbnail: null, likes: 0}, {id: 6, photoUrl: https://cartalkio-image-storage-dev.s3.eu-west-2.amazonaws.com/geTFl8b0m9M.jpg, description: Magna duis consectetur sit ut commodo non eiusmod., dateAdded: 0001-01-01T00:00:00, isMain: false, publicId: null, isImage: true, mainImage: https://randomuser.me/api/port
E/flutter ( 6245): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'FutureOr<Map<String, dynamic>>'
E/flutter ( 6245): #0      getUserFeed (package:TCS/social.dart:29:5)
E/flutter ( 6245): <asynchronous suspension>
E/flutter ( 6245): #1      _SocialPageState.setFeedData (package:TCS/social.dart:48:22)
E/flutter ( 6245): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:779:19)
E/flutter ( 6245): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:862:36)
E/flutter ( 6245): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter ( 6245): #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:504:11)
E/flutter ( 6245): #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:282:5)
E/flutter ( 6245): #7      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:217:7)
E/flutter ( 6245): #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:475:9)
E/flutter ( 6245): #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter ( 6245): #10     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:122:9)
E/flutter ( 6245): #11     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter ( 6245): #12     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:120:18)
E/flutter ( 6245): #13     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:106:7)
E/flutter ( 6245): #14     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter ( 6245): #15     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter ( 6245): #16     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter ( 6245): #17     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter ( 6245): #18     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter ( 6245): #19     _rootRunUnary (dart:async/zone.dart:1196:13)
E/flutter ( 6245): #20     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter ( 6245): #21     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter ( 6245): #22     _invoke1 (dart:ui/hooks.dart:275:10)
E/flutter ( 6245): #23     _dispatchPointerDataPacket (dart:ui/hooks.dart:184:5)
E/flutter ( 6245): 
I/颤振(6245):200
I/颤振(6245):[{id:2,photoUrl:https://cartalkio-image-storage-dev.s3.eu-west-2.amazonaws.com/o85DvOaTXXE.jpg,描述:Magna duis Concertetur sit ut commodo non eiusmod.,添加日期:0001-01-01T00:00:00,isMain:false,publicId:null,isImage:true,mainImage:https://randomuser.me/api/portraits/men/76.jpg,userId:9,likers:null,username:Larsen,thumbnail:null,类似于:0},{id:4,photoUrl:https://cartalkio-image-storage-dev.s3.eu-west-2.amazonaws.com/lXR833PRh3g.jpg,描述:Magna duis Concertetur sit ut commodo non eiusmod.,添加日期:0001-01-01T00:00:00,isMain:false,publicId:null,isImage:true,mainImage:https://randomuser.me/api/portraits/men/4.jpg,userId:8,likers:null,username:Lloyd,thumbnail:null,类似于:0},{id:6,photoUrl:https://cartalkio-image-storage-dev.s3.eu-west-2.amazonaws.com/geTFl8b0m9M.jpg,描述:Magna duis Concertetur sit ut commodo non eiusmod.,添加日期:0001-01-01T00:00:00,isMain:false,publicId:null,isImage:true,mainImage:https://randomuser.me/api/port
E/flatter(6245):[错误:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:类型“List”不是类型“FutureOr”的子类型
E/flatter(6245):#0 getUserFeed(包:TCS/social.dart:29:5)
E/颤振(6245):
E/flatter(6245):#1#u socialpage state.setFeedData(包:TCS/social.dart:48:22)
E/颤振(6245):#2(InkResponse Estate.)(handleTap)(包装:颤振/src/材料/墨水)井。省道:779:19)
E/flatter(6245):#3 35; InkResponseState.build.(包装:flatter/src/material/ink#well.dart:862:36)
E/flatter(6245):#4手势识别器.invokeCallback(包:flatter/src/signatures/recognizer.dart:182:24)
E/颤振(6245):#5 TapGestureRecognitor.handleTapUp(软件包:颤振/src/手势/tap.dart:504:11)
电子/颤振(6245):#6个基本手势识别器。#检查(包:颤振/src/手势/tap.省道:282:5)
E/flatter(6245):#7 BaseTapgestureRecognitor.handlePrimaryPointer(包:flatter/src/signatures/tap.dart:217:7)
E/颤振(6245):#8 PrimaryPointerTestureRecognizer.handleEvent(包:颤振/src/手势/识别器。dart:475:9)
电子/颤振(6245):#9点外部程序。#调度(包:颤振/src/手势/指针路由器。dart:76:12)
E/flatter(6245):#10点路由器。#调度事件路由。(包:flatter/src/signatures/pointer#路由器。dart:122:9)
E/flatter(6245):#11 LinkedHashMapMixin.forEach(dart:collection patch/compact_hash.dart:379:8)
E/flatter(6245):#12点路由器。#调度事件路由(包:flatter/src/signatures/pointer#路由器。dart:120:18)
E/flatter(6245):#13 PointerRouter.route(包:flatter/src/signatures/pointer_router.dart:106:7)
E/flatter(6245):#14 GestureBinding.handleEvent(包装:flatter/src/signatures/binding.dart:218:19)
E/flatter(6245):#15 GestureBinding.dispatchEvent(包:flatter/src/signatures/binding.dart:198:22)
电子/颤振(6245):#16手势绑定。#手持点事件(包装:颤振/src/手势/绑定。省道:156:7)
电子/颤振(6245):#17个手势绑定。"冲洗点eventqueue(包装:颤振/src/手势/绑定。省道:102:7)
E/flatter(6245):#18手势绑定。"handlePointerDataPacket(包:flatter/src/signatures/binding.dart:86:7)
E/颤振(6245):#19 RootRunnary(dart:async/zone.dart:1196:13)
E/flatter(6245):#20 _CustomZone.runUnary(dart:async/zone.dart:1085:19)
E/颤振(6245):#21 _CustomZone.runUnaryGuarded(dart:async/zone.dart:987:7)
E/颤振(6245):#22 _调用1(省道:ui/挂钩。省道:275:10)
E/flatter(6245):#23 dispatchPointerDataPacket(dart:ui/hooks.dart:184:5)
E/颤振(6245):

首先将
feedData
更改为:

List<dynamic> feedData;
并将
setFeedData
更改为:

Future<List<dynamic>> getUserFeed(){
...
  setFeedData() async{
      feedData = await getUserFeed();
  }

我已经这样做了,但是当我调用“checkFeedData”时,它只返回null。我编辑了这个问题以显示更多信息information@chumberjosh在
setFeedData
内调用
print(feedData)时会发生什么情况
等待之后?它会打印一大堆东西,但从我所知道的情况来看,它实际上并没有运行打印功能,我已经更新了这个问题,这样你就可以看到它在打印什么了printed@chumberjosh我编辑了答案,api返回一个json数组,而不是json对象,所以我认为这次它可以工作。
List<dynamic> feedData;
Future<List<dynamic>> getUserFeed(){
...
  setFeedData() async{
      feedData = await getUserFeed();
  }