어떻게 업데이트를 높은 버튼에 제목을 누르면 특히 인덱스의 ListView.빌더

0

질문

여기에는 나의 코드입니다.

bool isAddedToCart = false;
return ListView.builder(
........
 ElevatedButton (
                        child: isAddedToCart? Text('Added to cart') : Text('Add to cart'),
                         style: ElevatedButton.styleFrom(
                           primary: Constants.primaryColor,
                           onPrimary: Constants.appColor
                         ),
                         onPressed: () async{
                           setState(() {
                             isAddedToCart = !isAddedToCart;
                           });
                           
                         },
                      
                       ),

문제입,클릭 하는 경우에는 상승하는 버튼을 텍스트의 버튼이 있을 변경하는 인덱스에서만 있습니다. 하지만 그것은에서 변화하는 모든이는 인덱스에 listview.빌더입니다.

수 중 어느 하나가 이것에 대한 솔루션을에 하나의 버튼을 선택한 인덱스트로 변경된 이름입니다.

flutter
2021-11-24 05:13:26
2

최고의 응답

2

당신이 필요하다 플래그 isAddedToCart 각 인덱스입니다. 당신은 그것을 달성할 수 있을 사용하여 Map. 무언가 이것을 좋아한다:

// class variable scope.
Map<int, bool> isAddedToCartMap = {};

다음 사용하세요:

ElevatedButton (
    // if isAddedToCartMap[index] not found, use false as default value.
    child: isAddedToCartMap[index]??false ? Text('Added to cart') : Text('Add to cart'),
     style: ElevatedButton.styleFrom(
       primary: Constants.primaryColor,
       onPrimary: Constants.appColor
     ),
     onPressed: () async{
       setState(() {
         isAddedToCartMap[index] = !isAddedToCartMap[index]??false;
       });
       
     },
  
   ),
2021-11-24 05:24:43

그것의 잘 작동하고,나는 dout..업데이트하는 방법을 같은 버튼을 추가'카트'다. 감사에 대한 답변@ישו אוהב אותך
H ă ɤ í
1

모든 항목에 따라 달라집 isAddedToCart 하지만 당신을 저장할 필요가 선택 항목으로 별도의 인덱싱

List<int> _selected_item = List();

 ElevatedButton(
              child: _selected_item.contains(index)
                  ? Text('Added to cart')
                  : Text('Add to cart'),
              style: ElevatedButton.styleFrom(),
              onPressed: () async {
                setState(() {
                  // remove or add index to _selected_item
                  if (_selected_item.contains(index))
                    _selected_item.remove(index);
                  else
                    _selected_item.add(index);
                  print(index);
                });
              },
            )

완벽한 소스 코드

ListView.builder(
          itemCount: 5,
          itemBuilder: (context, index) {
            return ElevatedButton(
              child: _selected_item.contains(index)
                  ? Text('Added to cart')
                  : Text('Add to cart'),
              style: ElevatedButton.styleFrom(),
              onPressed: () async {
                setState(() {
                  // remove or add index to _selected_item
                  if (_selected_item.contains(index))
                    _selected_item.remove(index);
                  else
                    _selected_item.add(index);
                  print(index);
                });
              },
            );
          })
2021-11-24 06:01:37

@GH 시도 할 수 있습니다 내가 이것을 희망,그것은 당신을 위해 일
Jahidul Islam

는 최고입니다. 감사합니다.
H ă ɤ í

그것은 점점 기본 때 그것은감. 우리는 그것을 할 수 있습니를 사용하 모델,그렇다면,어떻게?
H ă ɤ í

당신이 따라야 하는 이 링크 stackoverflow.com/questions/57380673/...
Jahidul Islam

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................