错误:在提供程序包中找不到类型“SingleChildCloneableWidget”

Posted

技术标签:

【中文标题】错误:在提供程序包中找不到类型“SingleChildCloneableWidget”【英文标题】:Error: Type 'SingleChildCloneableWidget' not found in Provider package 【发布时间】:2020-04-15 13:09:05 【问题描述】:

我更新了提供程序。现在不行了

lib/di/global_providers.dart:13:6:错误:找不到类型“SingleChildCloneableWidget”。 列出 globalProviders = [ ^^^^^^^^^^^^^^^^^^^^^^^^^^ lib/di/global_providers.dart:18:6:错误:找不到类型“SingleChildCloneableWidget”。 列出独立服务 = [ ^^^^^^^^^^^^^^^^^^^^^^^^^^ lib/di/global_providers.dart:23:6:错误:找不到类型“SingleChildCloneableWidget”。 列出依赖服务 = [ ^^^^^^^^^^^^^^^^^^^^^^^^^^ lib/main.dart:18:16:错误:参数类型“列表”不能分配给参数类型“列表”。 - “列表”来自“飞镖:核心”。 - 'SingleChildWidget' 来自'package:nested/nested.dart' ('../../flutter/.pub-cache/hosted/pub.dartlang.org/nested-0.0.4/lib/nested.dart' )。 供应商:全球供应商, ^ lib/di/global_providers.dart:13:6:错误:“SingleChildCloneableWidget”不是一种类型。 列出 globalProviders = [ ^^^^^^^^^^^^^^^^^^^^^^^^^^ lib/di/global_providers.dart:18:6:错误:“SingleChildCloneableWidget”不是一种类型。 列出独立服务 = [ ^^^^^^^^^^^^^^^^^^^^^^^^^^ lib/di/global_providers.dart:23:6:错误:“SingleChildCloneableWidget”不是类型。 列出依赖服务 = [

代码

List<SingleChildCloneableWidget> globalProviders = [
  ...independentServices,
  ...dependentServices,
];

List<SingleChildCloneableWidget> independentServices = [
  Provider.value(value: YelloChatDb()),
  Provider.value(value: YelloChatClient()),
];

List<SingleChildCloneableWidget> dependentServices = [
  ProxyProvider<YelloChatDb, CategoryDao>(
      update: (context, yelloChatDb, categoryDao) => CategoryDao(yelloChatDb)),

  ProxyProvider<YelloChatDb, SubCategoryDao>(
      update: (context, yelloChatDb,subCategoryDao) => SubCategoryDao(yelloChatDb)),

  ProxyProvider<YelloChatDb, UserDao>(
    update: (context, yelloChatDb, userdAO) => UserDao(yelloChatDb),
  ),

  ProxyProvider<YelloChatDb, EnquiriesDao>(
    update: (context, yelloChatDb, enquiriesDao) => EnquiriesDao(yelloChatDb),
  ),

  ProxyProvider<YelloChatClient, CategoryService>(
      update: (context, yelloChatClient, categoryService) =>
          CategoryService.create(yelloChatClient.chopperClient),
      dispose: (context, categoryService) => categoryService.client.dispose()),


  ProxyProvider2<CategoryDao, CategoryService, CategoriesRepository>(
      update: (context, categoryDao, categoryService, categoryRepository) =>
          CategoriesRepository(categoryDao: categoryDao, categoryService: categoryService)),

  ProxyProvider2<UserDao, CategoryService, UserRepository>(
      update: (context, userDao, categoryService, categoryRepository)=>
          UserRepository(userDao: userDao, categoryService: categoryService)
  ),

  ProxyProvider2<SubCategoryDao, CategoryService, SubCategoriesRepository>(
      update: (context, subCategoryDao, categoryService, subCategoryRepository) =>
          SubCategoriesRepository(categoryDao: subCategoryDao, categoryService: categoryService)),

  ProxyProvider2<EnquiriesDao, CategoryService, EnquiriesRepository>(
      update: (context, enquiriesDao, categoryService, enquiriesRepository) =>
          EnquiriesRepository(enquriesDao: enquiriesDao, categoryService: categoryService))
];

【问题讨论】:

【参考方案1】:

来自 Provider v4.0.0

SingleChildCloneableWidget 接口被移除,取而代之的是一个SingleChildWidget 接口和两个实现:

SingleChildStatelessWidget SingleChildStatefulWidget

MultiProvider 将接受 SingleChildWidget 而不是 SingleChildCloneableWidget

在 GitHub 中查看此 issue。

【讨论】:

【参考方案2】:

试试

import 'package:provider/single_child_widget.dart';

然后替换

List<SingleChildCloneableWidget> independentServices

List<SingleChildWidget> independentServices

它有效。我已经检查了依赖提供者:^4.3.2+3

【讨论】:

【参考方案3】:

首先,我不建议这样做。考虑直接在 MultiProvider 中创建此列表。

做你目前正在做的事情会增加不必要的复杂性和仪式感,而没有真正的好处。 事实上,您实际上是在降低可测试性。

如果您坚持这样做,自述文件对此非常清楚:

将 SingleChildCloneableWidget 替换为 SingleChildWidget(来自 provider/single_child_widget.dart)

【讨论】:

您能否详细说明“您实际上正在降低可测试性”?

以上是关于错误:在提供程序包中找不到类型“SingleChildCloneableWidget”的主要内容,如果未能解决你的问题,请参考以下文章

在包中找不到属性“layout_behavior”的资源标识符

IntelliJ 编译时在同一个包中找不到类

在 SqlServer 提供程序清单中找不到存储类型“Varchar(100)”

我在主包中找不到我的 AppIcon

Objective-C 新手,在 Xcode 包中找不到 Foundation 工具

错误 175:在配置中找不到指定的存储提供程序 - Sql Server CE