1

我有一个在主类中调用它的类,但我想将一个函数传递给子类并将函数运行到子类并将函数的响应返回给主类如何在颤振飞镖中执行。

4

1 回答 1

0

class subclassName
final function NameOfFunction;

subclassName(this.NameOfFunction);

在主班

subclassName(the function you want to pass);

主要的

class _MyAppState extends State<MyApp> {
  var _questionIndex = 0;

  void _answerQuestion() {
    setState(() {
      _questionIndex = _questionIndex + 1;
    });
    print(_questionIndex);
  }

  @override
  Widget build(BuildContext context) {
    print("object");
    var questions = [
      {
      'questionText':'What\'s your favorite color?',
      'answers': ['Black','Red','Green','White'],
      },
      {
      'questionText':'What\'s your favorite animal?',
      'answers': ['Rabbit','Snak','Elephant','Lion'],
      },
      {
      'questionText':'who\'s your favorite instructor?',
      'answers': ['suhaib','max','khalid','moh'],
      }

    ];
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('My First App'),
        ),
        body: Column(
          children: [
            Question(
              questions[_questionIndex]['questionText'],
            ),
            ...(questions[_questionIndex]['answers'] as List<String>).map((answer){
              return Answer(_answerQuestion, answer);
            }).toList(),
          ],
        ),
      ),
    );
  }
}

子类

class Answer extends StatelessWidget {
final String textanswer;
final Function answerQuestion;
  Answer(this.answerQuestion,this.textanswer);

  @override
  Widget build(BuildContext context) {
    return Container(
      child: RaisedButton(
        color: Colors.blue,
        textColor: Colors.white,
              child: Text(textanswer),
              onPressed: answerQuestion,
            ),
    );
  }
}
于 2019-08-11T07:09:27.077 回答