Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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中获取数据,并在使用列表加载数据时与模型类绑定,我得到的是空对象。我尝试过很多解决方案,但没有一种方法能奏效。我从github尝试的代码 class _ChooseRecipientPageState extends State<ChooseRecipient1> { void recepinets(){ receipientModel().then((dynamic res){ setState(() { widget._re

我试图从api中获取数据,并在使用列表加载数据时与模型类绑定,我得到的是空对象。我尝试过很多解决方案,但没有一种方法能奏效。我从github尝试的代码

class _ChooseRecipientPageState extends State<ChooseRecipient1> {

  void recepinets(){
    receipientModel().then((dynamic res){
      setState(() {
        widget._recepientModel=res;
      });
    });
  }

  //Here i am trying to access data from model class which is load in list type of variable

          Container(
            child: new Flexible(
              child: ListView.builder(
                itemCount:widget._recepientModel.length,
                itemBuilder: (context,index) {
                  return GestureDetector(
                    onTap: () => {
                      Navigator.push(
                        context,
                        MaterialPageRoute(
                          builder: (context) => PostYourStatus(
                          ),
                        ),
                      ),
                    },
class\u选择指定页面状态扩展状态{
无效收入(){
receipientModel()。然后((动态res){
设置状态(){
widget.\u recepientModel=res;
});
});
}
//在这里,我试图从模型类中访问数据,该类是加载在列表类型的变量中的
容器(
儿童:新的灵活(
子项:ListView.builder(
itemCount:widget.\u recepientModel.length,
itemBuilder:(上下文,索引){
返回手势检测器(
onTap:()=>{
导航器。推(
上下文
材料路线(
生成器:(上下文)=>PostYourStatus(
),
),
),
},
//在这里,我试图访问模型类中的数据,该模型类是列表类型的变量,在这个变量的帮助下,我将访问它的属性

                          Container(
                            width: 230,
                            child: Padding(
                              padding: const EdgeInsets.all(10),
                              child: Column(
                                children: <Widget>[
                                  Row(
                                    children: <Widget>[
                                      Text(
                                        '${widget._recepientModel[index].successData[index].firstName}',
                                        style: TextStyle(
                                            fontFamily: 'Poppins',
                                            fontSize: 17),
                                      ),
                                    ],
                                  ),
容器(
宽度:230,
孩子:填充(
填充:常量边集。全部(10),
子:列(
儿童:[
划船(
儿童:[
正文(
“${widget.\u recepientModel[index].successData[index].firstName}”,
样式:TextStyle(
fontFamily:“罂粟花”,
尺寸:17),,
),
],
),
//这是我的模型课

import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';


class RecepientModel {
  String status;
  List<SuccessData> successData;
  int dataCount;

  RecepientModel({this.status, this.successData, this.dataCount});

  RecepientModel.fromJson(Map<String, dynamic> json) {
    status = json['status'];
    if (json['success_data'] != null) {
      successData = new List<SuccessData>();
      json['success_data'].forEach((v) {
        successData.add(new SuccessData.fromJson(v));
      });
    }
    dataCount = json['data_count'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['status'] = this.status;
    if (this.successData != null) {
      data['success_data'] = this.successData.map((v) => v.toJson()).toList();
    }
    data['data_count'] = this.dataCount;
    return data;
  }
}

class SuccessData {
  int id;
  String firstName;
  String lastName;
  String email;
  String phoneNumber;
  String profileImage;
  String giftedTagLine;

  SuccessData(
      {this.id,
        this.firstName,
        this.lastName,
        this.email,
        this.phoneNumber,
        this.profileImage,
        this.giftedTagLine});

  SuccessData.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    firstName = json['first_name'];
    lastName = json['last_name'];
    email = json['email'];
    phoneNumber = json['phone_number'];
    profileImage = json['profile_image'];
    giftedTagLine = json['gifted_tag_line'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['first_name'] = this.firstName;
    data['last_name'] = this.lastName;
    data['email'] = this.email;
    data['phone_number'] = this.phoneNumber;
    data['profile_image'] = this.profileImage;
    data['gifted_tag_line'] = this.giftedTagLine;
    return data;
  }
}

Future<List<SuccessData>> receipientModel() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  var accessToken =prefs.getString("token");
  var id =prefs.getString("id");
  var url = 'https://bruyou.project-demo.info/api/V1/customer/${id}/chooseRecipient';
  //encode Map to JSON
  var response = await http.get(url,headers: {"Content-Type": "application/json","Authorization":accessToken},);
  final responseJson = json.decode(response.body);
  Iterable list=responseJson['successData'];

  if(responseJson['status']==200){
    return list.map((mod) => SuccessData.fromJson(mod)).toList();
  }
}
import'package:http/http.dart'作为http;
导入“dart:convert”;
导入“package:shared_preferences/shared_preferences.dart”;
类接收模型{
字符串状态;
列出成功的数据;
int数据计数;
RecepientModel({this.status,this.successData,this.dataCount});
fromJson(映射json){
status=json['status'];
如果(json['success_data']!=null){
successData=新列表();
json['success_data'].forEach((v){
添加(新的successData.fromJson(v));
});
}
dataCount=json['data_count'];
}
映射到JSON(){
最终地图数据=新地图();
数据['status']=this.status;
if(this.successData!=null){
data['success_data']=this.successData.map((v)=>v.toJson()).toList();
}
data['data_count']=this.dataCount;
返回数据;
}
}
类成功数据{
int-id;
字符串名;
字符串lastName;
字符串电子邮件;
字符串电话号码;
字符串轮廓图像;
字符串礼物标语;
成功数据(
{this.id,
这个名字,
这个姓,
这是一封电子邮件,
这个电话号码,
这张照片,
这是giftedTagLine});
SuccessData.fromJson(映射json){
id=json['id'];
firstName=json['first_name'];
lastName=json['last_name'];
email=json['email'];
phoneNumber=json['phone_number'];
profileImage=json['profile_image'];
giftedTagLine=json['gifted_tag_line'];
}
映射到JSON(){
最终地图数据=新地图();
数据['id']=this.id;
数据['first_name']=this.firstName;
数据['last_name']=this.lastName;
数据['email']=this.email;
数据['phone_number']=this.phoneNumber;
数据['profile_image']=this.profileImage;
数据['gifted_tag_line']=this.giftedTagLine;
返回数据;
}
}
Future ReceipEntModel()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
var accessToken=prefs.getString(“token”);
var id=prefs.getString(“id”);
var url='1〕https://bruyou.project-demo.info/api/V1/customer/${id}/chooseRecipient';
//将映射编码为JSON
var response=wait http.get(url,头:{“内容类型”:“应用程序/json”,“授权”:accessToken},);
final responseJson=json.decode(response.body);
Iterable list=responseJson['successData'];
if(responseJson['status']==200){
return list.map((mod)=>SuccessData.fromJson(mod)).toList();
}
}

您正试图通过
widget.variable
对无状态widget执行
设置state
。您没有显示所有的widget,但我猜它具有
\u recepientModel
的某些属性,该属性在widget呈现期间可能为空。如果您想在widget加载时获取数据,应该在中添加
\u recepientModel
状态变量StatefullWidget和内部
initState
lifecycle函数,调用api fech,然后执行一个setState命令,该命令将使用新数据重新启动小部件


更重要的是,您应该做一些断言,即_recepientModel(我只是猜测是一个列表)不是空的,或者里面有一些项。如果不是空的,那么它将不会在
itemBuilder
内部呈现。为了方便起见,您可以在开始时将
\u recepientModel
状态变量设置为空列表。

使用futurebuilder方法,它将等待api获取数据并加载listview。。它将在Dactor中显示加载,直到服务完成添加lan仪表标签。请分别将名称
从JSON
到JSON
更改为
从Map
到Map
。JSON是一个字符串。当你解码JSON时,你会得到一个映射。“收件人”、“收件人”、“收件人”、“收件人”。哪种拼写正确?你需要以更少的匆忙和更有条理的方式进行编程。