Flutter 错误:不可为空的实例字段';屏幕尺寸';必须初始化
我对flame和Flatter还很陌生,但我只是想为我正在进行的一个游戏项目建立基础,它告诉我“屏幕大小”字段以及“tileSize”字段必须初始化Flutter 错误:不可为空的实例字段';屏幕尺寸';必须初始化,flutter,dart,game-engine,flame,Flutter,Dart,Game Engine,Flame,我对flame和Flatter还很陌生,但我只是想为我正在进行的一个游戏项目建立基础,它告诉我“屏幕大小”字段以及“tileSize”字段必须初始化 import 'dart:ui'; import 'package:flame/flame.dart'; import 'package:flame/game.dart'; import 'package:flutter/cupertino.dart'; class GameController extends Game { Size sc
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
您必须自己实现一切
你可以查看一个基本的例子,上面还有一些例子
YouTube上也有一些不错的教程
关于必须初始化的值,Fairn的回答也是正确的,但是在BaseGame
中,您将自动获得屏幕的大小。(我没有使用Flame,但这只是关于您可以做什么的特定于Dart的视图)
您有两个选择:
设置screenSize
和tileSize
null的类型,然后类型将是Size?
和double
为两个变量设置初始值(硬代码或构造函数)
我不知道您想做什么,但在第二个选项上设置它们可能是一个很好的做法