首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

参数类型'List<Null>?‘不能分配给参数类型“”List<Widget>“”

参数类型'List<Null>?'不能分配给参数类型'List<Widget>'

这个问题涉及到了Dart编程语言中的类型系统和泛型。在Dart中,泛型允许我们在编写代码时指定参数或返回值的类型,以增加代码的类型安全性和重用性。

首先,让我们解释一下这个问题中涉及到的两个类型:

  1. List<Null>?:这是一个可空的List,它可以包含Null值。List是Dart中的一种集合类型,可以存储多个对象,并且允许重复值。Null是Dart中的一个特殊类型,表示一个空值。
  2. List<Widget>:这是一个List,它只能包含Widget类型的对象。Widget是Dart中用于构建用户界面的基本构建块。

现在,让我们来解释为什么'List<Null>?'不能分配给'List<Widget>'。

在Dart中,泛型类型是不可协变的,这意味着泛型类型的参数类型必须完全匹配。虽然Null是Widget的超类型(即Null是Widget的父类),但是List<Null>?并不能被认为是List<Widget>的子类型。

这是因为List<Null>?可以包含Null值,而List<Widget>只能包含Widget类型的对象。如果我们将List<Null>?赋值给List<Widget>,那么我们就可以将Null值放入List<Widget>中,这将导致类型不匹配的错误。

所以,不能将'List<Null>?'分配给'List<Widget>'。

在Dart中,如果我们想要将'List<Null>?'转换为'List<Widget>',我们可以使用类型转换操作符as来实现。但是需要注意的是,如果'List<Null>?'中包含了除Null以外的其他类型的对象,那么在转换过程中可能会引发运行时错误。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobdev
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云元宇宙:https://cloud.tencent.com/product/vr
  • 腾讯云网络安全:https://cloud.tencent.com/product/ddos
