应用程序或 WebView 尚未被授予读取或写入外部存储的必要权限。当尝试在 WebView 中执行文件上传或下载等任务时,这可能会导致复杂化。
这是我的main.dart
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:webview_flutter/webview_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(toolbarHeight: 0.1),
body: WebViewWidget(),
),
);
}
}
这是flutter pubspec.yml
选择按钮应正常工作并上传、下载,
您似乎面临与 Flutter 应用程序中的外部存储相关的权限问题。要解决此问题,您需要在 AndroidManifest.xml 文件中请求必要的权限,并在 Dart 代码中处理运行时权限。
以下是有关如何解决此问题的一般指南:
向AndroidManifest.xml添加权限: 打开
android/app/src/main/AndroidManifest.xml
文件并添加外部存储所需的权限。在 <manifest>
元素内添加以下行:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
确保这些行位于
<manifest>
标签内,但位于任何其他标签外。
在 Dart 中处理运行时权限: 在您的 Dart 代码中,您需要在运行时请求这些权限。为此,您可以使用
permission_handler
包。将其添加到您的 pubspec.yaml
文件中:
dependencies:
permission_handler: ^10.2.0
然后,在终端中运行
flutter pub get
来安装软件包。
在 Dart 代码中请求权限: 更新您的
main.dart
文件以在访问外部存储之前请求权限。这是一个例子:
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Request external storage permissions before runApp
requestPermissions();
return MaterialApp(
home: MyHomePage(),
);
}
// Function to request permissions
Future<void> requestPermissions() async {
Map<Permission, PermissionStatus> statuses = await [
Permission.storage,
].request();
// Check if permissions are granted
if (statuses[Permission.storage] != PermissionStatus.granted) {
// Handle the case where permissions are not granted
print("Permission not granted!");
}
}
}
class MyHomePage extends StatelessWidget {
// Your main UI code here
}
此示例使用
permission_handler
包在运行时请求存储权限。
请记住根据您的具体需求和应用程序的结构调整代码。此外,请务必检查
permission_handler
包的最新文档以了解任何更新或更改。