빌드 방법이기 때문에 미래에 두 번 실행하는 방법은 무엇입니까?

HoiPolloi

큰 파일을 만드는 기능이 있다고

Future<File> makeBigFile() async {
    // lots of processing
    return File("generated_file.txt");
}

@override
Widget build(BuildContext context) {
  return FutureBuilder(
    future: makeBigFile(),
    builder: (BuildContext context, AsyncSnapshot snapshot) {
      if (snapshot.hasData && snapshot.data is File) {
        return Text("Success!");
      } else if (snapshot.connectionState==ConnectionState.done) {
        return Text("Error!");
      } else {
        return CircularProgressIndicator();
      }
    }
  );
}

따라서 빌드가 실행될 때마다 미래도 실행됩니다. 문서는 말한다

미래는 예를 들어 State.initState, State.didUpdateConfig 또는 State.didChangeDependencies 동안 더 일찍 얻어 졌어 야합니다. FutureBuilder를 생성 할 때 State.build 또는 StatelessWidget.build 메서드 호출 중에 생성되지 않아야합니다. Future가 FutureBuilder와 동시에 생성되면 FutureBuilder의 부모가 다시 빌드 될 때마다 비동기 작업이 다시 시작됩니다.

내가 이해하는 것 (문서를 읽고 다시 읽음에도 불구하고별로 많지 않음)이 FutureBuilder있어야하며 문제없이 여러 번 실행할 수 build()있어야 future:하지만 여러 번 실행해서는 안되는 긴 작업이면 어떻게 될까요?

미래를 여러 번 실행하지 않고 지금 수행하는 코드를 어떻게 변경해야합니까?

필립 P.
class BigFileWidget extends StatefulWidget {
  @override
  _BigFileWidgetState createState() => _BigFileWidgetState();
}

class _BigFileWidgetState extends State<BigFileWidget> {

  Future<File> fileFuture;

  @override
  void initState() {
    fileFuture = makeBigFile();
  };

  Future<File> makeBigFile() async {
    // lots of processing
    return File("generated_file.txt");
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
        future: fileFuture,
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.hasData && snapshot.data is File) {
            return Text("Success!");
          } else if (snapshot.connectionState==ConnectionState.done) {
            return Text("Error!");
          } else {
            return CircularProgressIndicator();
          }
        }
    );
  }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

WP 기능에서 cURL이 두 번 실행되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

이미지가로드 될 때 한 번에 일부 코드를 실행하는 방법은 무엇입니까?

분류에서Dev

첫 번째 기능이 완전히 완료된 후에 만 두 번째 Javascript 기능을 실행하는 방법은 무엇입니까?

분류에서Dev

Javascript의 체인 함수에서 두 번째 함수를 먼저 실행하는 방법은 무엇입니까?

분류에서Dev

4 그리드 기둥의 두 번째 열 뒤에 공간을 제공하는 방법은 무엇입니까?

분류에서Dev

두 번 이상 터치하면 부모에서 노드를 제거하는 방법은 무엇입니까?

분류에서Dev

RSpec이 더미 앱이있는 Rails 플러그인에서 사양을 두 번 실행하지 않도록하는 방법은 무엇입니까?

분류에서Dev

minikube : 포드에 두 번째 컨테이너를 추가하는 방법은 무엇입니까?

분류에서Dev

Lambda 호출 Lambda-두 번째로 페이로드에 액세스하는 방법은 무엇입니까?

분류에서Dev

Mac의 두 번째 내부 드라이브에 Ubuntu를 설치하는 방법은 무엇입니까?

분류에서Dev

R 파이프에서 두 번 출력하는 방법은 무엇입니까?

분류에서Dev

문자열 목록에서 n 번째 문자 목록을 모두 만드는 방법은 무엇입니까?

분류에서Dev

Exoplayer2.x : Player.STATE_ENDED는 동영상이 끝날 때 두 번 실행됩니다. Android에서 exoplayer를 구현하는 방법은 무엇입니까?

분류에서Dev

아이콘을 두 번 클릭 할 때 사용자에게 실행 자격 증명을 묻는 메시지를 표시하는 방법은 무엇입니까?

분류에서Dev

powershell에서 두 번째 문자를 바꾸는 방법은 무엇입니까?

분류에서Dev

젠킨스 빌드를 슬레이브 노드에서 실행하는 방법은 무엇입니까?

분류에서Dev

Kubernetes 배포로 배포하기 위해 Jenkins에서 빌드 번호로 Docker 이미지의 버전을 지정하는 방법은 무엇입니까?

분류에서Dev

셸에서 특정 명령이 실행될 때 두 번째 명령을 트리거하는 방법은 무엇입니까?

분류에서Dev

두 노드를 같은주기에 두는 방법은 무엇입니까?

분류에서Dev

피드에서 이미지를 두 번 가져 오지 않고 Facebook 게시물에 이미지를 추가하는 방법은 무엇입니까?

