如何在 Flutter 中连续执行 bloc 事件?

Posted

技术标签:

【中文标题】如何在 Flutter 中连续执行 bloc 事件?【英文标题】:How can I execute bloc event continuously in Flutter? 【发布时间】:2020-08-17 09:38:12 【问题描述】:

我想在我的应用程序中持续跟踪用户位置。出于这个原因,我想在我的主页中连续执行 getLocaiton bloc 事件。我该怎么做?

这是我的 getLocation 事件;

  GetLocationState get initialState => GetLocationState(saveUserCurrentLocation: initialPosition );

  Stream<GetLocationState> mapEventToState(LocationEvent event) async*

    if (event is GetLocation)

      userLocation.getLocation().then((l)
        currentLatLng = LatLng(l.latitude, l.longitude);

      );


      yield GetLocationState(saveUserCurrentLocation: currentLatLng);


    
  

这是我的主页

            initialCameraPosition:
                CameraPosition(target: initialPosition, zoom: 10),
            mapType: MapType.terrain,
            onMapCreated: _onMapCreated,
            myLocationEnabled: true,
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () 
              _locationBloc.add(GetLocation());
            ,
          ),
        ),
      );
    );
  

如何在不使用 onPress 事件的情况下在后台连续运行代码?

【问题讨论】:

【参考方案1】:

initState() 中使用Timer(如果不是,则使您的小部件有状态):

    Timer(Duration(seconds: 5), ()
      _locationBloc.add(GetLocation());
    );

【讨论】:

以上是关于如何在 Flutter 中连续执行 bloc 事件?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter BLoC - 如何将参数传递给事件?

Flutter BLoC 模式 - 如何在流事件后导航到另一个屏幕?

flutter_bloc 4.0.0如何获取事件属性参数。

在使用 flutter_bloc 库调度事件之前等待一些结果

如何在 Flutter 小部件测试中等待未来完成?

Flutter Bloc 如何从 Widget 本身更新 BlocBuilder 中的 Widget?