Mobile. Share Screen. Fix "service" button causes canvas overflow

This commit is contained in:
grummbeer 2023-03-01 08:55:21 +01:00
parent c30f1fc420
commit 4c993fcecb

View File

@ -2,6 +2,7 @@ import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hbb/mobile/widgets/dialog.dart'; import 'package:flutter_hbb/mobile/widgets/dialog.dart';
import 'package:get/get.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../common.dart'; import '../../common.dart';
@ -264,70 +265,73 @@ class _PermissionCheckerState extends State<PermissionChecker> {
} else { } else {
status = 'Ready'; status = 'Ready';
} }
// @todo Theming
Widget ServerStateMessage() {
if (!serverModel.mediaOk) {
return Row(children: [
const Icon(Icons.warning_amber_outlined,
color: Colors.redAccent, size: 24)
.marginOnly(right: 10),
Expanded(child: Text(translate('Service is not running')))
]);
}
if (serverModel.connectStatus == -1) {
return Row(children: [
const Icon(Icons.warning_amber_sharp,
color: Colors.redAccent, size: 24)
.marginOnly(right: 10),
Expanded(child: Text(translate('not_ready_status')))
]);
} else if (serverModel.connectStatus == 0) {
return Row(children: [
SizedBox(width: 20, height: 20, child: CircularProgressIndicator())
.marginOnly(left: 4, right: 10),
Expanded(child: Text(translate('connecting_status')))
]);
} else {
return Row(children: [
const Icon(Icons.check, color: Colors.greenAccent, size: 24)
.marginOnly(right: 10),
Expanded(child: Text(translate('Ready')))
]);
}
}
return PaddingCard( return PaddingCard(
title: translate("Permissions"), title: translate("Permissions"),
child: Column( child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
crossAxisAlignment: CrossAxisAlignment.start, PermissionRow(translate("Screen Capture"), serverModel.mediaOk,
children: [ serverModel.toggleService),
PermissionRow(translate("Screen Capture"), serverModel.mediaOk, PermissionRow(translate("Input Control"), serverModel.inputOk,
serverModel.toggleService), serverModel.toggleInput),
PermissionRow(translate("Input Control"), serverModel.inputOk, PermissionRow(translate("Transfer File"), serverModel.fileOk,
serverModel.toggleInput), serverModel.toggleFile),
PermissionRow(translate("Transfer File"), serverModel.fileOk, hasAudioPermission
serverModel.toggleFile), ? PermissionRow(translate("Audio Capture"), serverModel.audioOk,
hasAudioPermission serverModel.toggleAudio)
? PermissionRow(translate("Audio Capture"), serverModel.audioOk, : Text(
serverModel.toggleAudio) "* ${translate("android_version_audio_tip")}",
: Text( style: const TextStyle(color: MyTheme.darkGray),
"* ${translate("android_version_audio_tip")}", ),
style: const TextStyle(color: MyTheme.darkGray), const SizedBox(height: 8),
), serverModel.mediaOk
const SizedBox(height: 8), ? ElevatedButton.icon(
Row( style: ButtonStyle(
crossAxisAlignment: CrossAxisAlignment.center, backgroundColor:
children: [ MaterialStateProperty.all(Colors.red)),
Expanded( icon: const Icon(Icons.stop),
flex: 0, onPressed: serverModel.toggleService,
child: serverModel.mediaOk label: Text(translate("Stop service")))
? ElevatedButton.icon( .marginOnly(bottom: 8)
style: ButtonStyle( : ElevatedButton.icon(
backgroundColor: icon: const Icon(Icons.play_arrow),
MaterialStateProperty.all(Colors.red)), onPressed: serverModel.toggleService,
icon: const Icon(Icons.stop), label: Text(translate("Start Service")))
onPressed: serverModel.toggleService, .marginOnly(bottom: 8),
label: Text(translate("Stop service"))) ServerStateMessage()
: ElevatedButton.icon( ]));
icon: const Icon(Icons.play_arrow),
onPressed: serverModel.toggleService,
label: Text(translate("Start Service")))),
Expanded(
child: serverModel.mediaOk
? Row(
children: [
Expanded(
flex: 0,
child: Padding(
padding: const EdgeInsets.only(
left: 20, right: 5),
child: Icon(Icons.circle,
color: serverModel.connectStatus > 0
? Colors.greenAccent
: Colors.deepOrangeAccent,
size: 10))),
Expanded(
child: Text(translate(status),
softWrap: true,
style: const TextStyle(
fontSize: 14.0,
fontWeight: FontWeight.w500,
color: MyTheme.accent80)))
],
)
: const SizedBox.shrink())
],
),
],
));
} }
} }