add ui event

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2023-04-20 20:57:47 +08:00
parent d9755abbc2
commit 9a08e0bed4
9 changed files with 262 additions and 63 deletions

View File

@@ -1,5 +1,4 @@
import 'dart:convert';
import 'dart:io';
import 'dart:ui' as ui;
import 'package:flutter/material.dart';
@@ -641,7 +640,7 @@ class _ControlMenu extends StatelessWidget {
if (e.divider) {
return Divider();
} else {
return _MenuItemButton(
return MenuButton(
child: e.child,
onPressed: e.onPressed,
ffi: ffi,
@@ -711,7 +710,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
if (!visible) return Offstage();
return Column(
children: [
_MenuItemButton(
MenuButton(
child: Text(translate('Adjust Window')),
onPressed: _doAdjustWindow,
ffi: widget.ffi),
@@ -828,7 +827,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
final v = data as List<TRadioMenu<String>>;
return Column(children: [
...v
.map((e) => _RadioMenuButton<String>(
.map((e) => RdoMenuButton<String>(
value: e.value,
groupValue: e.groupValue,
onChanged: e.onChanged,
@@ -858,14 +857,14 @@ class _DisplayMenuState extends State<_DisplayMenu> {
final enabled = widget.ffi.canvasModel.imageOverflow.value;
return Column(children: [
_RadioMenuButton<String>(
RdoMenuButton<String>(
child: Text(translate('ScrollAuto')),
value: kRemoteScrollStyleAuto,
groupValue: groupValue,
onChanged: enabled ? (value) => onChange(value) : null,
ffi: widget.ffi,
),
_RadioMenuButton<String>(
RdoMenuButton<String>(
child: Text(translate('Scrollbar')),
value: kRemoteScrollStyleBar,
groupValue: groupValue,
@@ -886,7 +885,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
ffi: widget.ffi,
child: Text(translate('Image Quality')),
menuChildren: v
.map((e) => _RadioMenuButton<String>(
.map((e) => RdoMenuButton<String>(
value: e.value,
groupValue: e.groupValue,
onChanged: e.onChanged,
@@ -908,7 +907,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
ffi: widget.ffi,
child: Text(translate('Codec')),
menuChildren: v
.map((e) => _RadioMenuButton(
.map((e) => RdoMenuButton(
value: e.value,
groupValue: e.groupValue,
onChanged: e.onChanged,
@@ -948,7 +947,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
return _SubmenuButton(
ffi: widget.ffi,
menuChildren: resolutions
.map((e) => _RadioMenuButton(
.map((e) => RdoMenuButton(
value: '${e.width}x${e.height}',
groupValue: groupValue,
onChanged: onChanged,
@@ -966,7 +965,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
if (v.isEmpty) return Offstage();
return Column(
children: v
.map((e) => _CheckboxMenuButton(
.map((e) => CkbMenuButton(
value: e.value,
onChanged: e.onChanged,
child: e.child,
@@ -1026,7 +1025,7 @@ class _KeyboardMenu extends StatelessWidget {
KeyboardModeMenu(key: _kKeyMapMode, menu: 'Map mode'),
KeyboardModeMenu(key: _kKeyTranslateMode, menu: 'Translate mode'),
];
List<_RadioMenuButton> list = [];
List<RdoMenuButton> list = [];
final enabled = !ffi.ffiModel.viewOnly;
onChanged(String? value) async {
if (value == null) return;
@@ -1049,7 +1048,7 @@ class _KeyboardMenu extends StatelessWidget {
if (mode.key == _kKeyTranslateMode) {
text = '$text beta';
}
list.add(_RadioMenuButton<String>(
list.add(RdoMenuButton<String>(
child: Text(text),
value: mode.key,
groupValue: groupValue,
@@ -1069,7 +1068,7 @@ class _KeyboardMenu extends StatelessWidget {
return Column(
children: [
Divider(),
_MenuItemButton(
MenuButton(
child: Text(
'${translate('Local keyboard type')}: ${KBLayoutType.value}'),
trailingIcon: const Icon(Icons.settings),
@@ -1085,7 +1084,7 @@ class _KeyboardMenu extends StatelessWidget {
view_mode() {
final ffiModel = ffi.ffiModel;
final enabled = version_cmp(pi.version, '1.2.0') >= 0 && ffiModel.keyboard;
return _CheckboxMenuButton(
return CkbMenuButton(
value: ffiModel.viewOnly,
onChanged: enabled
? (value) async {
@@ -1129,7 +1128,7 @@ class _ChatMenuState extends State<_ChatMenu> {
}
textChat() {
return _MenuItemButton(
return MenuButton(
child: Text(translate('Text chat')),
ffi: widget.ffi,
onPressed: () {
@@ -1148,7 +1147,7 @@ class _ChatMenuState extends State<_ChatMenu> {
}
voiceCall() {
return _MenuItemButton(
return MenuButton(
child: Text(translate('Voice call')),
ffi: widget.ffi,
onPressed: () => bind.sessionRequestVoiceCall(id: widget.id),
@@ -1403,12 +1402,12 @@ class _SubmenuButton extends StatelessWidget {
}
}
class _MenuItemButton extends StatelessWidget {
class MenuButton extends StatelessWidget {
final VoidCallback? onPressed;
final Widget? trailingIcon;
final Widget? child;
final FFI ffi;
_MenuItemButton(
MenuButton(
{Key? key,
this.onPressed,
this.trailingIcon,
@@ -1431,12 +1430,12 @@ class _MenuItemButton extends StatelessWidget {
}
}
class _CheckboxMenuButton extends StatelessWidget {
class CkbMenuButton extends StatelessWidget {
final bool? value;
final ValueChanged<bool?>? onChanged;
final Widget? child;
final FFI ffi;
const _CheckboxMenuButton(
const CkbMenuButton(
{Key? key,
required this.value,
required this.onChanged,
@@ -1460,13 +1459,13 @@ class _CheckboxMenuButton extends StatelessWidget {
}
}
class _RadioMenuButton<T> extends StatelessWidget {
class RdoMenuButton<T> extends StatelessWidget {
final T value;
final T? groupValue;
final ValueChanged<T?>? onChanged;
final Widget? child;
final FFI ffi;
const _RadioMenuButton(
const RdoMenuButton(
{Key? key,
required this.value,
required this.groupValue,