플러터 스트림을 열어 둘 수 있습니까?

Yudhishthir 싱

TL; DR : 스트림을 플러터로 열어 둘 수 있습니까?

측면 서랍이 메인 화면의 왼쪽에서 상단으로 미끄러지는 일반적인 UI와는 달리 다른 스타일의 앱 서랍이 필요한 특정 UI를 만들었습니다. 디자인은 전체 메인 화면이 오른쪽으로 이동하고 아래쪽에 사이드 바 역할을하는 레이어가있는 것과 비슷합니다.

명확하게 말하면 서랍이 화면 상단에 있고 움직이는 대신에, 그 반대가 내가 원하는 것이라고 생각하십시오. 메인 화면은 상단에, 서랍은 하단 (Z- 인덱스 기준)에 놓고 메인 화면이 움직이기를 원합니다.

내가 한 것은 앱 드로어와 메인 화면에 각각 하나씩 두 개의 위젯을 만들고 스택 위젯과 일부 애니메이션을 사용하여 작동하도록 만들었다는 것입니다. 사용자가 열고 자하는 화면에 대한 피드백을 등록하기 위해 스트림을 사용하여 사이드 바 위젯에서 기본 화면 위젯으로 데이터를 전달하고이를 기본 화면의 로컬 상태에 저장하고이를 기반으로 표시해야하는 모든 것을 보여줍니다. 그.

아래 코드를 첨부하고 있습니다.

이것은 UI가 작동하도록 스택 및 애니메이션을 사용하는 기본 파일입니다.

주 파일

이것은 내가 스트림을 사용하여 사용자의 피드백을 등록하고 메인 화면으로 보내는 방법입니다.

여기에 이미지 설명 입력

그리고 이것이 내가 피드백을 받고 어떤 페이지가 표시되어야하는지 보여주는 방법입니다.

여기에 이미지 설명 입력

내 스트림 / 블록 클래스는 다음과 같습니다.

여기에 이미지 설명 입력

My main question here is about the approach, is there any better way of doing it? I am asking that because I know streams are not supposed to be left open and that affects the app performance. But with this approach, I have to leave it open all the time as the user should be able to select the desired page at any given time.

Is it a normal practice to leave streams open in such scenarios, can you tell me some cases where streams have to be left open if such cases exist? (Eg. I think autosuggest/search-as-you-type might be using streams all the time, is it so?).

Apurv Jha

Yes, you can leave a stream open. but it will impact your app performance and in my opinion it's a complex approach for a simple callback action. Here's what i would do:

** in the Drawer's page: // add a callback parameter

final Function(Widget w) onItemTap;

// 서랍의 생성자에 콜백 추가

Drawer(this.onItemTap);

** The Drawer의 제스처 감지기에서 : // 항목을 탭할 때이 콜백을 서랍 페이지를 인스턴스화 한 페이지로 보냅니다.

onTap(){ widget.onItemTap( WidgetToShow() ) },

이제 메인 화면의 어느 곳에서나 드로어 클래스를 인스턴스화 할 때 다음과 같이 사용할 수있는 콜백 매개 변수가 있습니다.

Drawer( onItemTap:(Widget w){ 
// now you have your widget in the mainScreen, do as you want with it 
}  )

따라서 최종 서랍 / 메뉴 코드는 다음과 같습니다.

class Drawer extends StatefulWidget {
final Function(Widget w) onItemTap;
Drawer(this.onItemTap);
}
// ....
GestureDetector(
onTap: (){ return widget.onItemTap( WidgetToShow() ); },
),
// ...

다음은 기본 화면 코드입니다.

// ...
stack(
children:[
Drawer( onItemTap:(Widget w){ 
// now you have your widget in the mainScreen, do as you want with it 
}  ),
]
),
//...

도움이 된 희망 :)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CryptoStream이 기본 스트림을 열어 둘 수 있습니까?

분류에서Dev

qlikview에서 스크립트 창을 항상 열어 둘 수 있습니까?

분류에서Dev

노트북 덮개를 항상 열어 둘 수 있습니까?

분류에서Dev

프로그램이 종료 된 후 어떻게 그놈 터미널을 열어 둘 수 있습니까?

분류에서Dev

Powershell 시작 프로세스-창을 열어 둘 수 있습니까?

분류에서Dev

R 데이터 프레임의 열 이름을 비워 둘 수 있습니까?

분류에서Dev

디 플레이트 스트림과 deflateRaw 스트림을 어떻게 구별 할 수 있습니까?

분류에서Dev

POSIX sh로 어떻게 문자열을 둘로 나눌 수 있습니까?

분류에서Dev

Tweepy-API 세션을 얼마 동안 열어 둘 수 있습니까?

분류에서Dev

`suppressKotlinVersionCompatibilityCheck` 플래그를 어디에 둘 수 있습니까?

분류에서Dev

둘 이상의 zendform을 어떻게 채울 수 있습니까?

분류에서Dev

PHP를 사용하여 MySQL 데이터베이스에 액세스 할 때 연결을 열어 둘 수 있습니까?

분류에서Dev

stream.close가 둘러싸는 스트림을 닫습니까?

