我目前正在开发一个基于 php 和 javascript 的项目,在其功能中,它需要通过输入上传图像,这可以在浏览器中完美运行。将web应用封装在一个android应用中,我使用flutter作为框架,通过3.0.0版本的webview_flutter插件。它不允许打开相机或 android 图片库。
最后,我需要您的宝贵支持,javascript需要或推荐什么样的方法来打开意图并显示相机或图库?
谢谢大家!!!
这是我对pubspec.yaml的依赖项
dependencies:
flutter:
sdk: flutter
camera:
path_provider:
path:
image_picker: ^0.8.2
flutter_webview_plugin: ^0.3.10+1
这是我在build.gradle中的默认配置 Android :
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.jlcornejo.iaconlink"
minSdkVersion 21
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
这也是我的进口商品:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'package:myapp/service/audio_service_mp3.dart';
import 'package:record_mp3/record_mp3.dart';
import 'webview/webview_channel_controller.dart';
我在main.dart 中的方法:
/// selecciona la imagen desde la galería
Future<void> _pickImage(ImageSource source) async {
File selected = await ImagePicker.pickImage(source: source);
setState(() {
_imageFile = selected;
});
print("close");
if (_imageFile == null) {
print("close in");
flutterWebViewPlugin.show();
}
}
/// Remueve la imagen
void _clear() {
setState(() => _imageFile = null);
}
/// Sube la imagen
void _startUpload() {
File file = _imageFile;
if (file == null) return;
String base64Image = base64Encode(file.readAsBytesSync());
String fileName = file.path.split("/").last;
http.post(phpEndPoint, body: {
"image": base64Image,
"name": fileName,
}).then((res) {
print(res.statusCode);
print(fileName);
Navigator.of(context).pop(null);
flutterWebViewPlugin.show();
}).catchError((err) {
print(err);
});
}