首页 > 解决方案 > 即使快照有数据,数据也返回 Null,Flutter

问题描述

我正在调用一个 API,返回数据说它不是空的,但我FutureBuilder返回 null 值。当我打印出 response.body 时,它说 : {"statusCode":200,"message":"Success"},所以我不确定 API 是错误的还是其他原因?

接口调用:

Future<UserData> getUser() async {
    final response =
        await APIRequest(Method.GET, '/users/' + this._loggedUserEmail);
    Map<String, dynamic> jsonDecodedResponse = jsonDecode(response.body);
    return UserData(
        name: jsonDecodedResponse['name'],
        surname: jsonDecodedResponse['surname'],
        email: jsonDecodedResponse['email'],
        phoneMobile: jsonDecodedResponse['phoneMobile'],
        address: jsonDecodedResponse['address'],
        dateCreated: jsonDecodedResponse['dateCreated'],
        dateModified: jsonDecodedResponse['dateModified']);
  }

用户型号:

import 'package:flutter/foundation.dart';
import 'dart:core';

class UserData extends ChangeNotifier {
  final String dateCreated,
      dateModified,
      name,
      surname,
      email,
      phoneMobile,
      address;

  UserData({
    this.dateCreated,
    this.dateModified,
    this.name,
    this.email,
    this.surname,
    this.phoneMobile,
    this.address,
  });

  factory UserData.fromJson(Map<String, dynamic> json) {
    return UserData(
      dateCreated: json['dateCreated'],
      dateModified: json['dateModified'],
      name: json['name'],
      surname: json['surname'],
      email: json['email'],
      phoneMobile: json['phoneMobile'],
      address: json['address'],
    );
  }
}

未来建设者:

Future<UserData> _getUserValues() async {
    final _userData = await APIcalls.instance.getUser();
    return _userData;
  }

.....

FutureBuilder<UserData>(
      future: _getUserValues(), // async work
      builder: (BuildContext context, AsyncSnapshot<UserData> snapshot) {
        switch (snapshot.connectionState) {
          case ConnectionState.waiting:
            return Text('Loading....');
          default:
            if (snapshot.hasError)
              return Text('Error: ${snapshot.error}');
            else
              return Text('Result: ${snapshot.data.email}'); // returns null
        }
      },
    );

我是在解析 JSON 数据(再次),还是有其他问题?在此先感谢您的帮助。

标签: fluttermobileflutter-futurebuilder

解决方案


推荐阅读