问题描述
当我开始学习 Flutter 时,我正在利用我的知识用这个框架创建一个基本的计算器。 我在我的应用程序中发现了一个问题......那就是:如何将参数和信息从一个小部件传递到另一个小部件?特别是从一个无状态小部件到另一个小部件。 我一直在寻找不同的地方,但我不明白我该怎么做以及它是如何工作的。
在此先感谢所有可以向我解释的人。
这是我正在使用的代码:
class CalcStructure extends StatelessWidget {
final List<String> rowOne = ['AC','Del','%','/'];
final List<String> rowTwo = ['7','8','9','*'];
final List<String> rowThree = ['4','5','6','-'];
final List<String> rowFour = ['1','2','3','+'];
final List<String> rowFive = ['00','0','.','='];
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height * 0.44,color: Colors.red,),RowStructure(),],);
}
}
以及 RowStructure 的类
class RowStructure extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
child: FlatButton(
onpressed: () => print('pressed'),child: Text('AC'),width: MediaQuery.of(context).size.width * 0.25,height: MediaQuery.of(context).size.height * 0.09,Container(
child: FlatButton(
onpressed: () => print('pressed'),);
}
}
这个想法是将每个列表(rowOne、rowTow...)作为参数传递给另一个类,这样我就可以重用代码...你能帮我吗?
谢谢
解决方法
您只需通过构造函数将数据/值从一个小部件类传递到另一个小部件类:
class RowStructure extends StatelessWidget {
String text = "";
VoidCallback onTap;
RowStructure({ this.text,this.onTap });
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Container(
child: FlatButton(
onPressed: onTap,child: Text(text),),