diff --git a/packages/flame/lib/src/components/text_component.dart b/packages/flame/lib/src/components/text_component.dart index 9242c51ae6..df54390dc2 100644 --- a/packages/flame/lib/src/components/text_component.dart +++ b/packages/flame/lib/src/components/text_component.dart @@ -1,8 +1,7 @@ import 'dart:ui'; import 'package:flame/components.dart'; -import 'package:flame/src/text/elements/text_element.dart'; -import 'package:flame/src/text/text_renderer.dart'; +import 'package:flame/text.dart'; import 'package:flutter/painting.dart'; import 'package:meta/meta.dart'; @@ -19,7 +18,7 @@ class TextComponent extends PositionComponent { super.priority, super.key, }) : _text = text ?? '', - _textRenderer = textRenderer ?? TextRenderer.createDefault() { + _textRenderer = textRenderer ?? TextRendererFactory.createDefault() { updateBounds(); } diff --git a/packages/flame/lib/src/text/text_renderer.dart b/packages/flame/lib/src/text/text_renderer.dart index 1f25b078e7..042e5fe040 100644 --- a/packages/flame/lib/src/text/text_renderer.dart +++ b/packages/flame/lib/src/text/text_renderer.dart @@ -41,25 +41,4 @@ class TextRenderer { }) { format(text).render(canvas, position, anchor: anchor); } - - /// A registry containing default providers for every [TextRenderer] subclass; - /// used by [createDefault] to create default parameter values. - /// - /// If you add a new [TextRenderer] child, you can register it by adding it, - /// together with a provider lambda, to this map. - static Map defaultRenderersRegistry = { - TextRenderer: TextPaint.new, - TextPaint: TextPaint.new, - }; - - /// Given a generic type [T], creates a default renderer of that type. - static T createDefault() { - final creator = defaultRenderersRegistry[T]; - if (creator != null) { - return creator() as T; - } else { - throw 'Unknown implementation of TextRenderer: $T. Please register it ' - 'under [defaultRenderersRegistry].'; - } - } } diff --git a/packages/flame/lib/src/text/text_renderer_factory.dart b/packages/flame/lib/src/text/text_renderer_factory.dart new file mode 100644 index 0000000000..67684a05e7 --- /dev/null +++ b/packages/flame/lib/src/text/text_renderer_factory.dart @@ -0,0 +1,24 @@ +import 'package:flame/text.dart'; + +class TextRendererFactory { + /// A registry containing default providers for every [TextRenderer] subclass; + /// used by [createDefault] to create default parameter values. + /// + /// If you add a new [TextRenderer] child, you can register it by adding it, + /// together with a provider lambda, to this map. + static Map defaultRegistry = { + TextRenderer: TextPaint.new, + TextPaint: TextPaint.new, + }; + + /// Given a generic type [T], creates a default renderer of that type. + static T createDefault() { + final creator = defaultRegistry[T]; + if (creator != null) { + return creator() as T; + } else { + throw 'Unknown implementation of TextRenderer: $T. Please register it ' + 'under [TextRendererFactory.defaultRegistry].'; + } + } +} diff --git a/packages/flame/lib/text.dart b/packages/flame/lib/text.dart index c175f63c01..35688139a8 100644 --- a/packages/flame/lib/text.dart +++ b/packages/flame/lib/text.dart @@ -34,3 +34,4 @@ export 'src/text/styles/flame_text_style.dart' show FlameTextStyle; export 'src/text/styles/style.dart' show Style; export 'src/text/text_paint.dart' show TextPaint; export 'src/text/text_renderer.dart' show TextRenderer; +export 'src/text/text_renderer_factory.dart' show TextRendererFactory; diff --git a/packages/flame/test/text/text_renderer_test.dart b/packages/flame/test/text/text_renderer_test.dart index 28cef3736a..f952e94300 100644 --- a/packages/flame/test/text/text_renderer_test.dart +++ b/packages/flame/test/text/text_renderer_test.dart @@ -6,11 +6,11 @@ import 'package:test/test.dart'; void main() { group('TextRenderer', () { test('createDefault', () { - final tp = TextRenderer.createDefault(); + final tp = TextRendererFactory.createDefault(); expect(tp, isNotNull); expect(tp, isA()); - final tr = TextRenderer.createDefault(); + final tr = TextRendererFactory.createDefault(); expect(tr, isNotNull); expect(tr, isA()); }); @@ -24,7 +24,7 @@ void main() { }); test('custom renderer', () { - TextRenderer.defaultRenderersRegistry[_CustomTextRenderer] = + TextRendererFactory.defaultRegistry[_CustomTextRenderer] = _CustomTextRenderer.new; final tc = TextComponent<_CustomTextRenderer>(text: 'foo'); expect(tc.textRenderer, isA<_CustomTextRenderer>());