类型'_InternalLinkedHashMap <String,dynamic>'不是flutter中类型'int'的子类型

时间:2020-04-25 10:53:43

标签: android debugging flutter flutter-layout flutter-test

我正在从事这个项目,有一个错误,我不明白如何解决,请让我简要解释一下我在该项目中的工作及其工作方式。因此,基本上,该项目具有底部导航栏。底部导航中有5个屏幕(kpi,客户,地图,日历,报价)。目前,我正面临一个与客户和地图屏幕相关的错误。在客户屏幕中,我正在使用 filteredUsers 列表来搜索客户,并在客户屏幕中显示结果。在 initState 处的 filteredUsers 处已从数据库中填充了客户,但是使用搜索技术,从 filteredUsers 中添加/删除了值,

用于过滤/搜索 filteredUsers

的代码
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

现在,我将点击搜索到的项目,并转到下一个屏幕,即客户资料,然后我将转到下一个屏幕,即客户设置,在更新客户信息后,我将点击编辑每件事都会按照我的意愿更新。 enter image description here

下面的代码说明了当我单击“确定”时,在响应弹出窗口上会发生什么,它使用我在客户资料设置中输入的更新数据来更新 filteredUsers

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();
            },
          ),

问题:现在,我将转到地图屏幕,在这里我可以在Google地图上看到相同的客户作为标记,当我点击这些标记时,它将转到相同的客户资料屏幕。在这里我还可以编辑客户,现在问题来了,当我在编辑记录后单击“编辑”按钮时,它在调试窗口中给了我例外。 '_ InternalLinkedHashMap'类型不是'int'类型的子类型 我发现的问题是,当我从myCustomer屏幕转到客户资料屏幕时,我正在通过它传递 filteredUsers 索引,因此当我编辑此记录时,它将检查索引并更新它,但是在在地图屏幕的情况下,我在这里没有 filteredUsers 的索引,因此当我从该边记录进行更新时不会更新。

将数据从我的客户屏幕传递到客户个人资料,然后传递到客户设置

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++;
        }

0 个答案:

没有答案