通常対応
FittedBoxを使用して対応する。
FittedBox(
fit: BoxFit.scaleDown,
child: Text('長い文章')
)
拡張して対応
全てのTextにFittedBoxを書くのは流石にめんどくさいので
FittedBox+Textのclassを作成してそれを呼び出すようにする
###実装
auto_fit_text.dart
import 'package:flutter/material.dart';
class AutoFitText extends StatelessWidget {
final String? data;
final double? width;
final AlignmentGeometry? alignment;
final TextAlign? textAlign;
final TextStyle? style;
const AutoFitText(
this.data, {
Key? key,
this.width,
this.alignment,
this.textAlign,
this.style,
}) : assert(
data != null,
'A non-null String',
),
super(key: key);
@override
Widget build(Object context) {
return Container(
width: width,
alignment: alignment,
child: FittedBox(
fit: BoxFit.scaleDown,
child: Text('$data', textAlign: textAlign, style: style),
),
);
}
}