【发布时间】:2021-04-20 12:43:09
【问题描述】:
我有一个使用办公室表格构建的问卷,我想在 Flutter 应用程序中展示该表格。到目前为止一切都很好,但是当用户尝试从表单中点击输入字段时,页面会自行刷新。 唯一可以执行的手势是滚动和标记单选按钮。
我花了很多时间试图弄清楚如何启用其他手势,但似乎没有办法。 我从文档中找到了一个参数gestureRecognizer,但我无法弄清楚如何传递手势以及需要什么样的手势。 任何帮助将不胜感激。 谢谢!
这是 google.com 的一些示例代码
class QuestionnaireScreen extends StatelessWidget {
final GlobalKey<ScaffoldState> _quizScaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
InAppWebViewController _webViewController;
return Scaffold(
key: _quizScaffoldKey,
appBar: AppBar(
title: Text('Questionnaire'),
),
body: Container(
child: InAppWebView(
initialUrl: 'https://google.com',
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
useShouldOverrideUrlLoading: false,
mediaPlaybackRequiresUserGesture: false,
),
android: AndroidInAppWebViewOptions(
useShouldInterceptRequest: true,
),
ios: IOSInAppWebViewOptions(
allowsInlineMediaPlayback: true,
)),
// gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{}..add(Factory<OneSequenceGestureRecognizer>() => TapGestureRecognizer()), - this gives an error: The argument type 'TapGestureRecognizer Function<OneSequenceGestureRecognizer>()' can't be assigned to the parameter type 'Factory<OneSequenceGestureRecognizer>'
onWebViewCreated: (InAppWebViewController vc) {
_webViewController = vc;
},
),
),
);
}
}
更新: 我设法使它工作,但使用带有 WebController 的 webview_flutter 插件
代码如下:
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class QuestionnaireScreen extends StatefulWidget {
@override
_QuestionnaireScreenState createState() => _QuestionnaireScreenState();
}
class _QuestionnaireScreenState extends State<QuestionnaireScreen> {
final GlobalKey<ScaffoldState> _quizScaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
WebViewController _webViewController;
return Scaffold(
key: _quizScaffoldKey,
appBar: AppBar(
title: Text('Questionnaire'),
),
body: Container(
child: WebView(
initialUrl: '/url here/',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController vc) {
_webViewController = vc;
},
),
),
);
}
}
【问题讨论】:
标签: flutter dart webview gesture