【发布时间】:2021-02-26 05:09:31
【问题描述】:
当我打开应用程序时,我想按原样显示我过去访问过的网页。 作为初步步骤,实施 Webview 需要时间。
屏幕将从设置屏幕变为查看屏幕。 首先,在设置画面中输入希望在 Webview 中显示的 URL。 当您按下连接按钮时,屏幕将转换到以 URL 作为参数的视图屏幕。
在视图屏幕上,应该显示带有此 URL 的页面,但它是一个空白屏幕,如下图所示。
从appbar中的文字可以看出参数本身已经接收到了。
视图屏幕上的view.dart编码如下。
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'Widgets/drawer.dart';
class ViewScreen extends StatefulWidget {
static const routeName = '/view';
final String url;
viewScreen({Key key, @required this.url}) : super(key: key);
@override
State<StatefulWidget> createState() => ViewScreenState();
}
class ViewScreenState extends State<ViewScreen> {
String _view = "message";
void _load() async {
SharedPreferences pref = await SharedPreferences.getInstance();
setState(() {
_view = pref.getString('url') ?? '';
});
}
@override
void initState() {
super.initState();
_load();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(_view),
),
drawer: DrawerScreen(),
body: WebView(
initialUrl: _view,
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: Set.from([
JavascriptChannel(
name: "getData",
onMessageReceived: (JavascriptMessage result) {
}),
]),
),
);
}
}
想知道是不是需要设置网络,直接写https://twitter.com/home到initialUrl(你想在Webview中显示的URL设置为String的部分),连接就建立了。
import 'package:assets_audio_player/assets_audio_player.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'Widgets/drawer.dart';
class ViewScreen extends StatefulWidget {
static const routeName = '/view';
final String url;
ViewScreen({Key key, @required this.url}) : super(key: key);
@override
State<StatefulWidget> createState() =>ViewScreenState();
}
classViewScreenState extends State<ViewScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.url),
),
drawer: _drawer(context),
body: WebView(
initialUrl: widget.url,
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: Set.from([
JavascriptChannel(
name: "getData",
onMessageReceived: (JavascriptMessage result) {
}),
]),
),
);
}
}
如果你有任何想法,如果你能指出来,我将不胜感激。
【问题讨论】:
标签: flutter webview sharedpreferences