我正在开发需要位置许可的应用程序。如果用户单击“拒绝”,我会将用户导航到设置屏幕,以便他们可以手动打开该位置。但是,当我从设置屏幕更改位置权限并单击返回并导航到应用程序时,会出现空白屏幕,而且我也无法检测到更改权限状态。下面是代码:
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter/widgets.dart';
class LocationScreenState extends State<LocationScreen> with WidgetsBindingObserver{
PermissionStatus _status;
@override
void initState() {
super.initState();
WidgetsBinding.instance
.addPostFrameCallback((_) => afterFirstLayout(context));
}
void afterFirstLayout(BuildContext context){
PermissionHandler().requestPermissions([PermissionGroup.locationAlways]).then(__onStatusRequested);
}
void __onStatusRequested(Map<PermissionGroup, PermissionStatus> statuses){
if(statuses != PermissionStatus.granted){
PermissionHandler().openAppSettings();
}else{
_status = PermissionStatus.granted;
}
}
Run Code Online (Sandbox Code Playgroud) 可能是因为Google Play商店不允许用户下载它认为用户不需要的资源文件。
谁能帮我?谢谢。
我使用从 InitState() 调用的方法,在那里用 await 加载 SP。但是 Widget 在加载 SP 之前正在构建并且具有空的 SP 值。
void getSP() async {
var prefs = await SharedPreferences.getInstance();
_todoItems = prefs.getStringList("key") ?? _todoItems;
}
Run Code Online (Sandbox Code Playgroud)
完整代码:https : //pastebin.com/EnxfKgPH