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

View File

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

View File

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

View File

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