Flutter에서 위젯의 이벤트 핸들러 함수에 값을 올바르게 전달하는 방법은 무엇입니까?

Ombrelin

목록보기에 문제가 있습니다. 내 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리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

두 이벤트 핸들러간에 값을 전달하는 방법은 무엇입니까?

분류에서Dev

vue3의 VueApexCharts 라이브러리에서 데이터가있는 배열을 차트로 올바르게 전달하는 방법은 무엇입니까?

분류에서Dev

Angular 2의 이벤트 핸들러에서 html 요소 속성 / 속성을 전달하는 방법은 무엇입니까?

분류에서Dev

Java의 이벤트 핸들러에서 JLabel에 선을 그리는 방법은 무엇입니까?

분류에서Dev

JavaScript의 이벤트 핸들러에서 공용 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

비동기 함수 값을 이벤트 핸들러에 전달하는 방법

분류에서Dev

VB6에서 핸들 (이벤트 핸들러가 아님)을 만드는 방법은 무엇입니까?

분류에서Dev

마우스 바로 아래의 QGraphicsView에 위젯을 올바르게 놓는 방법은 무엇입니까?

분류에서Dev

폴더 이름을 쉘 스크립트에 올바르게 전달하는 방법은 무엇입니까?

분류에서Dev

하나의 핸들러에서 여러 변경 이벤트를 처리하는 방법은 무엇입니까?

분류에서Dev

CodeIgniter의 뷰에서 컨트롤러로 포스트 변수를 올바르게 전달하는 방법은 무엇입니까?

분류에서Dev

클러스터 업그레이드 전에 매니페스트의 apiVersion을 올바르게 업데이트하는 방법은 무엇입니까?

분류에서Dev

반응에서 onClick 이벤트를 올바르게 정의하는 방법은 무엇입니까?

분류에서Dev

C #에서 핸들러 메서드를 올바르게 호출하는 방법은 무엇입니까?

분류에서Dev

Flutter Bloc 위젯 자체에서 BlocBuilder의 위젯을 업데이트하는 방법은 무엇입니까?

분류에서Dev

tkinker에서 .pack을 사용하여 위젯을 올바르게 배치하는 방법은 무엇입니까?

분류에서Dev

DataGrid의 ComboBox에서 SelectionChanged 이벤트를 올바르게 얻는 방법은 무엇입니까?

분류에서Dev

이벤트 유형을 블록 패턴으로 위젯에 전달하는 방법은 무엇입니까?

분류에서Dev

여러 함수를 통해 데이터를 전달하고 main에서 올바르게 호출하는 방법은 무엇입니까?

분류에서Dev

핸들러를 사용하여 Android에서 스태킹 뷰를 차례로 올바르게 애니메이션하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트 (jquery)-하나의 이벤트에 연결된 여러 핸들러 : 하나만 분리하는 방법은 무엇입니까?

분류에서Dev

스핀 상자 (또는 다른 Tkinter 위젯)의 값을 계산에 올바르게 사용할 수있는 방법은 무엇입니까?

분류에서Dev

QML : C ++ 코드에서 PluginParameter 값에 속성을 올바르게 전달하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 CSS의 여러 줄을 플로팅하기 위해 for 루프를 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

speechRecognized 이벤트 핸들러에 RGB 프레임을 저장하는 방법은 무엇입니까?

분류에서Dev

React에서 이벤트 핸들러 외부에서 바인딩 된 함수를 실행하는 방법은 무엇입니까?

분류에서Dev

Zend Framework 1에서 컨트롤러 / 액션을 올바르게 호출하는 방법은 무엇입니까?

분류에서Dev

Swift에서 이중 값 간의 비교를 올바르게 처리하는 방법은 무엇입니까?

분류에서Dev

DOM 이벤트 핸들러 내에서 직접 범위 함수를 호출하는 가장 짧은 방법은 무엇입니까?

