This commit is contained in:
SquidSpirit 2025-06-29 12:00:17 +08:00
parent 91298fd13e
commit ca1fece7ab
7 changed files with 38 additions and 1 deletions

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:minecraft_server_installer/main/framework/ui/strings.dart';
import 'package:minecraft_server_installer/vanila/adapter/presentation/game_version_view_model.dart';
import 'package:minecraft_server_installer/vanila/framework/ui/game_version_dropdown.dart';
@ -14,6 +15,12 @@ class _BasicConfigurationTabState extends State<BasicConfigurationTab> {
@override
Widget build(BuildContext context) {
return const Column(children: [GameVersionDropdown(onChanged: print)]);
return const Column(
children: [
GameVersionDropdown(onChanged: print),
Spacer(),
ElevatedButton(onPressed: null, child: Text(Strings.buttonStartToInstall)),
],
);
}
}

View File

@ -1,3 +1,4 @@
abstract class Strings {
static const fieldGameVersion = '遊戲版本';
static const buttonStartToInstall = '開始安裝';
}

View File

@ -1,5 +1,9 @@
import 'dart:typed_data';
import 'package:minecraft_server_installer/vanila/domain/entity/game_version.dart';
abstract interface class GameVersionApiService {
Future<List<GameVersion>> fetchGameVersionList();
Future<Uint8List> fetchServerFile(Uri url);
}

View File

@ -9,4 +9,9 @@ class GameVersionRepositoryImpl implements GameVersionRepository {
@override
Future<List<GameVersion>> getGameVersionList() => _gameVersionApiService.fetchGameVersionList();
@override
Future<void> downloadServerFile(GameVersion version, String savePath) async {
final fileBytes = await _gameVersionApiService.fetchServerFile(version.url);
}
}

View File

@ -2,4 +2,6 @@ import 'package:minecraft_server_installer/vanila/domain/entity/game_version.dar
abstract interface class GameVersionRepository {
Future<List<GameVersion>> getGameVersionList();
Future<void> downloadServerFile(GameVersion version, String savePath);
}

View File

@ -0,0 +1,10 @@
import 'package:minecraft_server_installer/vanila/application/repository/game_version_repository.dart';
import 'package:minecraft_server_installer/vanila/domain/entity/game_version.dart';
class DownloadServerFileUseCase {
final GameVersionRepository _gameVersionRepository;
DownloadServerFileUseCase(this._gameVersionRepository);
Future<void> call(GameVersion version, String savePath) => _gameVersionRepository.downloadServerFile(version, savePath);
}

View File

@ -1,3 +1,5 @@
import 'dart:typed_data';
import 'package:http/http.dart' as http;
import 'package:minecraft_server_installer/vanila/adapter/gateway/game_version_api_service.dart';
import 'package:minecraft_server_installer/vanila/domain/entity/game_version.dart';
@ -17,4 +19,10 @@ class GameVersionApiServiceImpl implements GameVersionApiService {
return gameVersionList;
}
@override
Future<Uint8List> fetchServerFile(Uri url) async {
final response = await http.get(url);
return response.bodyBytes;
}
}