我已经尝试过,但似乎无法通过。我正在尝试使用Flutter的postUrl方法将一些变量发布到webView,但是我一直收到此错误,而且我不确定自己在做什么错。我还尝试过找到一个在线使用此方法的任何人的示例,但找不到任何东西。请有人帮忙。
page.dart:
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
Future main() async {
runApp(new MyPaymentWidget());
}
class MyPaymentWidget extends StatefulWidget {
RouteArgument routeArgument;
MyPaymentWidget({Key key, this.routeArgument}) : super(key: key);
@override
_MyPaymentWidgetState createState() => new _MyPaymentWidgetState();
}
class _MyPaymentWidgetState extends State<MyPaymentWidget> {
InAppWebViewController webView;
String url = "";
Uint8List postData;
double progress = 0;
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
backgroundColor: Colors.transparent,
elevation: 0,
centerTitle: true,
title: Text(
S.of(context).instant_eft_payment,
style: Theme.of(context).textTheme.title.merge(TextStyle(letterSpacing: 1.3)),
),
),
body: Container(
child: Column(children: <Widget>[
Container(
padding: EdgeInsets.all(10.0),
child: progress < 1.0
? LinearProgressIndicator(value: progress)
: Container()),
Expanded(
child: Container(
margin: const EdgeInsets.all(10.0),
decoration:
BoxDecoration(border: Border.all(color: Colors.blueAccent)),
child: InAppWebView(
initialUrl: "https://example.com/",
initialHeaders: {},
initialOptions: InAppWebViewWidgetOptions(
inAppWebViewOptions: InAppWebViewOptions(
debuggingEnabled: true,
)
),
onWebViewCreated: (InAppWebViewController controller) {
webView = controller;
webView.postUrl(
url: 'https://example.com/',
postData: "Amount=1&TransactionReference=some trans ref&BankReference=bank ref&Customer=thiscustomer&isTest=true");
},
onLoadStart: (InAppWebViewController controller, String url) {
setState(() {
this.url = url;
});
},
onLoadStop: (InAppWebViewController controller, String url) async {
setState(() {
this.url = url;
});
},
onProgressChanged: (InAppWebViewController controller, int progress) {
setState(() {
this.progress = progress / 100;
});
},
),
),
),
ButtonBar(
alignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
child: Icon(Icons.arrow_back),
onPressed: () {
if (webView != null) {
webView.goBack();
}
},
),
RaisedButton(
child: Icon(Icons.arrow_forward),
onPressed: () {
if (webView != null) {
webView.goForward();
}
},
),
RaisedButton(
child: Icon(Icons.refresh),
onPressed: () {
if (webView != null) {
webView.reload();
}
},
),
],
),
])),
),
);
}
}```
答案 0 :(得分:2)
postData
的{{1}}参数是postUrl
,但是您要传递给它Uint8List
。我假设这应该是字符串的String
(UTF-16表示形式)或UTF-8编码。
尝试将以下参数之一作为codeUnits
参数传递:
postData
或
Uint8List.fromList(myPostData.codeUnits);