0

I have a Json data , I want to pass my json Districts id to next dropdown menu to show the Area's.

Now I can show the Districts data easily but, When I try to pass the districts value to next dropdown I found this error message==>

_AssertionError ('package:flutter/src/material/dropdown.dart': Failed assertion: line 894 pos 15: 'items == null || items.isEmpty || value == null ||
              items.where((DropdownMenuItem<T> item) {
                return item.value == value;
              }).length == 1': There should be exactly one item with [DropdownButton]'s value: 4. 
Either zero or 2 or more [DropdownMenuItem]s were detected with the same value)

enter image description here

This is my Districts DropDown menu button::

 Container(
                            alignment: Alignment.centerLeft,
                            child: DropdownButton<int>(
                              value: districtsC.selectedValue,
                              icon: Icon(
                                Icons.arrow_drop_down,
                                color: black54,
                              ),
                              dropdownColor: white,
                              focusColor: white,
                              items: districtsC.districtsList
                                  .map((e) => districtsC.dataToMenuItem(e))
                                  .toList(),
                              hint: KText(
                                text: 'Select Districts',
                                color: black,
                              ),
                              onChanged: (int? value) {
                                setState(() {
                                  districtsC.selectedValue = value;
                                  print(value);
                                  RestartWidget.restartApp(context);
                                });
                              },
                            ),
                          ),

This is my Areas DropDown menu button::

Container(
                            alignment: Alignment.centerLeft,
                            child: DropdownButton<int>(
                              value: areasC.selectedValue,
                              icon: Icon(
                                Icons.arrow_drop_down,
                                color: black54,
                              ),
                              dropdownColor: white,
                              focusColor: white,
                              items: areasC.areaList
                                  .map((e) => areasC.dataToMenuItem(e))
                                  .toList(),
                              hint: KText(
                                text: 'Select Area',
                                color: black,
                              ),
                              onChanged: (int? value) {
                                setState(() {
                                  // RestartWidget.restartApp(context);
                                  areasC.selectedValue = value;

                                  print(value);
                                  RestartWidget.restartApp(context);
                                });
                              },
                            ),
                          ),

This is my Districts Controller ::

import 'package:Darucheeni/src/configs/appConfigs.dart';
import 'package:Darucheeni/src/models/customerLocationModel/districsModel.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../../configs/appColors.dart';
import '../../widgets/textWidget/kText.dart';

class DistrictsController extends GetxController {
  final dio = Dio();
  final districtsList = RxList<Districts>();
  int? selectedValue;

  getAllDistricts() async {
    try {
      final res = await dio.get(baseUrl + 'districts');
      final List<Districts> districts = res.data['districts']
          .map((json) => Districts.fromJson(json))
          .toList()
          .cast<Districts>();

      print(res.data[['districts']]);
      districtsList.clear();
      districtsList.addAll(districts);
    } catch (e) {
      print(e);
    }
  }

  DropdownMenuItem<int> dataToMenuItem(Districts item) {
    return DropdownMenuItem(
      child: KText(
        text: '${item.name}',
        color: black,
        maxLines: 1,
        fontSize: 16,
      ),
      value: item.divisionId,
    );
  }
}

This is my Area's Controller ::

import 'package:Darucheeni/src/configs/appConfigs.dart';

import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../../configs/appColors.dart';
import '../../models/customerLocationModel/areasModel.dart';
import '../../widgets/textWidget/kText.dart';
import 'districController.dart';

class AreasController extends GetxController {
  final dio = Dio();
  final areaList = RxList<Areas>();
  int? selectedValue;
  final controller = Get.put(DistrictsController());

  getAllArea() async {
    try {
      final res = await dio.get(baseUrl + 'areas/${controller.selectedValue}');
      final List<Areas> areas = res.data['areas']
          .map((json) => Areas.fromJson(json))
          .toList()
          .cast<Areas>();

      print(res.data[['areas']]);
      areaList.clear();
      areaList.addAll(areas);
    } catch (e) {
      print(e);
    }
  }

