Line data Source code
1 : import 'package:flutter/material.dart'; 2 : import 'package:widgetbook/src/models/organizers/organizers.dart'; 3 : import 'package:widgetbook/src/navigation/ui/tiles/tile_helper_methods.dart'; 4 : import 'package:widgetbook/src/navigation/ui/tiles/spaced_tile.dart'; 5 : import 'package:widgetbook/src/providers/organizer_provider.dart'; 6 : import '../../../utils/utils.dart'; 7 : 8 : class FolderTile extends StatefulWidget { 9 : final Folder folder; 10 : final int level; 11 0 : const FolderTile({ 12 : Key? key, 13 : required this.folder, 14 : required this.level, 15 0 : }) : super(key: key); 16 : 17 0 : @override 18 0 : _FolderTileState createState() => _FolderTileState(); 19 : } 20 : 21 : class _FolderTileState extends State<FolderTile> { 22 : bool hover = false; 23 : 24 0 : @override 25 : Widget build(BuildContext context) { 26 0 : Folder folder = widget.folder; 27 0 : final isExpanded = widget.folder.isExpanded; 28 0 : return Column( 29 : crossAxisAlignment: CrossAxisAlignment.start, 30 0 : children: [ 31 0 : SpacedTile( 32 0 : level: widget.level, 33 0 : organizer: widget.folder, 34 : iconData: isExpanded ? Icons.folder_open : Icons.folder, 35 0 : iconColor: context.colorScheme.primary, 36 0 : onClicked: () { 37 0 : setState(() { 38 0 : OrganizerProvider.of(context)!.toggleExpander(widget.folder); 39 : }); 40 : }, 41 : ), 42 : if (isExpanded) 43 0 : ...buildFolders( 44 0 : folders: folder.folders, 45 0 : currentLevel: widget.level + 1, 46 : ), 47 : if (isExpanded) 48 0 : ...buildWidgets( 49 0 : widgets: folder.widgets, 50 0 : currentLevel: widget.level + 1, 51 : ) 52 : ], 53 : ); 54 : } 55 : }