>

나는 본질적으로 이것을 수행하는 Dart/Flutter 코드를 가지고있다 :

for(int i = 0; i < dataArray.length; i++){
     int curr = i;
     table.add(
          new DataRow(
               ...
               onSelectChanged: (bool selected){
                    DataRow toSwap = table[curr]; 
                    /*This is how I "get" a row to select it, 
                    as there is no getter for the "checked" property*/
                    ...
               }
          )
     );
}

curr 를 사용해야합니다  이 콜백의 변수이지만 메소드에서 호출 될 때마다 반복자의 최종 값을 반영합니다. curr 의 가치를 어떻게 사용할 수 있습니까  Dart에서 콜백을 추가 할 때?

  • 답변 # 1

    코드를 게시하기 전에 코드를 수정했다고 가정합니다. jamesdlin 의견에서 알 수 있듯이 코드가 작동합니다. 원래 문제를 해결하려면 각 반복마다 새 변수를 작성하기 만하면됩니다. 원래 코드에 루프 외부에 변수가 정의되어 있다고 가정합니다.

    즉, @jamesdlin 예제로 보여주기 위해 :

     // working as expected
      for (int i = 0; i < 10; i += 1) {
        final int current = i;
        functionList.add(() => print('$i $current')); // 0 0, 1 1, 2 2, ...
      }
      // current will be updated
      int current;
      for (int i = 0; i < 10; i += 1) {
        current = i;
        functionList.add(() => print('$i $current')); // 0 9, 1 9, 2 9, ...
      }
    
    

    요약 : 가변 상태는 악하다 ;-) 포옹 final 따라서 루프 외부에서 변수를 작성하려는 유혹을받지 않습니다.

  • 이전 associations - Rails 사용자 has_many 개의 게시물, has_many favorite_posts
  • 다음 CURL이있는 파일을 웹 사이트에 업로드