Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Android studio 颤振:对null调用了更新_Android Studio_Flutter_Flame - Fatal编程技术网

Android studio 颤振:对null调用了更新

Android studio 颤振:对null调用了更新,android-studio,flutter,flame,Android Studio,Flutter,Flame,我正试图用弗利特图书馆的火焰做一个游戏。但我每次都会犯这个错误。这意味着在null上调用更新。但是我已经在initialize函数中初始化了。我试过几种方法,但似乎都不管用。请帮我修复这个错误 import 'dart:math'; import 'dart:ui'; import 'package:flame/flame.dart'; import 'package:flame/game.dart'; import 'package:flutter/c

我正试图用弗利特图书馆的火焰做一个游戏。但我每次都会犯这个错误。这意味着在null上调用更新。但是我已经在initialize函数中初始化了。我试过几种方法,但似乎都不管用。请帮我修复这个错误

    import 'dart:math';
    import 'dart:ui';

    import 'package:flame/flame.dart';
    import 'package:flame/game.dart';
    import 'package:flutter/cupertino.dart';
    import 'package:shared_preferences/shared_preferences.dart';
    import 'package:small_game/components/Enemy.dart';
    import 'package:small_game/components/enemy_spawner.dart';
    import 'package:small_game/components/heath_bar.dart';
    import 'package:small_game/components/highscoreText.dart';
    import 'package:small_game/components/player.dart';
    import 'package:small_game/components/score_text.dart';
    import 'package:small_game/components/startText.dart';
    import 'package:small_game/states.dart' as gameState;

    class GameController extends Game{
      Random rand;
      Size screenSize;
      double tileSize;
      Player player;
      EnemySpawner enemySpawner;
      List<Enemy> enemies;
      HealthBar healthBar;
      int score;
      ScoreText scoreText;
      SharedPreferences storage;
      gameState.State state;
      HighScoreText highScoreText;
      StartText startText;

      GameController(this.storage){
        initialize();
      }

      void initialize() async{
        rand = Random();
        resize(await Flame.util.initialDimensions());
        player = Player(this);
        state = gameState.State.menu;
        enemies = List<Enemy>();
        enemySpawner = EnemySpawner(this);
        healthBar = HealthBar(this);
        score = 0;
        highScoreText = HighScoreText(this);
        startText = StartText(this);
      }

      @override
      void render(Canvas canvas) {
        Rect background = Rect.fromLTWH(0, 0, screenSize.width, screenSize.height);
        Paint backgroundPaint = Paint()..color = Color(0xffFCFCFA);
        canvas.drawRect(background, backgroundPaint);
        player.render(canvas);
        if(state == gameState.State.menu){
           startText.render(canvas);
           highScoreText.render(canvas);
        } else if(state == gameState.State.playing) {
          enemies.forEach((Enemy enemy) => enemy.render(canvas));
          scoreText.render(canvas);
          healthBar.render(canvas);
        }
      }

      @override
      void update(double t) {
        if(state == gameState.State.menu){
          highScoreText.update(t);
          startText.update(t);
        } else if(state == gameState.State.playing) {
          enemies.forEach((Enemy enemy) => enemy.update(t));
          enemies.removeWhere((Enemy enemy) => enemy.isDead);
          player.update(t);
          scoreText.update(t);
          healthBar.update(t);
          enemySpawner.update(t);
        }
      }

      void resize(Size size){
        screenSize = size;
        tileSize = screenSize.width / 10;
      }

      void onTapDown(TapDownDetails d){
        enemies.forEach((Enemy enemy) {
          if(state == gameState.State.menu){
            state = gameState.State.playing;
          }
          if(enemy.enemyRect.contains(d.globalPosition)){
            enemy.onTapDown();
          }
        });
      }

      void spawnEnemies(){
        double x,y;
        switch(rand.nextInt(4)){
          case 0:
            //TOP
            x = rand.nextDouble() * screenSize.width;
            y = -tileSize * 2.5;
            break;
          case 1:
            //RIGHT
            x = (tileSize * 2.5) + screenSize.width;
            y = rand.nextDouble() * screenSize.height;
            break;

          case 2:
            //BOTTOM
            x = rand.nextDouble() * screenSize.width;
            y = (tileSize * 2.5) + screenSize.height;
            break;
          case 3:
            //LEFT
            x = -(tileSize * 2.5);
            y = rand.nextDouble() * screenSize.height;
        }
        enemies.add(Enemy(this, x, y));
      }

    }
