웹 및 탐색 내역

도움이 되는 경우:)

사이트: https://web.flatteredwithflutter.com/#/
우리는 간략하게 소개할 것이다
  • 스토리지 탐색 경로
  • navigator Observers
  • 구현

    기사 내용:https://flatteredwithflutter.com/flutter-web-and-navigation-history/


    1. 스토리지 탐색 경로


    분명히 우리는 루트를 저장하는 데이터 구조가 필요하다. 
    사고 과정: 우리가 브라우저의 서로 다른 링크 사이를 내비게이션할 때, 마지막 링크는 통상적으로 첫 번째 트레이스된 링크이다(후퇴 단추를 누르십시오).
    웹 및 탐색 내역
    1 을 여러 개의 링크
  • 링크 A
  • 로 이동
  • 잠시 후 B
  • 를 링크하세요
  • 마지막으로 링크 C
  • 에 도달했습니다.
    (참고: 한 탭에만 있는 경우)
    소급에 관하여
    웹 및 탐색 내역
    이제 돌아가
  • 링크 C부터 거슬러 올라가기
  • 링크 B로 이동
  • 마지막으로 링크 A
  • 에 도달했습니다.
    (참고: 한 탭에만 있는 경우)
    올바르게 사용되는 데이터 구조는 창고입니다. 루트를 창고로 밀어넣고 팝업해야 하기 때문입니다. (이전 링크로 돌아갈 때)
    굴뚝 — 밀어내기, 팝업, 위쪽

    Dart에서 스택 구현


    연구를 할 때 나는 발견하였다
    dart:collection
    파일 기준:
    dart:core에서 지원하는 클래스와 유틸리티를 추가합니다.
    그러나 우연히 발견할 때까지 Stack이라는 명확한 집합을 찾지 못했다ListQueue
    목록 기반Queue.
    원소의 순환 버퍼를 유지하고 채울 때 더 큰 버퍼로 증가합니다.이것은 정해진 시간의peek와remove 조작, 그리고 정해진 시간의add 조작을 할당합니다.
    이 구조는 모든 대기열이나 창고에 유효하다.
    ListQueue를 사용하여 라우팅을 저장합니다.

    라우팅 저장을 위한 ListQueue 구현


    우선 일반적인 ListQueue를 위한 작업을 정의하는 추상적인 클래스를 만듭니다.
    추상 클래스_NavStack{
    void push(T val){}
    void pop(){}
    T 상단();
    ListfetchAll();
    void 지우기 {}
    }
    푸시: T라인 푸시
    팝업: 팝업 루트 (맨 위)
    맨 위: 맨 위에 있는 노선 가져오기
    fetchAll: 모든 라우트를 저장합니다.
    지우기: 저장된 노선 지우기
    위의 추상 클래스(\u NavStack)를 구현하는 클래스(NavStack)를 정의합니다.
    클래스 NavStack 구현 _NavStack{}
    목록 대기열을 초기화하여
    최종 ListQueue\u internal=ListQueue();

    항목 푸시 중


    목록 대기열의 addLast 기능을 사용하여 이 목록의 항목을 밀어냅니다.
    _ 내부.addLast("값");
    addLast: 끝에 항목을 추가합니다.모든 새 루트가 최신이기 때문에, 목록 대기열의 끝에 추가합니다.

    항목 팝업


    목록 대기열의 removeLast 기능을 사용하여 이 목록의 항목을 팝업합니다.
    _ 내부.removeLast();
    removeLast: 대기열의 마지막 요소를 삭제하고 되돌려줍니다. 

    맨 위 항목


    last 함수를 통해 이 목록 대기열의 맨 위 또는 최신 항목 가져오기
    _ 내부.마지막
    last: 마지막 (또는 맨 위) 요소를 되돌려줍니다.이것은 우리의 최신 노선이 항상 창고의 꼭대기에 있다는 것을 의미한다.

    항목 지우기 및 추출


    우리는 목록 대기열의 clear 기능을 사용하여 저장된 경로를 지울 것이다.
    항목을 가져오려면 목록의 길이를 훑어보고 항목을 새 목록에 추가하고 되돌려줍니다.
    ListfetchAll(){
    최종 목록 = [];
    (var i=0;i<길이;i++) {
    _ 목록입니다.추가(_internal.elementAt(i),
    }
    \u 목록으로 돌아가기;
    }

    2. 내비게이션 관측기 구현


    웹 및 탐색 내역(출력)
    우리는 이미 상술한 단계에서 목록 대기열을 실현했다.
    다음은 이 목록 대기열을 flatter 웹에 놓아야 합니다.
  • 새 노선을 밀어낼 때마다
  • 또한 NavStack 클래스
  • 에 추가해야 합니다.
    MaterialApp에는 navigatorObservers라는 속성이 있습니다.이것은 내부에서 Route Observer를 실현했다.

    라우팅 관찰 서버

    R 유형의 라우팅이 사용자 고유의 R 유형의 라우팅 위로 밀리거나 에서 꺼질 때마다 사용자에게 알립니다. 
  • 예를 들어 aRouteObserver<PageRoute>가 청약을 통지하는 RouteObservers
  • 사용자가 현재 페이지 경로에서 다른 페이지 경로로 이동할 때마다.
  • RouteObserver 클래스 내의 방법
  • didPop(플라이아웃할 때마다)
  • didPush(경로 밀어넣을 때마다)
  • 우리는 자신의 내비게이션 관찰기를 만들 것이다
  • RouteObserver 확장
  • 실현didPopdidPush 방법
  • 웹 및 탐색 내역
  • 에서 현재 화면 이름을 추출하여 NavStack 클래스로 전송합니다.이렇게 하면 하나의 노선을 전송할 때마다 그것도 우리의 클래스에 추가된다.
  • 마지막으로 이 사용자 정의 내비게이션 관찰기를 Material App의 속성에 추가합니다.
    재료 적용 반환(
    //기타 재산
    NavigatorObserver:[CustomRouteObserver()],
    );
    도움이 되는 경우:)
    RouteAware
    관리되는 URL:
    https://web.flatteredwithflutter.com/#/

    좋은 웹페이지 즐겨찾기