Home > Net >  how to delete an object from list in flutter
how to delete an object from list in flutter

Time:04-12

i want to delete an object from list of inventory in which i just have description and url of the inventory and i want to delete object of inventory by description so how can i delete the object.

function in service class

this is my service class

Future<dynamic> requestToRemoveInventory(
      String accessToken, List<Inventory> list) async {
    try {
      var response = await http.patch(Uri.parse(AppUrl.removeInventory),
          headers: <String, String>{
            'Content-Type': 'application/json; charset=UTF-8',
            'Authorization': 'Bearer $accessToken'
          },
          body: jsonEncode({"inventory": list}));
      if (response.statusCode == 200 || response.statusCode == 201) {
        var responseJson = jsonDecode(response.body);
        return responseJson;
      } else {
        var responseJson = jsonDecode(response.body);
        print(responseJson);
      }
    } on SocketException {
      throw NoInternetException('No Internet Service');
    }
  }

This is my Controller class

deleteInventory(List<Inventory> list, BuildContext context) async {
    String? accessToken = await preferenceService.getAccessToken();
    inventoryService.requestToRemoveInventory(accessToken!, list).then((value) {
      getMyInvenoryFromService();
    }).catchError((error) {
      showSnackBar(error.toString(), context);
    });
  }

please tell me what logic i have to write in view to delete the object. when i am deleting then all list is deleting at a time

This is my view

PopupMenuButton(
                                          itemBuilder: (context) => [
                                            PopupMenuItem(
                                              onTap: () {
                                                var list = inventoryController
                                                    .myInventoryList1
                                                    .where((i) =>
                                                i.description !=
                                                    inventoryController
                                                        .myInventoryList1[
                                                    index]
                                                        .description)
                                                    .toList();
                                                inventoryController
                                                    .deleteInventory(
                                                    list, context);




                                              },
                                              value: 1,
                                              child: Padding(
                                                padding:
                                                const EdgeInsets.all(
                                                    8.0),
                                                child: Text(
                                                  "Delete",
                                                  style: TextStyle(
                                                      color: AppColors
                                                          .pinkAppBar,
                                                      fontWeight:
                                                      FontWeight.w700),
                                                ),
                                              ),
                                            ),
                                          

CodePudding user response:

You can use removeWhere


PopupMenuItem(
        onTap: () {
            var list = inventoryController
                .myInventoryList1;

//if you want to remove a single object from list
 list.removeWhere((i) =>
                    i.description ==
                    list[index].description);

//if you want the only element in the list.
var updateList = list.firstWhere((i) => i.description ==
                    list[index].description)
            inventoryController
                .deleteInventory(
                    list, context);

        }
 

CodePudding user response:


Removing Objects and indexes into the list


List.remove(Object value)

Example of Removing Objects into the list

List l = [1, 2, 3,4,5,6,7,8,9];

bool res = l.remove(1);

Result

[2, 3, 4, 5, 6, 7, 8, 9]

List.removeAt(int index)

Example of Removing Index into the list

List l = [1, 2, 3,4,5,6,7,8,9];

bool res = l.removeAt(1);

result

[1, 3, 4, 5, 6, 7, 8, 9]

CodePudding user response:

Try this way Here, List contains Inventory class all data. Find or remove data by List object.

List<Inventory> list;

//For removing specific item from a list with the attribute value

list.removeWhere((item) => item.id == '001')

//Remove item by specifying the position of the item in the list

list.removeAt(2)

//Remove last item from the list

list.removeLast()

//Remove a range of items from the list

list.removeRange(2,5)

If you raise any issue raise your query to us.

  • Related