Dart 如何在颤振中执行回访

Dart 如何在颤振中执行回访,dart,flutter,Dart,Flutter,我正在尝试测试VoidCallback,因此我创建了主文件,它有一个从小部件中的一个平面按钮调用的函数,它位于一个单独的文件中,但不起作用 main.dart import 'package:flutter/material.dart'; import 'controller_test.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget bui

我正在尝试测试
VoidCallback
,因此我创建了主文件,它有一个从小部件中的一个平面按钮调用的函数,它位于一个单独的文件中,但不起作用

main.dart

import 'package:flutter/material.dart';
import 'controller_test.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Retrieve Text Input',
      home: MyCustomForm(),
    );
  }
}

// Define a Custom Form Widget
class MyCustomForm extends StatefulWidget {
  @override
  _MyCustomFormState createState() => _MyCustomFormState();
}

class _MyCustomFormState extends State<MyCustomForm> {
  final myController = TextEditingController();

  @override
  void initState() {
    super.initState();

    myController.addListener(_printLatestValue);
  }

  _printLatestValue() {
    print("Second text field: ${myController.text}");
  }

  _test() {
    print("hi there");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Retrieve Text Input'),
      ),
      body: Con(_test, myController)
    );
  }
}

当我点击小部件中的
FlatButton
时,什么都没有发生,我希望
hi那里
会被打印出来

我只是在另一个答案中找到了它 我缺少(),因此正确的调用是:

      FlatButton(
        onPressed: () => clickCallback(),
        child: Text("click me"),
      )

这里有两种选择

  • onPressed:()=>fun()
    类似于onPressed参数是调用fun的匿名方法

  • onPressed:fun
    类似于onPressed参数是函数fun


  • 您甚至可以编写onPressed:clickCallback,在这种情况下很容易忘记();没有()的另一种方法也很好。
          FlatButton(
            onPressed: () => clickCallback(),
            child: Text("click me"),
          )