lib/answer.dart:16:20: Ошибка: Тип аргумента «Функция» не может быть присвоен типу параметра » Функция void()?»

#flutter #function #dart

#трепетать #функция #дротик

Вопрос:

Это основной файл.dart:

 import 'package:flutter/material.dart';  import './question.dart';  import './answer.dart';  import 'package:path/path.dart';    void main() {  runApp(MyFirstApp());  }    class MyFirstApp extends StatefulWidget {  @override  Statelt;StatefulWidgetgt; createState() {  // TODO: implement createState  return _MyFirstAppState();  }  }    class _MyFirstAppState extends Statelt;MyFirstAppgt; {  var _questionIndex = 0;  void _ansButtonPress(context) {  setState(() {  _questionIndex = _questionIndex   1;  });  }    var questions = ['favorate color ', 'favorate animal', 'where is this'];  var answers = ['Option 1', 'Option 2', 'Option 3'];    Widget build(BuildContext context) {  return MaterialApp(  home: Scaffold(  appBar: AppBar(  title: Text('My first app '),  ),  body: Column(  children: [  Question(  questions[_questionIndex],  ),  Answer(_ansButtonPress),  Answer(_ansButtonPress),  Answer(_ansButtonPress),  ],  ),  ),  );  }  }    

Это ответы.файл для дротиков:

 import 'package:flutter/material.dart';    class Answer extends StatelessWidget {  final Function selectHandler;    Answer(this.selectHandler);  // const Answer({Key? key}) : super(key: key);    @override  Widget build(BuildContext context) {  return Container(  width: double.infinity,  child: RaisedButton(  color: Colors.blue,  child: Text('Answer 1'),  onPressed: selectHandler,  ),  );  }  }`enter code here`  [enter image description here][1]  

Это вопросы.дротик:

 import 'package:flutter/material.dart';    class Answer extends StatelessWidget {  final Function selectHandler;    Answer(this.selectHandler);  // const Answer({Key? key}) : super(key: key);    @override  Widget build(BuildContext context) {  return Container(  width: double.infinity,  child: RaisedButton(  color: Colors.blue,  child: Text('Answer 1'),  onPressed: selectHandler,  ),  );  }  }      

изображение ошибки

Я работаю над приложением для викторины, просматривая учебник, сейчас я всего лишь новичок, столкнувшийся с ошибкой. Я не могу это исправить, я добавил код и ошибку с этим.

lib/answer.dart:16:20: Ошибка: Тип аргумента «Функция» не может быть присвоен типу параметра » Функция void()?».

  • «Функция» происходит от «dart:ядро». Нажата кнопка: selectHandler,

Ответ №1:

onPressed Свойство рассматриваемой кнопки-a VoidCallback? , поэтому для удобства использования сделайте свое свойство a VoidCallback (обнуляемым или нет, зависит от вас) тоже:

 final Function selectHandler;  

становится

 final VoidCallback selectHandler;  

Затем убедитесь, что метод, который вы передаете этому свойству, действительно имеет эту подпись:

 void _ansButtonPress(context) {  

становится

 void _ansButtonPress() {  

Я все равно не знаю, что должен был делать этот «контекст», он не использовался.

Теперь это должно сработать.

Комментарии:

1. lib/main.dart:40:20: Ошибка: Тип аргумента «Функция void(динамическая)» не может быть присвоен типу параметра » Функция void()». Ответ(_ansButtonPress), ^ lib/main.dart:41:20: Ошибка: Тип аргумента «Функция void(динамическая)» не может быть присвоен типу параметра » Функция void ()». Ответ(_ansButtonPress), ^ lib/main.dart:42:20: Ошибка: Тип аргумента «Функция void(динамическая)» не может быть присвоен типу параметра » Функция void ()». Ответ(_ansButtonPress), теперь он показывает эту ошибку

2. Ну, ошибка говорит о том, что вы не последовали моему совету, и в вашей функции _ansButtonPress все еще есть параметр…

3. @JahidulIslam Я ничего не могу поделать с «работой на моей машине». У вас есть ошибка, с которой я могу работать?

4. это сработало ….спасибо, брат