From 91298fd13e5c54c42979313fbb08cf06db39152b Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Sun, 29 Jun 2025 11:58:45 +0800 Subject: [PATCH] MCSI-1 refactor: move bloc higher layer --- .../ui/minecraft_server_installer.dart | 16 +++++++++-- .../framework/ui/game_version_dropdown.dart | 28 ++----------------- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/lib/main/framework/ui/minecraft_server_installer.dart b/lib/main/framework/ui/minecraft_server_installer.dart index 1e6f96f..82957ff 100644 --- a/lib/main/framework/ui/minecraft_server_installer.dart +++ b/lib/main/framework/ui/minecraft_server_installer.dart @@ -1,16 +1,28 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:minecraft_server_installer/main/framework/ui/basic_configuration_tab.dart'; +import 'package:minecraft_server_installer/vanila/adapter/gateway/game_version_repository_impl.dart'; +import 'package:minecraft_server_installer/vanila/adapter/presentation/game_version_bloc.dart'; +import 'package:minecraft_server_installer/vanila/application/use_case/get_game_version_list_use_case.dart'; +import 'package:minecraft_server_installer/vanila/framework/api/game_version_api_service_impl.dart'; class MinecraftServerInstaller extends StatelessWidget { const MinecraftServerInstaller({super.key}); @override Widget build(BuildContext context) { + final gameVersionApiService = GameVersionApiServiceImpl(); + final gameVersionRepository = GameVersionRepositoryImpl(gameVersionApiService); + final getGameVersionListUseCase = GetGameVersionListUseCase(gameVersionRepository); + return MaterialApp( title: 'Minecraft Server Installer', theme: ThemeData(primarySwatch: Colors.blue), - home: const Scaffold( - body: Padding(padding: EdgeInsets.symmetric(horizontal: 24, vertical: 32), child: BasicConfigurationTab()), + home: MultiBlocProvider( + providers: [BlocProvider(create: (context) => GameVersionBloc(getGameVersionListUseCase))], + child: const Scaffold( + body: Padding(padding: EdgeInsets.symmetric(horizontal: 24, vertical: 32), child: BasicConfigurationTab()), + ), ), ); } diff --git a/lib/vanila/framework/ui/game_version_dropdown.dart b/lib/vanila/framework/ui/game_version_dropdown.dart index 48094b4..f3128fa 100644 --- a/lib/vanila/framework/ui/game_version_dropdown.dart +++ b/lib/vanila/framework/ui/game_version_dropdown.dart @@ -1,41 +1,19 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:minecraft_server_installer/main/framework/ui/strings.dart'; -import 'package:minecraft_server_installer/vanila/adapter/gateway/game_version_repository_impl.dart'; import 'package:minecraft_server_installer/vanila/adapter/presentation/game_version_bloc.dart'; import 'package:minecraft_server_installer/vanila/adapter/presentation/game_version_view_model.dart'; -import 'package:minecraft_server_installer/vanila/application/use_case/get_game_version_list_use_case.dart'; -import 'package:minecraft_server_installer/vanila/framework/api/game_version_api_service_impl.dart'; -class GameVersionDropdown extends StatelessWidget { +class GameVersionDropdown extends StatefulWidget { const GameVersionDropdown({super.key, required this.onChanged}); final void Function(GameVersionViewModel?) onChanged; @override - Widget build(BuildContext context) { - return BlocProvider( - create: (_) { - final gameVersionApiService = GameVersionApiServiceImpl(); - final gameVersionRepository = GameVersionRepositoryImpl(gameVersionApiService); - final getGameVersionListUseCase = GetGameVersionListUseCase(gameVersionRepository); - return GameVersionBloc(getGameVersionListUseCase); - }, - child: _GameVersionDropdown(key: key, onChanged: onChanged), - ); - } + State createState() => _GameVersionDropdownState(); } -class _GameVersionDropdown extends StatefulWidget { - const _GameVersionDropdown({super.key, required this.onChanged}); - - final void Function(GameVersionViewModel?) onChanged; - - @override - State<_GameVersionDropdown> createState() => _GameVersionDropdownState(); -} - -class _GameVersionDropdownState extends State<_GameVersionDropdown> { +class _GameVersionDropdownState extends State { @override void initState() { super.initState();