bytedesk-flutter/bytedesk_kefu/lib/ui/chat/page/chat_webview_page.dart

132 lines
4.6 KiB

import 'dart:async';
// import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
// TODO: 支持右上角在其他浏览器打开
class ChatWebViewPage extends StatefulWidget {
const ChatWebViewPage({
Key? key,
@required this.title,
@required this.url,
}) : super(key: key);
final String? title;
final String? url;
@override
_ChatWebViewPageState createState() => _ChatWebViewPageState();
}
class _ChatWebViewPageState extends State<ChatWebViewPage> {
final Completer<WebViewController> _controller =
Completer<WebViewController>();
@override
Widget build(BuildContext context) {
return FutureBuilder<WebViewController>(
future: _controller.future,
builder: (context, snapshot) {
return WillPopScope(
onWillPop: () async {
if (snapshot.hasData) {
var canGoBack = await snapshot.data!.canGoBack();
if (canGoBack) {
// 网页可以返回时,优先返回上一页
await snapshot.data!.goBack();
return Future.value(false);
}
}
return Future.value(true);
},
child: Scaffold(
appBar: AppBar(
title: Text(widget.title!),
elevation: 0,
actions: [
// Align(
// alignment: Alignment.centerRight,
// child: Container(
// padding: new EdgeInsets.only(right: 10),
// child: InkWell(
// onTap: () {
// BytedeskUtils.printLog('share');
// // showShareSheet(context);
// },
// child: Image.asset(
// // 'assets/images/weibo/icon_more.png',
// 'assets/images/weibo/video_detail_share.png',
// width: 23.0,
// height: 23.0,
// )))),
],
),
body: WebView(
initialUrl: widget.url,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
)),
);
});
}
// void showShareSheet(BuildContext context) {
// showFLBottomSheet(
// context: context,
// builder: (BuildContext context) {
// return FLCupertinoOperationSheet(
// sheetStyle: FLCupertinoActionSheetStyle.filled,
// cancelButton: CupertinoActionSheetAction(
// child: Text(
// '取消',
// ),
// isDefaultAction: true,
// onPressed: () {
// Navigator.pop(context, 'cancel');
// },
// ),
// header: Container(
// padding: EdgeInsets.symmetric(vertical: 20, horizontal: 30),
// child: Text('分享', style: TextStyle(fontSize: 18)),
// ),
// itemList: [
// [
// FLCupertinoOperationSheetItem(
// imagePath: 'assets/images/circle/weibo.png',
// title: '复制链接', // TODO
// onPressed: () {
// Navigator.pop(context, 'weibo');
// },
// ),
// FLCupertinoOperationSheetItem(
// imagePath: 'assets/images/circle/weibo.png',
// title: '浏览器打开', // TODO
// onPressed: () {
// Navigator.pop(context, 'weibo');
// },
// ),
// FLCupertinoOperationSheetItem(
// imagePath: 'assets/images/circle/weibo.png',
// title: '刷新', // TODO
// onPressed: () {
// Navigator.pop(context, 'weibo');
// },
// ),
// ],
// ],
// );
// }).then((value) {
// //
// BytedeskUtils.printLog('share $value');
// if (value == 'wechat') {
// // TODO: 分享到微信
// } else if (value == 'weibo') {
// // TODO: 分享到微博
// }
// });
// }
}