mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 15:24:35 +01:00
#40 new: docker container restart
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user