error: Non-nullable instance field 'screenSize' must be initialized
error: Non-nullable instance field 'screenSize' must be initialized
我对 flame 和 flutter 还很陌生,但我只是想为我正在进行的游戏项目建立基础,它告诉我字段“screenSize”以及“tileSize”,必须初始化。
import 'dart:ui';
import 'package:flame/flame.dart';
import 'package:flame/game.dart';
import 'package:flutter/cupertino.dart';
class GameController extends Game {
Size screenSize;
double tileSize;
GameController() {
initialize();
}
void initialize() async {
resize(await Flame.util.initialDimensions());
}
@override
void render(Canvas canvas) {
Rect background = Rect.fromLTWH(0, 0, screenSize.width, screenSize.height);
Paint backgroundPaint = Paint()..color = Color(0xFFFAFAFA);
canvas.drawRect(background, backgroundPaint);
}
@override
void update(double t) {}
void resize(Size size) {
screenSize = size;
tileSize = screenSize.width / 10;
}
void onTapDown(TapDownDetails d) {
}
}
如果您是 Flame 的新手,请扩展 BaseGame
而不是 Game
。
BaseGame
将为您提供游戏引擎所需的一切,同时 Game
您必须自己实现所有内容。
你可以查看一个基本示例here, and there are some more examples on https://examples.flame-engine.org/
YouTube 上也有一些很好的教程。
Flawn 关于必须初始化的值的回答是正确的,但在 BaseGame
中你会自动拥有屏幕的 size
。
(我没有使用过 Flame,但这只是关于您可以做什么的特定于 Dart 的视图)
您有两个选择:
- 设置
screenSize
和tileSize
的类型可为空,则类型为Size?
和double
- 为两个变量设置初始值(硬编码或通过构造函数)
我不知道你想做什么,但最好先将它们设置为第二个选项。
我对 flame 和 flutter 还很陌生,但我只是想为我正在进行的游戏项目建立基础,它告诉我字段“screenSize”以及“tileSize”,必须初始化。
import 'dart:ui';
import 'package:flame/flame.dart';
import 'package:flame/game.dart';
import 'package:flutter/cupertino.dart';
class GameController extends Game {
Size screenSize;
double tileSize;
GameController() {
initialize();
}
void initialize() async {
resize(await Flame.util.initialDimensions());
}
@override
void render(Canvas canvas) {
Rect background = Rect.fromLTWH(0, 0, screenSize.width, screenSize.height);
Paint backgroundPaint = Paint()..color = Color(0xFFFAFAFA);
canvas.drawRect(background, backgroundPaint);
}
@override
void update(double t) {}
void resize(Size size) {
screenSize = size;
tileSize = screenSize.width / 10;
}
void onTapDown(TapDownDetails d) {
}
}
如果您是 Flame 的新手,请扩展 BaseGame
而不是 Game
。
BaseGame
将为您提供游戏引擎所需的一切,同时 Game
您必须自己实现所有内容。
你可以查看一个基本示例here, and there are some more examples on https://examples.flame-engine.org/
YouTube 上也有一些很好的教程。
Flawn 关于必须初始化的值的回答是正确的,但在 BaseGame
中你会自动拥有屏幕的 size
。
(我没有使用过 Flame,但这只是关于您可以做什么的特定于 Dart 的视图)
您有两个选择:
- 设置
screenSize
和tileSize
的类型可为空,则类型为Size?
和double
- 为两个变量设置初始值(硬编码或通过构造函数)
我不知道你想做什么,但最好先将它们设置为第二个选项。