diff --git a/lib/components/fit_text.dart b/lib/components/fit_text.dart index ec7466e..536c6ba 100644 --- a/lib/components/fit_text.dart +++ b/lib/components/fit_text.dart @@ -1,6 +1,6 @@ import "package:flutter/material.dart"; -class FitText extends StatefulWidget { +class FitText extends StatelessWidget { const FitText({ Key? key, required this.texts, @@ -11,14 +11,6 @@ class FitText extends StatefulWidget { final TextStyle? style; final String separator; - @override - State createState() => _FitText(); -} - -class _FitText extends State { - late List texts; - late List sizes; - Size _textSize(String text, TextStyle? style) { final TextPainter textPainter = TextPainter( text: TextSpan(text: text, style: style), @@ -28,34 +20,27 @@ class _FitText extends State { return textPainter.size; } - @override - void initState() { - super.initState(); - final tmp = widget.texts.map((e) => e.$2).toSet().toList() - ..sort((b, a) => a.compareTo(b)); - sizes = []; - texts = []; - for (final i in tmp) { - final text = widget.texts - .where((e) => e.$2 >= i) - .map((e) => e.$1) - .join(widget.separator); - texts.add(text); - sizes.add(_textSize(text, widget.style).width); - } - } - @override Widget build(BuildContext context) { + final tmp = this.texts.map((e) => e.$2).toSet().toList() + ..sort((b, a) => a.compareTo(b)); + final List sizes = []; + final List texts = []; + for (final i in tmp) { + final text = + this.texts.where((e) => e.$2 >= i).map((e) => e.$1).join(separator); + texts.add(text); + sizes.add(_textSize(text, style).width); + } if (texts.isEmpty) return Container(); return LayoutBuilder(builder: (context, constraints) { final double maxWidth = constraints.maxWidth; for (int i = sizes.length - 1; i >= 0; i--) { if (sizes[i] <= maxWidth) { - return Text(texts[i], style: widget.style); + return Text(texts[i], style: style); } } - return Text(texts[0], style: widget.style); + return Text(texts[0], style: style); }); } }