我有一个flutter web应用程序,它带有一个webview
,可以从服务器加载我的PHP项目。在我的PHP项目中,我有一个注册表单,需要用户使用相机拍摄照片,然后将其上传到MySQL DB。问题是,当我点击上传文件按钮使用相机时,它什么也不做。但在浏览器中,文件选择器是工作,但在我的android从webview
它没有做任何事情。
我试过了,它不起作用。
<div class="col-sm-4">
Image 1 <span style="color:red">*</span><input type="file" name="img1" accept"image/*" capture="camera" required>
</div>
这也是我的进口货。
import 'package:car_renting_app/Animations/FadeAnimation.dart';
import 'package:car_renting_app/onboarding.dart';
import 'package:car_renting_app/popup.dart';
import 'package:car_renting_app/ui/adminwebview.dart';
import 'package:car_renting_app/widgets/animated_botton_bar.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:connectivity/connectivity.dart';
这是我的pubsec。yaml
cupertino_icons: ^0.1.2
webview_flutter:
simple_animations: ^1.1.3
page_transition: ^1.1.4
carousel_pro: ^0.0.13
url_launcher: ^5.1.1
sliding_up_panel: ^0.3.4
font_awesome_flutter: ^8.5.0
flutter_swiper: ^1.1.6
connectivity:
uni_links:
4条答案
按热度按时间pxy2qtax1#
我认为这是使用“webview_flutter”的替代解决方案:https://github.com/flutter/flutter/issues/27924#issuecomment-647197754
必须编辑“FlutterWebView.java“和“AndroidManifest”。
1l5u6lss2#
@Bruno的链接回答对我不起作用。所以我找到了很多解决方案,并把它们结合起来使用,最后它对我起作用了。
webview_flutter: ^2.0.8
(此解决方案也适用于较低版本)1.转到Flutter的外部库
1.导航到webview_flutter插件项目文件夹
1.导航到Android文件夹
1.转到src>main
1.打开manifest文件,它应该是空的,里面只有包名,然后复制粘贴这个
1.如果主文件夹下没有res目录,则创建res目录
1.创建values目录,然后在其中创建strings.xml:复制并粘贴此
1.创建xml文件夹,然后在其中创建provider_paths. xml,复制并粘贴此
1.转到main>java>io>flutter>plugins>webviewflutter
1.创建名为Constants.java的java类,并复制以下内容
软件包io.flutter.plugins.webviewflutter;
1.创建FileChooserActivity.java并复制此
软件包io.flutter.plugins.webviewflutter;
1.创建这个类FileChooserLauncher.java并复制这个
软件包io.flutter.plugins.webviewflutter;
1.应该有一个名为
FlutterWebView.java
的类只要复制这个重写方法并粘贴到里面。1.创建一个类
RequestCameraPermissionActivity.java
并将此代码粘贴到那里import android.清单; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable;导入androidx.core.app.ActivityCompat;
wf82jlnq3#
这是一个添加
onShowFileChooser
的PRhttps://github.com/flutter/plugins/pull/3225
也许下一个版本将在Android上支持此功能。
efzxgjgh4#
在Android上有一种从
webview_flutter 4.0.2
使用file picker
的方法,iOS不需要任何特殊更改。在小部件的initState中,添加以下代码_androidFilePicker
包含file_picker来选择文件。使用此代码,如果有人按下HTML页面上的上传按钮,则文件拾取器将在Android上打开。如果您需要更多详细信息,可以查看此blog post。