当前位置: 首页 > 知识库问答 >
问题:

键入“列表”不是“List?”类型的子类型“有价值”

夏侯臻
2023-03-14

我正在尝试使用dart中的以下代码构建一个多芯片选择字段。

测试页面。飞奔

import 'package:flutter/material.dart';
import 'package:multi_select_flutter/multi_select_flutter.dart';

class TestWidget extends StatelessWidget {
  const TestWidget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final _gamePreferences = [
      GamePreference(id: 0, name: "Tennis"),
      GamePreference(id: 1, name: "Football")
    ].map((pref) => MultiSelectItem<GamePreference>(pref, pref.name)).toList();

    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        title: Text("Profile"),
      ),
      body: MultiSelectChipField(onTap: (value) {}, items: _gamePreferences),
    );
  }
}

class GamePreference {
  final int id;
  final String name;

  GamePreference({
    required this.id,
    required this.name,
  });
}

这是主要的。飞奔

import 'package:flutter/material.dart';
import 'screens/test_page.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: true,
      home: Container(child: TestWidget()),
    );
  }
}

但是,当我在multi-select中选择任何对象时,我会得到以下错误

════════ 异常捕获手势 ═══════════════════════════════════════════ 处理手势时抛出以下_TypeError:键入列表

抛出异常时,这是堆栈#0 FormFieldState。didChange(包:flatter/src/widgets/form.dart)包:flatter/../widgets/form。dart:1#1 u多选芯片FieldViewState_buildItem。包装:多选择颤振/切屑字段/多选择切屑字段。dart:515#2#州_handleTap封装:颤振/../材料/芯片。dart:1772#3#_handleTap包装:颤振/材料/墨水井。飞镖:989#4手势识别器。invokeCallback包:颤振/../signatures/recognizer。飞镖:182。。。处理程序:“onTap”识别器:TapGestureRecognizer#8cfb5调试所有者:GestureDetector状态:可能赢得竞技场最终位置:偏移(32.0,148.0)最终位置:偏移(24.0,17.0)按钮:1发送点击════════════════════════════════════════════════════════════════════════════════

共有2个答案

巩子实
2023-03-14

列表

列表

dart prettyprint-override">// these are all fine
List<String?> list1 = ['hello', null, 'world'];
List<String>? list2 = ['hello', 'world'];
List<String>? list3 = null;

// these are compile errors
List<String?> list4 = null;  // List is not nullable
List<String>? list5 = ['hello', null, 'world'];  // element type is not nullable

如果没有关于具体问题的更多信息,很难给出更详细的答案,但这就是列表之间的区别

夔庆
2023-03-14

改变

最终_gamePreferences=[游戏偏好(id: 0,名称:网球),游戏偏好(id: 1,名称:足球)]. map((pref)=

最终_gamePreferences=[游戏偏好(id: 0,名称:网球),游戏偏好(id: 1,名称:足球)]. map((pref)=

这将解决错误

在MultiSelectChipField中传递的列表具有MultiSelectItem数据类型,而MultiSelectChipField需要MultiSelectItem

"名单"

所以这两者是有区别的

当你分配名单时

因此,请确保分配给列表的值具有相同的数据类型。

 类似资料:
  • 我从Firestore示例中复制了一段代码: 但是我得到了这个错误 这里出了什么问题?

  • 我是一个新手,我尝试运行一个GitHub项目,但遇到了一个错误,比如类型ListDynamic不是类型ListInt的子类型。Github链接 误差线 以上代码文件 如有任何帮助,我们将不胜感激,并提前向您表示感谢。

  • 我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模

  • 我是个新手。当我运行代码时,我得到一个错误:“Future”类型不是“List”类型的子类型。如果我改变屏幕,我将得到错误:NoSuchMethodError:方法“map”被调用为null。我怎样才能解决它?谢谢你帮助我。

  • 我正在对地图执行firestore查询 没有人工作过,任何帮助都是感激的 谢谢你抽出时间

  • 我是颤振初学者。我得到这样的JSON响应时出错。 我一直在论坛上寻找这个问题,我发现是这样的。 但我不懂如何编写函数。这是我的密码。 还有像这样的错误。 我很抱歉问了同样的问题,因为我不明白