add control window control button

This commit is contained in:
ALEZ-DEV 2024-10-07 18:07:46 +02:00
parent fbbc9e2225
commit 4122d9f84f
4 changed files with 50 additions and 1 deletions

View File

@ -106,6 +106,8 @@ class _MenuState extends State<Menu> {
), ),
); );
final window = YaruWindow.of(context);
return ChangeNotifierProvider( return ChangeNotifierProvider(
create: (context) => Game(), create: (context) => Game(),
child: Scaffold( child: Scaffold(
@ -117,6 +119,50 @@ class _MenuState extends State<Menu> {
appBar: AppBar( appBar: AppBar(
title: const Text("Babylonia Terminal"), title: const Text("Babylonia Terminal"),
centerTitle: true, centerTitle: true,
actions: [
Padding(
padding: const EdgeInsets.only(right: 14.0),
child: YaruWindowControl(
type: YaruWindowControlType.minimize,
platform: YaruWindowControlPlatform.yaru,
onTap: () async {
final state = await window.state();
if (state.isMinimizable ?? false) window.minimize();
},
),
),
StreamBuilder<YaruWindowState>(
stream: window.states(),
builder: (context, snapshot) {
final state = snapshot.data;
return Padding(
padding: const EdgeInsets.only(right: 14.0),
child: YaruWindowControl(
type: (state?.isMinimizable ?? false)
? YaruWindowControlType.maximize
: YaruWindowControlType.restore,
platform: YaruWindowControlPlatform.yaru,
onTap: () async {
(state?.isMinimizable ?? false)
? window.maximize()
: window.restore();
},
),
);
},
),
Padding(
padding: const EdgeInsets.only(right: 10.0),
child: YaruWindowControl(
type: YaruWindowControlType.close,
platform: YaruWindowControlPlatform.yaru,
onTap: () async {
final state = await window.state();
if (state.isClosable ?? false) window.close();
},
),
),
],
), ),
body: Screens.getCurrent(_selectedIndex), body: Screens.getCurrent(_selectedIndex),
), ),

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:media_kit/media_kit.dart'; import 'package:media_kit/media_kit.dart';
import 'package:rinf/rinf.dart'; import 'package:rinf/rinf.dart';
import 'package:yaru_window/yaru_window.dart';
import './app.dart'; import './app.dart';
import './messages/generated.dart'; import './messages/generated.dart';
@ -9,6 +10,7 @@ import './providers/providers.dart';
void main() async { void main() async {
await initializeRust(assignRustSignal); await initializeRust(assignRustSignal);
await YaruWindow.ensureInitialized();
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
MediaKit.ensureInitialized(); MediaKit.ensureInitialized();

View File

@ -790,7 +790,7 @@ packages:
source: hosted source: hosted
version: "4.1.0" version: "4.1.0"
yaru_window: yaru_window:
dependency: transitive dependency: "direct main"
description: description:
name: yaru_window name: yaru_window
sha256: c9d16f78962652ad71aa160ab0a1e2e5924359439303394f980fd00eefc905eb sha256: c9d16f78962652ad71aa160ab0a1e2e5924359439303394f980fd00eefc905eb

View File

@ -53,6 +53,7 @@ dependencies:
media_kit: ^1.1.11 media_kit: ^1.1.11
media_kit_video: ^1.2.5 media_kit_video: ^1.2.5
media_kit_libs_video: ^1.0.5 media_kit_libs_video: ^1.0.5
yaru_window: ^0.2.1
#dependency_overrides: #dependency_overrides:
# media_kit: # media_kit: