mirror of
https://github.com/ALEZ-DEV/Babylonia-terminal.git
synced 2026-03-21 21:58:52 +00:00
Add welcome and setup screen
This commit is contained in:
parent
63b2aff20a
commit
29ff5488aa
@ -3,12 +3,16 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:yaru/yaru.dart';
|
import 'package:yaru/yaru.dart';
|
||||||
|
|
||||||
import './screens/screens.dart';
|
import './screens/screens.dart';
|
||||||
|
import './screens/setup_screen.dart';
|
||||||
import './providers/providers.dart';
|
import './providers/providers.dart';
|
||||||
|
|
||||||
class BabyloniaLauncher extends StatelessWidget {
|
class BabyloniaLauncher extends StatelessWidget {
|
||||||
const BabyloniaLauncher({super.key, required this.settingsProvider});
|
const BabyloniaLauncher(
|
||||||
|
{super.key,
|
||||||
|
required this.settingsProvider,
|
||||||
|
required this.gameStateProvider});
|
||||||
final SettingsProvider settingsProvider;
|
final SettingsProvider settingsProvider;
|
||||||
|
final GameStateProvider gameStateProvider;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -18,7 +22,7 @@ class BabyloniaLauncher extends StatelessWidget {
|
|||||||
create: (context) => settingsProvider,
|
create: (context) => settingsProvider,
|
||||||
),
|
),
|
||||||
ChangeNotifierProvider(
|
ChangeNotifierProvider(
|
||||||
create: (context) => GameStateProvider(),
|
create: (context) => gameStateProvider,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
child: YaruTheme(
|
child: YaruTheme(
|
||||||
@ -30,7 +34,9 @@ class BabyloniaLauncher extends StatelessWidget {
|
|||||||
themeMode: ThemeMode.system,
|
themeMode: ThemeMode.system,
|
||||||
highContrastTheme: yaruHighContrastLight,
|
highContrastTheme: yaruHighContrastLight,
|
||||||
highContrastDarkTheme: yaruHighContrastDark,
|
highContrastDarkTheme: yaruHighContrastDark,
|
||||||
home: const Menu(),
|
home: Provider.of<GameStateProvider>(context).hasToSetup()
|
||||||
|
? const SetupScreen()
|
||||||
|
: const Menu(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -14,7 +14,11 @@ void main() async {
|
|||||||
final SettingsProvider settings = SettingsProvider();
|
final SettingsProvider settings = SettingsProvider();
|
||||||
await settings.init();
|
await settings.init();
|
||||||
|
|
||||||
|
final GameStateProvider gameState = GameStateProvider();
|
||||||
|
await gameState.updateGameState();
|
||||||
|
|
||||||
runApp(BabyloniaLauncher(
|
runApp(BabyloniaLauncher(
|
||||||
settingsProvider: settings,
|
settingsProvider: settings,
|
||||||
|
gameStateProvider: gameState,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import 'package:babylonia_terminal_launcher/messages/game_state.pb.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class GameStateProvider with ChangeNotifier {
|
class GameStateProvider with ChangeNotifier {
|
||||||
States? _gameState = null;
|
States? _gameState;
|
||||||
bool isUpdating = false;
|
bool isUpdating = false;
|
||||||
|
|
||||||
Future updateGameState() async {
|
Future updateGameState() async {
|
||||||
@ -19,4 +19,9 @@ class GameStateProvider with ChangeNotifier {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool hasToSetup() {
|
||||||
|
return _gameState == States.ProtonNotInstalled ||
|
||||||
|
_gameState == States.DXVKNotInstalled;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import '../widgets/background_widget.dart';
|
import '../widgets/background_widget.dart';
|
||||||
|
import '../widgets/serious_lee_widget.dart';
|
||||||
|
import '../widgets/simple_button.dart';
|
||||||
import './../providers/providers.dart';
|
import './../providers/providers.dart';
|
||||||
import './../models/settings.dart';
|
import './../models/settings.dart';
|
||||||
import './../models/background.dart';
|
import './../models/background.dart';
|
||||||
@ -34,10 +36,7 @@ class HomeScreen extends StatelessWidget {
|
|||||||
maxWidth: 600,
|
maxWidth: 600,
|
||||||
maxHeight: 50,
|
maxHeight: 50,
|
||||||
),
|
),
|
||||||
child: ElevatedButton(
|
child: SimpleButton(
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
backgroundColor: Colors.blue[500],
|
|
||||||
),
|
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
Provider.of<GameStateProvider>(context,
|
Provider.of<GameStateProvider>(context,
|
||||||
listen: false)
|
listen: false)
|
||||||
@ -94,44 +93,18 @@ class _ShowBackgroundState extends State<ShowBackground> {
|
|||||||
if (Provider.of<SettingsProvider>(context).getSelectedBackgroundType !=
|
if (Provider.of<SettingsProvider>(context).getSelectedBackgroundType !=
|
||||||
BackgroundType.disable) {
|
BackgroundType.disable) {
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
return const DefaultBackground();
|
return const SeriousLeeWidget(
|
||||||
|
title: 'Babylonia Terminal',
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return BackgroundWidget(
|
return BackgroundWidget(
|
||||||
background: _background,
|
background: _background,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return const DefaultBackground();
|
return const SeriousLeeWidget(
|
||||||
}
|
title: 'Babylonia Terminal',
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DefaultBackground extends StatelessWidget {
|
|
||||||
const DefaultBackground({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Center(
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
SizedBox(
|
|
||||||
height: 300,
|
|
||||||
child: Image.asset('assets/images/Lee6.png'),
|
|
||||||
),
|
|
||||||
const Center(
|
|
||||||
child: Padding(
|
|
||||||
padding: EdgeInsets.all(8.0),
|
|
||||||
child: Text(
|
|
||||||
'Babylonia Terminal',
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 34,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
42
babylonia_terminal_launcher/lib/screens/setup_screen.dart
Normal file
42
babylonia_terminal_launcher/lib/screens/setup_screen.dart
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import './../widgets/serious_lee_widget.dart';
|
||||||
|
import './../widgets/simple_button.dart';
|
||||||
|
|
||||||
|
class SetupScreen extends StatelessWidget {
|
||||||
|
const SetupScreen({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
title: const Text("Babylonia Terminal"),
|
||||||
|
centerTitle: true,
|
||||||
|
),
|
||||||
|
body: Center(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
const SeriousLeeWidget(title: 'Welcome to Babylonia Terminal!'),
|
||||||
|
const Text(
|
||||||
|
'We have to setup some things first',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 15.0),
|
||||||
|
child: SizedBox(
|
||||||
|
width: 200,
|
||||||
|
child: SimpleButton(
|
||||||
|
onPressed: () {},
|
||||||
|
child: const Text('Start'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class SeriousLeeWidget extends StatelessWidget {
|
||||||
|
const SeriousLeeWidget({super.key, required this.title});
|
||||||
|
final String title;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Center(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 300,
|
||||||
|
child: Image.asset('assets/images/Lee6.png'),
|
||||||
|
),
|
||||||
|
Center(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Text(
|
||||||
|
title,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 34,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
25
babylonia_terminal_launcher/lib/widgets/simple_button.dart
Normal file
25
babylonia_terminal_launcher/lib/widgets/simple_button.dart
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class SimpleButton extends StatelessWidget {
|
||||||
|
const SimpleButton({super.key, required this.child, required this.onPressed});
|
||||||
|
final Function()? onPressed;
|
||||||
|
final Widget? child;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ElevatedButton(
|
||||||
|
style: ButtonStyle(
|
||||||
|
backgroundColor: MaterialStateProperty.all(Colors.blue[500]),
|
||||||
|
side: MaterialStateProperty.all(BorderSide.none),
|
||||||
|
shape: MaterialStateProperty.all<RoundedRectangleBorder>(
|
||||||
|
RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(100.0),
|
||||||
|
side: const BorderSide(color: Colors.red),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onPressed: onPressed,
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user