input key ffi
This commit is contained in:
parent
ae79afaf0d
commit
83622cffc6
@ -16,6 +16,7 @@ class HexColor extends Color {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class MyTheme {
|
class MyTheme {
|
||||||
|
MyTheme._();
|
||||||
static const Color grayBg = Color(0xFFEEEEEE);
|
static const Color grayBg = Color(0xFFEEEEEE);
|
||||||
static const Color white = Color(0xFFFFFFFF);
|
static const Color white = Color(0xFFFFFFFF);
|
||||||
static const Color accent = Color(0xFF0071FF);
|
static const Color accent = Color(0xFF0071FF);
|
||||||
@ -46,7 +47,7 @@ typedef BuildAlertDailog = Tuple3<Widget, Widget, List<Widget>> Function(
|
|||||||
// https://material.io/develop/flutter/components/dialogs
|
// https://material.io/develop/flutter/components/dialogs
|
||||||
Future<T> showAlertDialog<T>(BuildContext context, BuildAlertDailog build,
|
Future<T> showAlertDialog<T>(BuildContext context, BuildAlertDailog build,
|
||||||
[WillPopCallback onWillPop,
|
[WillPopCallback onWillPop,
|
||||||
bool barrierDismissible,
|
bool barrierDismissible = false,
|
||||||
double contentPadding = 20]) async {
|
double contentPadding = 20]) async {
|
||||||
dismissLoading();
|
dismissLoading();
|
||||||
if (_hasDialog) {
|
if (_hasDialog) {
|
||||||
@ -73,10 +74,20 @@ Future<T> showAlertDialog<T>(BuildContext context, BuildAlertDailog build,
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void msgbox(String type, String title, String text, BuildContext context) {
|
void msgbox(String type, String title, String text, BuildContext context,
|
||||||
|
[hasCancel = false]) {
|
||||||
showAlertDialog(
|
showAlertDialog(
|
||||||
context,
|
context,
|
||||||
(_) => Tuple3(Text(title), Text(text), [
|
(_) => Tuple3(Text(title), Text(text), [
|
||||||
|
hasCancel
|
||||||
|
? Spacer()
|
||||||
|
: FlatButton(
|
||||||
|
textColor: MyTheme.accent,
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
child: Text('Cancel'),
|
||||||
|
),
|
||||||
FlatButton(
|
FlatButton(
|
||||||
textColor: MyTheme.accent,
|
textColor: MyTheme.accent,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
@ -267,7 +267,7 @@ class FFI {
|
|||||||
FFI.ffiModel.clear();
|
FFI.ffiModel.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setByName(String name, String value) {
|
static void setByName(String name, [String value = '']) {
|
||||||
_setByName(Utf8.toUtf8(name), Utf8.toUtf8(value));
|
_setByName(Utf8.toUtf8(name), Utf8.toUtf8(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,79 +67,92 @@ class _RemotePageState extends State<RemotePage> {
|
|||||||
// Size size = MediaQueryData.fromWindow(ui.window).size;
|
// Size size = MediaQueryData.fromWindow(ui.window).size;
|
||||||
// MediaQuery.of(context).size.height;
|
// MediaQuery.of(context).size.height;
|
||||||
EasyLoading.instance.loadingStyle = EasyLoadingStyle.light;
|
EasyLoading.instance.loadingStyle = EasyLoadingStyle.light;
|
||||||
return Scaffold(
|
return WillPopScope(
|
||||||
floatingActionButton: _showBar
|
onWillPop: () async {
|
||||||
? null
|
close();
|
||||||
: FloatingActionButton(
|
return false;
|
||||||
mini: true,
|
},
|
||||||
child: Icon(Icons.expand_less),
|
child: Scaffold(
|
||||||
backgroundColor: MyTheme.accent50,
|
floatingActionButton: _showBar
|
||||||
onPressed: () {
|
? null
|
||||||
setState(() => _showBar = !_showBar);
|
: FloatingActionButton(
|
||||||
}),
|
mini: true,
|
||||||
bottomNavigationBar: _showBar
|
child: Icon(Icons.expand_less),
|
||||||
? BottomAppBar(
|
backgroundColor: MyTheme.accent50,
|
||||||
color: MyTheme.accent,
|
onPressed: () {
|
||||||
child: Row(
|
setState(() => _showBar = !_showBar);
|
||||||
mainAxisSize: MainAxisSize.max,
|
}),
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
bottomNavigationBar: _showBar
|
||||||
children: <Widget>[
|
? BottomAppBar(
|
||||||
Row(children: [
|
color: MyTheme.accent,
|
||||||
IconButton(
|
child: Row(
|
||||||
color: Colors.white,
|
mainAxisSize: MainAxisSize.max,
|
||||||
icon: Icon(Icons.clear),
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
onPressed: () {},
|
children: <Widget>[
|
||||||
),
|
Row(children: [
|
||||||
IconButton(
|
IconButton(
|
||||||
color: Colors.white,
|
|
||||||
icon: Icon(Icons.keyboard),
|
|
||||||
onPressed: () {},
|
|
||||||
),
|
|
||||||
Transform.rotate(
|
|
||||||
angle: 15 * math.pi / 180,
|
|
||||||
child: IconButton(
|
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
icon: Icon(Icons.flash_on),
|
icon: Icon(Icons.clear),
|
||||||
|
onPressed: () {
|
||||||
|
close();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
color: Colors.white,
|
||||||
|
icon: Icon(Icons.keyboard),
|
||||||
onPressed: () {},
|
onPressed: () {},
|
||||||
)),
|
),
|
||||||
IconButton(
|
Transform.rotate(
|
||||||
color: Colors.white,
|
angle: 15 * math.pi / 180,
|
||||||
icon: Icon(Icons.tv),
|
child: IconButton(
|
||||||
onPressed: () {
|
color: Colors.white,
|
||||||
showOptions(widget.id, context);
|
icon: Icon(Icons.flash_on),
|
||||||
},
|
onPressed: () {
|
||||||
),
|
showActions(context);
|
||||||
IconButton(
|
},
|
||||||
color: Colors.white,
|
)),
|
||||||
icon: Icon(Icons.settings),
|
IconButton(
|
||||||
onPressed: () {},
|
color: Colors.white,
|
||||||
)
|
icon: Icon(Icons.tv),
|
||||||
]),
|
onPressed: () {
|
||||||
IconButton(
|
showOptions(context);
|
||||||
color: Colors.white,
|
},
|
||||||
icon: Icon(Icons.expand_more),
|
),
|
||||||
onPressed: () {
|
IconButton(
|
||||||
setState(() => _showBar = !_showBar);
|
color: Colors.white,
|
||||||
}),
|
icon: Icon(Icons.settings),
|
||||||
],
|
onPressed: () {},
|
||||||
),
|
)
|
||||||
)
|
]),
|
||||||
: null,
|
IconButton(
|
||||||
body: FlutterEasyLoading(
|
color: Colors.white,
|
||||||
child: Container(
|
icon: Icon(Icons.expand_more),
|
||||||
color: MyTheme.canvasColor,
|
onPressed: () {
|
||||||
child: InteractiveViewer(
|
setState(() => _showBar = !_showBar);
|
||||||
constrained: false,
|
}),
|
||||||
panEnabled: true,
|
],
|
||||||
onInteractionUpdate: (details) {
|
),
|
||||||
print('$details');
|
)
|
||||||
},
|
: null,
|
||||||
child: Stack(children: [
|
body: FlutterEasyLoading(
|
||||||
ImagePaint(),
|
child: Container(
|
||||||
CursorPaint(),
|
color: MyTheme.canvasColor,
|
||||||
]),
|
child: InteractiveViewer(
|
||||||
),
|
constrained: false,
|
||||||
)));
|
panEnabled: true,
|
||||||
|
onInteractionUpdate: (details) {
|
||||||
|
print('$details');
|
||||||
|
},
|
||||||
|
child: Stack(children: [
|
||||||
|
ImagePaint(),
|
||||||
|
CursorPaint(),
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
))));
|
||||||
|
}
|
||||||
|
|
||||||
|
void close() {
|
||||||
|
msgbox('', 'Close', 'Are you sure to close the connection?', context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,7 +274,7 @@ void wrongPasswordDialog(String id, BuildContext context) {
|
|||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
void showOptions(String id, BuildContext context) {
|
void showOptions(BuildContext context) {
|
||||||
var showRemoteCursor =
|
var showRemoteCursor =
|
||||||
FFI.getByName('toggle_option', 'show-remote-cursor') == 'true';
|
FFI.getByName('toggle_option', 'show-remote-cursor') == 'true';
|
||||||
var lockAfterSessionEnd =
|
var lockAfterSessionEnd =
|
||||||
@ -332,5 +345,32 @@ void showOptions(String id, BuildContext context) {
|
|||||||
null),
|
null),
|
||||||
() async => true,
|
() async => true,
|
||||||
true,
|
true,
|
||||||
10);
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void showActions(BuildContext context) {
|
||||||
|
showAlertDialog(
|
||||||
|
context,
|
||||||
|
(setState) => Tuple3(
|
||||||
|
null,
|
||||||
|
Column(mainAxisSize: MainAxisSize.min, children: [
|
||||||
|
ListTile(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
FFI.setByName('ctrl_alt_del');
|
||||||
|
},
|
||||||
|
title: Text('Insert Ctrl + Alt + Del'),
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
FFI.setByName('lock_screen');
|
||||||
|
},
|
||||||
|
title: Text('Insert Lock'),
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
null),
|
||||||
|
() async => true,
|
||||||
|
true,
|
||||||
|
0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user