首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Flutter -使用AndroidAlarmManager和location获取位置

Flutter -使用AndroidAlarmManager和location获取位置
EN

Stack Overflow用户
提问于 2021-03-16 18:23:39
回答 1查看 76关注 0票数 1

我目前正在寻找一种解决方案,每隔一分钟左右发送一次设备位置。

我正在尝试使用AndroidAlarmManager和Location库来完成此任务。下面是我的代码片段:

代码语言:javascript
代码运行次数:0
运行
复制
import 'package:android_alarm_manager/android_alarm_manager.dart';
import 'package:flutter/material.dart';
import 'package:jardiparc/services/sync.dart';
import 'package:location/location.dart';
import 'package:provider/provider.dart';

import 'jardiparc.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AndroidAlarmManager.initialize();
  runApp(Provider(create: (_) => SyncService(), lazy: false, child: JardiParc()));
  await AndroidAlarmManager.periodic(Duration(seconds: 5), 1, sendLocation, exact: true);
}

void sendLocation() async {
  print(DateTime.now().minute.toString() + ':' + DateTime.now().second.toString());
  print('send location');

  Location location = new Location();
  var currentPosition = await location.getLocation();
}

当我运行这段代码时,我一直收到这样的错误:

代码语言:javascript
代码运行次数:0
运行
复制
E/flutter (14488): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: MissingPluginException(No implementation found for method getLocation on channel lyokone/location)
E/flutter (14488): #0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:7)
E/flutter (14488): <asynchronous suspension>
E/flutter (14488): #1      Location.getLocation (package:location/location.dart:135:10)

我试着做了一个flutter clean,但是它不起作用。

在这方面的任何帮助都将受到高度的感谢。

干杯

EN

回答 1

Stack Overflow用户

发布于 2021-03-16 18:51:02

检查您是否已正确初始化插件:follow this link

  • Check

代码语言:javascript
代码运行次数:0
运行
复制
Location location = new Location();

bool _serviceEnabled;
PermissionStatus _permissionGranted;
LocationData _locationData;

_serviceEnabled = await location.serviceEnabled();
if (!_serviceEnabled) {
  _serviceEnabled = await location.requestService();
  if (!_serviceEnabled) {
    return;
  }
}

_permissionGranted = await location.hasPermission();
if (_permissionGranted == PermissionStatus.denied) {
  _permissionGranted = await location.requestPermission();
  if (_permissionGranted != PermissionStatus.granted) {
    return;
  }
}

_locationData = await location.getLocation();

  • Change

代码语言:javascript
代码运行次数:0
运行
复制
await AndroidAlarmManager.periodic(Duration(seconds: 5), 1, sendLocation, exact: true);

代码语言:javascript
代码运行次数:0
运行
复制
await AndroidAlarmManager.periodic(Duration(seconds: 5), sendLocation, exact: true);

您已将参数1设置为不应为

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66653268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档