분류에서Dev

다중 쿼리 방법에 대해 JDBC 연결을 열어 둘 수 있습니까? (데이터베이스에 MySQL 사용)

분류에서Dev

DatePicker가 양식 내부에있을 때 어떻게 열어 둘 수 있습니까?

분류에서Dev

이 모양을 어떻게 플러터로 만들 수 있습니까?

분류에서Dev

MVC 컨트롤러 클래스에 둘 이상의 IEnumerable이있을 수 있습니까?

분류에서Dev

스트림 (문자열)을 어떻게 평가할 수 있습니까?

분류에서Dev

회사는 원격 유지 관리를 제공합니다. 구멍을 열어 둘 수 있습니까?

분류에서Dev

Maven은 $ {}로 둘러싸인 변수의 값을 어디에서 얻습니까?

분류에서Dev

추가 된 행 안에 빈 공간 / 열을 어떻게 남겨 둘 수 있습니까?

분류에서Dev

Pandas 데이터 프레임에서 데이터 스트림을 어떻게 만들 수 있습니까?

분류에서Dev

둘러보기의 시작하기 섹션에 언급 된대로 Couchdb 테스트 스위트를 어떻게 실행할 수 있습니까?

분류에서Dev

Android Studio에서 개별 종속성을 어디에 둘 수 있습니까?

분류에서Dev

에코 출력 사이에 빈 줄을 어떻게 둘 수 있습니까?

분류에서Dev

동시에 둘 이상의 언어로 OpenGL을 사용할 수 있습니까?

분류에서Dev

2sxc 데이터 스트림에서 무작위 항목을 어떻게 선택할 수 있습니까?

분류에서Dev

어떻게 스트림을 사용하여 이중 배열에서 비 INT 값을 필터링 할 수 있습니까?

분류에서Dev

SwiftUI 그리드를 둘러싼 공간을 축소 할 수 있습니까?

Related 관련 기사

  1. 1

    CryptoStream이 기본 스트림을 열어 둘 수 있습니까?

  2. 2

    qlikview에서 스크립트 창을 항상 열어 둘 수 있습니까?

  3. 3

    노트북 덮개를 항상 열어 둘 수 있습니까?

  4. 4

    프로그램이 종료 된 후 어떻게 그놈 터미널을 열어 둘 수 있습니까?

  5. 5

    Powershell 시작 프로세스-창을 열어 둘 수 있습니까?

  6. 6

    R 데이터 프레임의 열 이름을 비워 둘 수 있습니까?

  7. 7

    디 플레이트 스트림과 deflateRaw 스트림을 어떻게 구별 할 수 있습니까?

  8. 8

    POSIX sh로 어떻게 문자열을 둘로 나눌 수 있습니까?

  9. 9

    Tweepy-API 세션을 얼마 동안 열어 둘 수 있습니까?

  10. 10

    `suppressKotlinVersionCompatibilityCheck` 플래그를 어디에 둘 수 있습니까?

  11. 11

    둘 이상의 zendform을 어떻게 채울 수 있습니까?

  12. 12

    PHP를 사용하여 MySQL 데이터베이스에 액세스 할 때 연결을 열어 둘 수 있습니까?

  13. 13

    stream.close가 둘러싸는 스트림을 닫습니까?

  14. 14

    다중 쿼리 방법에 대해 JDBC 연결을 열어 둘 수 있습니까? (데이터베이스에 MySQL 사용)

  15. 15

    DatePicker가 양식 내부에있을 때 어떻게 열어 둘 수 있습니까?

  16. 16

    이 모양을 어떻게 플러터로 만들 수 있습니까?

  17. 17

    MVC 컨트롤러 클래스에 둘 이상의 IEnumerable이있을 수 있습니까?

  18. 18

    스트림 (문자열)을 어떻게 평가할 수 있습니까?

  19. 19

    회사는 원격 유지 관리를 제공합니다. 구멍을 열어 둘 수 있습니까?

  20. 20

    Maven은 $ {}로 둘러싸인 변수의 값을 어디에서 얻습니까?

  21. 21

    추가 된 행 안에 빈 공간 / 열을 어떻게 남겨 둘 수 있습니까?

  22. 22

    Pandas 데이터 프레임에서 데이터 스트림을 어떻게 만들 수 있습니까?

  23. 23

    둘러보기의 시작하기 섹션에 언급 된대로 Couchdb 테스트 스위트를 어떻게 실행할 수 있습니까?

  24. 24

    Android Studio에서 개별 종속성을 어디에 둘 수 있습니까?

  25. 25

    에코 출력 사이에 빈 줄을 어떻게 둘 수 있습니까?

  26. 26

    동시에 둘 이상의 언어로 OpenGL을 사용할 수 있습니까?

  27. 27

    2sxc 데이터 스트림에서 무작위 항목을 어떻게 선택할 수 있습니까?

  28. 28

    어떻게 스트림을 사용하여 이중 배열에서 비 INT 값을 필터링 할 수 있습니까?

  29. 29

    SwiftUI 그리드를 둘러싼 공간을 축소 할 수 있습니까?

뜨겁다태그

보관