generated from dellevin/template
适配windows(测试)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'dart:ui';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@@ -7,6 +8,7 @@ import 'package:provider/provider.dart';
|
||||
import 'package:dynamic_color/dynamic_color.dart';
|
||||
import 'package:flutter_quill/flutter_quill.dart' as quill;
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
|
||||
import 'pages/home_page.dart';
|
||||
import 'utils/theme/app_theme.dart';
|
||||
import 'utils/app_router.dart';
|
||||
@@ -21,6 +23,11 @@ final RouteObserver<ModalRoute<void>> routeObserver = RouteObserver<ModalRoute<v
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
// Windows 桌面:使用 FFI 初始化 sqflite
|
||||
if (Platform.isWindows) {
|
||||
sqfliteFfiInit();
|
||||
databaseFactory = databaseFactoryFfi;
|
||||
}
|
||||
await UserPrefs.init();
|
||||
final appProvider = AppProvider();
|
||||
runApp(MyApp(appProvider: appProvider));
|
||||
|
||||
@@ -977,17 +977,19 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
body: ListView(
|
||||
children: [
|
||||
_buildSectionHeader('显示设置'),
|
||||
_buildNavigationItem(
|
||||
icon: Icons.apps_outlined,
|
||||
title: '应用图标',
|
||||
subtitle: '更换桌面应用图标',
|
||||
onTap: () => Navigator.push(context,
|
||||
MaterialPageRoute(builder: (_) => const AppIconPickerPage())),
|
||||
),
|
||||
Divider(
|
||||
height: 0.5,
|
||||
indent: 24,
|
||||
endIndent: 24,
|
||||
if (!Platform.isWindows)
|
||||
_buildNavigationItem(
|
||||
icon: Icons.apps_outlined,
|
||||
title: '应用图标',
|
||||
subtitle: '更换桌面应用图标',
|
||||
onTap: () => Navigator.push(context,
|
||||
MaterialPageRoute(builder: (_) => const AppIconPickerPage())),
|
||||
),
|
||||
if (!Platform.isWindows)
|
||||
Divider(
|
||||
height: 0.5,
|
||||
indent: 24,
|
||||
endIndent: 24,
|
||||
color: colors.outlineVariant),
|
||||
_buildNavigationItem(
|
||||
icon: Icons.tune_outlined,
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import 'dart:io';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import '../models/data_models.dart';
|
||||
import 'slide_up_page_route.dart';
|
||||
import '../pages/movies/movie_form_page.dart';
|
||||
@@ -13,7 +15,7 @@ import '../pages/note_plus/note_plus_detail_page.dart';
|
||||
|
||||
/// 路由生成器
|
||||
class AppRouter {
|
||||
static Route<dynamic> generateRoute(RouteSettings settings) {
|
||||
static Route<dynamic>? generateRoute(RouteSettings settings) {
|
||||
switch (settings.name) {
|
||||
case '/movie-form':
|
||||
final args = settings.arguments;
|
||||
@@ -64,6 +66,11 @@ class AppRouter {
|
||||
if (url == null) {
|
||||
return _buildUnknownRoute(settings.name);
|
||||
}
|
||||
if (Platform.isWindows) {
|
||||
// Windows 无 webview 支持,用系统浏览器打开
|
||||
launchUrl(Uri.parse(url));
|
||||
return null;
|
||||
}
|
||||
return SlideUpPageRoute(page: DoubanWebViewPage(url: url));
|
||||
|
||||
case '/note-plus-form':
|
||||
|
||||
Reference in New Issue
Block a user