繁体   English   中英

如何将 permission_handler 代码添加到我的 main.dart 页面?

[英]How do I add permission_handler code to my main.dart page?

我想添加 permission_handler 插件。 已经将它添加到pubspec.yaml文件中,但不知道从那里到 go 的确切位置。 如何将位置权限代码实际添加到我的main.dart页面?

main.dart页面:

import 'package:flutter/material.dart';
import 'package:athena/providers/app_state.dart';
import 'package:athena/providers/user.dart';
import 'package:athena/screens/login.dart';
import 'package:athena/screens/splash.dart';
import 'locators/service_locator.dart';
import 'screens/home.dart';
import 'package:provider/provider.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  setupLocator();
  return runApp(MultiProvider(
    providers: [
      ChangeNotifierProvider<AppStateProvider>.value(
        value: AppStateProvider(),
      ),
      ChangeNotifierProvider<UserProvider>.value(
        value: UserProvider.initialize(),
      ),
    ],
    child: MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Athena',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyApp(),
    ),
  ));
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    UserProvider auth = Provider.of<UserProvider>(context);
    switch (auth.status) {
      case Status.Uninitialized:
        return Splash();
      case Status.Unauthenticated:
      case Status.Authenticating:
        return LoginScreen();
      case Status.Authenticated:
        return MyHomePage();
      default:
        return LoginScreen();
    }
  }
}

像这样创建一个 function

Future<void> askLocationPermission() async {
    await Permission.location.request();
  }

由于您已将home: MyApp()添加为主页,

Go 到MyApp() ,并使其成为 StatefulWidget。

然后在其 initState() 中,调用请求权限的 function。

一个例子如下所示

@override
  void initState() {
    super.initState();
    askLocationPermission();
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM