A framework for building convergent cross-platform Nextcloud clients using Flutter.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.5 KiB

part of '../neon_files.dart';
3 years ago
class FilesChooseFolderDialog extends StatelessWidget {
const FilesChooseFolderDialog({
required this.bloc,
required this.filesBloc,
required this.originalPath,
super.key,
});
final FilesBrowserBloc bloc;
final FilesBloc filesBloc;
final List<String> originalPath;
@override
Widget build(final BuildContext context) => AlertDialog(
title: Text(FilesLocalizations.of(context).folderChoose),
3 years ago
contentPadding: EdgeInsets.zero,
content: SizedBox(
width: double.maxFinite,
child: Column(
children: [
Expanded(
child: FilesBrowserView(
bloc: bloc,
filesBloc: filesBloc,
mode: FilesBrowserMode.selectDirectory,
3 years ago
),
),
StreamBuilder<List<String>>(
stream: bloc.path,
builder: (final context, final pathSnapshot) => pathSnapshot.hasData
? Container(
margin: const EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
onPressed: () async {
final result = await showDialog<List<String>>(
context: context,
builder: (final context) => const FilesCreateFolderDialog(),
);
if (result != null) {
bloc.createFolder([...pathSnapshot.requireData, ...result]);
3 years ago
}
},
child: Text(FilesLocalizations.of(context).folderCreate),
3 years ago
),
ElevatedButton(
onPressed: !(const ListEquality<String>().equals(originalPath, pathSnapshot.data))
? () => Navigator.of(context).pop(pathSnapshot.data)
3 years ago
: null,
child: Text(FilesLocalizations.of(context).folderChoose),
3 years ago
),
],
),
)
: const SizedBox(),
3 years ago
),
],
),
),
);
}