auto_size_text
auto_size_text copied to clipboard
Create an DefaultAutoSizeGroup
Describe the solution you'd like
I would like to make use of AutoSizeGroup without the need to create an stateful widget time.
DefaultAutoSizeGroup(
child: Column(
children: [
AutoSizeText('hey'),
AutoSizeText('hey')
]
)
)
This would behave similar to what any other DefaultFoo widgets behave. It would inject an inherited widget that contains a AutoSizeGroup that is used by any AutoSizeText if no autoSizeGroup is passed. Similar cases are DefaultTabController or DefaultTextStyle.
Implementation:
class DefaultAutoSizeGroup extends StatefulWidget {
const DefaultAutoSizeGroup({super.key, required this.child}) : super();
static AutoSizeGroup? of(BuildContext context) {
return context
.dependOnInheritedWidgetOfExactType<_InheritedAutoSizeGroup>()
?.autoSizeGroup;
}
final Widget child;
@override
State<DefaultAutoSizeGroup> createState() => _DefaultAutoSizeGroupState();
}
class _DefaultAutoSizeGroupState extends State<DefaultAutoSizeGroup> {
final AutoSizeGroup autoSizeGroup = AutoSizeGroup();
@override
Widget build(BuildContext context) {
return _InheritedAutoSizeGroup(
autoSizeGroup: autoSizeGroup,
child: widget.child,
);
}
}
class _InheritedAutoSizeGroup extends InheritedWidget {
const _InheritedAutoSizeGroup({
required super.child,
required this.autoSizeGroup,
}) : super();
final AutoSizeGroup autoSizeGroup;
@override
bool updateShouldNotify(_InheritedAutoSizeGroup oldWidget) {
return autoSizeGroup != oldWidget.autoSizeGroup;
}
}
Version
- Flutter version: [e.g. 1.5.4]
- auto_size_text version: [e.g. 1.2.1]
I can create a PR if this looks something interesting to have in the package