Line data Source code
1 : import 'package:flutter/material.dart'; 2 : 3 : import 'package:widgetbook/src/models/model.dart'; 4 : import 'package:widgetbook/src/models/organizers/organizer.dart'; 5 : 6 : /// Stories represent a specific configuration of a widget. 7 : class Story extends Organizer implements Model { 8 : final Widget Function(BuildContext) builder; 9 : 10 4 : Story({required String name, required this.builder}) : super(name); 11 : 12 0 : factory Story.center({ 13 : required String name, 14 : required Widget child, 15 : }) { 16 0 : return Story( 17 : name: name, 18 0 : builder: (_) => Center(child: child), 19 : ); 20 : } 21 : 22 0 : factory Story.child({ 23 : required String name, 24 : required Widget child, 25 : }) { 26 0 : return Story( 27 : name: name, 28 0 : builder: (_) => child, 29 : ); 30 : } 31 : 32 2 : @override 33 2 : String get id => path; 34 : 35 2 : @override 36 : bool operator ==(Object other) { 37 : if (identical(this, other)) return true; 38 : 39 4 : return other is Story && other.builder == builder; 40 : } 41 : 42 0 : @override 43 0 : int get hashCode => builder.hashCode; 44 : }