тип '_InternalLinkedHashMap 'не является подтипом типа' int 'во флаттере - PullRequest
0 голосов
/ 25 апреля 2020

Я работаю над этим проектом, есть ошибка, и я не могу понять, как ее исправить, позвольте мне кратко объяснить, что я делаю в этом проекте и как он работает. так что в основном этот проект имеет нижнюю панель навигации. и там 5 экранов в нижней навигации, (кпи, клиенты, карты, календарь, цитаты). Прямо сейчас я сталкиваюсь с ошибкой, которая связана с клиентами и экраном карты. На экране клиента я использую список FilterUsers для поиска клиентов в списке и отображения результатов на экране клиента. в initState FilterUsers заполняется клиентами из базы данных, но, используя технику поиска, значения добавляются / удаляются из FilterUsers ,

код для фильтрации / поиска в FilterUsers

setState(() {
   filteredUsers = users
    .where((u) => (u.name
    .toLowerCase()
    .contains(string.toLowerCase()) ||
    u.email
    .toLowerCase()
    .contains(string.toLowerCase())))
    .toList();
   });

enter image description here

enter image description here

Теперь я коснусь искомого элемента и перейду к следующему экрану, который является профилем клиента, затем я go перейду к следующему экрану, который является настройками клиента, здесь после обновления информации о клиенте, я нажмите на редактировать, и все будет обновляться, как я хочу сделать. enter image description here

Что происходит, когда я нажимаю Ok, всплывающее окно с ответом объясняется в приведенном ниже коде, оно обновляет FilterUsers обновленными данными, я введено в настройках профиля клиента.

FlatButton(
            child: Text('Ok'),
            onPressed: () {
              setState(() {
                filteredUsers[widget.customerIndex].name=name.text;
                filteredUsers[widget.customerIndex].email=email.text;
                filteredUsers[widget.customerIndex].status=dropdownValue;

                filteredUsers[widget.customerIndex].description=description.text;
                filteredUsers[widget.customerIndex].location_2=location_2.text;
                filteredUsers[widget.customerIndex].location_3=location_3.text;

                filteredUsers[widget.customerIndex].phone=phone.text;
                filteredUsers[widget.customerIndex].customerPhone_2=customerPhone_2.text;
                filteredUsers[widget.customerIndex].postalCode=postalCode.text;

                filteredUsers[widget.customerIndex].province=province.text;
                filteredUsers[widget.customerIndex].communities=communities.text;
                filteredUsers[widget.customerIndex].exercise=exercise.text;

                filteredUsers[widget.customerIndex].reference=reference.text;
                filteredUsers[widget.customerIndex].socType=socType.text;
                filteredUsers[widget.customerIndex].activeMain=activeMain.text;

                filteredUsers[widget.customerIndex].facebook=facebook.text;
                filteredUsers[widget.customerIndex].youtube=youtube.text;
                filteredUsers[widget.customerIndex].instagram=instagram.text;

                filteredUsers[widget.customerIndex].twitter=twitter.text;
                filteredUsers[widget.customerIndex].website=website.text;
                filteredUsers[widget.customerIndex].otherNetworks=otherNetworks.text;

                filteredUsers[widget.customerIndex].pinterest=pinterest.text;
              });
              Navigator.of(context).pop();
            },
          ),

Проблема: Теперь я буду go на экране карты, и здесь я могу видеть тех же клиентов на карте Google, что и маркер, когда я нажимаю на них. Маркер, он перейдет на тот же экран профиля клиента. здесь я также могу отредактировать клиента, теперь здесь возникает проблема, когда я нажимаю кнопку редактирования после редактирования записи, это дает мне исключение в окне отладки. тип '_InternalLinkedHashMap' не является подтипом типа 'int' во флаттере Проблема, которую я нахожу, заключается в том, что при переходе на экран профиля клиента с экрана myCustomer я передаю FilterUsers index с это, поэтому, когда я редактирую эту запись, он будет проверять индекс и обновлять его, но в случае экрана карты, у меня нет индекса FilterUsers здесь, поэтому, когда я обновляю с этой стороны запись не обновлено.

