mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-25 02:48:54 +01:00
Support single selection in DirPicker
This commit is contained in:
parent
aadde09440
commit
25acd91c44
1 changed files with 14 additions and 3 deletions
|
@ -18,6 +18,7 @@ class DirPicker extends StatefulWidget {
|
||||||
required this.account,
|
required this.account,
|
||||||
required this.rootDir,
|
required this.rootDir,
|
||||||
this.initialPicks,
|
this.initialPicks,
|
||||||
|
this.isMultipleSelections = true,
|
||||||
this.validator,
|
this.validator,
|
||||||
this.onConfirmed,
|
this.onConfirmed,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
@ -27,6 +28,7 @@ class DirPicker extends StatefulWidget {
|
||||||
|
|
||||||
final Account account;
|
final Account account;
|
||||||
final String rootDir;
|
final String rootDir;
|
||||||
|
final bool isMultipleSelections;
|
||||||
final List<File>? initialPicks;
|
final List<File>? initialPicks;
|
||||||
|
|
||||||
/// Return whether [dir] is a valid target to be picked
|
/// Return whether [dir] is a valid target to be picked
|
||||||
|
@ -135,14 +137,20 @@ class DirPickerState extends State<DirPicker> {
|
||||||
if (canPick) {
|
if (canPick) {
|
||||||
switch (pickState) {
|
switch (pickState) {
|
||||||
case _PickState.picked:
|
case _PickState.picked:
|
||||||
iconData = Icons.check_box;
|
iconData = widget.isMultipleSelections
|
||||||
|
? Icons.check_box
|
||||||
|
: Icons.radio_button_checked;
|
||||||
break;
|
break;
|
||||||
case _PickState.childPicked:
|
case _PickState.childPicked:
|
||||||
iconData = Icons.indeterminate_check_box;
|
iconData = widget.isMultipleSelections
|
||||||
|
? Icons.indeterminate_check_box
|
||||||
|
: Icons.remove_circle_outline;
|
||||||
break;
|
break;
|
||||||
case _PickState.notPicked:
|
case _PickState.notPicked:
|
||||||
default:
|
default:
|
||||||
iconData = Icons.check_box_outline_blank;
|
iconData = widget.isMultipleSelections
|
||||||
|
? Icons.check_box_outline_blank
|
||||||
|
: Icons.radio_button_unchecked;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -230,6 +238,9 @@ class DirPickerState extends State<DirPicker> {
|
||||||
/// Pick an item
|
/// Pick an item
|
||||||
void _pick(LsDirBlocItem item) {
|
void _pick(LsDirBlocItem item) {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
if (!widget.isMultipleSelections) {
|
||||||
|
_picks.clear();
|
||||||
|
}
|
||||||
_picks.add(item.file);
|
_picks.add(item.file);
|
||||||
_picks = _optimizePicks(_root);
|
_picks = _optimizePicks(_root);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue