Flutter中无法将参数类型'String'分配给参数类型'Uint8List'/ postUrl方法

时间:2020-01-02 19:10:38

标签: flutter dart

我已经尝试过,但似乎无法通过。我正在尝试使用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();
                    }
                  },
                ),
              ],
            ),
        ])),
      ),
    );
  }
}```

1 个答案:

答案 0 :(得分:2)

postData的{​​{1}}参数是postUrl,但是您要传递给它Uint8List。我假设这应该是字符串的String(UTF-16表示形式)或UTF-8编码。

尝试将以下参数之一作为codeUnits参数传递:

postData

Uint8List.fromList(myPostData.codeUnits);
相关问题