Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 错误:不可为空的实例字段';屏幕尺寸';必须初始化_Flutter_Dart_Game Engine_Flame - Fatal编程技术网

Flutter 错误:不可为空的实例字段';屏幕尺寸';必须初始化

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

我对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 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
  • 为两个变量设置初始值(硬代码或构造函数)
  • 我不知道您想做什么,但在第二个选项上设置它们可能是一个很好的做法