diff --git a/lib/data/provider/container.dart b/lib/data/provider/container.dart index 53ffd011..3548a496 100644 --- a/lib/data/provider/container.dart +++ b/lib/data/provider/container.dart @@ -70,13 +70,16 @@ class ContainerProvider extends ChangeNotifier { return false; } - Future refresh() async { - var raw = ''; - + Future refresh({bool isAuto = false}) async { final sudo = await _requiresSudo() && Stores.setting.containerTrySudo.fetch(); + + /// If sudo is required and auto refresh is enabled, skip the refresh. + /// Or this will ask for pwd again and again. + if (sudo && isAuto) return; final includeStats = Stores.setting.containerParseStat.fetch(); + var raw = ''; final code = await client?.execWithPwd( _wrap(ContainerCmdType.execAll( type, @@ -264,7 +267,7 @@ enum ContainerCmdType { bool includeStats = false, }) { return ContainerCmdType.values - .map((e) => e.exec(type, sudo: sudo)) + .map((e) => e.exec(type, sudo: sudo, includeStats: includeStats)) .join(' && echo $seperator && '); } } diff --git a/lib/view/page/container.dart b/lib/view/page/container.dart index fbca9f7f..7dc9f629 100644 --- a/lib/view/page/container.dart +++ b/lib/view/page/container.dart @@ -592,7 +592,7 @@ class _ContainerPageState extends State { Duration(seconds: Stores.setting.serverStatusUpdateInterval.fetch()), (timer) { if (mounted) { - _container.refresh(); + _container.refresh(isAuto: true); } else { timer.cancel(); }