【问题标题】:The argument type 'Object?' can't be assigned to the parameter type 'List<Employee>'参数类型“对象?”不能分配给参数类型“List<Employee>”
【发布时间】:2021-08-29 11:25:10
【问题描述】:
child: FutureBuilder(
              future: employees,
              builder: (context, snapshot) {
                if (snapshot.hasData) {
                  return generateList(snapshot.data);
                }
                if (snapshot.data == null || snapshot.data.length == 0) {
                  return Text('No Employee Found');
                }
                return CircularProgressIndicator();
              },
            ),

错误参数类型“对象?”不能在下面的代码中分配给参数类型“列表”

return generateList(snapshot.data);

另一个错误无法无条件访问属性“长度”,因为接收者在代码中可以为“空”:

if (snapshot.data == null || snapshot.data.length == 0)


这里是 generateList 和 Employee 的代码 **************************************** ***

SingleChildScrollView generateList(List<Employee> employees) {
    return SingleChildScrollView(
      scrollDirection: Axis.vertical,
      child: SizedBox(
        width: MediaQuery.of(context).size.width,
        child: DataTable(
          columns: [
            DataColumn(
              label: Text('Name'),
            ),
            DataColumn(
              label: Text('Phome'),
            ),
            DataColumn(
              label: Text(''),
            )
          ],
          rows: employees
              .map(
                (employee) => DataRow(
              cells: [
                DataCell(
                  Text(employee.name),
                  onTap: () {
                    setState(() {
                      isUpdate = true;
                      employeeIdForUpdate = employee.id;
                    });
                    _employeeNameController.text = employee.name;
                    _employeePhoneController.text = employee.phone;
                  },
                ),
                DataCell(
                  Text(employee.phone),
                  onTap: () {
                    setState(() {
                      isUpdate = true;
                      employeeIdForUpdate = employee.id;
                    });
                    _employeeNameController.text = employee.name;
                    _employeePhoneController.text = employee.phone;
                  },
                ),
                DataCell(
                  IconButton(
                    icon: Icon(Icons.delete),
                    onPressed: () {
                      dbHelper.delete(employee.id);
                      refreshemployeeList();
                    },
                  ),
                )
              ],
            ),
          )
              .toList(),
        ),
      ),
    );
  }


class Employee {
  int id = 0;
  String name = "";
  String phone = "";
  Employee(this.id, this.name, this.phone);

  Map<String, dynamic> toMap() {
    var map = <String, dynamic>{
      'id': id,
      'name': name,
      'phone': phone,
    };
    return map;
  }

  Employee.fromMap(Map<String, dynamic> map) {
    id = map['id'];
    name = map['name'];
    phone = map['phone'];
  }
}

【问题讨论】:

    标签: flutter sqlite


    【解决方案1】:

    修改代码如下,

    return generateList(List<Employee>.from(snapshot.data));
    
    if (snapshot.data == null || snapshot.data!.length == 0)
    

    【讨论】:

    • 显示另一个错误“参数类型'对象?'不能分配给参数类型'Iterable'"
    • 我能用employeegenerateList 的代码更新你的问题吗
    猜你喜欢
    • 2021-11-06
    • 2019-02-08
    • 2020-05-28
    • 2021-07-04
    • 2021-12-10
    • 2021-10-24
    • 2022-11-05
    • 2021-08-05
    • 2021-07-07
    相关资源
    最近更新 更多