#flutter #flutter-layout #flutter-dependencies
Вопрос:
Эта ошибка будет удалена, если я добавлю ?.toString ()??», но тогда это не сработает. Его в строке «вопросы[questionindex][‘Текст вопроса’]».
import 'package:flutter/material.dart';
import 'answer.dart';
import 'question.dart';
class Quiz extends StatelessWidget {
final List<Map<String, Object>> questions;
final questionindex;
final Function answerQuestion;
Quiz(
{required this.answerQuestion,
required this.questions,
required this.questionindex});
@override
Widget build(BuildContext context) {
return Column(children: [
Question(
questions[questionindex]['questionText']
),
...((questions[questionindex]['answers'] as List<Map<String, Object>>)
.map((answer) => Answer(
() => answerQuestion(answer[
'score']),
answer['text'].toString(),
))
).toList()
]);
}
}
Это приложение для викторин, которое я пытаюсь создать
Вопрос код виджета такой :
import 'package:flutter/material.dart';
class Question extends StatelessWidget {
final String questionText;
Question(this.questionText);
@override
Widget build(BuildContext context) {
return Container(
//we use container around the text instead of directly using text to get everything in center not just buttons
width: double.infinity,
margin: EdgeInsets.all(10), //spacing around the container
child: Text(
questionText,
style: TextStyle(fontSize: 28),
textAlign: TextAlign.center,
));
}
}
Ответ №1:
Вероятно, это связано с тем, что questions[questionindex]['questionText']
это тип объекта, а виджету Question
требуется String
параметр типа.
поэтому, когда вы добавляете .toString()
метод, он преобразует переменную типа объекта в переменную строкового типа.
Давайте рассмотрим этот код
List<Map<String, Object>> questions = [{'a': someObj1, 'b': someObj2}, {'c': someObj3, 'd': someObj4}];
Здесь вопросы-это список карт, и предположим, что переменная someObj
является объектом в вашем коде.
Когда вы пишете questions[questionindex]['a']
, вы имеете в someObj1
виду тот или иной объект.
Таким образом, вы не передаете строку, вместо этого вы передаете объект Question
виджету.
Вы можете изменить Question
виджет так, чтобы он принимал объект, или вам нужно передать строку в этом объекте, если у него есть какое-либо String
свойство
Комментарии:
1. Эй, я добавил спасибо за ваш ответ
2. Да @kavyabhargava , я обновил свой ответ, это должно помочь.