From d20a9f7d9e78edba94f76b4a1a9816ba5c964453 Mon Sep 17 00:00:00 2001 From: iiheng <1269305589@qq.com> Date: Fri, 24 May 2024 00:38:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=BD=95=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/view/bililive.dart | 59 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 lib/view/bililive.dart diff --git a/lib/view/bililive.dart b/lib/view/bililive.dart new file mode 100644 index 0000000..70141bd --- /dev/null +++ b/lib/view/bililive.dart @@ -0,0 +1,59 @@ +import 'dart:async'; +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:webview_windows/webview_windows.dart'; + +class BililivePage extends StatefulWidget { + const BililivePage({Key? key}) : super(key: key); + + @override + _BililivePageState createState() => _BililivePageState(); +} + +class _BililivePageState extends State { + final _controller = WebviewController(); + bool _isLoading = true; + Process? _bililiveProcess; + + @override + void initState() { + super.initState(); + runExecutableAndLoadPage(); + } + + Future runExecutableAndLoadPage() async { + _bililiveProcess = + await Process.start('assets/bililive-windows-amd64.exe', []); + // 初始化并加载 localhost 页面 + await _controller.initialize(); + await _controller.loadUrl('http://localhost:8080'); + if (mounted) { + setState(() { + _isLoading = false; + }); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('BiliLive'), + ), + body: Stack( + children: [ + _isLoading + ? const Center(child: CircularProgressIndicator()) + : Webview(_controller), + ], + ), + ); + } + + @override + void dispose() { + _controller.dispose(); + _bililiveProcess?.kill(); // 关闭页面时终止 exe 进程 + super.dispose(); + } +}