분류에서Dev

경기 후 두 번째 행에서 인쇄하는 방법은 무엇입니까?

분류에서Dev

첫 번째 부동 div 위에 두 번째 부동 div를 만드는 방법은 무엇입니까?

분류에서Dev

Blade에 동일한 부분보기를 두 번 이상 포함하는 방법은 무엇입니까?

분류에서Dev

yii의 두 디렉토리에 업로드 된 이미지를 두 번 저장하는 방법은 무엇입니까?

분류에서Dev

Liferay 6.2에서 두 번째 레벨 드롭 드원 메뉴를 표시하는 방법은 무엇입니까?

분류에서Dev

두 번째 활동을 아래에서 위로 애니메이션하는 방법은 무엇입니까?

분류에서Dev

첫 번째 드롭 다운 선택에서 두 번째 드롭 다운 숨기기 / 숨기기 해제하는 방법은 무엇입니까?

분류에서Dev

Gradle and Docker : Docker 컨테이너 내에서 Gradle 빌드를 실행하는 방법은 무엇입니까?

분류에서Dev

한 번에 최대 10 개의 스레드를 실행하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    WP 기능에서 cURL이 두 번 실행되는 것을 방지하는 방법은 무엇입니까?

  2. 2

    이미지가로드 될 때 한 번에 일부 코드를 실행하는 방법은 무엇입니까?

  3. 3

    첫 번째 기능이 완전히 완료된 후에 만 두 번째 Javascript 기능을 실행하는 방법은 무엇입니까?

  4. 4

    Javascript의 체인 함수에서 두 번째 함수를 먼저 실행하는 방법은 무엇입니까?

  5. 5

    4 그리드 기둥의 두 번째 열 뒤에 공간을 제공하는 방법은 무엇입니까?

  6. 6

    두 번 이상 터치하면 부모에서 노드를 제거하는 방법은 무엇입니까?

  7. 7

    RSpec이 더미 앱이있는 Rails 플러그인에서 사양을 두 번 실행하지 않도록하는 방법은 무엇입니까?

  8. 8

    minikube : 포드에 두 번째 컨테이너를 추가하는 방법은 무엇입니까?

  9. 9

    Lambda 호출 Lambda-두 번째로 페이로드에 액세스하는 방법은 무엇입니까?

  10. 10

    Mac의 두 번째 내부 드라이브에 Ubuntu를 설치하는 방법은 무엇입니까?

  11. 11

    R 파이프에서 두 번 출력하는 방법은 무엇입니까?

  12. 12

    문자열 목록에서 n 번째 문자 목록을 모두 만드는 방법은 무엇입니까?

  13. 13

    Exoplayer2.x : Player.STATE_ENDED는 동영상이 끝날 때 두 번 실행됩니다. Android에서 exoplayer를 구현하는 방법은 무엇입니까?

  14. 14

    아이콘을 두 번 클릭 할 때 사용자에게 실행 자격 증명을 묻는 메시지를 표시하는 방법은 무엇입니까?

  15. 15

    powershell에서 두 번째 문자를 바꾸는 방법은 무엇입니까?

  16. 16

    젠킨스 빌드를 슬레이브 노드에서 실행하는 방법은 무엇입니까?

  17. 17

    Kubernetes 배포로 배포하기 위해 Jenkins에서 빌드 번호로 Docker 이미지의 버전을 지정하는 방법은 무엇입니까?

  18. 18

    셸에서 특정 명령이 실행될 때 두 번째 명령을 트리거하는 방법은 무엇입니까?

  19. 19

    두 노드를 같은주기에 두는 방법은 무엇입니까?

  20. 20

    피드에서 이미지를 두 번 가져 오지 않고 Facebook 게시물에 이미지를 추가하는 방법은 무엇입니까?

  21. 21

    경기 후 두 번째 행에서 인쇄하는 방법은 무엇입니까?

  22. 22

    첫 번째 부동 div 위에 두 번째 부동 div를 만드는 방법은 무엇입니까?

  23. 23

    Blade에 동일한 부분보기를 두 번 이상 포함하는 방법은 무엇입니까?

  24. 24

    yii의 두 디렉토리에 업로드 된 이미지를 두 번 저장하는 방법은 무엇입니까?

  25. 25

    Liferay 6.2에서 두 번째 레벨 드롭 드원 메뉴를 표시하는 방법은 무엇입니까?

  26. 26

    두 번째 활동을 아래에서 위로 애니메이션하는 방법은 무엇입니까?

  27. 27

    첫 번째 드롭 다운 선택에서 두 번째 드롭 다운 숨기기 / 숨기기 해제하는 방법은 무엇입니까?

  28. 28

    Gradle and Docker : Docker 컨테이너 내에서 Gradle 빌드를 실행하는 방법은 무엇입니까?

  29. 29

    한 번에 최대 10 개의 스레드를 실행하는 방법은 무엇입니까?

뜨겁다태그

보관