APP는 플러터와 함께 할 학습 경험 : 떨림이 수명주기 위젯

기사 나에게 친구이자,에서 첫 번째 모습은 때때로 업체 PDF + 노트 + + 고급 비디오 인터뷰 문서 공유 학습 질문, 안드로이드 아키텍처 기술 지식과 분석 및 기타 콘텐츠뿐만 아니라 안드로이드 소스 코드에 직면 해제합니다.

: 더 당신은 또한 내 GitHub의 링크를 볼 수 있습니다 https://github.com/Meng997998/AndroidJX
이런 방법을 불 별에 대해 읽기

머리말

플러터와 최근에 응용하고있다, 웹 페이지를 작성하는 것 같은 느낌 또는 VUE처럼, 꽤 재미와 반응. 위해 플러터에 대한 이해를 깊게하고 자신의 학습 경험을 기록합니다.

위젯, StatefulWidget, StatelessWidget

, 코드를 다음과 같이 구성되어 세 사이의 관계를 알 수있는 소스 코드를 참조하십시오 :

abstract class Widget extends DiagnosticableTree {
  const Widget({ this.key });
  final Key key;
  @protected
  Element createElement();
  static bool canUpdate(Widget oldWidget, Widget newWidget) {
    return oldWidget.runtimeType == newWidget.runtimeType
        && oldWidget.key == newWidget.key;
  }  
}
abstract class StatelessWidget extends Widget {
  const StatelessWidget({ Key key }) : super(key: key);
  @override
  StatelessElement createElement() => StatelessElement(this);
  @protected
  Widget build(BuildContext context);  
}abstract class StatefulWidget extends Widget {
  const StatefulWidget({ Key key }) : super(key: key);
  @override
  createElement() => StatefulElement(this);
  @protected
  State createState();
}

조립 유추 바보에 반응 할 수있는 상태를 StatelessWidget 없다

이 StatefulWidget 상태, 국가의 존재 객체의 상태, 일반적으로 모두의 라이프 사이클 수명주기의 상태를 참조했다고한다;

abstract class State extends Diagnosticable {
  void initState() { }
  void didChangeDependencies() { }
  Widget build(BuildContext context);
  void setState(VoidCallback fn) {}
  void deactivate() { }
  void dispose() { }
  void reassemble() { }
  void didUpdateWidget(covariant T oldWidget) { }
}

현상

내 작업 홈 -> page1-> page2-> page1-> 홈에서, 국가의 수명주기를 확인하기 위해

홈 -> PAGE1에서,이 초기화 과정은

I/flutter ( 4980): [debug],[lifeCycle], initState
I/flutter ( 4980): [debug],[lifeCycle], didChangeDependencies
I/flutter ( 4980): [debug],[lifeCycle], build

page1-> 페이지 2에서 일시적으로 해당 PAGE1을 제거

I/flutter ( 4980): [debug],[lifeCycle], deactivate
I/flutter ( 4980): [debug],[lifeCycle], didChangeDependencies
I/flutter ( 4980): [debug],[lifeCycle], build

page2-> PAGE1, PAGE1에 해당이 이동 된 후면에서

I/flutter ( 4980): [debug],[lifeCycle], deactivate
I/flutter ( 4980): [debug],[lifeCycle], didChangeDependencies
I/flutter ( 4980): [debug],[lifeCycle], build

page1-에서> 홈, PAGE1에 해당 삭제

I/flutter ( 4980): [debug],[lifeCycle], deactivate
I/flutter ( 4980): [debug],[lifeCycle], dispose

라이프 사이클의 개요

직접 사진은 매우 명확해야

영상

위의 라이프 사이클, 두 영역이 이해에 초점을 맞출 필요가있다 :

이 데이터 변화는 그 자식 위젯 didChangeDependencies 호출 InheritedWidget 위젯 부모에 의해 공유 된 데이터의 상태로 사용되는 경우 개체가 상태에 따라 변경 1. ()

2.에서 위젯 재 구축) (의 didUpdateWidget 상태를 호출 할 때, 우선 각 StatefulWidget에 해당하는 상태가 있다는 것을 알고, 위젯 재건은 먼저 위젯 업데이트가 필요할지 여부를 결정 canUpdate 메소드를 호출 할 때 키의 경우 및 RuntimeType이 같은, 그것은) 당신이 위젯, 그래서 (의 didUpdateWidget의 통화 상태를 업데이트 할 수 있음을 나타내는 true를 반환하고 있습니다; 경우 업데이트 할 필요, 만들 신구 삭제가 없음을 키 또는 RuntimeType이없는 동시에, 그것.

의심

시도, 위젯 페이지가 보이지 않는 스위치 사이에서 볼 수있는 현상이있을 때, 메소드 호출은 동일 deativate-> didChangeDependencies-> 빌드입니다, 그것은이 없기 때문에 질문이 있습니다 우리는 왜 빌드를 보았습니까? 또는 왜 모든 볼을 만들 수없는 이유는 무엇입니까?

이 질문은 위젯 떨림, 관계 요소, 트리를 렌더링 더 탭에 필요한, 그리고해야 할 원칙의 추가 이해 그래서 다음 주 플러터 UI 카자흐스탄

최종적으로

이제 많은 기업들이 플러터에 도로에 떨림에 프로젝트, 일부 기업이

사람들은 첫 번째 단계를 배우고, 나는 걱정된다

개인 편지 I [] 플러터 플러터 학습 비디오 컬렉션

APP는 플러터와 함께 할 학습 경험 : 떨림이 수명주기 위젯

APP는 플러터와 함께 할 학습 경험 : 떨림이 수명주기 위젯

안드로이드는 내 GitHub의 링크를 볼 수 있습니다 자세히 알아보기 : 별을보고, https://github.com/Meng997998/AndroidJX, 오, 그런데 그것은 불

추천

출처blog.51cto.com/14606040/2463210