如何使用 GeoFire 插件在后台更新我的位置

How can I use GeoFire plugin to update my location in background

我正在使用 this 插件来更新我在 firebase 中的位置。当应用程序处于前台时,一切正常,但是一旦我的应用程序进入后台,位置更新服务就会停止,我尝试使用 didChangeAppLifecycleState 但我似乎无法让它工作, 这是我目前的实现..

class HomeTabPage extends StatefulWidget {


    @override
    _HomeTabPageState createState() => _HomeTabPageState();
}

class _HomeTabPageState extends State < HomeTabPage >
    with AutomaticKeepAliveClientMixin, WidgetsBindingObserver {
        @override
        void initState() {
            super.initState();
            WidgetsBinding.instance.addObserver(this);
        }

        @override
        void dispose() {
            super.dispose();
            WidgetsBinding.instance.removeObserver(this);
        }

        @override
        void didChangeAppLifecycleState(AppLifecycleState state) async {
            super.didChangeAppLifecycleState(state);
            if (state == AppLifecycleState.inactive ||
                state == AppLifecycleState.detached) return;
            final isBackground = state == AppLifecycleState.paused;

            if (isBackground) {

                print("### paused");
                StreamSubscription < Position > backgroundStreamSubscription =
                    Geolocator.getPositionStream().listen((Position position) {
                        initPositionPoint = position;
                        Geofire.setLocation(
                            currentFirebaseUser.uid, position.latitude, position.longitude);

                    });

            }
        }

来自 Github 的问题 #53 and #444 of the flutter-geolocator repo it seems that it doesn't support background location tracking. It seems that some folks have been using background_locator 作为替代方案,因此您可能想看看它。