передача данных с экран моего клиента на профиль клиента , а затем на настройки клиента

ListView.builder(
                        padding: EdgeInsets.all(10.0),
                        itemCount: filteredUsers.length,
                        itemBuilder: (BuildContext context, int index) {
                          return InkWell(
                            onTap: () {
                              print(index);
                              // show details here
                              print("${filteredUsers[index].id} tapped");
                              Navigator.push(
                                context,
                                MaterialPageRoute(
                                    builder: (context) => CustomerDetails(
                                        index,
                                        filteredUsers[index].id,
                                        filteredUsers[index].name,
                                        filteredUsers[index].email,
                                        filteredUsers[index].description,
                                        filteredUsers[index].phone,
                                        filteredUsers[index].website,
                                        filteredUsers[index].status,
                                        filteredUsers[index].postalCode,
                                        filteredUsers[index].location_2,
                                        filteredUsers[index].location_3,
                                        filteredUsers[index].province,
                                        filteredUsers[index].communities,
                                        filteredUsers[index].customerPhone_2,
                                        filteredUsers[index].exercise,
                                        filteredUsers[index].reference,
                                        filteredUsers[index].activeMain,
                                        filteredUsers[index].socType,
                                        filteredUsers[index].facebook,
                                        filteredUsers[index].instagram,
                                        filteredUsers[index].twitter,
                                        filteredUsers[index].pinterest,
                                        filteredUsers[index].youtube,
                                        filteredUsers[index].otherNetworks,
                                        meetings)),
                              );
                            },
                            child: Card(
                              child: Padding(
                                padding: EdgeInsets.all(10.0),
                                child: Column(
                                  mainAxisAlignment: MainAxisAlignment.start,
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: <Widget>[
                                    Text(
                                      filteredUsers[index].name,
                                      style: TextStyle(
                                        fontSize: 16.0,
                                        color: Colors.black,
                                      ),
                                    ),
                                    SizedBox(
                                      height: 5.0,
                                    ),
                                    Text(
                                      filteredUsers[index].email.toLowerCase(),
                                      style: TextStyle(
                                        fontSize: 14.0,
                                        color: Colors.grey,
                                      ),
                                    ),
                                  ],
                                ),
                              ),
                            ),
                          );
                        },
                      ),

передача данных с экрана карты в профиль клиента , а затем в настройки клиента

var i = 0;
        for (var item in custInfo) {
          if (item['customer_latitude'] == "" &&
              item['customer_longitude'] == "") {
            continue;
          } else {
            markerId = MarkerId((markers.length + 1).toString());
            LatLng markerPos = LatLng(double.parse(item['customer_latitude']),
                double.parse(item['customer_longitude']));
            final Marker marker = Marker(
                infoWindow: InfoWindow(
                  title: item['customer_name'],
                  snippet: item['customer_desc'],
                ),
                // onTap: () => _onMarkerTapped(markerId),
                icon: BitmapDescriptor.defaultMarkerWithHue(
                    item['customer_status'] == 'red'
                        ? BitmapDescriptor.hueRed
                        : item['customer_status'] == 'yellow'
                            ? BitmapDescriptor.hueYellow
                            : BitmapDescriptor.hueGreen),
                markerId: markerId,
                consumeTapEvents: true,
                position: markerPos,
                onTap: () {
                  print(i);
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => CustomerDetails(
                            i,
                            item['customer_id'],
                            item['customer_name'],
                            item['customer_email'],
                            item['customer_desc'],
                            item['customer_phone'],
                            item['customer_website'],
                            item['customer_status'],
                            item['postal_code'],
                            item['location_2'],
                            item['location_3'],
                            item['province'],
                            item['communities'],
                            item['customer_phone_2'],
                            item['exercise'],
                            item['reference'],
                            item['active_main'],
                            item['soc_type'],
                            item['facebook'],
                            item['instagram'],
                            item['twitter'],
                            item['pinterest'],
                            item['youtube'],
                            item['other_networks'],
                            meetings)),
                  );
                });
            _markers = null;
            markers[markerId] = marker;
          }
          i++;
        }
...