update file transfer pop menu style / fixed file name width

This commit is contained in:
csf 2022-10-13 20:22:11 +09:00
parent eaf7fd320c
commit da18e69258
3 changed files with 59 additions and 38 deletions

View File

@ -12,13 +12,6 @@ import '../../models/platform_model.dart';
import '../../desktop/widgets/material_mod_popup_menu.dart' as mod_menu; import '../../desktop/widgets/material_mod_popup_menu.dart' as mod_menu;
import '../../desktop/widgets/popup_menu.dart'; import '../../desktop/widgets/popup_menu.dart';
class CustomPopupMenuTheme {
static const Color commonColor = MyTheme.accent;
// kMinInteractiveDimension
static const double height = 20.0;
static const double dividerHeight = 3.0;
}
typedef PopupMenuEntryBuilder = Future<List<mod_menu.PopupMenuEntry<String>>> typedef PopupMenuEntryBuilder = Future<List<mod_menu.PopupMenuEntry<String>>>
Function(BuildContext); Function(BuildContext);

View File

@ -9,10 +9,13 @@ import 'package:flutter_hbb/models/file_model.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:wakelock/wakelock.dart'; import 'package:wakelock/wakelock.dart';
import '../../consts.dart';
import '../../desktop/widgets/material_mod_popup_menu.dart' as mod_menu;
import '../../common.dart'; import '../../common.dart';
import '../../models/model.dart'; import '../../models/model.dart';
import '../../models/platform_model.dart'; import '../../models/platform_model.dart';
import '../widgets/popup_menu.dart';
/// status of location bar /// status of location bar
enum LocationStatus { enum LocationStatus {
@ -124,32 +127,47 @@ class _FileManagerPageState extends State<FileManagerPage>
} }
Widget menu({bool isLocal = false}) { Widget menu({bool isLocal = false}) {
return PopupMenuButton<String>( var menuPos = RelativeRect.fill;
final items = [
MenuEntrySwitch<String>(
switchType: SwitchType.scheckbox,
text: translate("Show Hidden Files"),
getter: () async {
return model.getCurrentShowHidden(isLocal);
},
setter: (bool v) async {
model.toggleShowHidden(local: isLocal);
},
padding: kDesktopMenuPadding,
dismissOnClicked: true,
),
];
return Listener(
onPointerDown: (e) {
final x = e.position.dx;
final y = e.position.dy;
menuPos = RelativeRect.fromLTRB(x, y, x, y);
},
child: IconButton(
icon: const Icon(Icons.more_vert), icon: const Icon(Icons.more_vert),
splashRadius: 20, splashRadius: 20,
itemBuilder: (context) { onPressed: () => mod_menu.showMenu(
return [ context: context,
PopupMenuItem( position: menuPos,
child: Row( items: items
children: [ .map((e) => e.build(
Icon( context,
model.getCurrentShowHidden(isLocal) MenuConfig(
? Icons.check_box_outlined commonColor: CustomPopupMenuTheme.commonColor,
: Icons.check_box_outline_blank, height: CustomPopupMenuTheme.height,
color: Colors.black), dividerHeight: CustomPopupMenuTheme.dividerHeight)))
SizedBox(width: 5), .expand((i) => i)
Text(translate("Show Hidden Files")) .toList(),
], elevation: 8,
), ),
value: "hidden", ));
)
];
},
onSelected: (v) {
if (v == "hidden") {
model.toggleShowHidden(local: isLocal);
}
});
} }
Widget body({bool isLocal = false}) { Widget body({bool isLocal = false}) {
@ -252,9 +270,8 @@ class _FileManagerPageState extends State<FileManagerPage>
getSelectedItem(isLocal).contains(entry), getSelectedItem(isLocal).contains(entry),
cells: [ cells: [
DataCell( DataCell(
ConstrainedBox( Container(
constraints: width: 180,
BoxConstraints(maxWidth: 180),
child: Tooltip( child: Tooltip(
message: entry.name, message: entry.name,
child: Row(children: [ child: Row(children: [
@ -724,9 +741,12 @@ class _FileManagerPageState extends State<FileManagerPage>
breadCrumbScrollToEnd(bool isLocal) { breadCrumbScrollToEnd(bool isLocal) {
Future.delayed(Duration(milliseconds: 200), () { Future.delayed(Duration(milliseconds: 200), () {
final breadCrumbScroller = getBreadCrumbScrollController(isLocal); final breadCrumbScroller = getBreadCrumbScrollController(isLocal);
breadCrumbScroller.animateTo(breadCrumbScroller.position.maxScrollExtent, if (breadCrumbScroller.hasClients) {
breadCrumbScroller.animateTo(
breadCrumbScroller.position.maxScrollExtent,
duration: Duration(milliseconds: 200), duration: Duration(milliseconds: 200),
curve: Curves.fastLinearToSlowEaseIn); curve: Curves.fastLinearToSlowEaseIn);
}
}); });
} }

View File

@ -3,6 +3,7 @@ import 'dart:core';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../common.dart';
import './material_mod_popup_menu.dart' as mod_menu; import './material_mod_popup_menu.dart' as mod_menu;
// https://stackoverflow.com/questions/68318314/flutter-popup-menu-inside-popup-menu // https://stackoverflow.com/questions/68318314/flutter-popup-menu-inside-popup-menu
@ -637,3 +638,10 @@ class MenuEntryButton<T> extends MenuEntryBase<T> {
]; ];
} }
} }
class CustomPopupMenuTheme {
static const Color commonColor = MyTheme.accent;
// kMinInteractiveDimension
static const double height = 20.0;
static const double dividerHeight = 3.0;
}