Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在颤振中用于for循环时,如何更改OnTap函数中的值_Android_Ios_Flutter_Dart_Flutter Layout - Fatal编程技术网

Android 在颤振中用于for循环时,如何更改OnTap函数中的值

Android 在颤振中用于for循环时,如何更改OnTap函数中的值,android,ios,flutter,dart,flutter-layout,Android,Ios,Flutter,Dart,Flutter Layout,我的代码是这样的: List<Widgets> abc = []; for(int a = 0;a<5;a++) { abc.add(FlatButton(onTap:(){ print(a);}, child:Text("Hello - ${a}") )

我的代码是这样的:

        List<Widgets> abc = [];

        for(int a = 0;a<5;a++)
        {
        abc.add(FlatButton(onTap:(){ print(a);},
                           child:Text("Hello - ${a}")
                           )
                 );
        }

列出abc=[];

对于(inta=0;a,您的代码运行得很好

列出abc=[];
@凌驾
小部件构建(构建上下文){
对于(int a=0;a<5;a++){
abc.add(扁平按钮(
已按下:(){
印刷品(a);
},
孩子:文本(“你好-$a”);
}
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子项:ListView.builder(
itemCount:abc.length,
itemBuilder:(上下文,索引){
返回abc[索引];
},
),
),
);

a
的最大值为4时,它如何返回
5

列出abc=[];
@凌驾
小部件构建(构建上下文){
对于(int a=0;a<5;a++){
abc.add(扁平按钮(
已按下:(){
印刷品(a);
},
孩子:文本(“你好-$a”);
}
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子项:ListView.builder(
itemCount:abc.length,
itemBuilder:(上下文,索引){
返回abc[索引];
},
),
),
);

a
的最大值为4时,它如何返回
5

您需要在每个按钮中存储数字。类似这样。我不知道如何使用颤振,所以无论您如何操作,都要这样做

class customButton extends StatelessWidget {
int number = 0;
@override
customButton(int num){
  this.number = num;
}
@override
Widget build(BuildContext context){
return Text('button content' + number.toString());
}
}

class _MyHomePageState extends State<MyHomePage> {

@override
Widget build(BuildContext context) {
List<customButton> buttons = new List();

for(int a = 0; a < 5; a++){
  buttons.add(new customButton(a));
}

return Scaffold(
  appBar: AppBar(
    title: Text(widget.title),
  ),
  body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: buttons
    ),
  )
);
}
}
class customButton扩展了无状态小部件{
整数=0;
@凌驾
自定义按钮(int num){
this.number=num;
}
@凌驾
小部件构建(构建上下文){
返回文本('按钮内容'+number.toString());
}
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
列表按钮=新建列表();
对于(int a=0;a<5;a++){
按钮。添加(新自定义按钮(a));
}
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:按钮
),
)
);
}
}

您需要在每个按钮中存储数字。类似于这样。我不知道如何使用颤振,所以无论您如何操作,都要这样做

class customButton extends StatelessWidget {
int number = 0;
@override
customButton(int num){
  this.number = num;
}
@override
Widget build(BuildContext context){
return Text('button content' + number.toString());
}
}

class _MyHomePageState extends State<MyHomePage> {

@override
Widget build(BuildContext context) {
List<customButton> buttons = new List();

for(int a = 0; a < 5; a++){
  buttons.add(new customButton(a));
}

return Scaffold(
  appBar: AppBar(
    title: Text(widget.title),
  ),
  body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: buttons
    ),
  )
);
}
}
class customButton扩展了无状态小部件{
整数=0;
@凌驾
自定义按钮(int num){
this.number=num;
}
@凌驾
小部件构建(构建上下文){
返回文本('按钮内容'+number.toString());
}
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
列表按钮=新建列表();
对于(int a=0;a<5;a++){
按钮。添加(新自定义按钮(a));
}
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:按钮
),
)
);
}
}

看起来您并没有为每个按钮存储a变量。您只是将其转换为字符串以生成按钮名称,但当按下按钮时为“a”仍然是指您的递增变量。是的,这正是上次我检查编辑时发生的情况,看起来您没有为每个按钮存储a变量。您只是将其转换为字符串以使按钮名,但当按钮被按下“a”时仍然是指您的递增变量。是的,这正是上次我检查时发生的情况。我不知道为什么以及如何工作良好,但上次我检查时,它没有存储a的值。它只是取a的最后一个值,不知怎的是5。当时系统可能正在取垃圾值(idk,可能是).在最初的问题中,我以列表的形式显示结果并单击这些结果块,我想使用Hero小部件将其动画显示到新屏幕。因此,我使用for循环创建了一个函数,并使用循环变量值作为Hero小部件的标记,但如果使用上述循环,则每次标记都取值“5”。我我不知道为什么会发生这种情况。那么这个解决方案对您有效吗?或者必须在这里解决其他问题?如果您有问题,请更新您的问题,或者如果这个答案正确地解决了您的问题,请接受答案。我不知道为什么以及如何工作良好,但最后当我检查它没有存储。它只是获取a的最后一个值,不知何故是5。当时系统可能正在获取垃圾值(idk,可能是).在最初的问题中,我以列表的形式显示结果并单击这些结果块,我想使用Hero小部件将其动画显示到新屏幕。因此,我使用for循环创建了一个函数,并使用循环变量值作为Hero小部件的标记,但如果使用上述循环,则每次标记都取值“5”。我我不知道为什么会发生这种情况。那么这个解决方案对您有效吗?或者必须在这里解决其他问题?如果您有问题,请更新您的问题,如果这个答案正确地解决了您的问题,请接受答案。