TransWikia.com

Filed Assertion: line 298 pos 10: 'data != null' : A non-null String must be provided to a Text Widget

Stack Overflow Asked by jonah rimsy on November 22, 2021

I have this challenge. All I want to do is to display the item whose quantity was updated on the data table. I can display the item and the quantity. I can also reset the quantity but when I tried to click Save so it should populate on the datatable and perhaps make update request latter, it displays this error below:
Erorr the image shows me

And this is the List of the Items:

I want to populate them in the data table before the complete button

THis is the form that allows me update the quantity:

Input Textfield for the quatity

Also Instead of displaying the data in Listile. I want to display the data in ListBody with Divider but I don’t know how to do it. All the methods I’ve tried its throwing and error; the widget.farmerBvn and widget.dc_dcOid, Username can be replaced with this parameters:

farmerBvn=22499183844 dcOid=11, agentName=johndoh

I’ve tried but I keep getting this error on this and how to change the view from Listile to maybe ListBody where I can display more attributes. Please can anyone help me I am new to flutter.

Here’s the code that helps me display the Items on a List:

//List Start Here
                            child: ListView(
                              children: eops.map((e) {
                                return ListTile(
                                  onTap: () {
                                    showDialog(
                                        context: context,
                                        builder: (context) {
                                          return AlertDialog(
                                            shape: RoundedRectangleBorder(
                                                borderRadius:
                                                    BorderRadius.circular(20)),
                                            title: Text(e.itemName),
                                            
                                            content: TextField(
                                              controller: quantity,
                                              keyboardType:
                                                  TextInputType.number,
                                              decoration: InputDecoration(
                                                  border: OutlineInputBorder(
                                                    borderRadius:
                                                        BorderRadius.circular(
                                                            7),
                                                  ),
                                                  labelText:
                                                      'Input Quantity Collected',
                                                  hintText:
                                                      e.quantityAllocated),
                                            ),
                                            actions: <Widget>[
                                              FlatButton(
                                                child: Text('Reset'),
                                                onPressed: () {
                                                  setState(() {
                                                    quantity.text = '';
                                                  });
                                                },
                                              ),
                                              FlatButton(
                                                child: Text('Save'),
                                                onPressed: () {
                                                  bool neww = true;
                                                  for (EopLine n
                                                      in selectedEops) {
                                                    if (n.oid == e.oid) {
                                                      setState(() {
                                                        n.quantityCollected =
                                                            quantity.text;
                                                      });
                                                      neww = false;
                                                      break;
                                                    }
                                                  }

                                                  if (neww == true) {
                                                    setState(() {
                                                      selectedEops.add(EopLine(
                                                          oid: e.oid,
                                                          itemName: e.itemName,
                                                          quantityCollected: e
                                                              .quantityCollected,
                                                          createdBy:
                                                              e.createdBy,
                                                          createdOn:
                                                              DateTime.now()
                                                                  .toString(),
                                                          itemType: e.itemType,
                                                          measuringUnit:
                                                              e.measuringUnit));
                                                    });
                                                    neww = false;
                                                  }
                                                  Navigator.pop(context);
                                                },
                                              ),
                                            ],
                                          );
                                        });
                                  },
                                   leading: (
                                     
                                     
                                      FittedBox(
                                        fit: BoxFit.contain,
                                        child:Text(e.itemName),
                                      )
                                     ),
                                  title: Text('${e.quantityAllocated}'),
                                  trailing: Text('${e.quantityCollected}'),
                                );
                                // separatorBuilder:
                                // (context, index) {
                                //   return Divider();
                                // };
                              }).toList(),
                            ),
                            //   ],
                            // ),
                          ),
                          //And it ends here

And this is the datatable I want to populate:


                              //Table starts here
                              child: DataTable(
                                columns: [
                                  DataColumn(
                                    label: Text('S/N'),
                                  ),
                                  DataColumn(
                                    label: Text('EOP Items'),
                                  ),
                                  DataColumn(
                                    label: Text('Qty Collected'),
                                  ),
                                  // Lets add one more column to show a delete button
                                  DataColumn(
                                    label: Text('Update'),
                                  )
                                ],
                                rows: selectedEops
                                    .map(
                                      (eop) => DataRow(
                                          selected: selectedEops.contains(eop),
                                          cells: [
                                            DataCell(
                                              Text('${eop.oid}'),
                                              onTap: () {
                                                print('Selected ${eop.oid}');
                                              },
                                            ),
                                            DataCell(
                                              Text(eop.itemName),
                                              onTap: () {
                                                print(
                                                    'Selected ${eop.itemName}');
                                              },
                                            ),
                                            DataCell(
                                              Text(eop.quantityCollected ?? 0),
                                              onTap: () {
                                                print(
                                                    'Selected ${eop.quantityCollected ?? 0}');
                                              },
                                            ),
                                            DataCell(
                                              Text(eop.quantityAllocated.toString() ?? 0),
                                              onTap: () {
                                                print(
                                                    'Selected ${eop.quantityAllocated.toString() ?? 0}');
                                              },
                                              showEditIcon: true,
                                            ),
                                          ]),
                                    )
                                    .toList(),
                              ),
                            ),
                          ),
                          ///Table Ends here

In the arrays of products in this eops afer the map function I can see quantityAllocated shows null but other items are showing. any line below the eops.map(e) this quantityallocated and some other show null while the rest is showing its value.

 children: eops.map((e)

this is the function that performs the http request:


  Future<EopLine> get_farmer_eop() async {
    SharedPreferences localStorage = await SharedPreferences.getInstance();
    var userJson = localStorage.getString('loginRes');
    user = json.decode(userJson);
    print(user['UserName']);

    final response = await http.get(
        'http://api.ergagro.com:112/GenerateFarmersEop?farmerBvn=${widget.result}&dcOid=${widget.dc_result}&agentName=${user['UserName']}',
        headers: _setHeaders());

    print('${response.statusCode}popo');

    if (response.statusCode == 200 && response.body != null) {
      final jsonStatus = jsonDecode(response.body);
      maineops = jsonStatus['Eop'];
      List<dynamic> EopItems = maineops['EopLines'];
      for (var i in EopItems) {
        print('${i['Oid'].toString()} eopitemid');
        setState(() {
          eops.add(EopLine(
            oid: i['Oid'],
            itemType: i['EopType'].toString(),
            itemName: i['ItemName'],
            quantityAllocated: i['QuantityAllocated'].toString(),
            quantityCollected: i['QuantityCollected'].toString(),
            measuringUnit: i['MeasuringUnit'],
          ));
          // r = maineops;
        });
      }
    } else {
      Center(
        child: CircularProgressIndicator(
          valueColor: AlwaysStoppedAnimation<Color>(Colors.green),
          backgroundColor: Colors.grey,
        ),
      );
    }
    throw Exception();
  }

  _setHeaders() => {
        'Content-type': 'application/json',
        'Accept': 'application/json',
      };

the allocatedQuantity is not seeing its value but in the map function above I could see it but after the map I can't see it shows null

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP