Flutter 参数类型 'List<dynamic>' 不能分配给参数类型 'List<Widget>'

Posted

技术标签:

【中文标题】Flutter 参数类型 \'List<dynamic>\' 不能分配给参数类型 \'List<Widget>\'【英文标题】:Flutter The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<Widget>'Flutter 参数类型 'List<dynamic>' 不能分配给参数类型 'List<Widget>' 【发布时间】:2022-01-03 03:18:26 【问题描述】:

这是我得到的错误,我不知道如何解决它

不能将参数类型“List”分配给参数类型“List”。

先谢谢大家帮忙解决

解决方案: 让我瞎了眼找到了解决方案:type 'List<dynamic>' is not a subtype of type 'List<Widget>'

  StreamBuilder<List<ScanResult>>(
                stream: FlutterBlue.instance.scanResults,
                initialData: [],
                builder: (c, snapshot) => ListView(
                  shrinkWrap: true,
                  children: snapshot.data!
                      .map(
                        (r) => ScanResultTile(
                          result: r,
                          onTap: () => Navigator.of(context)
                              .push(MaterialPageRoute(builder: (context) 
                            r.device.connect();
                            return DeviceScreen(device: r.device);
                          )),
                        ),
                      )
                      .toList(),
                ),),

【问题讨论】:

您能否分享完整代码以获取更多详细信息,例如返回类型“FlutterBlue.instance.scanResults”是什么 这能回答你的问题吗? type 'List<dynamic>' is not a subtype of type 'List<Widget>' 【参考方案1】:

Streambuilder 返回一个动态列表,所以不是返回 ListView,而是返回 ListView.builder:

 StreamBuilder<List<ScanResult>>(
                stream: FlutterBlue.instance.scanResults,
                initialData: [],
                builder: (c, snapshot) => ListView(  <------- change this with ListView.builder
                  shrinkWrap: true,
                  children: snapshot.data!
                      .map(
                        (r) => ScanResultTile(
                          result: r,
                          onTap: () => Navigator.of(context)
                              .push(MaterialPageRoute(builder: (context) 
                            r.device.connect();
                            return DeviceScreen(device: r.device);
                          )),
                        ),
                      )
                      .toList(),
                ),),

【讨论】:

以上是关于Flutter 参数类型 'List<dynamic>' 不能分配给参数类型 'List<Widget>'的主要内容,如果未能解决你的问题,请参考以下文章

颤振无法分配参数类型'List<dynamic>'

类型 'List<dynamic>' 不是类型 'FutureOr<List<RideData>>' 的子类型,Flutter

Flutter/Dart - “List<dynamic>”不是“List<Product>”类型的子类型

Flutter/Firestore - 类型 'List<dynamic>' 不是类型 'Widget' 的子类型

Flutter - 'List<dynamic>' 不是类型的子类型

Flutter StreamProvider 'List<dynamic>' 不是类型转换中类型 'List<??>' 的子类型