-1

I am able to fetch the JSON data from the server in the flutter application. I need to display the data in PageView.builder and nested ListView.builder, this model I have already created.

The code called for implementation

orderdetail = NewOrder.fromJson(json.decode(response.body));

This is the JSON data which I am able to fetch from the server in flutter application

{
    "error": "false",
    "content": [
        {
            "comp_code": "4",
            "comp_name": "KMT OVERSEAS",
            "order_no": "16",
            "order_items": [
                {
                    "comp_code": "4",
                    "comp_name": "KMT OVERSEAS",
                    "order_no": "16",
                },
                {
                    "comp_code": "4",
                    "comp_name": "KMT OVERSEAS",
                    "order_no": "16",
                }
            ]
        },
        {
            "comp_code": "4",
            "comp_name": "KMT OVERSEAS",
            "order_no": "18",
            "order_items": [
                {
                    "comp_code": "4",
                    "comp_name": "KMT OVERSEAS",
                    "order_no": "18",
                },
                {
                    "comp_code": "4",
                    "comp_name": "KMT OVERSEAS",
                    "order_no": "18",

                },
                {
                    "comp_code": "4",
                    "comp_name": "KMT OVERSEAS",
                    "order_no": "18",
                },
               
            ]
        }
    ]
}

The code I used for it is this for fetching the data in the Stateful Widget

  Future<Payload> getdetailsoforders(String userid, String companycode) async {

    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    Map data = {
      'user_id': userid,
      'company_code':companycode

    };

    var response = await http.post(newapi, body: data);
    if(response.statusCode == 200) {
     jsonResponse = json.decode(response.body);
      print("jsonrespnse");
      print(jsonResponse);
 }
    

  } else {
  setState(() {
    _isLoading = false;
  });


  print('login error');
  print(response.body);
}

  }

The NewOrder Model class I am implemented is below

import 'newitem.dart';

class NewOrder {
  NewOrder({
    this.sohPk,
    this.orderNo,
    this.newItem,
  });

  String sohPk;
  String orderNo;
 NewItem newItem;

  factory NewOrder.fromJson(Map<String, dynamic> json) => NewOrder(
    sohPk: json["soh_pk"],
    orderNo: json["order_no"],
  newItem:NewItem.fromJson(json['order_items'])
  );

  Map<String, dynamic> toJson() => {
    "soh_pk": sohPk,
    "order_no": orderNo,
   'order_items': newItem.toJson()
  };
}

The NewPlayLoadClass I Implemented is here

import 'package:dataproject2/newmodel/neworder.dart';

class NewPayLoad {
  String error;
  List<NewOrder> content;

  NewPayLoad({this.error, this.content});

