add QOL when on setup

This commit is contained in:
ALEZ-DEV 2024-06-03 20:14:53 +02:00
parent 8773d34b71
commit eab73445d1
4 changed files with 30 additions and 10 deletions

View File

@ -19,6 +19,7 @@ class BabyloniaLauncher extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ErrorReporter.listenAllRustError(navigatorKey); ErrorReporter.listenAllRustError(navigatorKey);
gameStateProvider.updateSetup();
return MultiProvider( return MultiProvider(
providers: [ providers: [
ChangeNotifierProvider( ChangeNotifierProvider(
@ -38,7 +39,7 @@ class BabyloniaLauncher extends StatelessWidget {
themeMode: ThemeMode.system, themeMode: ThemeMode.system,
highContrastTheme: yaruHighContrastLight, highContrastTheme: yaruHighContrastLight,
highContrastDarkTheme: yaruHighContrastDark, highContrastDarkTheme: yaruHighContrastDark,
home: Provider.of<GameStateProvider>(context).hasToSetup() home: Provider.of<GameStateProvider>(context).haveToSetup
? const SetupScreen() ? const SetupScreen()
: const Menu(), : const Menu(),
), ),

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
class GameStateProvider with ChangeNotifier { class GameStateProvider with ChangeNotifier {
States? _gameState; States? _gameState;
bool isUpdating = false; bool isUpdating = false;
bool haveToSetup = false;
get gameState { get gameState {
return _gameState; return _gameState;
@ -24,7 +25,12 @@ class GameStateProvider with ChangeNotifier {
} }
} }
bool hasToSetup() { void updateSetup() {
haveToSetup = needToSetup();
notifyListeners();
}
bool needToSetup() {
return _gameState == States.ProtonNotInstalled || return _gameState == States.ProtonNotInstalled ||
_gameState == States.DXVKNotInstalled || _gameState == States.DXVKNotInstalled ||
_gameState == States.FontNotInstalled || _gameState == States.FontNotInstalled ||

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:yaru/yaru.dart';
import './../../messages/game_state.pb.dart'; import './../../messages/game_state.pb.dart';
import './../../providers/providers.dart'; import './../../providers/providers.dart';
@ -31,6 +32,9 @@ class StepsScreen extends StatelessWidget {
case States.DependecieNotInstalled: case States.DependecieNotInstalled:
controller.updateSection(3); controller.updateSection(3);
break; break;
default:
controller.updateSection(null);
break;
} }
return Center( return Center(
@ -64,8 +68,9 @@ class StepsScreen extends StatelessWidget {
Padding( Padding(
padding: const EdgeInsets.only(top: 12.0), padding: const EdgeInsets.only(top: 12.0),
child: SimpleButton( child: SimpleButton(
onPressed: onPressed: !gameStateProvider.needToSetup()
true ? null : () => gameStateProvider.updateGameState(), ? () => gameStateProvider.updateSetup()
: null,
child: const Text('next'), child: const Text('next'),
), ),
), ),

View File

@ -8,12 +8,12 @@ import 'package:yaru/constants.dart';
import 'package:yaru/widgets.dart'; import 'package:yaru/widgets.dart';
class SectionController extends ChangeNotifier { class SectionController extends ChangeNotifier {
int selectedItem = 0; int? selectedItem;
Function()? onChange; Function()? onChange;
SectionController({required this.selectedItem}); SectionController({required this.selectedItem});
void updateSection(int newSelectedItem) { void updateSection(int? newSelectedItem) {
selectedItem = newSelectedItem; selectedItem = newSelectedItem;
notifyListeners(); notifyListeners();
if (onChange != null) { if (onChange != null) {
@ -77,12 +77,18 @@ class _SelectableYaruExpansionPanelState
super.initState(); super.initState();
widget.controller.onChange = widget.collapseOnExpand widget.controller.onChange = widget.collapseOnExpand
? () { ? () {
_expandedStore[widget.controller.selectedItem]; if (widget.controller.selectedItem != null) {
_expandedStore[widget.controller.selectedItem!];
for (var n = 0; n < _expandedStore.length; n++) { for (var n = 0; n < _expandedStore.length; n++) {
if (_expandedStore[n]) { if (_expandedStore[n]) {
setState(() => _expandedStore[n] = false); setState(() => _expandedStore[n] = false);
} }
} }
} else {
for (var n = 0; n < _expandedStore.length; n++) {
setState(() => _expandedStore[n] = false);
}
}
} }
: null; : null;
_expandedStore = _expandedStore =
@ -93,7 +99,9 @@ class _SelectableYaruExpansionPanelState
Widget build(BuildContext context) { Widget build(BuildContext context) {
assert(widget.children.length == widget.headers.length); assert(widget.children.length == widget.headers.length);
_expandedStore[widget.controller.selectedItem] = true; if (widget.controller.selectedItem != null) {
_expandedStore[widget.controller.selectedItem!] = true;
}
return YaruBorderContainer( return YaruBorderContainer(
border: widget.border, border: widget.border,