Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有基本身份验证的FlatterWebView_Webview_Flutter_Basic Authentication - Fatal编程技术网

具有基本身份验证的FlatterWebView

具有基本身份验证的FlatterWebView,webview,flutter,basic-authentication,Webview,Flutter,Basic Authentication,我正在加载一个网页,我想用基本身份验证登录,我有使用Swift的经验,能够像下面这样进行基本身份验证,但我无法为我的应用程序的Flatter版本实现基本身份验证 ----Swift代码--- ---Flatter WebView--->使用URL加载WebView import 'package:flutter/material.dart'; import 'dart:convert'; import 'package:flutter_webview_plugin/flutter_webview

我正在加载一个网页,我想用基本身份验证登录,我有使用Swift的经验,能够像下面这样进行基本身份验证,但我无法为我的应用程序的Flatter版本实现基本身份验证

----Swift代码---

---Flatter WebView--->使用URL加载WebView

import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';

class AddShipment extends StatefulWidget {

  final String url;

  AddShipment(this.url);

  @override 
  State<StatefulWidget> createState() {
    return new _AddShipment();
  }
}

class _AddShipment extends State<AddShipment> {
  final flutterWebviewPlugin = new FlutterWebviewPlugin();

  @override
  void initState() {
    super.initState();

    flutterWebviewPlugin.close();
  }

  @override
  void dispose() {

    flutterWebviewPlugin.dispose();

    super.dispose();
  }


  @override
  Widget build(BuildContext context) {
    return new WebviewScaffold(
      appBar: new AppBar(
          title: new Text("WebView"),
          centerTitle: true,
          backgroundColor: Colors.blue[900],
          elevation: 0.0,
      ),
      url: widget.url,
      withJavascript: true,
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“dart:convert”;
导入“包:flatter_webview_plugin/flatter_webview_plugin.dart”;
类AddShipping扩展了StatefulWidget{
最终字符串url;
addShipping(this.url);
@凌驾
状态createState(){
返回新的_addshipping();
}
}
类_addshipping扩展状态{
最终FlatterWebViewPlugin=新的FlatterWebViewPlugin();
@凌驾
void initState(){
super.initState();
webviewplugin.close();
}
@凌驾
无效处置(){
dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回新的WebviewScaffold(
appBar:新的appBar(
标题:新文本(“网络视图”),
标题:对,
背景颜色:颜色。蓝色[900],
标高:0.0,
),
url:widget.url,
withJavascript:true,
);
}
}
创建URL请求的正确方法是什么?我试过:

static Future<Response> getURL(
      final String username, final String password) {
    final String url = 'http://myurl';
    final String auth =
        'Basic ' + base64Encode(utf8.encode('$username:$password'));
    return http.get(url, headers: {'Authorization': auth});
}
静态未来getURL(
最终字符串用户名、最终字符串密码){
最终字符串url=http://myurl';
最终字符串验证=
“Basic”+base64Encode(utf8.encode(“$username:$password”);
返回http.get(url,头:{'Authorization':auth});
}

将附加标题添加到
WebviewScaffold
构造函数中

    url: widget.url,
    withJavascript: true,
    headers: {'Authorization': 'Basic ' + base64Encode(utf8.encode('$widget.username:$widget.password'))},

以与传递url相同的方式将用户名和密码传递到小部件中。

您也可以尝试我的插件(编辑:它已重命名为)

使用
initialHeaders
属性中的
Authorization:Basic…
标题的示例如下所示:

导入'dart:async';
导入“dart:convert”;
进口“包装:颤振/材料.省道”;
导入“包:flatter_inappwebview/flatter_inappwebview.dart”;
Future main()异步{
runApp(新的MyApp());
}
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>new_MyAppState();
}
类MyAppState扩展了状态{
@凌驾
void initState(){
super.initState();
}
@凌驾
无效处置(){
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:InAppWebViewPage()
);
}
}
类InAppWebViewPage扩展了StatefulWidget{
@凌驾
_InAppWebViewPageState createState()=>新建;
}
类_InAppWebViewPageState扩展状态{
inappwebview控制器webView;
字符串username=“username”;
字符串password=“password”;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“InAppWebView”)
),
主体:容器(
子项:列(子项:[
扩大(
子:容器(
子:InAppWebView(
初始URL:“http://myurl",
初始标题:{
“授权”:“基本”+base64Encode(utf8.encode(“$username:$password”))
},
initialOptions:InAppWebViewWidgetOptions(
inappwebview选项:inappwebview选项(
debuggingEnabled:true,
)
),
onWebViewCreated:(InAppWebViewController){
网络视图=控制器;
},
onLoadStart:(InAppWebViewController控制器,字符串url){
},
onLoadStop:(InAppWebViewController控制器,字符串url){
},
),
),
),
]))
);
}
}
相反,这是一个使用onReceiveDhtPauthRequest事件的示例:

导入'dart:async';
导入“dart:convert”;
进口“包装:颤振/材料.省道”;
导入“package:flatter_inappbrowser/flatter_inappbrowser.dart”;
Future main()异步{
runApp(新的MyApp());
}
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>new_MyAppState();
}
类MyAppState扩展了状态{
@凌驾
void initState(){
super.initState();
}
@凌驾
无效处置(){
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:InAppWebViewPage()
);
}
}
类InAppWebViewPage扩展了StatefulWidget{
@凌驾
_InAppWebViewPageState createState()=>新建;
}
类_InAppWebViewPageState扩展状态{
inappwebview控制器webView;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“InAppWebView”)
),
主体:容器(
子项:列(子项:[
扩大(
子:容器(
子:InAppWebView(
初始URL:“http://myurl",
initialOptions:InAppWebViewWidgetOptions(
inappwebview选项:inappwebview选项(
debuggingEnabled:true,
)
),
onWebViewCreated:(InAppWebViewController){
网络视图=控制器;
},
onLoadStart:(InAppWebViewController控制器,字符串url){
},
onLoadStop:(InAppWebViewController控制器,字符串url){
},
onReceivedHttpAuthRequest:(InAppWebViewController控制器,HttpAuthChallenge挑战)异步{
返回HttpAuthResponse(用户名:“用户名”,密码:“密码”,操作:HttpAuthResponse。继续);
    url: widget.url,
    withJavascript: true,
    headers: {'Authorization': 'Basic ' + base64Encode(utf8.encode('$widget.username:$widget.password'))},