[삼]Aloïs Deniel.
[삼]펄럭 이는 개발자
[삼]최근에 나는 온보드 연습을 구현해야했습니다
UDN 작업 관리자
신규 이민자! 많은 새로운 사용자가 플랫폼을 발견하려고하기 때문에 이것은 정말로 중요한 작업이었습니다.
믿을 수 없을만큼 재미있는 광고 우리는 슈퍼 볼에서 초기화되었습니다
...에! ✨.
[삼]~을 통해
UDN 작업 관리자
[삼]연습은 우리의 수많은 새로운 사용자를 가능하게합니다.
UDN 작업 관리자
그러나 응용 프로그램에서 여러 기능을 사용하는 방법을 신속하게 이해합니다. 새로운 것처럼 진행중인 노력입니다.
UDN 작업 관리자
대학교
우리가 추구하는 자원! 🚀.
[삼]다행히도, 소프트웨어 아키텍처
UDN 작업 관리자
Flutter Mobile 응용 프로그램은 응용 프로그램에서 실제 위젯을 재사용 하여이 기능을 매우 빠르게 구현할 수있었습니다! 즉, 연습은 동적 인, 반응이 빠르며 앱의 실제 응용 프로그램 화면과 정확히 일치하고 위젯이 진화 할 때에도 계속 될 것입니다.
[삼]나는 또한 우려의 올바른 분리 때문에 기능을 구현할 수있었습니다.
[삼]내가 여기서 의미하는 것을 보자. 🤔.
우려의 분리
[삼]소프트웨어 아키텍처를 설계하는 것은 엔지니어링 팀을위한 가장 복잡한 주제 중 하나입니다. 모든 책임 중에는 미래의 소프트웨어 진화를 예상하기가 항상 어렵습니다. 그래서 잘 계층적이고 분리 된 아키텍처를 만드는 이유는 많은 것을 통해 당신과 당신의 팀원을 도울 수 있습니다!
[삼]작은 분리 된 시스템을 만드는 주된 이점은 의심의 여지없이
테스트 빌리지
...에! 그리고 이것이 앱에서 기존 화면을 대안하는 데모를 만드는 데 도움이되는 것입니다!
단계별 가이드
[삼]이제 우리는 어떻게 그 원리를 펄럭이는 응용 프로그램에 적용 할 수 있습니까?
[삼]우리가 사용하는 몇 가지 기술을 공유 할 것입니다.
UDN 작업 관리자
간단한 연습 예제로.
[삼]이 예제는 너무 간단하지만 그 뒤에있는 모든 이점을 계몽시키지 못할 수도 있지만, 복잡한 코드 바이스로 훨씬 더 많은 유지 보수가 가능한 플러터 애플리케이션을 만드는 데 도움이 될 것입니다. 💡.
응용 프로그램
[삼]예를 들어, 매년 미국의 인구를 표시하는 응용 프로그램을 만들 것입니다.
[삼]~을 통해
UDN 작업 관리자
[삼]우리는 여기에 두 개의 화면이 있습니다 :
[삼]우리는 그 일에 집중할 것입니다
비동기 통화로 가장 흥미로운 이후 구현.
단계 1. 순진한 접근
[삼]우리 앱을위한 가장 확실한 구현은 단일을 사용하는 것입니다.
전체 논리를 위해.
[삼]요청한 연도에 액세스하려면 우리는 그를 읽었습니다
~로부터
상속 된 위젯.
[삼]이 예제는 다음을 호출합니다
함수로부터
패키지를 통해 데이터를 가져옵니다
DataUSA.IO API.
, 결과 JSON을 구문 분석합니다
그 첫 번째 방법
도서관, 유지
명명 된 재산이있는 국가의 일부로
...에
[삼]위젯 트리를 만들려면 A.를 사용하고 있습니다
현재의 현재 상태에 대해 자체적으로 재건하는 것
비동기 통화.
[삼]좋아요, 구현은 짧고 내장 된 위젯 만 사용하지만 이제이 화면의 데모 대안 (또는 테스트)을 빌드하는 초기 의도를 생각합니다. 응용 프로그램이 특정 상태로 렌더링되도록 강제하도록 HTTP 호출의 결과를 제어하는 것은 매우 어렵습니다.
[삼]그것이 그 개념이있는 곳입니다
통제의 반전
우리를 도울 것입니다. 🧐.
2 단계. 제어의 반전
[삼]이 원칙은 새로운 개발자들을 이해하기가 어려울 수 있습니다 (
또한 설명하기가 어렵습니다
), 그러나 전반적인 아이디어는 다음과 같습니다
우리 구성 요소 밖에서 우려를 추출하십시오
- 행동을 선택하고 대신 대리인을 위임 할 책임이 없습니다.
[삼]보다 일반적인 상황에서는 단순히 조각형을 만들고 구현을 구성 요소에 주입하여 필요할 경우 구현이 나중에 변경 될 수 있도록 구성됩니다.
[삼]그러나 걱정하지 마십시오. 다음 예제 후에 더 의미가 있습니다! 👀.
[삼]우리의 API에 대한 HTTP 호출을 제어하기 위해 우리는 우리의 구현을 전용으로 격리했습니다.
수업. 우리는 또한 A를 만들었습니다
데이터를 쉽게 조작하고 유지할 수있는 수업.
[삼]우리의 예를 위해 우리는 잘 알려진 것을 사용하고 있습니다.
공급자
A. 주사를위한 패키지
우리 나무의 뿌리의 인스턴스.
[삼]공급자는 모든 자손 위젯을 허용합니다
(
처럼
우리의
)
가장 가까운 것을 읽으십시오
나무에서 위쪽. 그런 다음 우리는 그것을 사용할 수 있습니다
우리의 시작 방법
실제 HTTP 구현 대신에.
[삼]이제 우리는 이것을 이용할 수 있습니다!
[삼]당신이 몰랐을 때 : 어떤 수업
DART에서는 관련 인터페이스를 암시 적으로 정의합니다
...에 이를 통해 우리는 대체 구현을 제공 할 수 있습니다
항상 그와 동일한 인스턴스를 반환합니다
메서드 호출.
[삼]이 방법
[삼]이제 우리는 이제 모든 키를 사용하여 데모 인스턴스를 표시합니다.
...에!
[삼]우리는 현재 제공된 것으로 간단히 무시됩니다
우리의 포장으로 인스턴스
A.를 만드는 공급자에서
대신 인스턴스!
[삼]그리고 그게 우리의 것입니다
대신이 데모 인스턴스를 읽고 우리를 사용합니다
HTTP 호출 대신 데이터.
[삼]이것은 훌륭한 예입니다
통제의 반전.
우리의
위젯은 데이터를 더 이상 가져 오는 논리에 대해 책임지지 만 전용 클라이언트 객체에 대신 해제합니다. 그리고 우리는 이제 화면의 데모 인스턴스를 만들거나 화면에 대한 위젯 테스트를 구현할 수 있습니다! 엄청난! 👏.
[삼]그러나 우리는 더 잘 할 수 있습니다!
[삼]예를 들어, 로딩 상태를 시뮬레이션 할 수 없으므로 위젯 수준에서 모든 상태 변화를 완벽하게 제어 할 수 없습니다.
3 단계. 주 관리
[삼]이것은 펄터의 뜨거운 주제입니다!
[삼]이미 선택하려고 노력하는 사람들의 긴 스레드를 이미 읽었을 것입니다.
최고의 주 관리
펄럭이있는 용액. 그리고 분명히, 그것은 우리 가이 기사에서 할 일이 아닙니다. 우리의 의견으로는 당신이 당신의 비즈니스 논리를 당신의 시각적 논리에서 분리하는 한, 당신은 괜찮습니다! 이러한 레이어를 만드는 것은 유지 보수성에 실제로 중요합니다. 우리의 예는 간단하지만 실제 응용 프로그램에서는 논리가 신속하게 복잡해질 수 있으며 그러한 분리는 순수한 논리 알고리즘을 훨씬 쉽게 찾을 수 있습니다. 이 주제는 종종대로 요약되어 있습니다
주 관리
...에
[삼]이 예에서는 기본을 사용하고 있습니다
A.
...에 그러나 우리는 또한 사용했을 수도 있습니다
Flutter_Bloc.
또는
riverpod.
(또는 다른 해결책)
, 그리고 그것은 훌륭하게 일했을 것입니다. 원칙은 동일하게 유지되며, 주와 논리를 구분하는 한, 다른 솔루션 중 하나에서 코드베이스를 포트 할 수 있습니다.
[삼]이 분리는 또한 우리가 가능한 모든 방법으로 그것을 조롱 할 수 있도록 위젯의 모든 상태를 제어하는 데 도움이됩니다!
[삼]그 대신에 의지하는 대신에
프레임 워크에서 우리는 이제 우리의 화면 상태를
물체.
[삼]또한이를 구현하는 것도 중요합니다
그리고
우리의 객체를 가치로 비교할 수있는 방법. 이를 통해 두 개의 인스턴스가 다른 것으로 간주되어야하는지 감지 할 수 있습니다.
[삼]
💡
균등 한
또는
얼어 붙은
패키지는 당신이 그것을 구현하는 데 도움이되는 훌륭한 옵션입니다
그리고
행동 양식!
[삼]우리의 상태는 항상 A를 연결합니다
그러나 우리는 또한 사용자에게 보여주고 싶은 것에 관한 네 가지 뚜렷한 가능한 상태를 가지고 있습니다.
[삼]그 상태는 AN보다 명확합니다
, 실제로 우리의 유스 케이스를 대표하기 때문에. 다시 한 번, 이것은 코드를 더욱 관리 만듭니다!
[삼]☐ 우리는 그를 추천합니다
동결 된 패키지의 유니온 유형
논리 상태를 나타 내기 위해! 그것은 그와 같은 많은 유틸리티를 추가합니다
또는
행동 양식.
[삼]이제 우리는 우리의 상태를 표현했기 때문에 우리는 어딘가에있는 인스턴스를 저장해야합니다.
...에 그것은 현재를 유지합니다
그것의 인스턴스
속성은 주를 업데이트하는 방법을 제공합니다.
[삼]우리는 A를 제공합니다
초기 상태 및 A.
그 중 데이터를로드하는 방법
현재를 업데이트하십시오
...에
[삼]우리 화면의 상태를 인스턴스화하고 관찰하기 위해 우리는 또한 공급자와 그
...에 이런 종류의 공급자는 자동으로 모든 것을 찾습니다
작성되고 재구성을 트리거합니다
변경 될 때마다 변경 사항이 통보됩니다
(알림 값이 이전의 것과 다르면).
[삼]엄청난! 우리의 애플리케이션 아키텍처는 꽤 좋은 보이기 시작합니다. 모든 것이 잘 정의 된 층으로 분리되며, 특정 관심사가 있습니다! 🤗.
[삼]한 가지는 여전히 테스트 가능성을 위해 누락되어 있지만, 우리는 현재를 정의하고자합니다.
연관된 상태를 제어합니다
...에
4 단계. 시각적 전용 레이아웃 위젯
[삼]마지막 단계에서 우리는 우리에게 약간의 책임을 지었다.
위젯 : 그 인스턴스를 인스턴스화 할 책임이 있습니다
...에 그리고 우리가 이전에 본 것과 마찬가지로 우리는 뷰 레이어에서 논리 책임을 피하려고 노력합니다!
[삼]우리는 화면 위젯을 위해 다른 레이어를 만들어 쉽게 해결할 수 있습니다.
위젯 두 개로 :
[삼]둘을 결합함으로써 우리는 단순히 창조 할 수 있습니다.
데모 / 테스트 인스턴스
우리 신청서의 실제 사용 사례.
[삼]더 나은 우려를 얻으려면 우리는 모든 것을
헌신적 인 위젯
위젯. 이 새로운 위젯은 데이터 만 소비하며 인스턴스화를 담당하지 않습니다. 읽기 상태를 특정 위젯 트리로 변환합니다.
[삼]그만큼
and
인스턴스는 그 남아 있습니다
그리고이 위젯은 단순히 반환합니다
사전 구성된 종속성 트리가 있습니다!
[삼]이러한 사소한 개선은 제공자 사용에만 해당됩니다. 그러나 우리는 또한 우리가
어떤 자손 위젯이 직접 소비 할 수 있습니다
...에 이렇게하면 데이터를 쉽게 조롱 할 수 있습니다.
[삼]헌신적 인 수업으로 위젯 트리를 추출하는 것을 주저하지 마십시오! 그것은 성능을 향상시키고 코드를보다 관리 만하면됩니다.
[삼]이 예에서는 연결된 상태 유형 중 하나에 대해 하나의 시각적 레이아웃 위젯을 만들었습니다.
[삼]이제 우리는 우리가 우리 화면에 모의하고 표시 할 수있는 것을 완전히 통제 할 수 있습니다!
[삼]우리는 단지 A를 랩해야합니다
A.와 함께
레이아웃 상태를 시뮬레이트합니다.
결론
[삼]관리 가능한 소프트웨어 아키텍처를 만드는 것은 쉽지 않습니다! 미래의 시나리오를 예상하는 것은 많은 노력을 요구할 수 있지만, 내가 공유 한 몇 가지 팁이 당신을 미래에 도울 것입니다!
[삼]예제는 간단하게 보일 수 있습니다. 우리가 과잉 엔지니어링처럼 보이지 않을 수도 있지만 앱의 복잡성이 커짐에 따라 이러한 표준이 많이 도움이 될 것입니다! 💪.
[삼]펄럭이있는 재미를 보내고 블로그를 따라보다 기술적 인 기사를 얻으십시오! 계속 튜닝!