diff --git a/assets/binaries/winrar.exe b/assets/binaries/winrar.exe new file mode 100644 index 0000000..a43048d Binary files /dev/null and b/assets/binaries/winrar.exe differ diff --git a/lib/main.dart b/lib/main.dart index a89be0e..9fafc96 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,9 @@ import 'package:bitsdojo_window/bitsdojo_window.dart'; import 'package:fluent_ui/fluent_ui.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; +import 'package:reboot_launcher/src/controller/game_controller.dart'; +import 'package:reboot_launcher/src/controller/server_controller.dart'; +import 'package:reboot_launcher/src/controller/warning_controller.dart'; import 'package:system_theme/system_theme.dart'; import 'package:reboot_launcher/src/page/home_page.dart'; @@ -9,6 +12,9 @@ void main() async { WidgetsFlutterBinding.ensureInitialized(); await GetStorage.init("game"); await GetStorage.init("server"); + Get.put(GameController()); + Get.put(ServerController()); + Get.put(WarningController()); SystemTheme.accentColor.load(); doWhenWindowReady(() { const size = Size(600, 380); diff --git a/lib/src/controller/game_controller.dart b/lib/src/controller/game_controller.dart index 1316ce5..a4a17fe 100644 --- a/lib/src/controller/game_controller.dart +++ b/lib/src/controller/game_controller.dart @@ -22,11 +22,6 @@ class GameController extends GetxController { GameController() { _storage = GetStorage("game"); - username = TextEditingController(text: _storage.read("username")); - username.addListener(() async { - await _storage.write("username", username.text); - }); - Iterable decodedVersionsJson = jsonDecode(_storage.read("versions") ?? "[]"); var decodedVersions = decodedVersionsJson @@ -41,7 +36,14 @@ class GameController extends GetxController { _selectedVersion = Rxn(decodedSelectedVersion); host = RxBool(_storage.read("host") ?? false); + + username = TextEditingController(text: _storage.read("${host.value ? 'host' : 'game'}_username") ?? ""); + username.addListener(() async { + await _storage.write("${host.value ? 'host' : 'game'}_username", username.text); + }); + host.listen((value) => _storage.write("host", value)); + host.listen((value) => username.text = _storage.read("${host.value ? 'host' : 'game'}_username") ?? ""); started = RxBool(false); } diff --git a/lib/src/controller/server_controller.dart b/lib/src/controller/server_controller.dart index a4a29ce..e29b4aa 100644 --- a/lib/src/controller/server_controller.dart +++ b/lib/src/controller/server_controller.dart @@ -15,10 +15,10 @@ class ServerController extends GetxController { ServerController() { var storage = GetStorage("server"); - host = TextEditingController(text: storage.read("host")); + host = TextEditingController(text: storage.read("host") ?? ""); host.addListener(() => storage.write("host", host.text)); - port = TextEditingController(text: storage.read("port")); + port = TextEditingController(text: storage.read("port") ?? ""); port.addListener(() => storage.write("port", port.text)); embedded = RxBool(storage.read("embedded") ?? true); diff --git a/lib/src/page/launcher_page.dart b/lib/src/page/launcher_page.dart index bb934d5..04530d3 100644 --- a/lib/src/page/launcher_page.dart +++ b/lib/src/page/launcher_page.dart @@ -11,8 +11,7 @@ import 'package:reboot_launcher/src/widget/version_selector.dart'; import 'package:reboot_launcher/src/controller/warning_controller.dart'; class LauncherPage extends StatelessWidget { - final WarningController _warningController = Get.put(WarningController()); - final GameController _gameController = Get.put(GameController()); + final WarningController _warningController = Get.find(); LauncherPage({Key? key}) : super(key: key); diff --git a/lib/src/page/server_page.dart b/lib/src/page/server_page.dart index ab84306..c634ec8 100644 --- a/lib/src/page/server_page.dart +++ b/lib/src/page/server_page.dart @@ -11,8 +11,7 @@ import 'package:reboot_launcher/src/widget/server_button.dart'; import 'package:reboot_launcher/src/widget/restart_warning.dart'; class ServerPage extends StatelessWidget { - final WarningController _warningController = Get.put(WarningController()); - final ServerController _serverController = Get.put(ServerController()); + final WarningController _warningController = Get.find(); ServerPage({Key? key}) : super(key: key); diff --git a/lib/src/widget/add_server_version.dart b/lib/src/widget/add_server_version.dart index ccbe65a..ece2c69 100644 --- a/lib/src/widget/add_server_version.dart +++ b/lib/src/widget/add_server_version.dart @@ -24,7 +24,7 @@ class AddServerVersion extends StatefulWidget { class _AddServerVersionState extends State { final GameController _gameController = Get.find(); - final BuildController _buildController = Get.put(BuildController()); + final BuildController _buildController = Get.find(); final TextEditingController _nameController = TextEditingController(); final TextEditingController _pathController = TextEditingController(); late Future _future; diff --git a/lib/src/widget/host_input.dart b/lib/src/widget/host_input.dart index 2396d29..38fe86c 100644 --- a/lib/src/widget/host_input.dart +++ b/lib/src/widget/host_input.dart @@ -5,14 +5,13 @@ import 'package:reboot_launcher/src/widget/smart_input.dart'; import 'package:reboot_launcher/src/controller/server_controller.dart'; class HostInput extends StatelessWidget { - final ServerController _serverController = Get.put(ServerController()); + final ServerController _serverController = Get.find(); HostInput({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Obx(() => SmartInput( - keyName: "host", label: "Host", placeholder: "Type the host name", controller: _serverController.host, diff --git a/lib/src/widget/launch_button.dart b/lib/src/widget/launch_button.dart index 3597e5e..263f2df 100644 --- a/lib/src/widget/launch_button.dart +++ b/lib/src/widget/launch_button.dart @@ -73,16 +73,16 @@ class _LaunchButtonState extends State { } Future _updateServerState(bool value) async { - if (_serverController.started.value == value) { + if (_gameController.started.value == value) { return; } - _serverController.started(value); + _gameController.started(value); } Future _onStart() async { try { - _gameController.started(true); + _updateServerState(true); var version = _gameController.selectedVersionObs.value!; if (await version.launcher.exists()) { _gameController.launcherProcess = await Process.start(version.launcher.path, []); @@ -99,7 +99,7 @@ class _LaunchButtonState extends State { ..outLines.forEach(_onGameOutput); _injectOrShowError("cranium.dll"); } catch (exception) { - _gameController.started(false); + _updateServerState(false); _onError(exception); } } diff --git a/lib/src/widget/local_server_switch.dart b/lib/src/widget/local_server_switch.dart index 9dbfe06..49ea743 100644 --- a/lib/src/widget/local_server_switch.dart +++ b/lib/src/widget/local_server_switch.dart @@ -5,7 +5,7 @@ import 'package:reboot_launcher/src/widget/smart_switch.dart'; import 'package:reboot_launcher/src/controller/server_controller.dart'; class LocalServerSwitch extends StatelessWidget { - final ServerController _serverController = Get.put(ServerController()); + final ServerController _serverController = Get.find(); LocalServerSwitch({Key? key}) : super(key: key); diff --git a/lib/src/widget/port_input.dart b/lib/src/widget/port_input.dart index 5ee112c..066306b 100644 --- a/lib/src/widget/port_input.dart +++ b/lib/src/widget/port_input.dart @@ -5,14 +5,13 @@ import 'package:reboot_launcher/src/widget/smart_input.dart'; import 'package:reboot_launcher/src/controller/server_controller.dart'; class PortInput extends StatelessWidget { - final ServerController _serverController = Get.put(ServerController()); + final ServerController _serverController = Get.find(); PortInput({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Obx(() => SmartInput( - keyName: "port", label: "Port", placeholder: "Type the host port", controller: _serverController.port, diff --git a/lib/src/widget/server_button.dart b/lib/src/widget/server_button.dart index d119f0e..829159f 100644 --- a/lib/src/widget/server_button.dart +++ b/lib/src/widget/server_button.dart @@ -5,7 +5,7 @@ import 'package:reboot_launcher/src/controller/server_controller.dart'; import 'package:reboot_launcher/src/util/server.dart'; class ServerButton extends StatelessWidget { - final ServerController _serverController = Get.put(ServerController()); + final ServerController _serverController = Get.find(); ServerButton({Key? key}) : super(key: key); @override diff --git a/lib/src/widget/smart_input.dart b/lib/src/widget/smart_input.dart index 2eec361..cbba0dd 100644 --- a/lib/src/widget/smart_input.dart +++ b/lib/src/widget/smart_input.dart @@ -1,7 +1,6 @@ import 'package:fluent_ui/fluent_ui.dart'; class SmartInput extends StatelessWidget { - final String keyName; final String label; final String placeholder; final TextEditingController controller; @@ -12,7 +11,6 @@ class SmartInput extends StatelessWidget { const SmartInput( {Key? key, - required this.keyName, required this.label, required this.placeholder, required this.controller, diff --git a/lib/src/widget/username_box.dart b/lib/src/widget/username_box.dart index 91afce3..8b17f05 100644 --- a/lib/src/widget/username_box.dart +++ b/lib/src/widget/username_box.dart @@ -12,7 +12,6 @@ class UsernameBox extends StatelessWidget { @override Widget build(BuildContext context) { return Obx(() => SmartInput( - keyName: "${_gameController.host.value ? 'host' : 'game'}_username", label: "Username", placeholder: "Type your ${_gameController.host.value ? 'hosting' : "in-game"} username", controller: _gameController.username, diff --git a/pubspec.yaml b/pubspec.yaml index 6baa62e..7744ca1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -54,7 +54,7 @@ msix_config: force_update_from_any_version: false publisher_display_name: Reboot publisher: it.auties.reboot - msix_version: 2.1.0.0 + msix_version: 2.2.0.0 logo_path: ./assets/icons/fortnite.ico architecture: x64 capabilities: "internetClient"