>  Q&A  >  본문

Flutter는 다른 클래스에서 호출될 때 변수의 새 값을 가져올 수 없습니다.

조건에 따라 MySQL 데이터베이스에서 데이터를 검색하고 검색된 값을 배열에 추가하여 배열 값을 사용하여 ListView에 표시할 수 있는 StatefulWidget이 있습니다. 내 문제는 때때로 배열(_fileValues) 和 _custUsername 변수가 비어 있거나 업데이트되지 않은 경우 예외가 발생하지 않는다는 것입니다.

이것은 내 상태 저장 위젯입니다(main.dart)

으아아아

UsernameGetter 클래스(이 클래스는 텍스트 필드 입력의 이메일을 기반으로 데이터베이스 테이블에서 사용자 이름을 검색합니다)

UsernameGetter 类打印 _usernameDetected 类时,它返回返回字符串的更新版本,但是当我将 _custUsername 分配给 UsernameValuemain.dart 클래스에서 _usernameDetected 클래스를 인쇄하면 반환된 문자열의 업데이트된 버전이 반환되지만 _custUsername

클래스에서 UsernameValue에 할당하면

, 업데이트되지 않고 때로는 null 값을 반환합니다. NameGetter 으아아아

클래스(텍스트 열에 저장된 사용자 항목 이름 검색) NameGetter 类,与 UsernameGetter 发生相同的情况。当我从 main.dart 检索值并将值添加到 _fileValues

수업의 경우

수업에서도 마찬가지입니다.

에서 값을 검색하고 _fileValues 목록에 값을 추가하면 값이 비어 있는 경우도 있고 값이 업데이트되지 않는 경우도 있습니다.

으아아아

내 실수가 어디에 있는지는 모르겠지만 내가 실수를 많이 했다는 것은 확실하며 그 실수를 알아내도록 도와줄 사람이 필요합니다. 특히 목록과 변수가 업데이트되지 않거나 때로는 비어 있는 이유에 대해 설명합니다.

참조 링크:

Flutter ListView가 업데이트되지 않았습니다

🎜Flutter의 목록에 코드가 업데이트되지 않는 데 문제가 있습니다🎜 🎜플러터에서 변수 값이 새로 고쳐지지 않는 이유는 무엇인가요? 🎜
P粉670107661P粉670107661181일 전351

모든 응답(1)나는 대답할 것이다

  • P粉521697419

    P粉5216974192024-04-02 09:09:07

    질문

    callData() 이 방법의 단순화된 버전은 다음과 같습니다.

    으아아아

    앞서 언급했듯이 anotherAsyncFunction(foo)someAsyncFunction() 之后、then() 之前 立即调用> 分配 foo의 값입니다.

    전략적으로 print()문을 삽입하여 이 동작을 직접 관찰할 수 있습니다.

    솔루션

    내부적으로 비동기 코드가 순차적으로 실행되는 코드처럼 읽힐 때 사람들이 비동기 코드의 동작을 추론하는 것이 더 쉬운 경우가 많습니다. Future.then()async/await 是同一件事。然而,当使用async/await

    어느 것이든 사용할 수 있지만 읽을 때 코드를 더 쉽게 이해할 수 있도록

    를 참조하는 것이 좋습니다. async/await

    다음은 리팩터링 방법의 예입니다.

    : callData() 으아아아

    이렇게 쓰면

    가 이전에 할당된 것이 분명합니다. custUsername 是在调用 NameGetter().Connection(custUsername)

    비동기 프로그래밍: futures, async, wait를 꼭 읽어보세요.

    회신하다
    0
  • 취소회신하다