如何在 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,),
),
),
);
}
}
我想在单击 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,),
),
),
);
}
}