这一节主要介绍WebView的使用,直接上代码,如下:
onTap: () {
print("----_Article----GestureDetector--");
CommonUtils.push(context,WebViewPage(
url: article.link,
title: article.title,
id: article.id,
isCollect: article.collect,
));
},
WebViewPage 如下:
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewPage extends StatefulWidget {
final String url;
final String title;
final int id;
final bool isCollect;
const WebViewPage({Key key,this.url,this.title,this.id,this.isCollect}):super(key:key);
@override
State<StatefulWidget> createState() {
return WebViewPageState(url, title, id, isCollect);
}
}
class WebViewPageState extends State<WebViewPage> with TickerProviderStateMixin{
final String url;
String title;
int id;
bool isCollect;
WebViewController webViewController = null;
AnimationController controller;
WebViewPageState(this.url, this.title, this.id, this.isCollect);
@override
void initState() {
super.initState();
controller = AnimationController(duration: const Duration(milliseconds: 2000), vsync: this);
}
@override
Widget build(BuildContext context) {
return new WillPopScope(
child: Scaffold(
appBar: AppBar(title: Text(title),),
body: Column(
children: <Widget>[
Expanded(
child: WebView(
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController controller) {
webViewController = controller;
},
),
)
],
),
),
onWillPop: null);
}
}
CommonUtils如下:
import 'package:flutter/cupertino.dart';
class CommonUtils {
static Future push(BuildContext context,Widget widget) {
Future result = Navigator.push(context,
CupertinoPageRoute(
builder: (context) => widget,
));
}
}