From 82ed2e70dc8238bc99ef9011b0c307b0bca29be2 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Tue, 16 May 2023 16:45:46 +0800 Subject: [PATCH] #40 new: `docker` container restart --- lib/data/model/server/server_private_info.dart | 12 ------------ lib/data/provider/docker.dart | 7 ++++++- lib/data/res/menu.dart | 2 ++ lib/view/page/docker.dart | 11 +++++++++-- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/lib/data/model/server/server_private_info.dart b/lib/data/model/server/server_private_info.dart index b2d9ad96..e5c278bd 100644 --- a/lib/data/model/server/server_private_info.dart +++ b/lib/data/model/server/server_private_info.dart @@ -4,20 +4,8 @@ import 'package:hive_flutter/hive_flutter.dart'; part 'server_private_info.g.dart'; -/// -/// Code generated by jsonToDartModel https://ashamp.github.io/jsonToDartModel/ -/// @HiveType(typeId: 3) class ServerPrivateInfo { -/* -{ - "ip": "", - "port": 1, - "user": "", - "authorization": "" -} -*/ - @HiveField(0) late String name; @HiveField(1) diff --git a/lib/data/provider/docker.dart b/lib/data/provider/docker.dart index 759fdf32..5f4efd2c 100644 --- a/lib/data/provider/docker.dart +++ b/lib/data/provider/docker.dart @@ -127,6 +127,9 @@ class DockerProvider extends BusyProvider { Future delete(String id) async => await run('docker rm $id'); + Future restart(String id) async => + await run('docker restart $id'); + Future run(String cmd) async { if (!cmd.startsWith(_dockerPrefixReg)) { return DockerErr(type: DockerErrType.cmdNoPrefix); @@ -151,7 +154,9 @@ class DockerProvider extends BusyProvider { if (code != 0) { setBusyState(false); return DockerErr( - type: DockerErrType.unknown, message: errs.join('\n').trim()); + type: DockerErrType.unknown, + message: errs.join('\n').trim(), + ); } await refresh(); setBusyState(false); diff --git a/lib/data/res/menu.dart b/lib/data/res/menu.dart index ed3537a1..fed7a0f6 100644 --- a/lib/data/res/menu.dart +++ b/lib/data/res/menu.dart @@ -21,6 +21,8 @@ class DockerMenuItems { static const rm = DropdownBtnItem(text: 'Remove', icon: Icons.delete); static const start = DropdownBtnItem(text: 'Start', icon: Icons.play_arrow); static const stop = DropdownBtnItem(text: 'Stop', icon: Icons.stop); + static const restart = + DropdownBtnItem(text: 'Restart', icon: Icons.restart_alt); } String getDropdownBtnText(S s, String text) { diff --git a/lib/view/page/docker.dart b/lib/view/page/docker.dart index 1dae50b5..7ec479a7 100644 --- a/lib/view/page/docker.dart +++ b/lib/view/page/docker.dart @@ -447,8 +447,11 @@ class _DockerManagePageState extends State { (item) { return ListTile( title: Text(item.name), - subtitle: Text('${item.image} - ${item.status}', - style: grey.copyWith(fontSize: 11)), + isThreeLine: true, + subtitle: Text( + '${item.image}\n${item.status}', + style: textSize13Grey, + ), trailing: _buildMoreBtn(item, _docker.isBusy), ); }, @@ -477,6 +480,10 @@ class _DockerManagePageState extends State { value: DockerMenuItems.rm, child: DockerMenuItems.rm.build(_s), ), + PopupMenuItem( + value: DockerMenuItems.restart, + child: DockerMenuItems.restart.build(_s), + ), ], onSelected: (value) { if (busy) {