【问题标题】:The argument type 'MyBloc' can't be assigned to the parameter type 'MyBloc Function(BuildContext)参数类型“MyBloc”不能分配给参数类型“MyBloc Function(BuildContext)
【发布时间】:2021-08-13 10:07:03
【问题描述】:

我正在尝试将 flutter_bloc 添加到我的颤振应用程序中。我有主页,当单击主页中的按钮时需要导航到不同的页面。导航工作没有任何问题,但是当使用 BlocProvider 包裹组件时,会出现错误

无法将参数类型“MyBloc”分配给参数类型“MyBloc Function(BuildContext)”

这是我迄今为止尝试过的

我的圈子

import 'package:flutter_bloc/flutter_bloc.dart';

enum MyEvent {increment, decrement}

class MyBloc extends Bloc<MyEvent, int> {
  MyBloc() : super(0);  

  @override
  Stream<int> mapEventToState(MyEvent event) async* {
    switch (event) {
      case MyEvent.increment:
        yield state + 1;
        break;
      case MyEvent.decrement:
        yield state - 1;
        break;
    }
  }
}

在主页中点击按钮时我正在调用下面的函数

  Future<void> _routeToTodayTasks() {
    return Navigator.push(
        context,
        MaterialPageRoute(
            builder: (BuildContext context) => BlocProvider<MyBloc>(
            create: MyBloc(),
            child: TodayTasks(),
          )));
  }

谁能告诉我我的代码有什么问题?

【问题讨论】:

  • create 接受一个返回块的函数,而不是块的实例,所以使用(context)=&gt; MyBloc(),

标签: flutter dart bloc flutter-bloc


【解决方案1】:

正如错误消息明确指出的那样,BlocProvider 中的 create 参数接受语法为 MyBloc Function(BuildContext) 的函数,但您直接返回了 MyBloc 类的对象。

所以,从这样的函数中返回 bloc 对象:

 create: (context) => MyBloc(),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2020-08-30
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多