  DropdownMenuItem<int> dataToMenuItem(Areas item) {
    return DropdownMenuItem(
      child: KText(
        text: '${item.area}',
        color: black,
        maxLines: 1,
        fontSize: 16,
      ),
      value: item.districtId,
    );
  }
}

This is my Json data ::

{
    "districts": [
        {
            "id": 55,
            "division_id": 4,
            "name": "Bagerhat",
            "bn_name": "বাগেরহাট",
            "lat": "22.651568",
            "lon": "89.785938",
            "website": "www.bagerhat.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 40,
            "division_id": 2,
            "name": "Bandarban",
            "bn_name": "বান্দরবান",
            "lat": "22.1953275",
            "lon": "92.2183773",
            "website": "www.bandarban.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 34,
            "division_id": 1,
            "name": "Barguna",
            "bn_name": "বরগুনা",
            "lat": "0",
            "lon": "0",
            "website": "www.barguna.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 35,
            "division_id": 1,
            "name": "Barishal",
            "bn_name": "বরিশাল",
            "lat": "0",
            "lon": "0",
            "website": "www.barisal.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 36,
            "division_id": 1,
            "name": "Bhola",
            "bn_name": "ভোলা",
            "lat": "22.685923",
            "lon": "90.648179",
            "website": "www.bhola.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 18,
            "division_id": 5,
            "name": "Bogura",
            "bn_name": "বগুড়া",
            "lat": "24.8465228",
            "lon": "89.377755",
            "website": "www.bogra.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 41,
            "division_id": 2,
            "name": "Brahmanbaria",
            "bn_name": "ব্রাহ্মণবাড়িয়া",
            "lat": "23.9570904",
            "lon": "91.1119286",
            "website": "www.brahmanbaria.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 42,
            "division_id": 2,
            "name": "Chandpur",
            "bn_name": "চাঁদপুর",
            "lat": "23.2332585",
            "lon": "90.6712912",
            "website": "www.chandpur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 22,
            "division_id": 5,
            "name": "Chapainawabganj",
            "bn_name": "চাঁপাইনবাবগঞ্জ",
            "lat": "24.5965034",
            "lon": "88.2775122",
            "website": "www.chapainawabganj.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 43,
            "division_id": 2,
            "name": "Chattogram",
            "bn_name": "চট্টগ্রাম",
            "lat": "22.335109",
            "lon": "91.834073",
            "website": "www.chittagong.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 56,
            "division_id": 4,
            "name": "Chuadanga",
            "bn_name": "চুয়াডাঙ্গা",
            "lat": "23.6401961",
            "lon": "88.841841",
            "website": "www.chuadanga.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 45,
            "division_id": 2,
            "name": "Cox's Bazar",
            "bn_name": "কক্স বাজার",
            "lat": "0",
            "lon": "0",
            "website": "www.coxsbazar.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 44,
            "division_id": 2,
            "name": "Cumilla",
            "bn_name": "কুমিল্লা",
            "lat": "23.4682747",
            "lon": "91.1788135",
            "website": "www.comilla.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 1,
            "division_id": 3,
            "name": "Dhaka",
            "bn_name": "ঢাকা",
            "lat": "23.7115253",
            "lon": "90.4111451",
            "website": "www.dhaka.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 26,
            "division_id": 6,
            "name": "Dinajpur",
            "bn_name": "দিনাজপুর",
            "lat": "25.6217061",
            "lon": "88.6354504",
            "website": "www.dinajpur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 2,
            "division_id": 3,
            "name": "Faridpur",
            "bn_name": "ফরিদপুর",
            "lat": "23.6070822",
            "lon": "89.8429406",
            "website": "www.faridpur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 46,
            "division_id": 2,
            "name": "Feni",
            "bn_name": "ফেনী",
            "lat": "23.023231",
            "lon": "91.3840844",
            "website": "www.feni.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 27,
            "division_id": 6,
            "name": "Gaibandha",
            "bn_name": "গাইবান্ধা",
            "lat": "25.328751",
            "lon": "89.528088",
            "website": "www.gaibandha.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 3,
            "division_id": 3,
            "name": "Gazipur",
            "bn_name": "গাজীপুর",
            "lat": "24.0022858",
            "lon": "90.4264283",
            "website": "www.gazipur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 4,
            "division_id": 3,
            "name": "Gopalganj",
            "bn_name": "গোপালগঞ্জ",
            "lat": "23.0050857",
            "lon": "89.8266059",
            "website": "www.gopalganj.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 51,
            "division_id": 7,
            "name": "Habiganj",
            "bn_name": "হবিগঞ্জ",
            "lat": "24.374945",
            "lon": "91.41553",
            "website": "www.habiganj.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 5,
            "division_id": 8,
            "name": "Jamalpur",
            "bn_name": "জামালপুর",
            "lat": "24.937533",
            "lon": "89.937775",
            "website": "www.jamalpur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 57,
            "division_id": 4,
            "name": "Jashore",
            "bn_name": "যশোর",
            "lat": "23.16643",
            "lon": "89.2081126",
            "website": "www.jessore.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 37,
            "division_id": 1,
            "name": "Jhalokati",
            "bn_name": "ঝালকাঠি",
            "lat": "0",
            "lon": "0",
            "website": "www.jhalakathi.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 58,
            "division_id": 4,
            "name": "Jhenaidah",
            "bn_name": "ঝিনাইদহ",
            "lat": "23.5448176",
            "lon": "89.1539213",
            "website": "www.jhenaidah.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 19,
            "division_id": 5,
            "name": "Joypurhat",
            "bn_name": "জয়পুরহাট",
            "lat": "0",
            "lon": "0",
            "website": "www.joypurhat.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 47,
            "division_id": 2,
            "name": "Khagrachhari",
            "bn_name": "খাগড়াছড়ি",
            "lat": "23.119285",
            "lon": "91.984663",
            "website": "www.khagrachhari.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 59,
            "division_id": 4,
            "name": "Khulna",
            "bn_name": "খুলনা",
            "lat": "22.815774",
            "lon": "89.568679",
            "website": "www.khulna.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 6,
            "division_id": 3,
            "name": "Kishoreganj",
            "bn_name": "কিশোরগঞ্জ",
            "lat": "24.444937",
            "lon": "90.776575",
            "website": "www.kishoreganj.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 28,
            "division_id": 6,
            "name": "Kurigram",
            "bn_name": "কুড়িগ্রাম",
            "lat": "25.805445",
            "lon": "89.636174",
            "website": "www.kurigram.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 60,
            "division_id": 4,
            "name": "Kushtia",
            "bn_name": "কুষ্টিয়া",
            "lat": "23.901258",
            "lon": "89.120482",
            "website": "www.kushtia.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 48,
            "division_id": 2,
            "name": "Lakshmipur",
            "bn_name": "লক্ষ্মীপুর",
            "lat": "22.942477",
            "lon": "90.841184",
            "website": "www.lakshmipur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 29,
            "division_id": 6,
            "name": "Lalmonirhat",
            "bn_name": "লালমনিরহাট",
            "lat": "0",
            "lon": "0",
            "website": "www.lalmonirhat.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 7,
            "division_id": 3,
            "name": "Madaripur",
            "bn_name": "মাদারীপুর",
            "lat": "23.164102",
            "lon": "90.1896805",
            "website": "www.madaripur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 61,
            "division_id": 4,
            "name": "Magura",
            "bn_name": "মাগুরা",
            "lat": "23.487337",
            "lon": "89.419956",
            "website": "www.magura.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 8,
            "division_id": 3,
            "name": "Manikganj",
            "bn_name": "মানিকগঞ্জ",
            "lat": "0",
            "lon": "0",
            "website": "www.manikganj.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 62,
            "division_id": 4,
            "name": "Meherpur",
            "bn_name": "মেহেরপুর",
            "lat": "23.762213",
            "lon": "88.631821",
            "website": "www.meherpur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 52,
            "division_id": 7,
            "name": "Moulvibazar",
            "bn_name": "মৌলভীবাজার",
            "lat": "24.482934",
            "lon": "91.777417",
            "website": "www.moulvibazar.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 9,
            "division_id": 3,
            "name": "Munshiganj",
            "bn_name": "মুন্সিগঞ্জ",
            "lat": "0",
            "lon": "0",
            "website": "www.munshiganj.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 10,
            "division_id": 8,
            "name": "Mymensingh",
            "bn_name": "ময়মনসিংহ",
            "lat": "0",
            "lon": "0",
            "website": "www.mymensingh.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 20,
            "division_id": 5,
            "name": "Naogaon",
            "bn_name": "নওগাঁ",
            "lat": "0",
            "lon": "0",
            "website": "www.naogaon.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 63,
            "division_id": 4,
            "name": "Narail",
            "bn_name": "নড়াইল",
            "lat": "23.172534",
            "lon": "89.512672",
            "website": "www.narail.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 11,
            "division_id": 3,
            "name": "Narayanganj",
            "bn_name": "নারায়াণগঞ্জ",
            "lat": "23.63366",
            "lon": "90.496482",
            "website": "www.narayanganj.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 12,
            "division_id": 3,
            "name": "Narsingdi",
            "bn_name": "নরসিংদী",
            "lat": "23.932233",
            "lon": "90.71541",
            "website": "www.narsingdi.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 21,
            "division_id": 5,
            "name": "Natore",
            "bn_name": "নাটোর",
            "lat": "24.420556",
            "lon": "89.000282",
            "website": "www.natore.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 13,
            "division_id": 8,
            "name": "Netrokona",
            "bn_name": "নেত্রকোণা",
            "lat": "24.870955",
            "lon": "90.727887",
            "website": "www.netrokona.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 30,
            "division_id": 6,
            "name": "Nilphamari",
            "bn_name": "নীলফামারী",
            "lat": "25.931794",
            "lon": "88.856006",
            "website": "www.nilphamari.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 49,
            "division_id": 2,
            "name": "Noakhali",
            "bn_name": "নোয়াখালী",
            "lat": "22.869563",
            "lon": "91.099398",
            "website": "www.noakhali.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 23,
            "division_id": 5,
            "name": "Pabna",
            "bn_name": "পাবনা",
            "lat": "23.998524",
            "lon": "89.233645",
            "website": "www.pabna.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 31,
            "division_id": 6,
            "name": "Panchagarh",
            "bn_name": "পঞ্চগড়",
            "lat": "26.3411",
            "lon": "88.5541606",
            "website": "www.panchagarh.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 38,
            "division_id": 1,
            "name": "Patuakhali",
            "bn_name": "পটুয়াখালী",
            "lat": "22.3596316",
            "lon": "90.3298712",
            "website": "www.patuakhali.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 39,
            "division_id": 1,
            "name": "Pirojpur",
            "bn_name": "পিরোজপুর",
            "lat": "0",
            "lon": "0",
            "website": "www.pirojpur.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 14,
            "division_id": 3,
            "name": "Rajbari",
            "bn_name": "রাজবাড়ি",
            "lat": "23.7574305",
            "lon": "89.6444665",
            "website": "www.rajbari.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        
        {
            "id": 17,
            "division_id": 3,
            "name": "Tangail",
            "bn_name": "টাঙ্গাইল",
            "lat": "0",
            "lon": "0",
            "website": "www.tangail.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 33,
            "division_id": 6,
            "name": "Thakurgaon",
            "bn_name": "ঠাকুরগাঁও",
            "lat": "26.0336945",
            "lon": "88.4616834",
            "website": "www.thakurgaon.gov.bd",
            "status": 1,
            "created_at": null,
            "updated_at": null
        }
    ]
}

I want to pass the districts api "division_id" to Area's Api and the "name": to pass in backend...

DropDown Like this ====> enter image description here

This is I already created==> I just pass dropdown value to area api

enter image description here

Fsd Ramjan
  • 151
  • 2
  • 12

1 Answers1

0

I would suggest you to use Provider This helps to update data instantly and rebuild the widget with new data. You can rebuild a particular widget or entire screen based on your requirement.

or refer to this article ARTICLE

Bhushan
  • 51
  • 1
  • 3