fix: mobile, server page, jumps on loading (#8819)

Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
dignow 2024-07-25 00:13:22 +08:00 committed by GitHub
parent f7e9057a39
commit 0451a1c45f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 44 additions and 27 deletions

View file

@ -3326,18 +3326,8 @@ bool isInHomePage() {
return controller.state.value.selected == 0;
}
Widget buildPresetPasswordWarning() {
return FutureBuilder<bool>(
future: bind.isPresetPassword(),
builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); // Show a loading spinner while waiting for the Future to complete
} else if (snapshot.hasError) {
return Text(
'Error: ${snapshot.error}'); // Show an error message if the Future completed with an error
} else if (snapshot.hasData && snapshot.data == true) {
if (bind.mainGetBuildinOption(
key: kOptionRemovePresetPasswordWarning) !=
Widget _buildPresetPasswordWarning() {
if (bind.mainGetBuildinOption(key: kOptionRemovePresetPasswordWarning) !=
'N') {
return SizedBox.shrink();
}
@ -3362,6 +3352,27 @@ Widget buildPresetPasswordWarning() {
],
).paddingAll(8),
); // Show a warning message if the Future completed with true
}
Widget buildPresetPasswordWarningMobile() {
if (bind.isPresetPasswordMobileOnly()) {
return _buildPresetPasswordWarning();
} else {
return SizedBox.shrink();
}
}
Widget buildPresetPasswordWarning() {
return FutureBuilder<bool>(
future: bind.isPresetPassword(),
builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); // Show a loading spinner while waiting for the Future to complete
} else if (snapshot.hasError) {
return Text(
'Error: ${snapshot.error}'); // Show an error message if the Future completed with an error
} else if (snapshot.hasData && snapshot.data == true) {
return _buildPresetPasswordWarning();
} else {
return SizedBox
.shrink(); // Show nothing if the Future completed with false or null

View file

@ -187,7 +187,7 @@ class _ServerPageState extends State<ServerPage> {
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
buildPresetPasswordWarning(),
buildPresetPasswordWarningMobile(),
gFFI.serverModel.isStart
? ServerInfo()
: ServiceNotRunningNotification(),

View file

@ -1966,6 +1966,12 @@ pub fn is_preset_password() -> bool {
})
}
// Don't call this function for desktop version.
// We need this function because we want a sync return for mobile version.
pub fn is_preset_password_mobile_only() -> SyncReturn<bool> {
SyncReturn(is_preset_password())
}
/// Send a url scheme through the ipc.
///
/// * macOS only