【发布时间】:2021-08-22 19:44:48
【问题描述】:
我很新,我正在通过一个较旧的教程自己工作。但我有点卡在自动取款机上。
当我将 .toString() 添加到
Frage(
fragen[frageIndex]['frageText'] as String
),
...(fragen[frageIndex]['antwort'] as List<Map<String, Object>>).map((antwort) {
return Antwort( () => antwortFrage(antwort['summe']), antwort['text'].toString());
}).toList()
在 Quiz.dart 中,当我单击应用程序中的按钮时出现以下错误:
Closure call with mismatched arguments: function '_MyAppState.build.<anonymous closure>'
Receiver: Closure: () => (int) => dynamic
Tried calling: _MyAppState.build.<anonymous closure>(10)
Found: _MyAppState.build.<anonymous closure>() => (int) => dynamic
如果我将其删除,则会发生以下错误:
error: The argument type 'Object?' can't be assigned to the parameter type 'String'. (argument_type_not_assignable at [flutter_complete_guide] lib\quiz.dart:26)
这里是完整的文件:
Main.dart
import 'package:flutter/material.dart';
import 'fragen.dart';
import 'antworten.dart';
import 'quiz.dart';
import 'ergebnis.dart';
// void main() {
// runApp(MyApp());
// }
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
final _fragen = const [
{
'frageText': 'Was ist deine Lieblingsfarbe?',
'antwort': [
{'text': 'Schwarz', 'summe': 10},
{'text': 'Rot', 'summe': 5},
{'text': 'Blau', 'summe': 3},
{'text': 'Silber', 'summe': 1},
],
},
{
'frageText': 'Was ist dein Lieblingstier ?',
'antwort': [
{'text': 'Hund', 'summe': 5},
{'text': 'Katze', 'summe': 5},
{'text': 'Ente', 'summe': 1},
{'text': 'Qualle', 'summe': 10},
],
},
{
'frageText': 'Was ist dein Lieblingsessen?',
'antwort': [
{'text': 'Nudeln', 'summe': 3},
{'text': 'Kartoffeln', 'summe': 5},
{'text': 'Fleisch', 'summe': 10},
{'text': 'Gemüse', 'summe': 1},
],
},
];
var _frageIndex = 0;
var _totalSumme = 0;
_antwortFrage(int summe) {
_totalSumme += summe;
setState(() {
_frageIndex = _frageIndex + 1;
});
if (_frageIndex < _fragen.length) {
print('yep');
} else
print('nope');
}
@override
build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Überschrift'),
),
body: _frageIndex < _fragen.length
? Quiz(
antwortFrage: ()=> _antwortFrage,
frageIndex: _frageIndex,
fragen: _fragen,
)
: Ergebnis(_totalSumme),
),
);
}
}
ergebnis.dart
import 'package:flutter/material.dart';
class Ergebnis extends StatelessWidget {
final int ergebnisSumme;
Ergebnis(this.ergebnisSumme);
@override
Widget build(BuildContext context) {
return Center(
child: Text(
'Keine Fragen mehr ;)',
style: TextStyle(fontSize: 28.0, color: Colors.green),
),
);
}
}
fragen.dart
import 'package:flutter/material.dart';
class Frage extends StatelessWidget {
final String frageText;
Frage(this.frageText);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
margin: EdgeInsets.all(10.0),
child: Text(
frageText,
style: TextStyle(
fontSize: 28.0,
),
textAlign: TextAlign.center,
),
);
}
}
antworten.dart
import 'package:flutter/material.dart';
class Antwort extends StatelessWidget {
final Function()? auswahlVerarbeitung;
final String antwortText;
Antwort(this.auswahlVerarbeitung, this.antwortText);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.blue[300],
onPrimary: Colors.white,
),
child: Text(antwortText),
onPressed: auswahlVerarbeitung,
),
);
}
}
quiz.dart
import 'package:flutter/material.dart';
import './fragen.dart';
import './antworten.dart';
class Quiz extends StatelessWidget {
final List<Map<String, Object>> fragen;
final int frageIndex;
final Function antwortFrage;
Quiz({
required this.fragen,
required this.antwortFrage,
required this.frageIndex,
});
@override
Widget build(BuildContext context) {
return Column(
children: [
Frage(
fragen[frageIndex]['frageText'] as String
),
...(fragen[frageIndex]['antwort'] as List<Map<String, Object>>).map((antwort) {
return Antwort( () => antwortFrage(antwort['summe']), antwort['text']);
}).toList()
],
);
}
}
提前致谢
【问题讨论】:
标签: flutter android-studio dart