Files
flame/doc/examples/text/lib/main.dart
Lukas Klingsbo d09d2bd449 Add TextBoxConfig options and fix TextBoxComponent bugs (#534)
* Add TextBoxConfig options and fix TextBxoComponent bugs

* Add changelog entry

* Fix snackbar deprecation

* All examples to have publish to none

* One argument per line

* No explicit types for local variables

* Cache the width

* Fix formatting
2020-12-09 10:07:35 +00:00

75 lines
2.1 KiB
Dart

import 'dart:ui';
import 'package:flame/anchor.dart';
import 'package:flame/components/text_box_component.dart';
import 'package:flame/components/text_component.dart';
import 'package:flame/flame.dart';
import 'package:flame/game.dart';
import 'package:flame/palette.dart';
import 'package:flame/text_config.dart';
import 'package:flame/extensions/vector2.dart';
import 'package:flutter/material.dart';
void main() async {
final Vector2 size = await Flame.util.initialDimensions();
runApp(MyGame(size).widget);
}
TextConfig regular = TextConfig(color: BasicPalette.white.color);
TextConfig tiny = regular.withFontSize(12.0);
class MyTextBox extends TextBoxComponent {
MyTextBox(String text)
: super(
text,
config: tiny,
boxConfig: TextBoxConfig(
timePerChar: 0.05,
growingBox: true,
margins: const EdgeInsets.symmetric(horizontal: 10, vertical: 15),
),
);
@override
void drawBackground(Canvas c) {
final Rect rect = Rect.fromLTWH(0, 0, width, height);
c.drawRect(rect, Paint()..color = const Color(0xFFFF00FF));
final margin = boxConfig.margins;
final Rect innerRect = Rect.fromLTWH(
margin.left,
margin.top,
width - margin.horizontal,
height - margin.vertical,
);
c.drawRect(
innerRect,
Paint()
..color = BasicPalette.white.color
..style = PaintingStyle.stroke);
}
}
class MyGame extends BaseGame {
MyGame(Vector2 screenSize) {
size = screenSize;
add(TextComponent('Hello, Flame', config: regular)
..anchor = Anchor.topCenter
..x = size.x / 2
..y = 32.0);
add(TextComponent('center', config: tiny)
..anchor = Anchor.center
..position = size / 2);
add(TextComponent('bottomRight', config: tiny)
..anchor = Anchor.bottomRight
..position = size);
add(MyTextBox(
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam eget ligula eu lectus lobortis condimentum.',
)
..anchor = Anchor.bottomLeft
..y = size.y);
}
}