首页 > 解决方案 > 颤振:在 null 上调用了方法“地图”

问题描述

问题出在这一行:

...(mapsystem[perguntaid]['respostas'] as List<String>)
                .map((resposta) {
              return Resposta(respondendo, resposta);
            }).toList()

“Resposta”是其他文件中的一个小部件,它返回一个凸起的按钮,但这不是问题而且,它在问题输出中没有给出错误,只是在我运行应用程序时在模拟器中

import 'package:flutter/material.dart';
import './pergunta.dart';
import './resposta.dart';

void main() {
  runApp(App());
}

class App extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return AppState();
  }
}

class AppState extends State<App> {
  double score = 0;
  var perguntaid = 0;

  void respondendo() {
    setState(() {
      perguntaid = perguntaid + 1;
    });

    score = score + 0.5;
    print(score);
  }

  @override
  Widget build(BuildContext context) {
    var mapsystem = [
      {
        'Tema': 'Memória',
        'repostas': [
          'Não há perda de memória óbvia. Apenas alguns esquecimentos que não fazem diferença',
          'Esquecimento leve e regular de eventos (Esquece compromissos, repete perguntas, etc)',
          'Perda de memória de leve a moderada, esquece de eventos recentes, o que atrapalha atividades diárias',
          'Perda de memória moderada a severa, informações recentes são rapidamente esquecidas e lembra custa um significante esforço',
          'Perda de memória severa, quase impossível lembrar novas informações, e memórias passadas podem estar afetadas'
        ],
      },
      {
        'Tema': 'Orientação',
        'repostas': ['1', '2', '3', '4', '5'],
      },
      {
        'Tema': 'Tomada de decisões e resolução de problemas',
        'repostas': ['1', '2', '3', '4', '5'],
      },
      {
        'Tema': 'Atividades fora de casa',
        'repostas': ['1', '2', '3', '4', '5'],
      },
      {
        'Tema': 'Habilidades em casa e Hobbies',
        'repostas': ['1', '2', '3', '4', '5'],
      },
      {
        'Tema': 'Hábitos de Higiene pessoal',
        'repostas': ['1', '2', '3', '4', '5'],
      },
      {
        'Tema': 'Mudanças de comportameto e personalidade',
        'repostas': ['1', '2', '3', '4', '5'],
      },
      {
        'Tema': 'Habilidades de linguagem e comunicação',
        'repostas': ['1', '2', '3', '4', '5'],
      },
      {
        'Tema': 'Humor',
        'repostas': ['1', '2', '3', '4', '5'],
      },
      {
        'Tema': 'Atenção e Concentração',
        'repostas': ['1', '2', '3', '4', '5'],
      },
    ];

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.black,
          title: Text('Memory Mate'),
        ),
        body: Column(
          children: [
            Pergunta(
              mapsystem[perguntaid]['Tema'],
            ),
            ...(mapsystem[perguntaid]['respostas'] as List<String>)
                .map((resposta) {
              return Resposta(respondendo, resposta);
            }).toList()
          ],
        ),
      ),
    );
  }
}

这是屏幕中错误的图片:

地图调用为空

链接到图片

标签: fluttermethods

解决方案


在您的数据中,您拥有 key repostas,而在错误行上您respostas使用额外的“s”编写。只需更改为mapsystem[perguntaid]['repostas'].


推荐阅读