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.4 KiB

part of '../neon_files.dart';
2 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 PathUri originalPath;
2 years ago
@override
Widget build(final BuildContext context) => AlertDialog(
title: Text(FilesLocalizations.of(context).folderChoose),
2 years ago
contentPadding: EdgeInsets.zero,
content: SizedBox(
width: double.maxFinite,
child: Column(
children: [
Expanded(
child: FilesBrowserView(
bloc: bloc,
filesBloc: filesBloc,
mode: FilesBrowserMode.selectDirectory,
2 years ago
),
),
StreamBuilder<PathUri>(
stream: bloc.uri,
builder: (final context, final uriSnapshot) => uriSnapshot.hasData
2 years ago
? Container(
margin: const EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
onPressed: () async {
final result = await showDialog<String>(
2 years ago
context: context,
builder: (final context) => const FilesCreateFolderDialog(),
);
if (result != null) {
bloc.createFolder(uriSnapshot.requireData.join(PathUri.parse(result)));
2 years ago
}
},
child: Text(FilesLocalizations.of(context).folderCreate),
2 years ago
),
ElevatedButton(
onPressed: originalPath != uriSnapshot.requireData
? () => Navigator.of(context).pop(uriSnapshot.requireData)
2 years ago
: null,
child: Text(FilesLocalizations.of(context).folderChoose),
2 years ago
),
],
),
)
: const SizedBox(),
2 years ago
),
],
),
),
);
}