Related 관련 기사

  1. 1

    두 이벤트 핸들러간에 값을 전달하는 방법은 무엇입니까?

  2. 2

    vue3의 VueApexCharts 라이브러리에서 데이터가있는 배열을 차트로 올바르게 전달하는 방법은 무엇입니까?

  3. 3

    Angular 2의 이벤트 핸들러에서 html 요소 속성 / 속성을 전달하는 방법은 무엇입니까?

  4. 4

    Java의 이벤트 핸들러에서 JLabel에 선을 그리는 방법은 무엇입니까?

  5. 5

    JavaScript의 이벤트 핸들러에서 공용 함수를 호출하는 방법은 무엇입니까?

  6. 6

    비동기 함수 값을 이벤트 핸들러에 전달하는 방법

  7. 7

    VB6에서 핸들 (이벤트 핸들러가 아님)을 만드는 방법은 무엇입니까?

  8. 8

    마우스 바로 아래의 QGraphicsView에 위젯을 올바르게 놓는 방법은 무엇입니까?

  9. 9

    폴더 이름을 쉘 스크립트에 올바르게 전달하는 방법은 무엇입니까?

  10. 10

    하나의 핸들러에서 여러 변경 이벤트를 처리하는 방법은 무엇입니까?

  11. 11

    CodeIgniter의 뷰에서 컨트롤러로 포스트 변수를 올바르게 전달하는 방법은 무엇입니까?

  12. 12

    클러스터 업그레이드 전에 매니페스트의 apiVersion을 올바르게 업데이트하는 방법은 무엇입니까?

  13. 13

    반응에서 onClick 이벤트를 올바르게 정의하는 방법은 무엇입니까?

  14. 14

    C #에서 핸들러 메서드를 올바르게 호출하는 방법은 무엇입니까?

  15. 15

    Flutter Bloc 위젯 자체에서 BlocBuilder의 위젯을 업데이트하는 방법은 무엇입니까?

  16. 16

    tkinker에서 .pack을 사용하여 위젯을 올바르게 배치하는 방법은 무엇입니까?

  17. 17

    DataGrid의 ComboBox에서 SelectionChanged 이벤트를 올바르게 얻는 방법은 무엇입니까?

  18. 18

    이벤트 유형을 블록 패턴으로 위젯에 전달하는 방법은 무엇입니까?

  19. 19

    여러 함수를 통해 데이터를 전달하고 main에서 올바르게 호출하는 방법은 무엇입니까?

  20. 20

    핸들러를 사용하여 Android에서 스태킹 뷰를 차례로 올바르게 애니메이션하는 방법은 무엇입니까?

  21. 21

    자바 스크립트 (jquery)-하나의 이벤트에 연결된 여러 핸들러 : 하나만 분리하는 방법은 무엇입니까?

  22. 22

    스핀 상자 (또는 다른 Tkinter 위젯)의 값을 계산에 올바르게 사용할 수있는 방법은 무엇입니까?

  23. 23

    QML : C ++ 코드에서 PluginParameter 값에 속성을 올바르게 전달하는 방법은 무엇입니까?

  24. 24

    파이썬에서 CSS의 여러 줄을 플로팅하기 위해 for 루프를 올바르게 사용하는 방법은 무엇입니까?

  25. 25

    speechRecognized 이벤트 핸들러에 RGB 프레임을 저장하는 방법은 무엇입니까?

  26. 26

    React에서 이벤트 핸들러 외부에서 바인딩 된 함수를 실행하는 방법은 무엇입니까?

  27. 27

    Zend Framework 1에서 컨트롤러 / 액션을 올바르게 호출하는 방법은 무엇입니까?

  28. 28

    Swift에서 이중 값 간의 비교를 올바르게 처리하는 방법은 무엇입니까?

  29. 29

    DOM 이벤트 핸들러 내에서 직접 범위 함수를 호출하는 가장 짧은 방법은 무엇입니까?

뜨겁다태그

보관