#40 new: docker container restart

This commit is contained in:
lollipopkit
2023-05-16 16:45:46 +08:00
parent 2161596efc
commit 82ed2e70dc
4 changed files with 17 additions and 15 deletions

View File

@@ -4,20 +4,8 @@ import 'package:hive_flutter/hive_flutter.dart';
part 'server_private_info.g.dart'; part 'server_private_info.g.dart';
///
/// Code generated by jsonToDartModel https://ashamp.github.io/jsonToDartModel/
///
@HiveType(typeId: 3) @HiveType(typeId: 3)
class ServerPrivateInfo { class ServerPrivateInfo {
/*
{
"ip": "",
"port": 1,
"user": "",
"authorization": ""
}
*/
@HiveField(0) @HiveField(0)
late String name; late String name;
@HiveField(1) @HiveField(1)

View File

@@ -127,6 +127,9 @@ class DockerProvider extends BusyProvider {
Future<DockerErr?> delete(String id) async => await run('docker rm $id'); Future<DockerErr?> delete(String id) async => await run('docker rm $id');
Future<DockerErr?> restart(String id) async =>
await run('docker restart $id');
Future<DockerErr?> run(String cmd) async { Future<DockerErr?> run(String cmd) async {
if (!cmd.startsWith(_dockerPrefixReg)) { if (!cmd.startsWith(_dockerPrefixReg)) {
return DockerErr(type: DockerErrType.cmdNoPrefix); return DockerErr(type: DockerErrType.cmdNoPrefix);
@@ -151,7 +154,9 @@ class DockerProvider extends BusyProvider {
if (code != 0) { if (code != 0) {
setBusyState(false); setBusyState(false);
return DockerErr( return DockerErr(
type: DockerErrType.unknown, message: errs.join('\n').trim()); type: DockerErrType.unknown,
message: errs.join('\n').trim(),
);
} }
await refresh(); await refresh();
setBusyState(false); setBusyState(false);

View File

@@ -21,6 +21,8 @@ class DockerMenuItems {
static const rm = DropdownBtnItem(text: 'Remove', icon: Icons.delete); static const rm = DropdownBtnItem(text: 'Remove', icon: Icons.delete);
static const start = DropdownBtnItem(text: 'Start', icon: Icons.play_arrow); static const start = DropdownBtnItem(text: 'Start', icon: Icons.play_arrow);
static const stop = DropdownBtnItem(text: 'Stop', icon: Icons.stop); 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) { String getDropdownBtnText(S s, String text) {

View File

@@ -447,8 +447,11 @@ class _DockerManagePageState extends State<DockerManagePage> {
(item) { (item) {
return ListTile( return ListTile(
title: Text(item.name), title: Text(item.name),
subtitle: Text('${item.image} - ${item.status}', isThreeLine: true,
style: grey.copyWith(fontSize: 11)), subtitle: Text(
'${item.image}\n${item.status}',
style: textSize13Grey,
),
trailing: _buildMoreBtn(item, _docker.isBusy), trailing: _buildMoreBtn(item, _docker.isBusy),
); );
}, },
@@ -477,6 +480,10 @@ class _DockerManagePageState extends State<DockerManagePage> {
value: DockerMenuItems.rm, value: DockerMenuItems.rm,
child: DockerMenuItems.rm.build(_s), child: DockerMenuItems.rm.build(_s),
), ),
PopupMenuItem<DropdownBtnItem>(
value: DockerMenuItems.restart,
child: DockerMenuItems.restart.build(_s),
),
], ],
onSelected: (value) { onSelected: (value) {
if (busy) { if (busy) {