首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数类型'Function‘不能分配给参数类型'void ()?

参数类型'Function‘不能分配给参数类型'void ()?
EN

Stack Overflow用户
提问于 2021-09-04 11:33:57
回答 1查看 207关注 0票数 1

我在answer.dart上得到了这个错误“lib/responer.dart:15:20: Error:参数类型'Function‘不能分配给参数类型'void ()?’”。以下是文件: main.dart

代码语言:javascript
复制
import 'package:flutter/material.dart';
import 'Questions.dart';
import 'answer.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyAppState();
    // ignore: dead_code
    throw UnimplementedError();
  }
}

class _MyAppState extends State<MyApp> {
  var _questionIndex = 0;
  var questions = [
    'what\'s your fav color?',
    'what\'s your fav Food?',
    'what\'s your fav Animal?'
  ];
  

  void _answerQuestion() {
    setState(() {
      _questionIndex++;
      if (_questionIndex >= questions.length) _questionIndex = 0;
    });
    print(_questionIndex);
    print(questions.length);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('My Flutter App'),
        ),
        body: Column(
          children: [
            Question(questions[_questionIndex]),
            Answer(_answerQuestion),
            Answer(_answerQuestion),
            Answer(_answerQuestion),
          ],
        ),
      ),
    );
  }
}

answer.dart

代码语言:javascript
复制
import 'package:flutter/material.dart';

class Answer extends StatelessWidget {
  final Function selectHandler;
  Answer(this.selectHandler);


  @override
  Widget build(BuildContext context) {
    return Container(
      width: double.infinity,
      child: ElevatedButton(
        child: Text('Ans 1'),
        onPressed: selectHandler,
        style: ElevatedButton.styleFrom(
          primary: Colors.red,
        ),
      ),
    );
  }
}

Questions.dart

代码语言:javascript
复制
import 'package:flutter/material.dart';

class Question extends StatelessWidget {
  final String questionText;
  Question(this.questionText);
  @override
  Widget build(BuildContext context) {
    return Container(
      width: double.infinity,
      margin: EdgeInsets.all(10),
      padding: EdgeInsets.all(10),
      child: Text(
        questionText,
        style: TextStyle(fontSize: 28),
        textAlign: TextAlign.center,
      ),
    );
  }
}

现在我已经尝试查看逻辑,构造函数是在answer.dart文件中正确定义的,并且它在main.dart中也有很好的分配。我仍然在学习和用尽解决这个错误的选择。请任何人帮助解决此错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-04 11:38:36

将其更改为:

代码语言:javascript
复制
onPressed: ()=> selectHandler()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69054891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档