如何在颤振中使用 BlocProvider

Posted

技术标签:

【中文标题】如何在颤振中使用 BlocProvider【英文标题】:How to use BlocProvider in flutter 【发布时间】:2020-08-25 02:46:00 【问题描述】:

在使用 BlocProvider 之前,我有 Bloc 类,如下所示。 我想通过'flutter_bloc 4.0.0'来使用blockProvider。

class SelfRentalBloc 

  final _srsController = StreamController<List<SelfRental>>.broadcast();
  get srs => _srsController.stream;

  SelfRentalBloc() 
    getSRs();
  

   ... more code

所以我在 myApp.dart 中添加了 blocProvider。 void main() => runApp(MyApp());

class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return BlocProvider(
        create: (BuildContext context) => SelfRentalBloc(),
        child: MaterialApp(
          initialRoute: '/',
          routes: 
            '/': (BuildContext context) => HomePage(),
            '/page': (BuildContext context) => Page(),
          ,
        ));
  

但它说 SelfRental 不扩展 Bloc。 我想我必须修改上面的 SelfRentalBloc 类。 但我不知道怎么做。你能推荐一些解决方案吗?感谢您阅读。

) 我已经阅读了 flutter_bloc 的文档。但是由于我的低级颤动,对于我的情况来说太难理解了。

【问题讨论】:

【参考方案1】:

'flutter_bloc 4.0.0' 被构建为使用库本身的块(或扩展块)。

在文档中,您可以找到如何实现自己的 bloc 的示例:https://pub.dev/packages/flutter_bloc#-example-tab-

您可以在示例中看到此类签名: class CounterBloc extends Bloc&lt;CounterEvent, int&gt;

CounterBloc 是您所在集团的名称,它扩展了“集团”(来自图书馆)。 CounterEvent 是一种事件类型。 int 是包含在 bloc 中的值。

事件是您要触发哪个集团行动的事件标识。 该值与您所在集团的“状态”类型相同。

要使用该库,请尝试该示例,但我认为您需要重写您的 bloc 以符合该库或保留您的自定义实现。

【讨论】:

以上是关于如何在颤振中使用 BlocProvider的主要内容,如果未能解决你的问题,请参考以下文章

如何在 initState 方法中访问颤振块?

颤振 BlocProvider 导航

如何在 Flutter App 中正确使用 BlocListener 和 BlocProvider

BlocProvider.value 如何与添加的事件一起使用

Flutter cubit blocprovider 找不到正确的提供者

颤振没有更新肘部状态