withClampedTextScaling static method
Wraps the child
in a MediaQuery and applies TextScaler.clamp on the
current MediaQueryData.textScaler.
The returned widget must be inserted in a widget tree below an existing MediaQuery widget.
This is a convenience function to restrict the range of the scaled text
size to [minScaleFactor * fontSize, maxScaleFactor * fontSize]
(to
prevent excessive text scaling that would break the UI, for example). When
minScaleFactor
equals maxScaleFactor
, the scaler becomes
TextScaler.linear(minScaleFactor)
.
Implementation
static Widget withClampedTextScaling({
Key? key,
double minScaleFactor = 0.0,
double maxScaleFactor = double.infinity,
required Widget child,
}) {
assert(maxScaleFactor >= minScaleFactor);
assert(!maxScaleFactor.isNaN);
assert(minScaleFactor.isFinite);
assert(minScaleFactor >= 0);
return Builder(builder: (BuildContext context) {
assert(debugCheckHasMediaQuery(context));
final MediaQueryData data = MediaQuery.of(context);
return MediaQuery(
data: data.copyWith(
textScaler: data.textScaler.clamp(minScaleFactor: minScaleFactor, maxScaleFactor: maxScaleFactor),
),
child: child,
);
});
}