【问题标题】:The argument type 'BlocProvider' can't be assigned to the parameter type 'Widget' - Cubit BlocProvider参数类型“BlocProvider”不能分配给参数类型“Widget” - Cubit BlocProvider
【发布时间】:2021-03-19 00:43:09
【问题描述】:

我真的很担心这一点,因为所有教程似乎都以这种方式实现这部分代码。 但我的编译器抛出错误:参数类型“BlocProvider”不能分配给参数类型“Widget”。
我正在关注教程:Flutter Bloc & Cubit
除了我们应该添加 BlocProvider
Main.dart 之外,代码的所有部分都运行良好 我是 Flutter 的新手,我不知道我应该从这里做什么。

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      home: BlocProvider(
        create: (context) => WeatherCubit(FakeWeatherRepository()),
        child: WeatherSearchPage(),
      ),
    );
  }
}

错误如附图所示:

【问题讨论】:

    标签: flutter dart flutter-layout bloc


    【解决方案1】:

    我大多看到 MaterialApp 是 BlocProvider 的子级,但这不是问题所在。我无法从显示的代码中看出,但我最好的猜测是,FakeWeatherRepositoryWeatherSearchPage 有问题,这很可能导致 BlocProvider 不是小部件的错误。

    您确定两个小部件都已导入。屏幕上的下划线看起来更像是错字更正,而不是错误。但也许你想删除 BlocProvider 并将两个小部件直接放在home: 后面(作为一列或一个一个)并检查它们是否被识别或者它们是否仍然抛出错误

    【讨论】:

      【解决方案2】:

      如果有人遇到这种不常见的错误,
      运行以下命令:flutter pub cache repair
      然后重新启动笔记本电脑和 IDE。
      按照@felangel 在github 上的指导,这对我有用

      【讨论】:

      • 是的,这似乎是 dart 分析器的半常见问题,会影响状态管理代码,包括 bloc 状态管理代码。
      猜你喜欢
      • 1970-01-01
      • 2019-12-06
      • 2021-08-23
      • 2020-01-10
      • 2021-08-05
      • 2021-10-04
      • 2021-09-13
      • 2021-11-11
      • 2021-07-04
      相关资源
      最近更新 更多