【问题标题】:Null response in await api等待 api 中的空响应
【发布时间】:2020-07-26 04:05:56
【问题描述】:

这个 print('响应>>>>>>');打印(响应);一片空白 print("api") - 这个返回就OK了

在 Api.dart 中

未来列表(参数)异步 {Dio dio = new Dio(); 尝试 { var arg = 参数; 字符串 refreshToken = 令牌; dio.options.baseUrl = serverUrl + "/test/" + arg.toString(); dio.options.responseType = ResponseType.json;

    Response response = await dio.get(
        "${dio.options.baseUrl}",
        options: Options(
            headers: {
              'Authorization': "Bearer $refreshToken",
              'Content-Type': "application/json;charset=UTF-8",
              'Accept': "gzip"
            }
        )
    );
      print ("api");
      print(response.data);
    return await response.data;
  } catch (e) {
    print(e);
  }

myclass.dart

cl

ass 页面扩展 StatefulWidget { @覆盖 PageState createState() => PageState(); }

class PageState extends State<Page> {
  List data;
    Future<List> list() async {
      Network network = new Network();
      final String arguments = ModalRoute.of(context).settings.arguments as String;
      print(arguments);
      var response = await network.list(arguments.toString());
      print('response>>>>>>');
      print(response);
      if (mounted){
        this.setState(() {
          data = response;
        });
      };
//      _saving = false;
//    print('data');
//    print(data);

//    return "Success!";
  }
  @override
  void initState(){
    super.initState();
//    Future.delayed(Duration.zero, this.dados_propostas);
//    dados_propostas();
  }
  @override
  Widget build(BuildContext context) {
    this.list();
    return AlertDialog(
      title: const Text('Teste'),
      actions: <Widget>[
        FlatButton(
          onPressed: debugDumpApp,
          child: Row(
            children: <Widget>[
              const Icon(
                Icons.dvr,
                size: 18.0,
              ),
              Container(
                width: 8.0,
              ),
              const Text('DUMP'),
            ],
          ),
        ),
        FlatButton(
          onPressed: () {
            Navigator.pop(context, false);
          },
          child: const Text('OK'),
        ),
      ],
    );
  }

}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    使用此功能:

    Future<Response> get(String url, String token) async {
        Response response = Response();
        try {
          dio.options.contentType = "application/json;charset=UTF-8";
    
          dio.options.headers["Authorization"] = "Bearer $token";
    
          response = await dio.get(url);
    
          return response;
        } on DioError catch (error, stacktrace) {
          print("Exception occured: $error stackTrace: $stacktrace");
          return error.response;
        }
      }
    

    【讨论】:

    • 现在直到 print('response>>>>>>');打印(响应);但是,在这段代码中 if (mounted){ this.setState(() { data = response as Future; }); };此 var 数据,给出错误未处理的异常:类型 'Response' 不是类型转换中类型 'Future' 的子类型
    • 这个函数不会给你错误。现在您需要修复模型类对象。分享您的模型类和 JSON 响应。
    • 现在可以了。谢谢!!!但是,如何在 Text 中使用 data'[íd'],请参阅:@override Widget build(BuildContext context) { this.list(); return AlertDialog( title: // 如何在此处使用 data[id] actions: [ FlatButton( onPressed: debugDumpApp, child: Row( children: [ const Icon( Icons.dvr, size: 18.0, ), ], ), ), ], ); }
    • 现在做什么,从你的 JSON 中获取一个 Model 类。一旦你得到它,将 JSON 响应传递给该类实例。稍后在屏幕的任何位置使用该实例。
    • JsonModel _jsonModel = JsonModel.fromJson(response.data);
    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 2017-07-21
    • 2018-08-04
    • 2022-07-01
    • 2017-01-28
    • 1970-01-01
    • 2023-02-06
    • 2018-08-26
    相关资源
    最近更新 更多