Sta*_*euh 0 flutter flutter-dependencies
它实际上是一个非常简单的应用程序,只询问位置。我对此进行了很多搜索,非常具有推测性的问题,每个人都有不同的说法,但我自己还无法解决。我想要的是,我想询问用户的位置权限。我将其添加到 pubspec.yaml 的依赖项中:
permission_handler: ^5.0.1+1
Run Code Online (Sandbox Code Playgroud)
在 AndroidManifest.xml 中我添加了这些:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" ></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
Run Code Online (Sandbox Code Playgroud)
然后我就这样编写了 main.dart。没有做任何其他事情:
import 'package:flutter/material.dart';
import 'package:permission_handler/permiission_handler.dart';
void main() => runApp(MaterialApp(home: MyHome()));
class _MyHomeState extends StatefulWidget {
@override
_MyHomeState createState() => _MyHomeState();
}
class _MyHomeState extends State<MyHome> {
PermissionStatus _status;
@override
void initState() {
super.initState();
PermissionHandler()
.checkPermissionStatus(PermissionGroup.locationWhenInUse)
.then(_updateStatus);
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Column(
children: <Widget>[
Text('$_status'),
SizedBox(height: 60),
RaisedButton(
child: Text('Ask Permission'),
onPressed: _askPermission,
)
], //<Widget>[]
),
); //Column, SafeArea
}
void _updateStatus(PermissionStatus status) {
if (status != _status) {
setState(() {
_status = status;
});
}
}
void _askPermission() {
PermissionHandler().requestPermissions(
[PermissionGroup.locationWhenInUse]).then(_onStatusRequested);
}
void _onStatusRequested(Map<PermissionGroup, PermissionStatus> statuses) {
final status = statuses[PermissionGroup.locationWhenInUse];
//if (status != PermissionStatus.granted) {
//PermissionHandler().openAppSettings();
//} else { //Ignore this, this isn't important.
_updateStatus(status);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我使用 flutter run ,它给出了很多错误。喜欢:
Invalid depfile: /home/xx/AndroidStudioProjects/flutter_app/.dart_tool/flutter_build/e9846fe3c39761c4693f6682f4c69be2/kernel_snapshot.d
Invalid depfile: /home/xxx/AndroidStudioProjects/flutter_app/.dart_tool/flutter_build/e9846fe3c39761c4693f6682f4c69be2/kernel_snapshot.d
Error: Could not resolve the package 'permission_handler' in 'package:permission_handler/permiission_handler.dart'.
lib/main.dart:11:7: Error: '_MyHomeState' is already declared in this scope.
class _MyHomeState extends State<MyHome> {
^^^^^^^^^^^^
lib/main.dart:6:7: Context: Previous declaration of '_MyHomeState'.
class _MyHomeState extends StatefulWidget {
^^^^^^^^^^^^
lib/main.dart:59:1: Error: Expected a declaration, but got '}'.
}
^
lib/main.dart:2:8: Error: Not found: 'package:permission_handler/permiission_handler.dart'
import 'package:permission_handler/permiission_handler.dart';
^
lib/main.dart:8:3: Error: '_MyHomeState' isn't a type.
_MyHomeState createState() => _MyHomeState();
^^^^^^^^^^^^
lib/main.dart:8:3: Context: This isn't a type.
_MyHomeState createState() => _MyHomeState();
^^^^^^^^^^^^
lib/main.dart:11:34: Error: Type 'MyHome' not found.
class _MyHomeState extends State<MyHome> {
^^^^^^
lib/main.dart:12:3: Error: Type 'PermissionStatus' not found.
PermissionStatus _status;
^^^^^^^^^^^^^^^^
lib/main.dart:38:22: Error: Type 'PermissionStatus' not found.
void _updateStatus(PermissionStatus status) {
^^^^^^^^^^^^^^^^
lib/main.dart:51:31: Error: Type 'PermissionGroup' not found.
void _onStatusRequested(Map<PermissionGroup, PermissionStatus> statuses) {
^^^^^^^^^^^^^^^
lib/main.dart:51:48: Error: Type 'PermissionStatus' not found.
void _onStatusRequested(Map<PermissionGroup, PermissionStatus> statuses) {
^^^^^^^^^^^^^^^^
lib/main.dart:4:41: Error: Method not found: 'MyHome'.
void main() => runApp(MaterialApp(home: MyHome()));
^^^^^^
lib/main.dart:8:33: Error: Can't use '_MyHomeState' because it is declared more than once.
_MyHomeState createState() => _MyHomeState();
^
lib/main.dart:12:3: Error: 'PermissionStatus' isn't a type.
PermissionStatus _status;
^^^^^^^^^^^^^^^^
lib/main.dart:17:5: Error: The method 'PermissionHandler' isn't defined for the class '_MyHomeState#1'.
- '_MyHomeState#1' is from 'package:flutter_app/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing method, or defining a method named 'PermissionHandler'.
PermissionHandler()
^^^^^^^^^^^^^^^^^
lib/main.dart:18:32: Error: The getter 'PermissionGroup' isn't defined for the class '_MyHomeState#1'.
- '_MyHomeState#1' is from 'package:flutter_app/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'PermissionGroup'.
.checkPermissionStatus(PermissionGroup.locationWhenInUse)
^^^^^^^^^^^^^^^
lib/main.dart:38:22: Error: 'PermissionStatus' isn't a type.
void _updateStatus(PermissionStatus status) {
^^^^^^^^^^^^^^^^
lib/main.dart:47:5: Error: The method 'PermissionHandler' isn't defined for the class '_MyHomeState#1'.
- '_MyHomeState#1' is from 'package:flutter_app/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing method, or defining a method named 'PermissionHandler'.
PermissionHandler().requestPermissions(
^^^^^^^^^^^^^^^^^
lib/main.dart:48:10: Error: The getter 'PermissionGroup' isn't defined for the class '_MyHomeState#1'.
- '_MyHomeState#1' is from 'package:flutter_app/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'PermissionGroup'.
[PermissionGroup.locationWhenInUse]).then(_onStatusRequested);
^^^^^^^^^^^^^^^
lib/main.dart:51:31: Error: 'PermissionGroup' isn't a type.
void _onStatusRequested(Map<PermissionGroup, PermissionStatus> statuses) {
^^^^^^^^^^^^^^^
lib/main.dart:51:48: Error: 'PermissionStatus' isn't a type.
void _onStatusRequested(Map<PermissionGroup, PermissionStatus> statuses) {
^^^^^^^^^^^^^^^^
lib/main.dart:52:29: Error: The getter 'PermissionGroup' isn't defined for the class '_MyHomeState#1'.
- '_MyHomeState#1' is from 'package:flutter_app/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'PermissionGroup'.
final status = statuses[PermissionGroup.locationWhenInUse];
Run Code Online (Sandbox Code Playgroud)
您的代码存在一些问题:
package:permission_handler/permiission_handler.dart应该:package:permission_handler/permission_handler.dart
class _MyHomeState extends StatefulWidget {
@override
_MyHomeState createState() => _MyHomeState();
}
Run Code Online (Sandbox Code Playgroud)
应该:
class MyHome extends StatefulWidget {
@override
_MyHomeState createState() => _MyHomeState();
}
Run Code Online (Sandbox Code Playgroud)
遵循完整更正的源代码:
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(home: MyHome()));
class MyHome extends StatefulWidget {
@override
_MyHomeState createState() => _MyHomeState();
}
class _MyHomeState extends State<MyHome> {
PermissionStatus _status;
@override
void initState() {
super.initState();
PermissionHandler()
.checkPermissionStatus(PermissionGroup.locationWhenInUse)
.then(_updateStatus);
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Column(
children: <Widget>[
Text('$_status'),
SizedBox(height: 60),
RaisedButton(
child: Text('Ask Permission'),
onPressed: _askPermission,
)
], //<Widget>[]
),
); //Column, SafeArea
}
void _updateStatus(PermissionStatus status) {
if (status != _status) {
setState(() {
_status = status;
});
}
}
void _askPermission() {
PermissionHandler().requestPermissions(
[PermissionGroup.locationWhenInUse]).then(_onStatusRequested);
}
void _onStatusRequested(Map<PermissionGroup, PermissionStatus> statuses) {
final status = statuses[PermissionGroup.locationWhenInUse];
//if (status != PermissionStatus.granted) {
//PermissionHandler().openAppSettings();
//} else { //Ignore this, this isn't important.
_updateStatus(status);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4096 次 |
| 最近记录: |