如何解决“参数类型'对象?'不能分配给参数类型 'String'.dart(argument_type_not_assignable)"?

时间:2021-06-05 18:59:39

标签: flutter dart

我试图从问题中访问 questionText 的值。 当我尝试从地图中提取字符串值时,Flutter 上显示以下错误。 (代码是用 Dart 写的):

<块引用>

参数类型“对象?”不能分配给参数类型 'String'.dart(argument_type_not_assignable)

错误

enter image description here

这是我的 ma​​in.dart 文件:

import 'package:flutter/material.dart';

import './question.dart';

import './answer.dart';

// void main() {
//   runApp(MyApp());
// }

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return _MyAppState();
  }
}

class _MyAppState extends State<MyApp> {
  var _questionIndex = 0;

  void _answerQuestion() {
    setState(() {
      _questionIndex += 1;
    });
    print(_questionIndex);
  }

  @override
  Widget build(BuildContext context) {
    var questions = [
      {
        'questionText': 'What\'s your favorite color?',
        'answers': ['Black', 'Red', 'Green', 'White'],
      },
      {
        'questionText': 'What\'s your favorite animal?',
        'answers': ['Rabbit', 'Snake', 'Elephant', 'Lion'],
      },
      {
        'questionText': 'Who\'s your favorite instructor?',
        'answers': ['Max', 'Max', 'Max', 'Max'],
      },
    ];
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('My First App'),
        ),
        body: Column(
          children: [

这一行的错误:

    Question(
                  questions[_questionIndex]['questionText'],
                ),
                Answer(_answerQuestion),
                Answer(_answerQuestion),
                Answer(_answerQuestion),
              ],
            ),
          ),
        );
      }
    }

这是我的 question.dart 文件:

    import 'package:flutter/material.dart';
    
    class Question extends StatelessWidget {
      final String questionText;
    
      Question(this.questionText);
    
      @override
      Widget build(BuildContext context) {
        return Container(
          width: double.infinity,
          margin: EdgeInsets.all(10),
          child: Text(
            questionText,
            style: TextStyle(fontSize: 28),
            textAlign: TextAlign.center,
          ),
        );
      }
    }

1 个答案:

答案 0 :(得分:1)

你需要让 dart 知道 questions[_questionIndex]['questionText'] 的类型

试试这个:

更改questions[_questionIndex]['questionText']

questions[_questionIndex]['questionText'] as String

在错误行中