import'dart:math';
导入“dart:ui”;
进口“包装:火焰/火焰.飞镖”;
进口“包装:火焰/游戏.飞镖”;
进口“包装:颤振/cupertino.dart”;
导入“package:shared_preferences/shared_preferences.dart”;
导入“包:小游戏/组件/敌人.飞镖”;
导入“套装:小型游戏/组件/敌人产卵器.飞镖”;
导入“套装:小游戏/组件/健康棒.飞镖”;
导入“package:small_game/components/highscoreText.dart”;
导入“包:小游戏/组件/玩家.dart”;
导入“package:small_game/components/score_text.dart”;
导入“包:小游戏/组件/startText.dart”;
导入“包:小游戏/状态.dart”作为游戏状态;
类GameController扩展了游戏{
随机兰德;
屏幕大小;
双层瓷砖;
玩家;
仇人;
列出敌人;
健康酒吧;
智力得分;
ScoreText ScoreText;
共享引用存储;
游戏状态,游戏状态;
HighScoreText HighScoreText;
StartText StartText;
GameController(此存储){
初始化();
}
void initialize()异步{
rand=Random();
调整大小(wait Flame.util.initialDimensions());
玩家=玩家(这个);
state=gameState.state.menu;
敌人=列表();
enemySpawner=enemySpawner(本);
healthBar=healthBar(本);
得分=0;
highScoreText=highScoreText(本);
startText=startText(本);
}
@凌驾
void渲染(画布){
Rect background=Rect.fromLTWH(0,0,screenSize.width,screenSize.height);
绘制背景绘制=绘制()…颜色=颜色(0xFFFCFA);
画布.drawRect(背景、背景漆);
player.render(画布);
if(state==gameState.state.menu){
startText.render(画布);
渲染(画布);
}else if(state==gameState.state.playing){
forEach((敌方)=>敌方.render(画布));
scoreText.render(画布);
healthBar.render(画布);
}
}
@凌驾
无效更新(双t){
if(state==gameState.state.menu){
highScoreText.update(t);
startText.update(t);
}else if(state==gameState.state.playing){
forEach((敌方)=>敌方更新(t));
敌人.removehere((敌人)=>敌人.isDead);
player.update(t);
scoreText.update(t);
healthBar.update(t);
Eneyspawner.update(t);
}
}
空心调整大小(大小){
屏幕大小=大小;
tileSize=屏幕大小。宽度/10;
}
void onTapDown(tappdown详细信息d){
敌人。forEach((敌人){
if(state==gameState.state.menu){
状态=gameState.state.playing;
}
if(敌方敌方包含(d.全局位置)){
敌方;
}
});
}
虚空{
双x,y;
开关(兰特nextInt(4)){
案例0:
//顶
x=rand.nextDouble()*screenSize.width;
y=-tileSize*2.5;
打破
案例1:
//对
x=(波浪大小*2.5)+屏幕大小.width;
y=rand.nextDouble()*屏幕大小.height;
打破
案例2:
//底部
x=rand.nextDouble()*screenSize.width;
y=(波浪大小*2.5)+屏幕大小;
打破
案例3:
//左
x=-(波浪大小*2.5);
y=rand.nextDouble()*屏幕大小.height;
}
添加(敌人(这个,x,y));
}
}
我的错误:

I/颤振(20131):══╡ 调度程序库捕获到异常 ╞═════════════════════════════════════════════════════════ I/颤振 (20131):计划程序运行期间引发了以下NoSuchMethodError 回调:I/flatter(20131):对null调用了方法“update”。 I/颤振(20131):接收器:空I/颤振(20131):尝试呼叫: 更新(0.0)I/颤振(20131):I/颤振(20131):异常时 被抛出时,这是堆栈:I/flatter(20131):#0
Object.noSuchMethod(dart:core patch/Object_patch.dart:51:5) I/flatter(20131):#1 GameController.update(包:small_game/GameController.dart:69:17) I/flatter(20131):#2个GameRenderBox._更新(套装:flame/game.dart:360:10) I/flatter(20131):#3个GameRenderBox._勾选(包装:火焰/游戏。飞镖:353:5) I/flatter(20131):#4 SchedulerBinding._invokeFrameCallback(包:flatter/src/scheduler/binding.dart:1033:15) I/颤振(20131):#5计划绑定。把手框架。 (包:颤振/src/scheduler/binding.dart:951:11) I/flatter(20131):#6 LinkedHashMapMixin.forEach(dart:collection patch/compact_hash.dart:377:8) I/flatter(20131):#7 SchedulerBinding.handleBeginFrame(包:flatter/src/scheduler/binding.dart:949:17) I/颤振(20131):#8 SchedulerBinding.scheduleWarmUpFrame。 (包:颤振/src/scheduler/binding.dart:780:7) I/flatter(20131):#17 _计时器。_运行计时器(dart:isolate patch/Timer_impl.dart:382:19) I/flatter(20131):#18 _Timer._handleMessage(dart:隔离补丁/定时器_impact.dart:416:5) I/flatter(20131):#19 RawReceivePortImpl.handleMessage(dart:isolate patch/isolate_patch.dart:172:12) I/颤振