'error getting value, NoSuchMethodError : (function)
what this mean error:
my goals is when i'm click the button, result will be display value control flow function, this my code:
data:
var question = const [
{
'questionHere': 'which ur hate friend as?',
'answer': [
{'name': 'Dendi', 'score': 0},
{'name': 'Yogi', 'score': 10},
{'name': 'Vali', 'score': 7},
{'name': 'Odir', 'score': 10},
{'name': 'Vega', 'score': 8},
],
},
{
'questionHere': 'What is ur fav Smoke?',
'answer': [
{'name': 'Marlboro', 'score': 10},
{'name': 'Sampurna', 'score': 7},
{'name': 'Surya', 'score': 8},
{'name': 'Surya Pro mild', 'score': 5},
],
}
];
main.dart
import 'package:flutter/material.dart';
import 'package:trying/widget/quiz.dart';
import 'package:trying/widget/result.dart';
void main() => runApp(MaterialApp(
home: HomePage(),
));
class HomePage extends StatefulWidget {
HomePage({Key? key}) : super(key: key);
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
var _questionNumber = 0;
var _totalScore = 0;
void _questionInc(int score) {
_totalScore += score;
setState(() {
_questionNumber++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _questionNumber < question.length
? Quiz(question, _questionInc, _questionNumber)
: Result(_totalScore),
);
}
}
result.dart
import 'package:flutter/material.dart';
class Result extends StatelessWidget {
final int resultScore;
Result(this.resultScore);
this case about score will be display, but i still get error
String get score {
String resultText = '';
if (resultScore <= 10) {
resultText = 'bego';
} else if (resultScore < 8) {
resultText = 'a';
} else {
return resultText;
}
throw Exception();
}
@override
Widget build(BuildContext context) {
return Center(
child: Text(score),
);
}
}
this button widget
increment.dart
import 'package:flutter/material.dart';
class Inc extends StatelessWidget {
final VoidCallback selectInc;
final String answer;
Inc(this.selectInc, this.answer);
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(16),
width: double.infinity,
height: 20,
child: ElevatedButton(
onPressed: selectInc,
child: Text(answer),
));
}
}
Quis.dart
import 'package:flutter/material.dart';
import './question.dart';
import './increment.dart';
class Quiz extends StatelessWidget {
final Function questionInc;
final int questionIndex;
final List<Map<String, Object>> questionData;
Quiz(this.questionData, this.questionInc, this.questionIndex);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Question(questionData[questionIndex]['questionHere'] as String),
...(questionData[questionIndex]["answer"]
as List<Map<String, Object>>)
.map((e) => Inc(questionInc(), e["name"] as String))
.toList()
],
),
);
}
}
so how to fixed this problem, how to know even value has return?
Solution 1:[1]
In your class, Quiz. Make questionInc as VoidCallback and also when calling Inc pass it as reference.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Tyler2P |

