import 'dart:io'; import 'package:flutter/material.dart'; import 'package:quickgui/src/app.dart'; import 'package:quickgui/src/model/operating_system.dart'; import 'package:quickgui/src/model/version.dart'; import 'package:tuple/tuple.dart'; import 'package:window_size/window_size.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); setWindowTitle('Quickgui : a flutter frontend for Quickget and Quickemu'); setWindowMinSize(const Size(692, 580)); setWindowMaxSize(const Size(692, 580)); gOperatingSystems = await loadOperatingSystems(false); runApp(const App()); } Future> loadOperatingSystems(bool showUbuntus) async { var process = await Process.run('quickget', ['list_csv']); var stdout = process.stdout as String; var output = []; OperatingSystem? currentOperatingSystem; Version? currentVersion; stdout.split('\n').skip(1).where((element) => element.isNotEmpty).map((e) => e.trim()).forEach((element) { var supportedVersion = Tuple4.fromList(element.split(",")); if (currentOperatingSystem?.code != supportedVersion.item2) { currentOperatingSystem = OperatingSystem(supportedVersion.item1, supportedVersion.item2); output.add(currentOperatingSystem!); currentVersion = null; } if (currentVersion?.version != supportedVersion.item3) { currentVersion = Version(supportedVersion.item3); currentOperatingSystem!.versions.add(currentVersion!); } currentVersion!.options.add(supportedVersion.item4); }); return output; }