Fixed version number in settings menu, added theme switcher.
This commit is contained in:
parent
3e588d67aa
commit
f72e025817
|
|
@ -1,6 +1,10 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
import 'package:quickgui/src/app.dart';
|
import 'package:quickgui/src/app.dart';
|
||||||
|
import 'package:quickgui/src/mixins/app_version.dart';
|
||||||
|
import 'package:quickgui/src/model/app_theme.dart';
|
||||||
import 'package:quickgui/src/model/operating_system.dart';
|
import 'package:quickgui/src/model/operating_system.dart';
|
||||||
import 'package:quickgui/src/model/option.dart';
|
import 'package:quickgui/src/model/option.dart';
|
||||||
import 'package:quickgui/src/model/version.dart';
|
import 'package:quickgui/src/model/version.dart';
|
||||||
|
|
@ -47,6 +51,11 @@ void main() async {
|
||||||
setWindowMinSize(const Size(692, 580));
|
setWindowMinSize(const Size(692, 580));
|
||||||
setWindowMaxSize(const Size(692, 580));
|
setWindowMaxSize(const Size(692, 580));
|
||||||
gOperatingSystems = await loadOperatingSystems(false);
|
gOperatingSystems = await loadOperatingSystems(false);
|
||||||
|
AppVersion.packageInfo = await PackageInfo.fromPlatform();
|
||||||
runApp(const App());
|
runApp(MultiProvider(
|
||||||
|
providers: [
|
||||||
|
ChangeNotifierProvider(create: (_) => AppTheme()),
|
||||||
|
],
|
||||||
|
builder: (context, _) => const App(),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:quickgui/src/model/app_theme.dart';
|
||||||
import 'package:quickgui/src/pages/main_page.dart';
|
import 'package:quickgui/src/pages/main_page.dart';
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
class App extends StatefulWidget {
|
||||||
|
|
@ -11,10 +13,13 @@ class App extends StatefulWidget {
|
||||||
class _AppState extends State<App> {
|
class _AppState extends State<App> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return Consumer<AppTheme>(
|
||||||
theme: ThemeData(primarySwatch: Colors.pink),
|
builder: (context, appTheme, _) => MaterialApp(
|
||||||
darkTheme: ThemeData.dark(),
|
theme: ThemeData(primarySwatch: Colors.pink),
|
||||||
home: const MainPage(title: 'Quickgui - A Flutter frontend for Quickget and Quickemu'),
|
darkTheme: ThemeData.dark(),
|
||||||
|
themeMode: appTheme.themeMode,
|
||||||
|
home: const MainPage(title: 'Quickgui - A Flutter frontend for Quickget and Quickemu'),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
|
|
||||||
mixin VersionMixin {
|
class AppVersion {
|
||||||
static PackageInfo? packageInfo;
|
static PackageInfo? packageInfo;
|
||||||
|
|
||||||
String get appName => packageInfo?.appName ?? '';
|
String get appName => packageInfo?.appName ?? '';
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class AppTheme extends ChangeNotifier {
|
||||||
|
ThemeMode? _themeMode;
|
||||||
|
|
||||||
|
ThemeMode get themeMode => _themeMode ?? ThemeMode.system;
|
||||||
|
set useDarkMode(bool useDarkMode) {
|
||||||
|
_themeMode = useDarkMode ? ThemeMode.dark : ThemeMode.light;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:quickgui/src/widgets/home_page/logo.dart';
|
import 'package:quickgui/src/widgets/home_page/logo.dart';
|
||||||
import 'package:quickgui/src/widgets/home_page/main_menu.dart';
|
import 'package:quickgui/src/widgets/home_page/main_menu.dart';
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,39 @@
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:quickgui/src/mixins/version_mixin.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:quickgui/src/mixins/app_version.dart';
|
||||||
|
import 'package:quickgui/src/model/app_theme.dart';
|
||||||
|
|
||||||
class LeftMenu extends StatelessWidget with VersionMixin {
|
class LeftMenu extends StatelessWidget {
|
||||||
const LeftMenu({Key? key}) : super(key: key);
|
const LeftMenu({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var _version = version + ' (' + buildNumber + ')';
|
var _version = AppVersion.packageInfo!.version;
|
||||||
return Drawer(
|
return Consumer<AppTheme>(
|
||||||
child: ListView(
|
builder: (context, appTheme, _) => Drawer(
|
||||||
children: [
|
child: ListView(
|
||||||
ListTile(
|
children: [
|
||||||
title: Text("quickgui $_version", style: Theme.of(context).textTheme.headline6),
|
ListTile(
|
||||||
),
|
title: Text("quickgui $_version", style: Theme.of(context).textTheme.headline6),
|
||||||
const Divider(),
|
),
|
||||||
],
|
const Divider(),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
const Text('Use dark mode'),
|
||||||
|
Switch(
|
||||||
|
value: Theme.of(context).brightness == Brightness.dark,
|
||||||
|
onChanged: (value) {
|
||||||
|
appTheme.useDarkMode = value;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ dependencies:
|
||||||
file_picker: ^4.1.6
|
file_picker: ^4.1.6
|
||||||
shared_preferences: ^2.0.8
|
shared_preferences: ^2.0.8
|
||||||
package_info_plus: ^1.3.0
|
package_info_plus: ^1.3.0
|
||||||
|
provider: ^6.0.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue