如何正确地将值传递给Flutter中任何窗口小部件的事件处理函数?

翁布瑞林

我在列表视图中遇到问题。我希望我的ListView项目提供按钮以对单个项目执行操作。但是我传递给他们的事件处理程序被意外地反复调用。但是,我希望仅在调用孩子的按钮时才能调用它。我做错了什么?

import 'package:flutter/material.dart';
import 'package:horaires_ratp/model/Database.dart';

class StationsList extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _StationsListState();
  }
}

class _StationsListState extends State<StationsList> {
  List<Station> _stations = List<Station>();


  _StationsListState() {
    Station().select().toList().then((value) {
      setState(() {
        _stations = value;
      });
    });
  }

  void _handleStationDelete(Station station){
    //station.delete(true);
    print("called");
    Station().select().toList().then((value) {
      setState(() {
        _stations = value;
      });
    });

  }


  @override
  Widget build(BuildContext context) {
    return Container(
        child: ListView.builder(
            itemCount: _stations.length,
            itemBuilder: (context, index) {
              return StationComponent(_stations[index], _handleStationDelete);
            }));
  }
}

class StationComponent extends StatelessWidget {
  final Station _station;
  final Function _handleDelete;

  StationComponent( this._station,  this._handleDelete);

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Card(
        child: Container(
            padding: EdgeInsets.all(16),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Row(
                  children: <Widget>[
                    Text(_station.name, textAlign: TextAlign.left),
                    IconButton(icon: Icon(Icons.delete), onPressed: _handleDelete(_station))
                  ],
                ),
                Row(
                  children: <Widget>[Row(children: <Widget>[])],
                )
              ],
            )),
      ),
    );
  }
}
文件

您通过这样的功能

onPressed: onPressFunction

如果需要一些价值的话

onPressed: () => onPressFunction(value)

而且不喜欢

onPressed: onPressFunction(value)

所以你的代码应该是

IconButton(icon: Icon(Icons.delete), onPressed:() => _handleDelete(_station))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何正确地将参数传递给syscall(git)?

如何正确地将鼠标坐标传递给WebGL?

如何正确地将许多依赖关系(外部API)传递给Scala中的类?

如何将QEvents传递给子窗口小部件?

如何正确地从PowerShell将参数传递给ImageMagick?

将Entry小部件输入传递给绑定/事件处理函数

如何正确地将单击的按钮属性值传递给表单提交事件?

如何正确地将const_iterator&传递给函数?

如何正确地将State传递给React中的其他函数?

如何在Flutter中正确地重用窗口小部件样式?

如何正确地管理活动的窗口小部件,而不是失去它们的焦点或记住变量的焦点

如何正确地将Win32类对象传递给函数

在React中,如何正确地将输入值从子级传递给父级

如何正确地将弱引用传递给函数的调用者?

将参数传递给Flutter中的无状态小部件

如何将点击处理程序从父母正确地传递给孩子?

QTest无法将事件传递给子窗口小部件

将函数传递给窗口小部件工厂窗口小部件,而不执行它

如何正确地将参数传递给函数?[批]

如何正确地将值传递给Google Maps URL方案回调?

QML:如何从 C++ 代码正确地将属性传递给 PluginParameter 值?

如何正确地将“this”传递给函数?

在 Flutter 中如何将值传递给小部件

如何正确地将结构传递给函数

如何正确地将参数传递给 useCallback() 钩子?

处理将数据传递给小部件以缩短 Flutter / dart 中复杂布局的最佳方法?

如何正确地将函数和参数传递给打字稿函数?

正确地将选择器传递给函数

如何正确地将函数作为道具传递给 React 中的子组件?