如何在 flutter 中向其他 class 注入函数

how to inject function to other class in flutter

我想在单击 MyButton

时打印 'test'

我在我的 class 中构建了一个函数,但没用

请帮帮我 这是我的代码

Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'bla bla bla',
            ),
            MyButton((){print('test');}, 'my button')
          ],
        ),

我做了一个 StatefulWidget class 我叫它 MyButton

import 'package:flutter/material.dart';

class MyButton extends StatefulWidget {
  Function buttonFunction;
  String buttonName;
  MyButton(this.buttonFunction,this.buttonName);

  @override
  _MyButtonState createState() => _MyButtonState();
}

class _MyButtonState extends State<MyButton> {
  @override
  Widget build(BuildContext context) {
    String name=widget.buttonName;
    return Container(
      width: 200,
      child: RaisedButton(
        color: Colors.red,
        onPressed: () {
          widget.buttonFunction;
          print('clicked $name');
        },

        textColor: Colors.white,
        child: Text("$name",
          style: TextStyle(fontSize: 18,),
        ),
      ),
    );
  }
}

您缺少括号“()”来调用函数,而只是引用它。

您还在 build 方法中设置了一个变量,这是声明变量的错误位置,因为它会重新 运行 多次并且不必要地重新声明并且变得昂贵。如果你想访问字符串中某个值的 属性,你只需要使用 `"String ${widget.myStringVariable}."。

我修改了您的代码以反映这些更改:

class _MyButtonState extends State<MyButton> {
  @override
  Widget build(BuildContext context) {
    return Container(
      width: 200,
      child: RaisedButton(
        color: Colors.red,
        onPressed: () {
          widget.buttonFunction();
          print('clicked $name');
        },
        textColor: Colors.white,
        child: Text("${widget.buttonName}",
          style: TextStyle(fontSize: 18,),
        ),
      ),
    );
  }
}