flutter_desktop: remove animation & adjust popup menu

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2022-09-23 12:20:40 +08:00
parent e789b2c3a8
commit b8a382a0d8
8 changed files with 478 additions and 279 deletions

View File

@@ -11,7 +11,8 @@ import '../../mobile/pages/settings_page.dart';
import '../../models/platform_model.dart';
class AddressBook extends StatefulWidget {
const AddressBook({Key? key}) : super(key: key);
final EdgeInsets? menuPadding;
const AddressBook({Key? key, this.menuPadding}) : super(key: key);
@override
State<StatefulWidget> createState() {
@@ -180,7 +181,9 @@ class _AddressBookState extends State<AddressBook> {
Expanded(
child: Align(
alignment: Alignment.topLeft,
child: AddressBookPeersView()),
child: AddressBookPeersView(
menuPadding: widget.menuPadding,
)),
)
],
));

View File

@@ -14,7 +14,7 @@ import '../../desktop/widgets/popup_menu.dart';
class _PopupMenuTheme {
static const Color commonColor = MyTheme.accent;
// kMinInteractiveDimension
static const double height = 25.0;
static const double height = 20.0;
static const double dividerHeight = 3.0;
}
@@ -319,8 +319,10 @@ class _PeerCardState extends State<_PeerCard>
abstract class BasePeerCard extends StatelessWidget {
final Peer peer;
final EdgeInsets? menuPadding;
BasePeerCard({required this.peer, Key? key}) : super(key: key);
BasePeerCard({required this.peer, this.menuPadding, Key? key})
: super(key: key);
@override
Widget build(BuildContext context) {
@@ -365,6 +367,7 @@ abstract class BasePeerCard extends StatelessWidget {
isRDP: isRDP,
);
},
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -414,17 +417,25 @@ abstract class BasePeerCard extends StatelessWidget {
Expanded(
child: Align(
alignment: Alignment.centerRight,
child: IconButton(
padding: EdgeInsets.zero,
icon: const Icon(Icons.edit),
onPressed: () => _rdpDialog(id),
),
child: Transform.scale(
scale: 0.8,
child: IconButton(
icon: const Icon(Icons.edit),
padding: EdgeInsets.zero,
onPressed: () {
if (Navigator.canPop(context)) {
Navigator.pop(context);
}
_rdpDialog(id);
},
)),
))
],
)),
proc: () {
connect(context, id, isRDP: true);
},
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -439,6 +450,7 @@ abstract class BasePeerCard extends StatelessWidget {
proc: () {
bind.mainWol(id: id);
},
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -447,6 +459,7 @@ abstract class BasePeerCard extends StatelessWidget {
Future<MenuEntryBase<String>> _forceAlwaysRelayAction(String id) async {
const option = 'force-always-relay';
return MenuEntrySwitch<String>(
switchType: SwitchType.scheckbox,
text: translate('Always connect via relay'),
getter: () async {
return (await bind.mainGetPeerOption(id: id, key: option)).isNotEmpty;
@@ -461,7 +474,8 @@ abstract class BasePeerCard extends StatelessWidget {
}
await bind.mainSetPeerOption(id: id, key: option, value: value);
},
dismissOnClicked: false,
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -475,6 +489,7 @@ abstract class BasePeerCard extends StatelessWidget {
proc: () {
_rename(id, isAddressBook);
},
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -494,6 +509,7 @@ abstract class BasePeerCard extends StatelessWidget {
await reloadFunc();
}();
},
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -508,6 +524,7 @@ abstract class BasePeerCard extends StatelessWidget {
proc: () {
bind.mainForgetPassword(id: id);
},
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -528,6 +545,7 @@ abstract class BasePeerCard extends StatelessWidget {
}
}();
},
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -549,6 +567,7 @@ abstract class BasePeerCard extends StatelessWidget {
}
}();
},
padding: menuPadding,
dismissOnClicked: true,
);
}
@@ -616,7 +635,8 @@ abstract class BasePeerCard extends StatelessWidget {
}
class RecentPeerCard extends BasePeerCard {
RecentPeerCard({required Peer peer, Key? key}) : super(peer: peer, key: key);
RecentPeerCard({required Peer peer, EdgeInsets? menuPadding, Key? key})
: super(peer: peer, menuPadding: menuPadding, key: key);
@override
Future<List<MenuEntryBase<String>>> _buildMenuItems(
@@ -645,8 +665,8 @@ class RecentPeerCard extends BasePeerCard {
}
class FavoritePeerCard extends BasePeerCard {
FavoritePeerCard({required Peer peer, Key? key})
: super(peer: peer, key: key);
FavoritePeerCard({required Peer peer, EdgeInsets? menuPadding, Key? key})
: super(peer: peer, menuPadding: menuPadding, key: key);
@override
Future<List<MenuEntryBase<String>>> _buildMenuItems(
@@ -677,8 +697,8 @@ class FavoritePeerCard extends BasePeerCard {
}
class DiscoveredPeerCard extends BasePeerCard {
DiscoveredPeerCard({required Peer peer, Key? key})
: super(peer: peer, key: key);
DiscoveredPeerCard({required Peer peer, EdgeInsets? menuPadding, Key? key})
: super(peer: peer, menuPadding: menuPadding, key: key);
@override
Future<List<MenuEntryBase<String>>> _buildMenuItems(
@@ -706,8 +726,8 @@ class DiscoveredPeerCard extends BasePeerCard {
}
class AddressBookPeerCard extends BasePeerCard {
AddressBookPeerCard({required Peer peer, Key? key})
: super(peer: peer, key: key);
AddressBookPeerCard({required Peer peer, EdgeInsets? menuPadding, Key? key})
: super(peer: peer, menuPadding: menuPadding, key: key);
@override
Future<List<MenuEntryBase<String>>> _buildMenuItems(
@@ -748,6 +768,7 @@ class AddressBookPeerCard extends BasePeerCard {
await gFFI.abModel.updateAb();
}();
},
padding: super.menuPadding,
dismissOnClicked: true,
);
}
@@ -762,6 +783,7 @@ class AddressBookPeerCard extends BasePeerCard {
proc: () {
_abEditTag(id);
},
padding: super.menuPadding,
dismissOnClicked: true,
);
}

View File

@@ -224,7 +224,7 @@ abstract class BasePeersView extends StatelessWidget {
}
class RecentPeersView extends BasePeersView {
RecentPeersView({Key? key})
RecentPeersView({Key? key, EdgeInsets? menuPadding})
: super(
key: key,
name: 'recent peer',
@@ -232,6 +232,7 @@ class RecentPeersView extends BasePeersView {
offstageFunc: (Peer peer) => false,
peerCardBuilder: (Peer peer) => RecentPeerCard(
peer: peer,
menuPadding: menuPadding,
),
initPeers: [],
);
@@ -245,7 +246,7 @@ class RecentPeersView extends BasePeersView {
}
class FavoritePeersView extends BasePeersView {
FavoritePeersView({Key? key})
FavoritePeersView({Key? key, EdgeInsets? menuPadding})
: super(
key: key,
name: 'favorite peer',
@@ -253,6 +254,7 @@ class FavoritePeersView extends BasePeersView {
offstageFunc: (Peer peer) => false,
peerCardBuilder: (Peer peer) => FavoritePeerCard(
peer: peer,
menuPadding: menuPadding,
),
initPeers: [],
);
@@ -266,7 +268,7 @@ class FavoritePeersView extends BasePeersView {
}
class DiscoveredPeersView extends BasePeersView {
DiscoveredPeersView({Key? key})
DiscoveredPeersView({Key? key, EdgeInsets? menuPadding})
: super(
key: key,
name: 'discovered peer',
@@ -274,6 +276,7 @@ class DiscoveredPeersView extends BasePeersView {
offstageFunc: (Peer peer) => false,
peerCardBuilder: (Peer peer) => DiscoveredPeerCard(
peer: peer,
menuPadding: menuPadding,
),
initPeers: [],
);
@@ -287,7 +290,7 @@ class DiscoveredPeersView extends BasePeersView {
}
class AddressBookPeersView extends BasePeersView {
AddressBookPeersView({Key? key})
AddressBookPeersView({Key? key, EdgeInsets? menuPadding})
: super(
key: key,
name: 'address book peer',
@@ -296,6 +299,7 @@ class AddressBookPeersView extends BasePeersView {
!_hitTag(gFFI.abModel.selectedTags, peer.tags),
peerCardBuilder: (Peer peer) => AddressBookPeerCard(
peer: peer,
menuPadding: menuPadding,
),
initPeers: _loadPeers(),
);