diff --git a/packages/flutter/lib/src/painting/alignment.dart b/packages/flutter/lib/src/painting/alignment.dart index 6f3903406e62d..2a1365b6721a6 100644 --- a/packages/flutter/lib/src/painting/alignment.dart +++ b/packages/flutter/lib/src/painting/alignment.dart @@ -11,6 +11,7 @@ import 'dart:ui' as ui show lerpDouble; import 'package:flutter/foundation.dart'; import 'basic_types.dart'; +import 'debug.dart'; /// Base class for [Alignment] that allows for text-direction aware /// resolution. @@ -584,7 +585,7 @@ class AlignmentDirectional extends AlignmentGeometry { @override Alignment resolve(TextDirection? direction) { - assert(direction != null, 'Cannot resolve $runtimeType without a TextDirection.'); + assert(debugCheckCanResolveTextDirection(direction, '$AlignmentDirectional')); return switch (direction!) { TextDirection.rtl => Alignment(-start, y), TextDirection.ltr => Alignment(start, y), @@ -653,7 +654,7 @@ class _MixedAlignment extends AlignmentGeometry { @override Alignment resolve(TextDirection? direction) { - assert(direction != null, 'Cannot resolve $runtimeType without a TextDirection.'); + assert(debugCheckCanResolveTextDirection(direction, '$_MixedAlignment')); return switch (direction!) { TextDirection.rtl => Alignment(_x - _start, _y), TextDirection.ltr => Alignment(_x + _start, _y), diff --git a/packages/flutter/test/painting/alignment_test.dart b/packages/flutter/test/painting/alignment_test.dart index 815723b1934d7..e8c63f6fd3b6d 100644 --- a/packages/flutter/test/painting/alignment_test.dart +++ b/packages/flutter/test/painting/alignment_test.dart @@ -4,6 +4,7 @@ import 'dart:math' as math; +import 'package:flutter/foundation.dart'; import 'package:flutter/painting.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -350,4 +351,35 @@ void main() { expect(AlignmentGeometry.bottomCenter, Alignment.bottomCenter); expect(AlignmentGeometry.bottomRight, Alignment.bottomRight); }); + + test('AlignmentDirectional.resolve with null TextDirection asserts', () { + const AlignmentDirectional alignmentDirectional = AlignmentDirectional(1.0, 2.0); + + expect( + () => alignmentDirectional.resolve(null), + throwsA( + isFlutterError.having( + (FlutterError e) => e.message, + 'message', + allOf(contains('No TextDirection found.'), contains('without a Directionality ancestor')), + ), + ), + ); + }); + + test('AlignmentDirectional.resolve with null TextDirection asserts', () { + const Alignment a = Alignment(5.0, 6.0); + const AlignmentDirectional b = AlignmentDirectional(15.0, 16.0); + + expect( + () => a.add(b).resolve(null), + throwsA( + isFlutterError.having( + (FlutterError e) => e.message, + 'message', + allOf(contains('No TextDirection found.'), contains('without a Directionality ancestor')), + ), + ), + ); + }); }
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: