#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. это сработало ….спасибо, брат