NoneFlutter : NoSuchMethodError во время отладки с точками останова
В настоящее время я играю с Flame, небольшим 2D игровым движком на основе флаттера. Мой код содержит довольно странный гейзенбаг: он отлично работает, если вы запускаете его через run
или же debug
, Но если вы установите точку останова, она выдаст ошибку
Unhandled exception:
NoSuchMethodError: The getter 'cls' was called on null.
Хотя я не думаю, что это связано с пламенем, я не смог воспроизвести проблему только с флаттером. Так что я включаю минимальную версию своего пламенного кода. Он просто окрашивает экран телефона в серый цвет фона:
main.dart:
import 'package:flutter/material.dart';
import 'package:temp/game.dart';
void main(){
MyGame game = MyGame(); // error thrown here
runApp(game.widget);
}
game.dart:
import 'package:flame/game.dart';
import 'dart:ui';
class MyGame extends Game{
Size screenSize;
@override
void render(Canvas canvas) {
Rect screenRect = Rect.fromLTWH(0, 0, screenSize.width, screenSize.height);
Paint screenPaint = Paint();
screenPaint.color = Color.fromARGB(255, 100, 100, 100);
canvas.drawRect(screenRect, screenPaint);
}
@override
void update(double t) {
}
@override
void resize(Size size) {
super.resize(size);
screenSize = size;
}
}
Если вы хотите запустить это, вы также должны добавить пламя в ваш pubspec:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
flame: ^0.10.2
Моя ошибка возникает каждый раз, когда я устанавливаю точку останова в методе рендеринга MyGame
и начать отладку.
0 ответов
Я не могу воспроизвести это на flame: ^0.22.0
так что вы можете просто перейти на эту версию, и она должна работать нормально.