Skip to content

Commit

Permalink
Merge pull request #5433 from 21pages/ab
Browse files Browse the repository at this point in the history
replace offstage with if-else for LinearProgressIndicator in dialog
  • Loading branch information
rustdesk committed Aug 18, 2023
2 parents 8b5f389 + 979203c commit 08af0d4
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 60 deletions.
9 changes: 5 additions & 4 deletions flutter/lib/common/widgets/address_book.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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: [
Expand Down Expand Up @@ -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: [
Expand Down
18 changes: 9 additions & 9 deletions flutter/lib/common/widgets/dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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: [
Expand Down Expand Up @@ -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: [
Expand Down Expand Up @@ -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: [
Expand Down Expand Up @@ -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: [
Expand Down
23 changes: 15 additions & 8 deletions flutter/lib/common/widgets/login.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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,
Expand Down
42 changes: 37 additions & 5 deletions flutter/lib/common/widgets/peer_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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})
Expand Down Expand Up @@ -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);
},
Expand Down Expand Up @@ -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,
);
}
Expand Down Expand Up @@ -477,9 +485,10 @@ abstract class BasePeerCard extends StatelessWidget {
style: style,
),
proc: () {
connect(
connectInPeerTab(
context,
peer.id,
tab,
isFileTransfer: isFileTransfer,
isTcpTunneling: isTcpTunneling,
isRDP: isRDP,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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);
}
40 changes: 19 additions & 21 deletions flutter/lib/common/widgets/peer_tab_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)))),
);
}

Expand Down
6 changes: 3 additions & 3 deletions flutter/lib/desktop/pages/desktop_setting_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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),
],
),
),
Expand Down
13 changes: 6 additions & 7 deletions flutter/lib/desktop/pages/install_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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: [
Expand All @@ -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(
Expand Down
5 changes: 2 additions & 3 deletions flutter/lib/mobile/widgets/dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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: () {
Expand Down

0 comments on commit 08af0d4

Please sign in to comment.