mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-01-19 08:23:01 +08:00
Merge pull request #5433 from 21pages/ab
replace offstage with if-else for LinearProgressIndicator in dialog
This commit is contained in:
commit
08af0d4bf2
@ -46,6 +46,7 @@ class _AddressBookState extends State<AddressBook> {
|
||||
}
|
||||
return Column(
|
||||
children: [
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (gFFI.abModel.retrying.value) LinearProgressIndicator(),
|
||||
_buildErrorBanner(
|
||||
err: gFFI.abModel.pullError,
|
||||
@ -397,8 +398,8 @@ class _AddressBookState extends State<AddressBook> {
|
||||
const SizedBox(
|
||||
height: 4.0,
|
||||
),
|
||||
Offstage(
|
||||
offstage: !isInProgress, child: const LinearProgressIndicator())
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress) const LinearProgressIndicator(),
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
@ -463,8 +464,8 @@ class _AddressBookState extends State<AddressBook> {
|
||||
const SizedBox(
|
||||
height: 4.0,
|
||||
),
|
||||
Offstage(
|
||||
offstage: !isInProgress, child: const LinearProgressIndicator())
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress) const LinearProgressIndicator(),
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
|
@ -156,8 +156,8 @@ void changeIdDialog() {
|
||||
}).toList(),
|
||||
)).marginOnly(bottom: 8)
|
||||
: SizedBox.shrink(),
|
||||
Offstage(
|
||||
offstage: !isInProgress, child: const LinearProgressIndicator())
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress) const LinearProgressIndicator(),
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
@ -202,8 +202,8 @@ void changeWhiteList({Function()? callback}) async {
|
||||
const SizedBox(
|
||||
height: 4.0,
|
||||
),
|
||||
Offstage(
|
||||
offstage: !isInProgress, child: const LinearProgressIndicator())
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress) const LinearProgressIndicator(),
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
@ -1435,8 +1435,8 @@ void editAbTagDialog(
|
||||
.toList(growable: false),
|
||||
),
|
||||
),
|
||||
Offstage(
|
||||
offstage: !isInProgress, child: const LinearProgressIndicator())
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress) const LinearProgressIndicator(),
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
@ -1496,9 +1496,9 @@ void renameDialog(
|
||||
),
|
||||
),
|
||||
),
|
||||
Obx(() => Offstage(
|
||||
offstage: isInProgress.isFalse,
|
||||
child: const LinearProgressIndicator())),
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
Obx(() =>
|
||||
isInProgress.value ? const LinearProgressIndicator() : Offstage())
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
|
@ -12,7 +12,15 @@ import 'package:url_launcher/url_launcher.dart';
|
||||
import '../../common.dart';
|
||||
import './dialog.dart';
|
||||
|
||||
const kOpSvgList = ['github', 'google', 'apple', 'okta', 'facebook', 'azure', 'auth0'];
|
||||
const kOpSvgList = [
|
||||
'github',
|
||||
'google',
|
||||
'apple',
|
||||
'okta',
|
||||
'facebook',
|
||||
'azure',
|
||||
'auth0'
|
||||
];
|
||||
|
||||
class _IconOP extends StatelessWidget {
|
||||
final String op;
|
||||
@ -27,7 +35,8 @@ class _IconOP extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final svgFile = kOpSvgList.contains(op.toLowerCase()) ? op.toLowerCase() : 'default';
|
||||
final svgFile =
|
||||
kOpSvgList.contains(op.toLowerCase()) ? op.toLowerCase() : 'default';
|
||||
return Container(
|
||||
margin: margin,
|
||||
child: icon == null
|
||||
@ -345,9 +354,8 @@ class LoginWidgetUserPass extends StatelessWidget {
|
||||
autoFocus: false,
|
||||
errorText: passMsg,
|
||||
),
|
||||
Offstage(
|
||||
offstage: !isInProgress,
|
||||
child: const LinearProgressIndicator()),
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress) const LinearProgressIndicator(),
|
||||
const SizedBox(height: 12.0),
|
||||
FittedBox(
|
||||
child:
|
||||
@ -664,9 +672,8 @@ Future<bool?> verificationCodeDialog(UserPayload? user) async {
|
||||
},
|
||||
),
|
||||
*/
|
||||
Offstage(
|
||||
offstage: !isInProgress,
|
||||
child: const LinearProgressIndicator()),
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress) const LinearProgressIndicator(),
|
||||
],
|
||||
),
|
||||
onCancel: close,
|
||||
|
@ -27,11 +27,13 @@ final peerCardUiType = PeerUiType.grid.obs;
|
||||
|
||||
class _PeerCard extends StatefulWidget {
|
||||
final Peer peer;
|
||||
final PeerTabIndex tab;
|
||||
final Function(BuildContext, String) connect;
|
||||
final PopupMenuEntryBuilder popupMenuEntryBuilder;
|
||||
|
||||
const _PeerCard(
|
||||
{required this.peer,
|
||||
required this.tab,
|
||||
required this.connect,
|
||||
required this.popupMenuEntryBuilder,
|
||||
Key? key})
|
||||
@ -71,10 +73,14 @@ class _PeerCardState extends State<_PeerCard>
|
||||
if (peerTabModel.multiSelectionMode) {
|
||||
peerTabModel.select(peer);
|
||||
} else {
|
||||
if (!isWebDesktop) connect(context, peer.id);
|
||||
if (!isWebDesktop) {
|
||||
connectInPeerTab(context, peer.id, widget.tab);
|
||||
}
|
||||
}
|
||||
},
|
||||
onDoubleTap: isWebDesktop ? () => connect(context, peer.id) : null,
|
||||
onDoubleTap: isWebDesktop
|
||||
? () => connectInPeerTab(context, peer.id, widget.tab)
|
||||
: null,
|
||||
onLongPress: () {
|
||||
peerTabModel.select(peer);
|
||||
},
|
||||
@ -443,7 +449,9 @@ abstract class BasePeerCard extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
return _PeerCard(
|
||||
peer: peer,
|
||||
connect: (BuildContext context, String id) => connect(context, id),
|
||||
tab: tab,
|
||||
connect: (BuildContext context, String id) =>
|
||||
connectInPeerTab(context, id, tab),
|
||||
popupMenuEntryBuilder: _buildPopupMenuEntry,
|
||||
);
|
||||
}
|
||||
@ -477,9 +485,10 @@ abstract class BasePeerCard extends StatelessWidget {
|
||||
style: style,
|
||||
),
|
||||
proc: () {
|
||||
connect(
|
||||
connectInPeerTab(
|
||||
context,
|
||||
peer.id,
|
||||
tab,
|
||||
isFileTransfer: isFileTransfer,
|
||||
isTcpTunneling: isTcpTunneling,
|
||||
isRDP: isRDP,
|
||||
@ -552,7 +561,7 @@ abstract class BasePeerCard extends StatelessWidget {
|
||||
],
|
||||
)),
|
||||
proc: () {
|
||||
connect(context, id, isRDP: true);
|
||||
connectInPeerTab(context, id, tab, isRDP: true);
|
||||
},
|
||||
padding: menuPadding,
|
||||
dismissOnClicked: true,
|
||||
@ -1309,3 +1318,26 @@ class TagPainter extends CustomPainter {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void connectInPeerTab(BuildContext context, String id, PeerTabIndex tab,
|
||||
{bool isFileTransfer = false,
|
||||
bool isTcpTunneling = false,
|
||||
bool isRDP = false}) async {
|
||||
if (tab == PeerTabIndex.ab) {
|
||||
// If recent peer's alias is empty, set it to ab's alias
|
||||
// Because the platform is not set, it may not take effect, but it is more important not to display if the connection is not successful
|
||||
Peer? p = gFFI.abModel.find(id);
|
||||
if (p != null &&
|
||||
p.alias.isNotEmpty &&
|
||||
(await bind.mainGetPeerOption(id: id, key: "alias")).isEmpty) {
|
||||
await bind.mainSetPeerAlias(
|
||||
id: id,
|
||||
alias: p.alias,
|
||||
);
|
||||
}
|
||||
}
|
||||
connect(context, id,
|
||||
isFileTransfer: isFileTransfer,
|
||||
isTcpTunneling: isTcpTunneling,
|
||||
isRDP: isRDP);
|
||||
}
|
||||
|
@ -208,28 +208,26 @@ class _PeerTabPageState extends State<PeerTabPage>
|
||||
}
|
||||
|
||||
Widget _createRefresh() {
|
||||
if (gFFI.peerTabModel.currentTab < 3) return Offstage();
|
||||
final textColor = Theme.of(context).textTheme.titleLarge?.color;
|
||||
return Offstage(
|
||||
offstage: gFFI.peerTabModel.currentTab < 3, // local tab can't see effect
|
||||
child: Container(
|
||||
padding: EdgeInsets.all(4.0),
|
||||
child: AnimatedRotationWidget(
|
||||
onPressed: () {
|
||||
if (gFFI.peerTabModel.currentTab < entries.length) {
|
||||
entries[gFFI.peerTabModel.currentTab].load();
|
||||
}
|
||||
},
|
||||
spinning: gFFI.abModel.abLoading,
|
||||
child: RotatedBox(
|
||||
quarterTurns: 2,
|
||||
child: Tooltip(
|
||||
message: translate('Refresh'),
|
||||
child: Icon(
|
||||
Icons.refresh,
|
||||
size: 18,
|
||||
color: textColor,
|
||||
)))),
|
||||
),
|
||||
return Container(
|
||||
padding: EdgeInsets.all(4.0),
|
||||
child: AnimatedRotationWidget(
|
||||
onPressed: () {
|
||||
if (gFFI.peerTabModel.currentTab < entries.length) {
|
||||
entries[gFFI.peerTabModel.currentTab].load();
|
||||
}
|
||||
},
|
||||
spinning: gFFI.abModel.abLoading,
|
||||
child: RotatedBox(
|
||||
quarterTurns: 2,
|
||||
child: Tooltip(
|
||||
message: translate('Refresh'),
|
||||
child: Icon(
|
||||
Icons.refresh,
|
||||
size: 18,
|
||||
color: textColor,
|
||||
)))),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -2065,9 +2065,9 @@ void changeSocks5Proxy() async {
|
||||
),
|
||||
],
|
||||
),
|
||||
Offstage(
|
||||
offstage: !isInProgress,
|
||||
child: const LinearProgressIndicator().marginOnly(top: 8))
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress)
|
||||
const LinearProgressIndicator().marginOnly(top: 8),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -182,8 +182,8 @@ class _InstallPageBodyState extends State<_InstallPageBody>
|
||||
.marginOnly(bottom: em),
|
||||
InkWell(
|
||||
hoverColor: Colors.transparent,
|
||||
onTap: () =>
|
||||
launchUrlString('https://rustdesk.com/privacy.html'),
|
||||
onTap: () => launchUrlString(
|
||||
'https://rustdesk.com/privacy.html'),
|
||||
child: Tooltip(
|
||||
message: 'https://rustdesk.com/privacy.html',
|
||||
child: Row(children: [
|
||||
@ -204,11 +204,10 @@ class _InstallPageBodyState extends State<_InstallPageBody>
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Obx(() => Offstage(
|
||||
offstage: !showProgress.value,
|
||||
child:
|
||||
LinearProgressIndicator().marginOnly(right: 10),
|
||||
)),
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
child: Obx(() => showProgress.value
|
||||
? LinearProgressIndicator().marginOnly(right: 10)
|
||||
: Offstage()),
|
||||
),
|
||||
Obx(
|
||||
() => OutlinedButton.icon(
|
||||
|
@ -223,9 +223,8 @@ void showServerSettingsWithValue(
|
||||
labelText: 'Key',
|
||||
),
|
||||
),
|
||||
Offstage(
|
||||
offstage: !isInProgress,
|
||||
child: LinearProgressIndicator())
|
||||
// NOT use Offstage to wrap LinearProgressIndicator
|
||||
if (isInProgress) const LinearProgressIndicator(),
|
||||
])),
|
||||
actions: [
|
||||
dialogButton('Cancel', onPressed: () {
|
||||
|
Loading…
Reference in New Issue
Block a user