diff --git a/flutter/lib/desktop/pages/desktop_home_page.dart b/flutter/lib/desktop/pages/desktop_home_page.dart index 493e4ca47..9728d6b47 100644 --- a/flutter/lib/desktop/pages/desktop_home_page.dart +++ b/flutter/lib/desktop/pages/desktop_home_page.dart @@ -272,10 +272,21 @@ class _DesktopHomePageState extends State } buildPasswordBoard(BuildContext context) { - final model = gFFI.serverModel; + return ChangeNotifierProvider.value( + value: gFFI.serverModel, + child: Consumer( + builder: (context, model, child) { + return buildPasswordBoard2(context, model); + }, + )); + } + + buildPasswordBoard2(BuildContext context, ServerModel model) { RxBool refreshHover = false.obs; RxBool editHover = false.obs; final textColor = Theme.of(context).textTheme.titleLarge?.color; + final showOneTime = model.approveMode != 'click' && + model.verificationMethod != kUsePermanentPassword; return Container( margin: EdgeInsets.only(left: 20.0, right: 16, top: 13, bottom: 13), child: Row( @@ -304,8 +315,7 @@ class _DesktopHomePageState extends State Expanded( child: GestureDetector( onDoubleTap: () { - if (model.verificationMethod != - kUsePermanentPassword) { + if (showOneTime) { Clipboard.setData( ClipboardData(text: model.serverPasswd.text)); showToast(translate("Copied")); @@ -323,22 +333,23 @@ class _DesktopHomePageState extends State ), ), ), - AnimatedRotationWidget( - onPressed: () => bind.mainUpdateTemporaryPassword(), - child: Tooltip( - message: translate('Refresh Password'), - child: Obx(() => RotatedBox( - quarterTurns: 2, - child: Icon( - Icons.refresh, - color: refreshHover.value - ? textColor - : Color(0xFFDDDDDD), - size: 22, - ))), - ), - onHover: (value) => refreshHover.value = value, - ).marginOnly(right: 8, top: 4), + if (showOneTime) + AnimatedRotationWidget( + onPressed: () => bind.mainUpdateTemporaryPassword(), + child: Tooltip( + message: translate('Refresh Password'), + child: Obx(() => RotatedBox( + quarterTurns: 2, + child: Icon( + Icons.refresh, + color: refreshHover.value + ? textColor + : Color(0xFFDDDDDD), + size: 22, + ))), + ), + onHover: (value) => refreshHover.value = value, + ).marginOnly(right: 8, top: 4), if (!bind.isDisableSettings()) InkWell( child: Tooltip( diff --git a/flutter/lib/mobile/pages/server_page.dart b/flutter/lib/mobile/pages/server_page.dart index 06258e5a5..d6710b43d 100644 --- a/flutter/lib/mobile/pages/server_page.dart +++ b/flutter/lib/mobile/pages/server_page.dart @@ -446,7 +446,6 @@ class ServerInfo extends StatelessWidget { @override Widget build(BuildContext context) { - final isPermanent = model.verificationMethod == kUsePermanentPassword; final serverModel = Provider.of(context); const Color colorPositive = Colors.green; @@ -486,6 +485,8 @@ class ServerInfo extends StatelessWidget { } } + final showOneTime = serverModel.approveMode != 'click' && + serverModel.verificationMethod != kUsePermanentPassword; return PaddingCard( title: translate('Your Device'), child: Column( @@ -523,10 +524,10 @@ class ServerInfo extends StatelessWidget { ]), Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - isPermanent ? '-' : model.serverPasswd.value.text, + !showOneTime ? '-' : model.serverPasswd.value.text, style: textStyleValue, ), - isPermanent + !showOneTime ? SizedBox.shrink() : Row(children: [ IconButton( diff --git a/src/ui/index.tis b/src/ui/index.tis index 3ae54637f..2c9b0f983 100644 --- a/src/ui/index.tis +++ b/src/ui/index.tis @@ -831,11 +831,12 @@ class PasswordEyeArea : Reactor.Component { render() { var method = handler.get_option('verification-method'); var mode= handler.get_option('approve-mode'); - var value = mode == 'click' || method == 'use-permanent-password' ? "-" : password_cache[0]; + var hide_one_time = mode == 'click' || method == 'use-permanent-password'; + var value = hide_one_time ? "-" : password_cache[0]; return
- {svg_refresh_password} + {hide_one_time ? "" : svg_refresh_password}
; }