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/spaced_tile.dart'; 4 : import 'package:widgetbook/src/navigation/ui/tiles/story_tile.dart'; 5 : import 'package:widgetbook/src/providers/organizer_provider.dart'; 6 : import '../../../utils/utils.dart'; 7 : 8 : class WidgetTile extends StatefulWidget { 9 : final WidgetElement widgetElement; 10 : final int level; 11 : 12 0 : const WidgetTile({ 13 : Key? key, 14 : required this.widgetElement, 15 : required this.level, 16 0 : }) : super(key: key); 17 : 18 0 : @override 19 0 : _WidgetTileState createState() => _WidgetTileState(); 20 : } 21 : 22 : class _WidgetTileState extends State<WidgetTile> { 23 : bool expanded = false; 24 : bool hover = false; 25 : 26 0 : List<Widget> _buildStories(int level) { 27 0 : List<Story> stories = widget.widgetElement.stories; 28 : return stories 29 0 : .map( 30 0 : (Story story) => StoryTile( 31 : story: story, 32 : level: level, 33 : ), 34 : ) 35 0 : .toList(); 36 : } 37 : 38 0 : @override 39 : Widget build(BuildContext context) { 40 0 : return Column( 41 : crossAxisAlignment: CrossAxisAlignment.start, 42 0 : children: [ 43 0 : SpacedTile( 44 0 : level: widget.level, 45 0 : organizer: widget.widgetElement, 46 : iconData: Icons.style, 47 0 : iconColor: context.colorScheme.secondary, 48 0 : onClicked: () { 49 0 : OrganizerProvider.of(context)!.toggleExpander(widget.widgetElement); 50 : }, 51 : ), 52 0 : if (widget.widgetElement.isExpanded) ..._buildStories(widget.level + 1), 53 : ], 54 : ); 55 : } 56 : }