每次收到新位置时,以bloc模式重新创建地图

时间:2020-04-18 04:57:57

标签: flutter bloc

我正在尝试在地图应用程序中使用bloc pattern。启动应用程序时,首先找到用户位置,然后将地图中心更改为用户位置。 当用户移动时,我想更改地图上的标记。这是我的代码:

class HomeFoursquareScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LocationBloc, LocationState>(
      builder: (context, locationState) {
        if (locationState is LocationLoadingState) {
          return const Center(child: CircularProgressIndicator());
        } else if (locationState is LocationLoadedState) {
          return _MyMap(locationState.location);
        } else {
          return const Text('oops...something went wrong');
        }
      },
    );
  }
}

class _MyMap extends StatelessWidget {
  const _MyMap({Key key, @required this.location}) : super(key: key);

  final Location location;

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<FourSquareBloc, FourSquareState>(
      builder: (context, foursquareState) {
        return FlutterMap(...);
      }
    );
  },
)

但是正如您每次在我的代码中看到的那样,这意味着用户移动LocationLoadedState并触发_MyMap小部件并重新创建FlutterMap时!我认为这样做不利于性能,并且连续创建新的map实例也不合逻辑!这样对吗 ?正确的方法是什么?

我想成为固定的地图,但是诸如MapOptions或Marker之类的东西会在新数据到达时获取数据。

0 个答案:

没有答案