  NewPayLoad.fromJson(Map<String, dynamic> json) {
    error = json['error'];
    if (json['content'] != null) {
      content = new List<NewOrder>();
      json['content'].forEach((v) {
        content.add(new NewOrder.fromJson(v));
      });
    }
  }

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

The error I am getting is here

The following NoSuchMethodError was thrown building PageViewClass(dirty, state: _PageViewClassState#98a84): The getter 'content' was called on null. Receiver: null Tried calling: content

I am not able to understand what is wrong with my code, and how to resolve it Please guide further

  • @chunhunghan hi, i have seen you solving a similar question, please help me with this, I tried to implement your solution to this question https://stackoverflow.com/questions/63555004/not-able-to-fetch-json-values-to-field-in-flutter but was not successful, please guide me further –  Aug 29 '20 at 12:52

1 Answers1

0

Use below code

class NewOrder {
  String _error;
  List<Content> _content;

  NewOrder({String error, List<Content> content}) {
    this._error = error;
    this._content = content;
  }

  String get error => _error;
  set error(String error) => _error = error;
  List<Content> get content => _content;
  set content(List<Content> content) => _content = content;

  NewOrder.fromJson(Map<String, dynamic> json) {
    _error = json['error'];
    if (json['content'] != null) {
      _content = new List<Content>();
      json['content'].forEach((v) {
        _content.add(new Content.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['error'] = this._error;
    if (this._content != null) {
      data['content'] = this._content.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class Content {
  String _compCode;
  String _compName;
  String _orderNo;
  List<OrderItems> _orderItems;

  Content(
      {String compCode,
      String compName,
      String orderNo,
      List<OrderItems> orderItems}) {
    this._compCode = compCode;
    this._compName = compName;
    this._orderNo = orderNo;
    this._orderItems = orderItems;
  }

  String get compCode => _compCode;
  set compCode(String compCode) => _compCode = compCode;
  String get compName => _compName;
  set compName(String compName) => _compName = compName;
  String get orderNo => _orderNo;
  set orderNo(String orderNo) => _orderNo = orderNo;
  List<OrderItems> get orderItems => _orderItems;
  set orderItems(List<OrderItems> orderItems) => _orderItems = orderItems;

  Content.fromJson(Map<String, dynamic> json) {
    _compCode = json['comp_code'];
    _compName = json['comp_name'];
    _orderNo = json['order_no'];
    if (json['order_items'] != null) {
      _orderItems = new List<OrderItems>();
      json['order_items'].forEach((v) {
        _orderItems.add(new OrderItems.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['comp_code'] = this._compCode;
    data['comp_name'] = this._compName;
    data['order_no'] = this._orderNo;
    if (this._orderItems != null) {
      data['order_items'] = this._orderItems.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class OrderItems {
  String _compCode;
  String _compName;
  String _orderNo;

  OrderItems({String compCode, String compName, String orderNo}) {
    this._compCode = compCode;
    this._compName = compName;
    this._orderNo = orderNo;
  }

  String get compCode => _compCode;
  set compCode(String compCode) => _compCode = compCode;
  String get compName => _compName;
  set compName(String compName) => _compName = compName;
  String get orderNo => _orderNo;
  set orderNo(String orderNo) => _orderNo = orderNo;

  OrderItems.fromJson(Map<String, dynamic> json) {
    _compCode = json['comp_code'];
    _compName = json['comp_name'];
    _orderNo = json['order_no'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['comp_code'] = this._compCode;
    data['comp_name'] = this._compName;
    data['order_no'] = this._orderNo;
    return data;
  }
}
Jitesh Mohite
  • 31,138
  • 12
  • 157
  • 147
  • Thanks for your help in modeling the JSON data framework. I request you one more thing, please help me with the calling of the elements, as it is too complex for me to make the right choice. one example each will be sufficient –  Aug 29 '20 at 13:36
  • please guide me to get the elements of OrderItems –  Aug 29 '20 at 15:14
  • yes, used this in the future function in the question `return NewOrder.fromJson(jsonResponse);` it received data, then used for the length of orders 'snapshot.data.content.length' –  Aug 29 '20 at 16:41
  • now i need the configure the length for the order items, and get there respective elements, please guide further –  Aug 29 '20 at 16:44
  • @VickySingh: Could you post another question for it as the purpose of the original question already addressed, I would definitely help you with it. – Jitesh Mohite Aug 29 '20 at 17:50
  • sure, just give me few minutes –  Aug 29 '20 at 17:52
  • HI, please help me with this question https://stackoverflow.com/questions/63650400/need-to-configure-the-json-data-fetched-fields-to-the-widget-elements-in-flutter –  Aug 29 '20 at 23:25
  • hi @jitsm555, please provide the help for this question as we discussed last night https://stackoverflow.com/questions/63650400/need-to-configure-the-json-data-fetched-fields-to-the-widget-elements-in-flutter –  Aug 30 '20 at 03:15
  • Hi, please help me with this question https://stackoverflow.com/questions/63650400/need-to-configure-the-json-data-fetched-fields-to-the-widget-elements-in-flutter –  Aug 30 '20 at 04:52
  • Hi, waiting for your help with this question https://stackoverflow.com/questions/63650400/need-to-configure-the-json-data-fetched-fields-to-the-widget-elements-in-flutter –  Aug 30 '20 at 05:56
  • Answered, please have a look. – Jitesh Mohite Aug 30 '20 at 06:14