相关搜索:不能将参数类型“List<Set<Card>>”分配给参数类型“List<Widget>”不能将参数类型'List<Widget>‘分配给参数类型’({List<Card>:bool})→growable‘在Flutter中,参数类型为“List<InkWell>?”不能分配给参数类型“”List<Widget>“”flutter list错误参数类型'List‘不能分配给参数类型'String’参数类型'List<dynamic>?‘不能分配给参数类型'List<dynamic>‘。在使用list时不能将参数类型“List<String>”分配给参数类型“List<String>Function()”参数类型“Future”不能分配给参数类型“List<LatLng>”Flutter错误:参数类型为'List<dynamic>?‘不能分配给参数类型“”List<dynamic>“”不能将参数类型“List<ChatModel>”分配给参数类型“ChatModel”不能将参数类型“BoxShadow”分配给参数类型“List<BoxShadow>”不能将参数类型List<LatLng>分配给参数类型“LatLng”迁移到空安全性:参数类型'Object?‘不能分配给参数类型“”List<Widget>“”错误:不能将参数类型“List<int>”分配给参数类型“Uint8List”参数类型“List<Series<dynamic,dynamic>>”不能分配给参数类型“List<Series<dynamic,String*>*>*”参数类型“Widget”不能分配给参数类型“PreferredSizeWidget?”参数类型“String”不能分配给参数类型“Uint8List”不能将参数类型“List<dynamic>”分配给参数类型“Iterable<Object>”不能将参数类型“List<dynamic>”分配给参数类型“Iterable<Video>”不能将参数类型“DropdownMenuItem<dynamic>”分配给参数类型“List<DropdownMenuItem<String>>?”参数类型“List<Todolist>?Function(QuerySnapshot<Object?>)”不能分配给参数类型“List<Todolist>Function(QuerySnapshot<Object?>)”
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • FastAPI(11)- 函数参数类型是列表,但不使用 typing 中的 List,而使用 list,会怎么样?

    update_item( list_: List[int] = Body(...), tuple_: Tuple[int] = Body(...), set..._: Set[int] = Body(...), ): results = {"list_": list_, "tuple_": tuple_, "set_": set_} return...、Set、Tuple 都会指定里面参数的数据类型 而 FastAPI 会对声明了数据类型的数据进行数据校验,所以会针对序列里面的参数进行数据校验 如果校验失败,会报一个友好的错误提示 使用 list、...set、tuple 的栗子 用 Python 自带的 list、set、tuple 类,是无法指定序列里面参数的数据类型,所以 FastAPI 并不会针对里面的参数进行数据校验 @app.put("/items...return results 变成传啥类型的值都可以 总结 要充分利用 FastAPI 的优势,强烈建议用 typing 的 List、Set、Tuple 来表示列表、集合、元组类型

    3.7K30

    2019-10-14-C++CLI居然不能创建无参数list

    作为一名.Net开发,如果有一天编译器突然告诉你,你必须要为每一个list的构造函数传入参数不能使用foreach处理数列。你会不会抓狂? ---- 来分享下我踩到的坑 ? ?...然而c++/cli是.NET兼容语言,语法自然是支持list或者foreach的使用的。所以事实上这里的语法完全没有任何问题,而且是可以通过编译的,就如同下图。 ? 那么是什么造成这些错误提示了呢?...这个选项就是告诉编译器,只能按照标准c++的语法进行编译,任何vc++特有的c++语法都不能通过。 那么,对于c++/cli来说,是.NET兼容语言,自然和标准c++的语法差异更大了。...xinyuehtx.github.io/post/C++CLI%E5%B1%85%E7%84%B6%E4%B8%8D%E8%83%BD%E5%88%9B%E5%BB%BA%E6%97%A0%E5%8F%82%E6%95%B0list.html

    39910

    Flutter 基础知识点总结

    ,但可以用var或 dynamic来声明一个变量,Dart会自动推断其数据类型,dynamic类似c#; 没有赋初值的变量都会有默认值null; Dart支持顶层方法,如main方法,可以在方法内部创建方法...变量与常量 变量 在Dart中,变量支持以下几种申明方式: 1.使用 var 声明变量,默认值为 null var a;//null a = 10; 2.显示类型声明 int a;//null...a = 10; 3.使用 var 声明,可赋予不同类型的值 var a; //null a = 10; //int a = "Dart"; //string 4.使用 final 声明只能赋值一次的变量...方法名(参数1,参数2,....){ 方法体… return 返回值 } 同时,在Dart语言中,方法也是对象,并且有具体类型Function;并且,返回值类型参数类型都可省略; void printPerson...,调用时根据参数位置传递对应类型

    5.2K10

    Chapter 3: Moving to Modern C++

    ,只要不涉及到std::initializer_list参数,括号和花括号初始化有相同的含义 class Widget { public: Widget(int i, bool...参数,在使用花括号初始化时,编译器会强烈地偏向于调用使用std::initializer_list参数的重载构造函数 class Widget { public: Widget(...,以至于即便最匹配的std::initializer_list构造函数不能被调用,编译器也会优先选择它 class Widget { public: Widget(int i, bool...w{10, 5.0}; // error, requires narrowing conversions 只有当没有办法在花括号初始化的参数类型和std::initializer_list参数类型之间进行转换时...: MyAllocList list; ... }; 此处看起来MyAllocList是一个与模板参数T存在依赖关系的对象,但是当编译器处理Widget模板时

    1.8K60

    Java 泛型进阶

    ); //... } List参数类型是E,add方法的参数类型也是E,他们在类的内部是一致的,所以添加Integer类型的对象到stringList违反了内部类型一致,不能通过编译。...擦除的缺陷 泛型类型不能显式地运用在运行时类型的操作当中,例如:转型、instanceof 和 new。因为在运行时,所有参数类型信息都丢失了。...>(new Widget.Factory()); } } 通过特定的工厂类实现特定的类型能够解决实例化类型参数的需求。...声明方式List, List list不能给泛型参数给出一个超类型边界;即不能声明List。...>类型的引用中,不能向其中添加Object, 而List类型的引用就可以添加Object类型的变量。 一些需要注意的问题 ---- 1. 任何基本类型不能作为类型参数 2.

    80130

    《Effective Modren C++》 进阶学习(上)

    存在不同类型,auto类型推导不能工作 「小结」 当用auto声明的变量使用花括号进行初始化,auto推导的类型为std::initializer_list。这一点是模板类型无法做到的。 3....另外,在构造函数有参数情况中,若不包含std::initializer_list参数或者 构造未传入实参,()和{}产生一样的效果,否则{}优先匹配std::initializer_list参数的构造函数...要求变窄转换 只有当传入的参数在编译器上无法转换成std::initializer_list中的T类型,才会匹配普通的构造函数。...优先考虑nullptr而非0和NULL 选择优先使用nullptr有如下原因: 类型安全。0是整型,NULL类型不确定。两者未明确被指名是指针类型,在使用时可能会带来类型转换等问题。...而nullptr为明确的空指针类型。 避免重载解析歧义。传统的 0 和 NULL 在函数重载中会引起歧义。

    19620

    STL容器的线程安全性了解多少?

    list和sllist,所有的标准关联容器 条款2:小心对"容器无关代码"的幻想 STL是建立在泛化基础上的:数组泛化为容器,参数化了所包含的对象的类型;函数泛化为了算法,参数化了所用的迭代器的类型;指针泛化为迭代器...g(double ()); //注意:参数名左右的括号可以被忽略,但是单独的括号指出存在一个参数列表:声明了存在指向函数的指针的参数 class Widget{ }; Widget w();/...list * 1, 第一个参数是 dataFile,类型是 std::istream_iterator, dataFile左右的括号是多余的并且被忽略 * 2, 第二个参数名字名字... pw2(pw1);//pw2指向pw1的Widget,pw1被设为NULL(Widget的所有权从 pw1转移到pw2) pw1 = pw2; //pw1现在再次指向Widget,pw2...> 这个拷贝默默地把被拷贝的auto_ptr设为NULL, 另外当 pivotValue出了生存期,它会自动删除指向的Widget

    1.5K10

    C#4.0新增功能03 泛型中的协变和逆变

    你无法向 List 类型的变量分配 List(Of Base)(在 Visual Basic 中为 List)的实例,反之亦然。...可以将结果委托分配给类型类型 Action 的变量,因为 T 委托的类型参数 Action 是逆变类型参数。 由于 T 指定了一个参数类型,因此该代码是类型安全代码。...此示例创建一个空 List (在 Visual Basic 中为List(Of Derived) ),并且说明可以将该类型传递给 PrintBases 且在不进行强制转换的情况下将该类型分配给类型...) return b == null ?...但不能将协变类型参数用作接口方法的泛型类型约束。 如果接口的方法具有泛型委托类型参数,则接口类型的协变类型参数可用于指定委托类型的逆变类型参数

    1.3K20

    安卓第八夜 玛丽莲梦露

    由于数据是字符串类型的表,ArrayAdapter也有一个String的类型参数。一个ArrayAdapter中包含了数据和条目的具体格式。...需要注意的是第二个参数android.R.layout.simple_list_item_1,它是安卓框架自己提供的一个简单的XML布局,包含了一个TextView元素。...ArrayAdapter随后自动的把字符串数据加工为simple_list_item_1格式。我也可以通过继承ArrayAdapter,来创建一个新的Adapter类型。...如果没有可以重复利用的条目视图,那么该参数就为null。此时,我们需要如if结构中那样,重建新的条目视图。 我将要赋予给条目的视图布局保存在list_category.xml中。...在创建对象时,我把上面的条目布局,即R.layout.list_category作为参数传给构造器: package me.vamei.vamei; import java.util.ArrayList

    1.9K90

    安卓第八夜 玛丽莲梦露

    由于数据是字符串类型的表,ArrayAdapter也有一个String的类型参数。一个ArrayAdapter中包含了数据和条目的具体格式。...需要注意的是第二个参数android.R.layout.simple_list_item_1,它是安卓框架自己提供的一个简单的XML布局,包含了一个TextView元素。...ArrayAdapter随后自动的把字符串数据加工为simple_list_item_1格式。我也可以通过继承ArrayAdapter,来创建一个新的Adapter类型。...如果没有可以重复利用的条目视图,那么该参数就为null。此时,我们需要如if结构中那样,重建新的条目视图。 我将要赋予给条目的视图布局保存在list_category.xml中。...在创建对象时,我把上面的条目布局,即R.layout.list_category作为参数传给构造器: package me.vamei.vamei; import java.util.ArrayList

    61510

    手机卫士黑名单功能(列表展示)

    ,super(),参数:上下文,数据库名称,游标工厂(null),版本号(1) 重写onCreate()方法,传递进来参数SQLiteDatabase对象 调用SQLiteDatabase对象的execSQL...对象,参数:Context对象 查询单条 定义方法find(),查询一条记录,参数:String类型电话号码 调用helper对象的getReadableDatabase()方法,获取到SQLiteDatabase...对象 调用SQLiteDatabase对象的rawQuery()方法,获取到Cursor对象,参数:String类型SQL语句,String[]参数值数组 调用Cursor对象的moveToNext()...()方法,获取到SQLiteDatabase对象 调用SQLiteDatabase对象的rawQuery()方法,获取到Cursor对象,参数:String类型SQL语句 新建一个domain包,新建一个业务...android.widget.ListView; import android.widget.TextView; import com.qingguow.mobilesafe.db.ado.BlackNumberAdo

    64230
    领券