mirror of
https://github.com/ALEZ-DEV/Babylonia-terminal.git
synced 2025-12-16 01:18:50 +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 './screens/screens.dart';
|
||||
|
||||
import './screens/setup_screen.dart';
|
||||
import './providers/providers.dart';
|
||||
|
||||
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 GameStateProvider gameStateProvider;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@ -18,7 +22,7 @@ class BabyloniaLauncher extends StatelessWidget {
|
||||
create: (context) => settingsProvider,
|
||||
),
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => GameStateProvider(),
|
||||
create: (context) => gameStateProvider,
|
||||
),
|
||||
],
|
||||
child: YaruTheme(
|
||||
@ -30,7 +34,9 @@ class BabyloniaLauncher extends StatelessWidget {
|
||||
themeMode: ThemeMode.system,
|
||||
highContrastTheme: yaruHighContrastLight,
|
||||
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();
|
||||
await settings.init();
|
||||
|
||||
final GameStateProvider gameState = GameStateProvider();
|
||||
await gameState.updateGameState();
|
||||
|
||||
runApp(BabyloniaLauncher(
|
||||
settingsProvider: settings,
|
||||
gameStateProvider: gameState,
|
||||
));
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ import 'package:babylonia_terminal_launcher/messages/game_state.pb.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class GameStateProvider with ChangeNotifier {
|
||||
States? _gameState = null;
|
||||
States? _gameState;
|
||||
bool isUpdating = false;
|
||||
|
||||
Future updateGameState() async {
|
||||
@ -19,4 +19,9 @@ class GameStateProvider with ChangeNotifier {
|
||||
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 '../widgets/background_widget.dart';
|
||||
import '../widgets/serious_lee_widget.dart';
|
||||
import '../widgets/simple_button.dart';
|
||||
import './../providers/providers.dart';
|
||||
import './../models/settings.dart';
|
||||
import './../models/background.dart';
|
||||
@ -34,10 +36,7 @@ class HomeScreen extends StatelessWidget {
|
||||
maxWidth: 600,
|
||||
maxHeight: 50,
|
||||
),
|
||||
child: ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.blue[500],
|
||||
),
|
||||
child: SimpleButton(
|
||||
onPressed: () async {
|
||||
Provider.of<GameStateProvider>(context,
|
||||
listen: false)
|
||||
@ -94,44 +93,18 @@ class _ShowBackgroundState extends State<ShowBackground> {
|
||||
if (Provider.of<SettingsProvider>(context).getSelectedBackgroundType !=
|
||||
BackgroundType.disable) {
|
||||
if (isLoading) {
|
||||
return const DefaultBackground();
|
||||
return const SeriousLeeWidget(
|
||||
title: 'Babylonia Terminal',
|
||||
);
|
||||
} else {
|
||||
return BackgroundWidget(
|
||||
background: _background,
|
||||
);
|
||||
}
|
||||
} 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