@@ -50,7 +50,6 @@ class DirectoryTreeViewer extends StatelessWidget {
5050 /// Callback function when a directory is right-clicked.
5151 final void Function (Directory , TapDownDetails )? onDirSecondaryTap;
5252
53-
5453 ///Additional folder action widgets
5554 final List <Widget >? folderActions;
5655
@@ -61,32 +60,31 @@ class DirectoryTreeViewer extends StatelessWidget {
6160 final Widget Function (String fileExtension)? fileIconBuilder;
6261
6362 /// Constructs a [DirectoryTreeViewer] with the given properties.
64- const DirectoryTreeViewer (
65- {super .key,
66- required this .rootPath,
67- this .onFileTap,
68- this .onFileSecondaryTap,
69- this .onDirTap,
70- this .onDirSecondaryTap,
71- this .folderActions,
72- this .fileActions,
73- this .folderStyle,
74- this .fileStyle,
75- this .isUnfoldedFirst = true ,
76- this .editingFieldStyle,
77- this .enableCreateFileOption = false ,
78- this .enableCreateFolderOption = false ,
79- this .enableDeleteFileOption = false ,
80- this .enableDeleteFolderOption = false ,
81- this .fileIconBuilder});
63+ const DirectoryTreeViewer ({
64+ super .key,
65+ required this .rootPath,
66+ this .onFileTap,
67+ this .onFileSecondaryTap,
68+ this .onDirTap,
69+ this .onDirSecondaryTap,
70+ this .folderActions,
71+ this .fileActions,
72+ this .folderStyle,
73+ this .fileStyle,
74+ this .isUnfoldedFirst = true ,
75+ this .editingFieldStyle,
76+ this .enableCreateFileOption = false ,
77+ this .enableCreateFolderOption = false ,
78+ this .enableDeleteFileOption = false ,
79+ this .enableDeleteFolderOption = false ,
80+ this .fileIconBuilder,
81+ });
8282
8383 @override
8484 Widget build (BuildContext context) {
8585 /// Check if the platform is Web or WASM, and display a message if it is.
8686 if (kIsWasm || kIsWeb) {
87- return const AlertDialog (
88- title: Text ("Web platform is not supported" ),
89- );
87+ return const AlertDialog (title: Text ("Web platform is not supported" ));
9088 }
9189 isParentOpen = isUnfoldedFirst;
9290 return DirectoryTreeStateProvider (
@@ -229,7 +227,9 @@ class FoldableDirectoryTree extends StatefulWidget {
229227/// Recursively builds the directory tree for a given [directory] using [stateNotifier] to manage folder states.
230228class _FoldableDirectoryTreeState extends State <FoldableDirectoryTree > {
231229 Widget _buildDirectoryTree (
232- Directory directory, DirectoryTreeStateNotifier stateNotifier) {
230+ Directory directory,
231+ DirectoryTreeStateNotifier stateNotifier,
232+ ) {
233233 final entries = directory.listSync ();
234234 entries.sort ((a, b) {
235235 if (a is Directory && b is File ) return - 1 ;
@@ -266,30 +266,33 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
266266 children: [
267267 directory.path != widget.rootPath
268268 ? (stateNotifier.isUnfolded (directory.path, widget.rootPath)
269- ? widget.folderStyle? .folderOpenedicon ??
270- FolderStyle ().folderOpenedicon
271- : widget.folderStyle? .folderClosedicon ??
272- FolderStyle ().folderClosedicon)
269+ ? widget.folderStyle? .folderOpenedicon ??
270+ FolderStyle ().folderOpenedicon
271+ : widget.folderStyle? .folderClosedicon ??
272+ FolderStyle ().folderClosedicon)
273273 : isParentOpen
274274 ? widget.folderStyle? .rootFolderOpenedIcon ??
275- FolderStyle ().rootFolderOpenedIcon
275+ FolderStyle ().rootFolderOpenedIcon
276276 : widget.folderStyle? .rootFolderClosedIcon ??
277- FolderStyle ().rootFolderClosedIcon,
277+ FolderStyle ().rootFolderClosedIcon,
278278 const SizedBox (width: 8 ),
279279 Text (
280280 path.basename (directory.path),
281- style: widget.folderStyle? .folderNameStyle ??
281+ style:
282+ widget.folderStyle? .folderNameStyle ??
282283 FolderStyle ().folderNameStyle,
283284 ),
284285 SizedBox (
285- width: widget.folderStyle? .itemGap ?? FolderStyle ().itemGap),
286+ width: widget.folderStyle? .itemGap ?? FolderStyle ().itemGap,
287+ ),
286288 if (widget.enableCreateFileOption &&
287289 stateNotifier.isUnfolded (directory.path, widget.rootPath) &&
288290 currentDir == directory.path)
289291 IconButton (
290292 onPressed: () =>
291293 stateNotifier.startCreating (directory.path, false ),
292- icon: widget.folderStyle? .iconForCreateFile ??
294+ icon:
295+ widget.folderStyle? .iconForCreateFile ??
293296 FolderStyle ().iconForCreateFile,
294297 ),
295298 if (widget.enableCreateFolderOption &&
@@ -298,7 +301,8 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
298301 IconButton (
299302 onPressed: () =>
300303 stateNotifier.startCreating (directory.path, true ),
301- icon: widget.folderStyle? .iconForCreateFolder ??
304+ icon:
305+ widget.folderStyle? .iconForCreateFolder ??
302306 FolderStyle ().iconForCreateFolder,
303307 ),
304308 if (widget.enableDeleteFolderOption &&
@@ -325,7 +329,9 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
325329 ...entries.map ((entry) {
326330 if (entry is Directory ) {
327331 return _buildDirectoryTree (
328- Directory (entry.path), stateNotifier);
332+ Directory (entry.path),
333+ stateNotifier,
334+ );
329335 } else if (entry is File ) {
330336 return _buildFileItem (entry);
331337 }
@@ -341,15 +347,17 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
341347 }
342348
343349 Widget _buildNewEntryField (
344- Directory parent, DirectoryTreeStateNotifier stateNotifier) {
350+ Directory parent,
351+ DirectoryTreeStateNotifier stateNotifier,
352+ ) {
345353 TextEditingController controller = TextEditingController ();
346354 return Row (
347355 children: [
348356 stateNotifier.isFolderCreation
349357 ? widget.editingFieldStyle? .folderIcon ??
350- EditingFieldStyle ().folderIcon
358+ EditingFieldStyle ().folderIcon
351359 : widget.editingFieldStyle? .fileIcon ??
352- EditingFieldStyle ().fileIcon,
360+ EditingFieldStyle ().fileIcon,
353361 const SizedBox (width: 8 ),
354362 Expanded (
355363 child: SizedBox (
@@ -364,7 +372,8 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
364372 cursorColor: widget.editingFieldStyle? .cursorColor,
365373 controller: controller,
366374 autofocus: true ,
367- decoration: widget.editingFieldStyle? .textfieldDecoration ??
375+ decoration:
376+ widget.editingFieldStyle? .textfieldDecoration ??
368377 EditingFieldStyle ().textfieldDecoration,
369378 onSubmitted: (value) {
370379 if (value.trim ().isNotEmpty) {
@@ -381,7 +390,8 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
381390 ),
382391 ),
383392 IconButton (
384- icon: widget.editingFieldStyle? .doneIcon ??
393+ icon:
394+ widget.editingFieldStyle? .doneIcon ??
385395 EditingFieldStyle ().doneIcon,
386396 onPressed: () {
387397 if (controller.text.trim ().isNotEmpty) {
@@ -396,7 +406,8 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
396406 },
397407 ),
398408 IconButton (
399- icon: widget.editingFieldStyle? .cancelIcon ??
409+ icon:
410+ widget.editingFieldStyle? .cancelIcon ??
400411 EditingFieldStyle ().cancelIcon,
401412 onPressed: () {
402413 stateNotifier.stopCreating ();
@@ -431,17 +442,20 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
431442 const SizedBox (width: 8 ),
432443 Text (
433444 path.basename (file.path),
434- style: widget.fileStyle? .fileNameStyle ?? FileStyle ().fileNameStyle,
445+ style:
446+ widget.fileStyle? .fileNameStyle ?? FileStyle ().fileNameStyle,
435447 ),
436448 ...widget.fileActions ?? [],
437449 if (widget.enableDeleteFileOption)
438450 IconButton (
439- onPressed: () {
440- file.deleteSync (recursive: true );
441- setState (() {});
442- },
443- icon: widget.fileStyle? .iconForDeleteFile ??
444- FileStyle ().iconForDeleteFile)
451+ onPressed: () {
452+ file.deleteSync (recursive: true );
453+ setState (() {});
454+ },
455+ icon:
456+ widget.fileStyle? .iconForDeleteFile ??
457+ FileStyle ().iconForDeleteFile,
458+ ),
445459 ],
446460 ),
447461 ),
@@ -455,13 +469,11 @@ class _FoldableDirectoryTreeState extends State<FoldableDirectoryTree> {
455469 final rootDirectory = Directory (widget.rootPath);
456470
457471 if (! rootDirectory.existsSync ()) {
458- return const Center (
459- child: Text ('Directory does not exist' ),
460- );
472+ return const Center (child: Text ('Directory does not exist' ));
461473 }
462474
463475 return SingleChildScrollView (
464476 child: _buildDirectoryTree (rootDirectory, stateNotifier),
465477 );
466478 }
467- }
479+ }
0 commit comments