74 lines
1.9 KiB
Dart
74 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
||
import 'package:webview_flutter/webview_flutter.dart';
|
||
import '../../../components/appbar.dart';
|
||
|
||
class HelpPage extends StatefulWidget {
|
||
const HelpPage({super.key});
|
||
|
||
@override
|
||
State<HelpPage> createState() => _HelpPageState();
|
||
}
|
||
|
||
class _HelpPageState extends State<HelpPage> with AutomaticKeepAliveClientMixin {
|
||
// 添加静态 controller
|
||
static WebViewController? _staticController;
|
||
late final WebViewController _controller;
|
||
bool _isLoading = true;
|
||
|
||
@override
|
||
void initState() {
|
||
super.initState();
|
||
|
||
// 如果已经有静态 controller,直接使用
|
||
if (_staticController != null) {
|
||
_controller = _staticController!;
|
||
_isLoading = false;
|
||
} else {
|
||
_controller = WebViewController()
|
||
..setJavaScriptMode(JavaScriptMode.unrestricted)
|
||
..setBackgroundColor(Colors.white)
|
||
..setNavigationDelegate(
|
||
NavigationDelegate(
|
||
onPageFinished: (String url) {
|
||
if (mounted) {
|
||
setState(() {
|
||
_isLoading = false;
|
||
});
|
||
}
|
||
},
|
||
onNavigationRequest: (NavigationRequest request) {
|
||
return NavigationDecision.navigate;
|
||
},
|
||
),
|
||
)
|
||
..loadFlutterAsset('assets/chatwoot.html');
|
||
|
||
// 保存到静态变量
|
||
_staticController = _controller;
|
||
}
|
||
}
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
// 必须调用 super.build
|
||
super.build(context);
|
||
|
||
return Scaffold(
|
||
resizeToAvoidBottomInset: false,
|
||
appBar: const CustomAppBar(title: '帮助中心'),
|
||
body: Stack(
|
||
children: [
|
||
WebViewWidget(controller: _controller),
|
||
if (_isLoading)
|
||
const Center(
|
||
child: CircularProgressIndicator(),
|
||
),
|
||
],
|
||
),
|
||
);
|
||
}
|
||
|
||
// 实现 wantKeepAlive
|
||
@override
|
||
bool get wantKeepAlive => true;
|
||
} |