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(
create: (context) => Game(),
child: Scaffold(
@ -117,6 +119,50 @@ class _MenuState extends State<Menu> {
appBar: AppBar(
title: const Text("Babylonia Terminal"),
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),
),

View File

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

View File

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

View File

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