Full Code of simplezhli/flutter_deer for AI

master 94d0620d2825 cached
347 files
1.5 MB
439.7k tokens
1169 symbols
1 requests
Download .txt
Showing preview only (1,674K chars total). Download the full file or copy to clipboard to get everything.
Repository: simplezhli/flutter_deer
Branch: master
Commit: 94d0620d2825
Files: 347
Total size: 1.5 MB

Directory structure:
gitextract_mfrrwjd0/

├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   └── deer-issue-template.md
│   └── workflows/
│       ├── flutter-drive.yml
│       └── flutter-web-deploy.yml
├── .gitignore
├── .metadata
├── LICENSE
├── README-EN.md
├── README.md
├── analysis_options.yaml
├── android/
│   ├── app/
│   │   ├── build.gradle
│   │   ├── key.properties
│   │   ├── proguard-rules.pro
│   │   ├── src/
│   │   │   ├── debug/
│   │   │   │   └── AndroidManifest.xml
│   │   │   ├── main/
│   │   │   │   ├── AndroidManifest.xml
│   │   │   │   ├── java/
│   │   │   │   │   └── com/
│   │   │   │   │       └── weilu/
│   │   │   │   │           └── deer/
│   │   │   │   │               ├── DeerPickerProvider.java
│   │   │   │   │               ├── FileProvider7.java
│   │   │   │   │               ├── InstallAPKPlugin.java
│   │   │   │   │               ├── MainActivity.java
│   │   │   │   │               └── MyApp.java
│   │   │   │   └── res/
│   │   │   │       ├── drawable/
│   │   │   │       │   └── launch_background.xml
│   │   │   │       ├── mipmap-anydpi-v26/
│   │   │   │       │   └── ic_launcher.xml
│   │   │   │       ├── values/
│   │   │   │       │   ├── colors.xml
│   │   │   │       │   └── styles.xml
│   │   │   │       ├── values-night/
│   │   │   │       │   └── colors.xml
│   │   │   │       ├── values-v27/
│   │   │   │       │   └── styles.xml
│   │   │   │       └── xml/
│   │   │   │           ├── file_paths.xml
│   │   │   │           └── network_security_config.xml
│   │   │   └── profile/
│   │   │       └── AndroidManifest.xml
│   │   └── test.jks
│   ├── build.gradle
│   ├── gradle/
│   │   └── wrapper/
│   │       └── gradle-wrapper.properties
│   ├── gradle.properties
│   └── settings.gradle
├── assets/
│   ├── data/
│   │   ├── bank.json
│   │   ├── bank_2.json
│   │   ├── city.json
│   │   ├── sort_0.json
│   │   ├── sort_1.json
│   │   └── sort_2.json
│   └── lottie/
│       └── bunny_new_mouth.json
├── devtools_options.yaml
├── docs/
│   ├── Android问题汇总.md
│   ├── CHANGELOG.md
│   ├── Web问题汇总.md
│   └── iOS问题汇总.md
├── integration_test/
│   ├── goods_test.dart
│   ├── integration_test.dart
│   └── login_test.dart
├── ios/
│   ├── .gitignore
│   ├── Flutter/
│   │   ├── AppFrameworkInfo.plist
│   │   ├── Debug.xcconfig
│   │   └── Release.xcconfig
│   ├── Podfile
│   ├── Runner/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── LaunchImage.imageset/
│   │   │   │   ├── Contents.json
│   │   │   │   └── README.md
│   │   │   └── flutter_dash_black.imageset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   └── Runner-Bridging-Header.h
│   ├── Runner.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       ├── IDEWorkspaceChecks.plist
│   │   │       └── WorkspaceSettings.xcsettings
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           └── Runner.xcscheme
│   ├── Runner.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       ├── IDEWorkspaceChecks.plist
│   │       └── WorkspaceSettings.xcsettings
│   └── RunnerTests/
│       └── RunnerTests.swift
├── l10n.yaml
├── lib/
│   ├── account/
│   │   ├── account_router.dart
│   │   ├── models/
│   │   │   ├── bank_entity.dart
│   │   │   ├── city_entity.dart
│   │   │   └── withdrawal_account_model.dart
│   │   ├── page/
│   │   │   ├── account_page.dart
│   │   │   ├── account_record_list_page.dart
│   │   │   ├── add_withdrawal_account_page.dart
│   │   │   ├── bank_select_page.dart
│   │   │   ├── city_select_page.dart
│   │   │   ├── withdrawal_account_list_page.dart
│   │   │   ├── withdrawal_account_page.dart
│   │   │   ├── withdrawal_page.dart
│   │   │   ├── withdrawal_password_page.dart
│   │   │   ├── withdrawal_record_list_page.dart
│   │   │   └── withdrawal_result_page.dart
│   │   └── widgets/
│   │       ├── rise_number_text.dart
│   │       ├── sms_verify_dialog.dart
│   │       ├── withdrawal_account_item.dart
│   │       └── withdrawal_password_setting.dart
│   ├── demo/
│   │   ├── demo_page.dart
│   │   ├── focus/
│   │   │   └── focus_demo_page.dart
│   │   ├── lottie/
│   │   │   ├── bunny.dart
│   │   │   └── lottie_demo.dart
│   │   ├── navigator/
│   │   │   ├── book_entity.dart
│   │   │   ├── books_app_state.dart
│   │   │   ├── books_main.dart
│   │   │   ├── delegate/
│   │   │   │   ├── inner_router_delegate.dart
│   │   │   │   └── router_delegate.dart
│   │   │   ├── parser/
│   │   │   │   └── route_information_parser.dart
│   │   │   └── screen/
│   │   │       ├── app_shell.dart
│   │   │       ├── book_details_screen.dart
│   │   │       ├── books_list_screen.dart
│   │   │       └── setting_screen.dart
│   │   ├── overlay/
│   │   │   ├── bottom_navigation/
│   │   │   │   └── my_bottom_navigation_bar.dart
│   │   │   ├── overlay_main.dart
│   │   │   ├── page/
│   │   │   │   ├── overlay_demo_page.dart
│   │   │   │   └── test_page.dart
│   │   │   └── route/
│   │   │       ├── application.dart
│   │   │       └── my_navigator_observer.dart
│   │   ├── ripple/
│   │   │   └── ripples_animation_page.dart
│   │   ├── scratcher/
│   │   │   └── scratch_card_demo_page.dart
│   │   └── widgets/
│   │       └── neumorphic.dart
│   ├── generated/
│   │   └── json/
│   │       ├── bank_entity.g.dart
│   │       ├── base/
│   │       │   ├── json_convert_content.dart
│   │       │   └── json_field.dart
│   │       ├── city_entity.g.dart
│   │       ├── goods_sort_entity.g.dart
│   │       ├── search_entity.g.dart
│   │       └── user_entity.g.dart
│   ├── goods/
│   │   ├── goods_router.dart
│   │   ├── models/
│   │   │   ├── goods_item_entity.dart
│   │   │   ├── goods_size_model.dart
│   │   │   └── goods_sort_entity.dart
│   │   ├── page/
│   │   │   ├── goods_edit_page.dart
│   │   │   ├── goods_list_page.dart
│   │   │   ├── goods_page.dart
│   │   │   ├── goods_search_page.dart
│   │   │   ├── goods_size_edit_page.dart
│   │   │   ├── goods_size_page.dart
│   │   │   └── qr_code_scanner_page.dart
│   │   ├── provider/
│   │   │   ├── goods_page_provider.dart
│   │   │   └── goods_sort_provider.dart
│   │   └── widgets/
│   │       ├── goods_add_menu.dart
│   │       ├── goods_delete_bottom_sheet.dart
│   │       ├── goods_item.dart
│   │       ├── goods_size_dialog.dart
│   │       ├── goods_sort_bottom_sheet.dart
│   │       ├── goods_sort_menu.dart
│   │       └── menu_reveal.dart
│   ├── home/
│   │   ├── home_page.dart
│   │   ├── provider/
│   │   │   └── home_provider.dart
│   │   ├── splash_page.dart
│   │   └── webview_page.dart
│   ├── l10n/
│   │   ├── deer_localizations.dart
│   │   ├── deer_localizations_en.dart
│   │   ├── deer_localizations_zh.dart
│   │   ├── intl_en.arb
│   │   └── intl_zh.arb
│   ├── login/
│   │   ├── login_router.dart
│   │   ├── page/
│   │   │   ├── login_page.dart
│   │   │   ├── register_page.dart
│   │   │   ├── reset_password_page.dart
│   │   │   ├── sms_login_page.dart
│   │   │   └── update_password_page.dart
│   │   └── widgets/
│   │       └── my_text_field.dart
│   ├── main.dart
│   ├── mvp/
│   │   ├── base_page.dart
│   │   ├── base_page_presenter.dart
│   │   ├── base_presenter.dart
│   │   ├── i_lifecycle.dart
│   │   ├── mvps.dart
│   │   └── power_presenter.dart
│   ├── net/
│   │   ├── base_entity.dart
│   │   ├── dio_utils.dart
│   │   ├── error_handle.dart
│   │   ├── http_api.dart
│   │   ├── intercept.dart
│   │   └── net.dart
│   ├── order/
│   │   ├── iview/
│   │   │   └── order_search_iview.dart
│   │   ├── models/
│   │   │   └── search_entity.dart
│   │   ├── order_router.dart
│   │   ├── page/
│   │   │   ├── order_info_page.dart
│   │   │   ├── order_list_page.dart
│   │   │   ├── order_page.dart
│   │   │   ├── order_search_page.dart
│   │   │   └── order_track_page.dart
│   │   ├── presenter/
│   │   │   └── order_search_presenter.dart
│   │   ├── provider/
│   │   │   ├── base_list_provider.dart
│   │   │   └── order_page_provider.dart
│   │   └── widgets/
│   │       ├── order_item.dart
│   │       ├── order_tag_item.dart
│   │       └── pay_type_dialog.dart
│   ├── res/
│   │   ├── colors.dart
│   │   ├── constant.dart
│   │   ├── dimens.dart
│   │   ├── gaps.dart
│   │   ├── resources.dart
│   │   └── styles.dart
│   ├── routers/
│   │   ├── fluro_navigator.dart
│   │   ├── i_router.dart
│   │   ├── not_found_page.dart
│   │   ├── routers.dart
│   │   └── web_page_transitions.dart
│   ├── setting/
│   │   ├── page/
│   │   │   ├── about_page.dart
│   │   │   ├── account_manager_page.dart
│   │   │   ├── locale_page.dart
│   │   │   ├── setting_page.dart
│   │   │   └── theme_page.dart
│   │   ├── provider/
│   │   │   ├── locale_provider.dart
│   │   │   └── theme_provider.dart
│   │   ├── setting_router.dart
│   │   └── widgets/
│   │       ├── exit_dialog.dart
│   │       └── update_dialog.dart
│   ├── shop/
│   │   ├── iview/
│   │   │   └── shop_iview.dart
│   │   ├── models/
│   │   │   ├── freight_config_model.dart
│   │   │   └── user_entity.dart
│   │   ├── page/
│   │   │   ├── freight_config_page.dart
│   │   │   ├── input_text_page.dart
│   │   │   ├── message_page.dart
│   │   │   ├── select_address_page.dart
│   │   │   ├── shop_page.dart
│   │   │   └── shop_setting_page.dart
│   │   ├── presenter/
│   │   │   └── shop_presenter.dart
│   │   ├── provider/
│   │   │   └── user_provider.dart
│   │   ├── shop_router.dart
│   │   └── widgets/
│   │       ├── pay_type_dialog.dart
│   │       ├── price_input_dialog.dart
│   │       ├── range_price_input_dialog.dart
│   │       └── send_type_dialog.dart
│   ├── statistics/
│   │   ├── page/
│   │   │   ├── goods_statistics_page.dart
│   │   │   ├── order_statistics_page.dart
│   │   │   └── statistics_page.dart
│   │   ├── statistics_router.dart
│   │   └── widgets/
│   │       └── selected_date.dart
│   ├── store/
│   │   ├── page/
│   │   │   ├── store_audit_page.dart
│   │   │   └── store_audit_result_page.dart
│   │   └── store_router.dart
│   ├── util/
│   │   ├── app_navigator.dart
│   │   ├── change_notifier_manage.dart
│   │   ├── date_utils.dart
│   │   ├── device_utils.dart
│   │   ├── handle_error_utils.dart
│   │   ├── image_utils.dart
│   │   ├── input_formatter/
│   │   │   ├── fix_ios_input_formatter.dart
│   │   │   └── number_text_input_formatter.dart
│   │   ├── log_utils.dart
│   │   ├── other_utils.dart
│   │   ├── screen_utils.dart
│   │   ├── theme_utils.dart
│   │   ├── toast_utils.dart
│   │   └── version_utils.dart
│   └── widgets/
│       ├── base_dialog.dart
│       ├── bezier_chart/
│       │   ├── bezier_chart.dart
│       │   ├── bezier_chart_config.dart
│       │   ├── bezier_chart_widget.dart
│       │   ├── bezier_line.dart
│       │   └── my_single_child_scroll_view.dart
│       ├── click_item.dart
│       ├── double_tap_back_exit_app.dart
│       ├── fractionally_aligned_sized_box.dart
│       ├── load_image.dart
│       ├── my_app_bar.dart
│       ├── my_button.dart
│       ├── my_card.dart
│       ├── my_flexible_space_bar.dart
│       ├── my_refresh_list.dart
│       ├── my_scroll_view.dart
│       ├── my_search_bar.dart
│       ├── pie_chart/
│       │   ├── pie_chart.dart
│       │   └── pie_data.dart
│       ├── popup_window.dart
│       ├── progress_dialog.dart
│       ├── selected_image.dart
│       ├── selected_item.dart
│       ├── state_layout.dart
│       └── text_field_item.dart
├── macos/
│   ├── .gitignore
│   ├── Flutter/
│   │   ├── Flutter-Debug.xcconfig
│   │   ├── Flutter-Release.xcconfig
│   │   └── GeneratedPluginRegistrant.swift
│   ├── Podfile
│   ├── Runner/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── MainMenu.xib
│   │   ├── Configs/
│   │   │   ├── AppInfo.xcconfig
│   │   │   ├── Debug.xcconfig
│   │   │   ├── Release.xcconfig
│   │   │   └── Warnings.xcconfig
│   │   ├── DebugProfile.entitlements
│   │   ├── Info.plist
│   │   ├── MainFlutterWindow.swift
│   │   └── Release.entitlements
│   ├── Runner.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   └── xcshareddata/
│   │   │       └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           └── Runner.xcscheme
│   └── Runner.xcworkspace/
│       ├── contents.xcworkspacedata
│       └── xcshareddata/
│           └── IDEWorkspaceChecks.plist
├── pubspec.yaml
├── shader/
│   ├── README.md
│   └── flutter_01.sksl.json
├── test/
│   ├── accessibility_test.dart
│   ├── account/
│   │   └── account_accessibility_test.dart
│   ├── goods/
│   │   └── goods_accessibility_test.dart
│   ├── login/
│   │   └── login_accessibility_test.dart
│   ├── net/
│   │   └── dio_test.dart
│   ├── order/
│   │   └── order_accessibility_test.dart
│   ├── setting/
│   │   └── setting_accessibility_test.dart
│   ├── shop/
│   │   └── shop_accessibility_test.dart
│   ├── statistics/
│   │   └── statistic_accessibility_test.dart
│   ├── store/
│   │   └── store_accessibility_test.dart
│   └── widget_test.dart
├── test_driver/
│   ├── account/
│   │   ├── account.dart
│   │   └── account_test.dart
│   ├── driver.dart
│   ├── driver_test.dart
│   ├── goods/
│   │   ├── goods.dart
│   │   └── goods_test.dart
│   ├── home/
│   │   ├── splash_page.dart
│   │   └── splash_page_test.dart
│   ├── login/
│   │   ├── login_page.dart
│   │   └── login_page_test.dart
│   ├── order/
│   │   ├── order.dart
│   │   └── order_test.dart
│   ├── setting/
│   │   ├── setting.dart
│   │   └── setting_test.dart
│   ├── shop/
│   │   ├── shop.dart
│   │   └── shop_test.dart
│   ├── statistic/
│   │   ├── statistic.dart
│   │   └── statistic_test.dart
│   ├── store/
│   │   ├── store.dart
│   │   └── store_test.dart
│   └── tools/
│       └── test_utils.dart
├── web/
│   ├── index.html
│   ├── index1.html
│   └── manifest.json
└── windows/
    ├── .gitignore
    ├── CMakeLists.txt
    ├── flutter/
    │   ├── CMakeLists.txt
    │   ├── generated_plugin_registrant.cc
    │   ├── generated_plugin_registrant.h
    │   └── generated_plugins.cmake
    └── runner/
        ├── CMakeLists.txt
        ├── Runner.rc
        ├── flutter_window.cpp
        ├── flutter_window.h
        ├── main.cpp
        ├── resource.h
        ├── run_loop.cpp
        ├── run_loop.h
        ├── runner.exe.manifest
        ├── utils.cpp
        ├── utils.h
        ├── win32_window.cpp
        └── win32_window.h

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: https://github.com/simplezhli/flutter_deer/blob/master/preview/jikeshijian.jpg


================================================
FILE: .github/ISSUE_TEMPLATE/deer-issue-template.md
================================================
---
name: deer issue template
about: 请确保使用最新的代码并详细阅读了readme和查找了已有的issue,避免提出重复的问题。
title: ''
labels: ''
assignees: ''

---

### 运行环境 ###

- [x] 电脑系统:如:`Windows 11`
- [x] 设备型号:如:`小米13`
- [x] 设备系统版本:如 `Android 13`
- [x] Flutter 版本:如 `3.13.0`

### 具体问题描述 ###

#### 问题截图 ####

#### 异常日志 ####


================================================
FILE: .github/workflows/flutter-drive.yml
================================================
# https://medium.com/flutter-community/run-flutter-driver-tests-on-github-actions-13c639c7e4ab
# https://github.com/nazarcybulskij/CI_CD_Flutter_Demo
# https://weilu.blog.csdn.net/article/details/114744416
# Name of your workflow.
name: flutter_deer driver

# Trigger the workflow on push or pull request.
on: [push, pull_request]

# A workflow run is made up of one or more jobs.
jobs:
  # id of job, a string that is unique to the "jobs" node above.
  drive_ios:
    # Creates a build matrix for your jobs. You can define different
    # variations of an environment to run each job in.
    strategy:
      # A set of different configurations of the virtual environment.
      matrix:
        device:
          - "iPhone 17 Pro Max"
      # When set to true, GitHub cancels all in-progress jobs if any matrix job
      # fails.
      fail-fast: false
    # The type of machine to run the job on.
    runs-on: macos-latest
    # Contains a sequence of tasks.
    steps:
      # A name for your step to display on GitHub.
#      - name: "List all simulators"
#        run: "xcrun instruments -s"
#      - name: "Start Simulator"
#        run: |
#          UDID=$(
#            xcrun instruments -s |
#            awk \
#              -F ' *[][]' \
#              -v 'device=${{ matrix.device }}' \
#              '$1 == device { print $2 }'
#          )
#          xcrun simctl boot "${UDID:?No Simulator with this name found}"
      - name: "Start Simulator"
        # https://github.com/futureware-tech/simulator-action
        uses: futureware-tech/simulator-action@v2
        with:
          model: ${{ matrix.device }}
          erase_before_boot: true
          shutdown_after_job: true
      # The branch or tag ref that triggered the workflow will be checked out.
      # https://github.com/marketplace/actions/checkout
      - uses: actions/checkout@v3
      # Sets up a flutter environment.
      # https://github.com/marketplace/actions/flutter-action
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.41.0'
          channel: 'stable' # or: 'dev' or 'beta'
      - run: "flutter clean"
      - name: "Run Flutter Driver tests"
        run: "flutter drive --target=test_driver/driver.dart --no-enable-impeller" #https://github.com/flutter/flutter/issues/128391
        
  drive_android:
    # The type of machine to run the job on.
    runs-on: macos-latest
    # creates a build matrix for your jobs
    strategy:
      # set of different configurations of the virtual environment.
      matrix:
        api-level: [35]
        target: [google_apis]
    steps:
      - uses: actions/checkout@v3
      - name: set up JDK 17
        uses: actions/setup-java@v3
        with:
          distribution: "oracle"
          java-version: "17"
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.41.0'
          channel: 'stable' # or: 'dev' or 'beta'
      - name: "Run Flutter Driver tests"
        # GitHub Action for installing, configuring and running Android Emulators (work only Mac OS)
        # https://github.com/marketplace/actions/android-emulator-runner
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: ${{ matrix.api-level }}
          target: ${{ matrix.target }}
          arch: arm64-v8a
          profile: Nexus 6
          script: "flutter drive --target=test_driver/driver.dart"
          
  accessibility_test:
    #The type of machine to run the job on. [windows,macos, ubuntu , self-hosted]
    runs-on: macos-latest
    #sequence of tasks called
    steps:
      # The branch or tag ref that triggered the workflow will be checked out.
      # https://github.com/actions/checkout
      - uses: actions/checkout@v3
      # Setup a flutter environment.
      # https://github.com/marketplace/actions/flutter-action
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.41.0'
          channel: 'stable'
      - run: "flutter pub get"
      - name: "Run Flutter Accessibility Tests"
        run: "flutter test test/accessibility_test.dart"


================================================
FILE: .github/workflows/flutter-web-deploy.yml
================================================
name: flutter_deer web deploy

# push 提交中修改`pubspec.yaml`触发此workflow。
# 为了避免每次部署,这里使用一个不存在的文件名。
on:
  push:
    paths:
      - 'pubspec1.yaml'

jobs:
  web_build_and_deploy:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v2.3.1
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.35.1'
          channel: 'stable'
          architecture: x64
      - name: "Web Build 🔧"
        run: |
          flutter pub get
          flutter build web
      - name: "Web Deploy 🚀"
          # https://github.com/JamesIves/github-pages-deploy-action
        uses: JamesIves/github-pages-deploy-action@4.0.0
        with:
          token: '${{ secrets.GITHUB_TOKEN }}'
          branch: gh-pages
          folder: build/web

================================================
FILE: .gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
*.lock
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/app/.cxx

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*
**/ios/Flutter/flutter_export_environment.sh
**/ios/Flutter/.last_build_id

# Web related
lib/generated_plugin_registrant.dart

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
/ios/build/


================================================
FILE: .metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.

version:
  revision: "b45fa18946ecc2d9b4009952c636ba7e2ffbb787"
  channel: "stable"

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b45fa18946ecc2d9b4009952c636ba7e2ffbb787
      base_revision: b45fa18946ecc2d9b4009952c636ba7e2ffbb787
    - platform: ios
      create_revision: b45fa18946ecc2d9b4009952c636ba7e2ffbb787
      base_revision: b45fa18946ecc2d9b4009952c636ba7e2ffbb787

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README-EN.md
================================================
# Flutter Deer

<img src="preview/logo.jpg"/>

## English | [中文](README.md)

This project is an exercise in learning Flutter for personal growth and development.

To achieve specific design outcomes and meet the demands of daily development, one may employ the methods of configuring, modifying, combining pre-existing components, and customizing.

The design plans for this project can be found in the "design" directory. You may utilize these plans to practice with a specific goal in mind. Any implementation is solely based on personal comprehension and learning. Should there be any superior implementation strategies, I welcome the opportunity for discussion.

## Preview

Some of the page effects are as follows:

| ![](./preview/Screenshot_1.png)    |  ![](./preview/Screenshot_2.png)    | ![](./preview/Screenshot_3.png)   |  ![](./preview/Screenshot_4.png)   |
| :--------------------------------: | :---------------------------------: | :-------------------------------: | :-------------------------------:  |
| ![](./preview/Screenshot_5.png)    |  ![](./preview/Screenshot_6.png)    | ![](./preview/Screenshot_7.png)   |  ![](./preview/Screenshot_8.png)   |
| ![](./preview/Screenshot_9.png)    |  ![](./preview/Screenshot_10.png)   | ![](./preview/Screenshot_11.png)  |  ![](./preview/Screenshot_12.png)  |
| ![](./preview/Screenshot_13.png)   |  ![](./preview/Screenshot_14.png)   | ![](./preview/Screenshot_15.png)  |  ![](./preview/Screenshot_17.png)  |
| ![](./preview/Screenshot_18.png)   |  ![](./preview/Screenshot_19.png)   | ![](./preview/Screenshot_20.png)  |  ![](./preview/Screenshot_21.png)  |
| ![](./preview/Screenshot_22.jpg)   |  ![](./preview/Screenshot_23.jpg)   | ![](./preview/Screenshot_24.jpg)  |  ![](./preview/Screenshot_25.jpg)  |
| ![](./preview/Screenshot_26.jpg)   |  ![](./preview/Screenshot_27.jpg)   | ![](./preview/lottie.gif)         |  |

**If you find this project satisfactory, kindly show your support by giving it a Star or Fork. Rest assured, this project is being continuously maintained and any issues can be brought to our attention by submitting an Issue.**

## Realizing the content.

* MVP pattern
* State management using `provider` (version 6.x)
* Network request encapsulation based on `dio` (version 5.x)
* Integration testing and accessibility testing
* Support for dark mode
* Localization(Thanks to @ghedwards)
* Implementation of complex scrolling effects using `Sliver` series components
* Location selection using AMap (supports Web)
* Encapsulation of common widgets handling
* Pull-to-refresh and load-more functionality
* Application update check
* PopupWindow
* QR code scanning functionality (using the qr_code_scanner plugin)
* Menu switching animations (circular expansion, 3D flip)
* Swipe-to-delete
* City selection
* Three-level linkage selection similar to JD's city selection
* Various custom dialogs
* Sticky header for lists
* Password input keyboard
* Verification code input box
* Custom simple calendar
* Line chart and [pie charts](https://dartpad.cn/d06f8f737d6eb2d87978eb2d14b87864)
* Modularized route management
* More demos (ripple animation, scratch card, lottie)
* More detailed optimizations

You may download and experience it specifically by accessing the following links:

For the Android version, kindly click on the link provided: [Download here](https://www.pgyer.com/oEm8me), and enter the password: `111111`.

As for iOS, you will need to download and run the code on your own.

For web experience, please visit: https://simplezhli.github.io/flutter_deer/

## The project's operational environment.

[![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml)

    1. Flutter version 3.41.0

    2. Dart version 3.11.0

## Precautions to be taken.

- In debug mode, there may be some lagging, which is considered a normal occurrence. A satisfactory experience requires the creation of a release package. To create a release version for iOS, execute the command `flutter build ios`. For Android, execute the command `flutter build apk`.

- If there are any issues with the project's execution, please refer to the [iOS issue summary](./docs/iOS问题汇总.md) and [Android issue summary](./docs/Android问题汇总.md) for possible solutions.

- Due to certain plugin limitations, this project is only available for preview on Windows and macOS. Those interested may run and experience it themselves.
        
- To view the functionality demonstration, execute the integration test command `flutter drive --target=test_driver/driver.dart`.

- Due to the abundance of pages, it may be difficult to match the design at first. However, I have added the relative path of the design in the code comments, which can be searched or located for the corresponding page. I hope this will be helpful to you.

- This project uses the [FlutterJsonBeanFactory](https://github.com/zhangruiyu/FlutterJsonBeanFactory) plugin to generate Beans.

- Web performance may be slower due to large resource files such as js and deployment on Github.

## Summary of Experience

- [Flutter开发中的一些Tips(一)](https://weilu.blog.csdn.net/article/details/90546727)

- [Flutter开发中的一些Tips(二)](https://weilu.blog.csdn.net/article/details/94849020)

- [Flutter开发中的一些Tips(三)](https://weilu.blog.csdn.net/article/details/100108123)

- [Flutter适配深色模式(DarkMode)](https://weilu.blog.csdn.net/article/details/102531559)

- [说说Flutter中的RepaintBoundary](https://weilu.blog.csdn.net/article/details/103452637)

- [说说Flutter中的Semantics](https://weilu.blog.csdn.net/article/details/103823259)

- [说说Flutter中最熟悉的陌生人 —— Key](https://weilu.blog.csdn.net/article/details/104745624)

- [说说Flutter中的无名英雄 —— Focus](https://weilu.blog.csdn.net/article/details/107132031)

- [Flutter性能优化实践 —— UI篇](https://weilu.blog.csdn.net/article/details/106046434)

- [玩玩Flutter的拖拽——实现一款万能遥控器](https://weilu.blog.csdn.net/article/details/105237677)

- [玩玩Flutter Web —— 实现高德地图插件](https://weilu.blog.csdn.net/article/details/106465792)

- [在GitHub Actions上进行Flutter 的测试和部署](https://weilu.blog.csdn.net/article/details/114744416)

- [Flutter动画曲线Curves 效果一览](https://weilu.blog.csdn.net/article/details/95632571)

- [Flutter状态管理之Riverpod](https://weilu.blog.csdn.net/article/details/108352306)

- [【译】正确操作Dart中的字符串](https://weilu.blog.csdn.net/article/details/107857569)

- [【译】学习Flutter中新的Navigator和Router系统](https://weilu.blog.csdn.net/article/details/108902282)
    
## Tripartite library used

| library                         | Functionality             |
| -------------------------- | --------------- |
| [dio](https://github.com/cfug/dio)                            | **Networking library**       |
| [provider](https://github.com/rrousselGit/provider)                   | **State management**     |
| [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap)      | **2D map from Amap**   |
| [cached_network_image](https://github.com/renefloor/flutter_cached_network_image)       | **Image loading**       |
| [fluro](https://github.com/theyakka/fluro)                            | **Routing management**     |
| [flutter_oktoast](https://github.com/OpenFlutter/flutter_oktoast)     | **Toast notifications**        |
| [common_utils](https://github.com/Sky24n/common_utils)                | **Common Dart utility library**     |
| [flutter_slidable](https://github.com/letsar/flutter_slidable)        | **Swipe-to-delete**     |
| [flustars](https://github.com/Sky24n/flustars)                        | **Common Flutter utility library**       |
| [flutter_swiper](https://github.com/best-flutter/flutter_swiper)      | **Flutter carousel component**       |
| [url_launcher](https://github.com/flutter/plugins/tree/master/packages/url_launcher)   | **Plugin for launching URLs**       |
| [image_picker](https://github.com/flutter/plugins/tree/master/packages/image_picker)   | **Plugin for selecting images** |
| [rxdart](https://github.com/ReactiveX/rxdart)                         | **Reactive extensions for Dart** |
| [webview_flutter](https://github.com/flutter/plugins/tree/master/packages/webview_flutter)    | **WebView plugin**       |
| [keyboard_actions](https://github.com/diegoveloper/flutter_keyboard_actions)                  | **Handling keyboard events**       |
| [azlistview](https://github.com/flutterchina/azlistview)              | **City selection list**   |
| [date_utils](https://github.com/apptreesoftware/date_utils)           | **Common date utility classes** |
| [bezier_chart](https://github.com/aeyrium/bezier-chart)               | **Bezier chart**       |
| [sprintf](https://github.com/Naddiseo/dart-sprintf)                   | **String formatting**   |
| [qr_code_scanner](https://github.com/juliuscanute/qr_code_scanner)     | **Scanning QR codes** |
| [intl](https://github.com/dart-lang/intl)     | **Localization** |
| [device_info_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus)     | **Getting device information** |
| [vibration](https://github.com/benjamindean/flutter_vibration)     | **Vibration** |
| [lottie](https://github.com/xvrh/lottie-flutter)     | **Animation effects** |

For details, please refer to the [pubspec.yaml](https://github.com/simplezhli/flutter_deer/blob/master/pubspec.yaml) file.  

## Plan:

* [x] Web support.

* [x] Migrate to null-safety.

* [ ] Migrate to Navigator 2.0.

## Thanks For

- [flutter_wanandroid](https://github.com/Sky24n/flutter_wanandroid)

## License

	Copyright 2019 simplezhli

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.


================================================
FILE: README.md
================================================
# Flutter Deer

<img src="preview/logo.jpg"/>

## [English](README-EN.md) | 中文

本项目为个人学习Flutter的练习项目。

通过设置、修改、组合自带部件以及自定义来实现具体的设计效果,满足日常开发的需求。

本项目设计图见design目录,你可以通过我提供的设计图有目标的去练习。所有的实现仅是个人的学习理解,如果有更好的实现方案欢迎交流。

## 预览

部分页面效果如下:

| ![](./preview/Screenshot_1.png)    |  ![](./preview/Screenshot_2.png)    | ![](./preview/Screenshot_3.png)   |  ![](./preview/Screenshot_4.png)   |
| :--------------------------------: | :---------------------------------: | :-------------------------------: | :-------------------------------:  |
| ![](./preview/Screenshot_5.png)    |  ![](./preview/Screenshot_6.png)    | ![](./preview/Screenshot_7.png)   |  ![](./preview/Screenshot_8.png)   |
| ![](./preview/Screenshot_9.png)    |  ![](./preview/Screenshot_10.png)   | ![](./preview/Screenshot_11.png)  |  ![](./preview/Screenshot_12.png)  |
| ![](./preview/Screenshot_13.png)   |  ![](./preview/Screenshot_14.png)   | ![](./preview/Screenshot_15.png)  |  ![](./preview/Screenshot_17.png)  |
| ![](./preview/Screenshot_18.png)   |  ![](./preview/Screenshot_19.png)   | ![](./preview/Screenshot_20.png)  |  ![](./preview/Screenshot_21.png)  |
| ![](./preview/Screenshot_22.jpg)   |  ![](./preview/Screenshot_23.jpg)   | ![](./preview/Screenshot_24.jpg)  |  ![](./preview/Screenshot_25.jpg)  |
| ![](./preview/Screenshot_26.jpg)   |  ![](./preview/Screenshot_27.jpg)   | ![](./preview/lottie.gif)         |  |

**觉得还可以的话,来个Star、Fork支持一波!本项目持续维护中,有问题欢迎提Issue。**

## 实现内容(已迁移到空安全)

* mvp模式
* 使用`provider` (6.x 版本)做状态管理
* 基于`dio` (5.x 版本)的网络请求封装
* 完整的集成测试、可访问性测试。
* 支持深色模式
* 本地化(感谢 @ghedwards)
* 使用`Sliver` 系列组件实现复杂滚动效果
* 使用高德地图定位选择地址(支持Web)
* 通用Widget的处理封装
* 下拉刷新 + 上拉加载更多
* 应用检查更新
* PopupWindow
* 扫码功能(qr_code_scanner插件)
* 菜单切换动画(圆形扩散、3D翻转)
* 侧滑删除
* 城市选择
* 类似京东选择城市的三级联动
* 各种自定义Dialog
* 列表头部吸顶
* 密码输入键盘
* 验证码输入框
* 自定义简易日历
* 曲线图及[饼状图](https://dartpad.cn/d06f8f737d6eb2d87978eb2d14b87864)
* 模块化路由管理
* 更多Demo(水波纹动画、刮刮卡、lottie)
* 更多的细节优化

具体可以下载体验:

Android版安装包:[点击去下载](https://github.com/simplezhli/flutter_deer/releases)。

iOS需要自行下载代码运行。

Web体验地址:https://simplezhli.github.io/flutter_deer/

## 项目运行环境

[![flutter_deer driver](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml/badge.svg?branch=master)](https://github.com/simplezhli/flutter_deer/actions/workflows/flutter-drive.yml)

    1. Flutter version 3.41.0

    2. Dart version 3.11.0

## 注意事项

- `debug`模式下会有部分卡顿现象,这属于正常现象。良好的体验需要打`release` 包。
    iOS可以执行命令`flutter build ios` 以创建`release`版本。
    Android可以执行命令`flutter build apk` 以创建`release`版本。

- 项目运行有问题可以在[iOS问题汇总](./docs/iOS问题汇总.md)、[Android问题汇总](./docs/Android问题汇总.md)中尝试寻找解决办法。

- 由于部分插件的原因,本项目在Windows、macOS仅做预览(主要为原生功能方面,UI问题不大)。有兴趣的可自行运行体验。

- 可以执行集成测试命令`flutter drive --target=test_driver/driver.dart` 查看功能演示。

- 因为页面有点多,一开始可能会导致页面无法与设计图对应上。我在代码注释中有添加设计图的相对路径,可以搜索或查找到对应页面,希望对你有帮助。

- 本项目使用[FlutterJsonBeanFactory](https://github.com/zhangruiyu/FlutterJsonBeanFactory)插件来生成Bean。

- Web受制于js等资源过大和部署在Github上,访问会慢一些。

## 心得总结(推荐阅读)

- [Flutter开发中的一些Tips(一)](https://weilu.blog.csdn.net/article/details/90546727)

- [Flutter开发中的一些Tips(二)](https://weilu.blog.csdn.net/article/details/94849020)

- [Flutter开发中的一些Tips(三)](https://weilu.blog.csdn.net/article/details/100108123)

- [Flutter适配深色模式(DarkMode)](https://weilu.blog.csdn.net/article/details/102531559)

- [说说Flutter中的RepaintBoundary](https://weilu.blog.csdn.net/article/details/103452637)

- [说说Flutter中的Semantics](https://weilu.blog.csdn.net/article/details/103823259)

- [说说Flutter中最熟悉的陌生人 —— Key](https://weilu.blog.csdn.net/article/details/104745624)

- [说说Flutter中的无名英雄 —— Focus](https://weilu.blog.csdn.net/article/details/107132031)

- [Flutter性能优化实践 —— UI篇](https://weilu.blog.csdn.net/article/details/106046434)

- [玩玩Flutter的拖拽——实现一款万能遥控器](https://weilu.blog.csdn.net/article/details/105237677)

- [玩玩Flutter Web —— 实现高德地图插件](https://weilu.blog.csdn.net/article/details/106465792)

- [在GitHub Actions上进行Flutter 的测试和部署](https://weilu.blog.csdn.net/article/details/114744416)

- [Flutter动画曲线Curves 效果一览](https://weilu.blog.csdn.net/article/details/95632571)

- [Flutter状态管理之Riverpod](https://weilu.blog.csdn.net/article/details/108352306)

- [【译】正确操作Dart中的字符串](https://weilu.blog.csdn.net/article/details/107857569)

- [【译】学习Flutter中新的Navigator和Router系统](https://weilu.blog.csdn.net/article/details/108902282)

- [【译】Flutter 2.2中的新功能](https://weilu.blog.csdn.net/article/details/117061293)

## 使用到的三方库

| 库                         | 功能             |
| -------------------------- | --------------- |
| [dio](https://github.com/cfug/dio)                            | **网络库**       |
| [provider](https://github.com/rrousselGit/provider)                   | **状态管理**     |
| [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap)      | **高德2D地图**   |
| [cached_network_image](https://github.com/renefloor/flutter_cached_network_image)       | **图片加载**       |
| [fluro](https://github.com/theyakka/fluro)                            | **路由管理**     |
| [flutter_oktoast](https://github.com/OpenFlutter/flutter_oktoast)     | **Toast**        |
| [common_utils](https://github.com/Sky24n/common_utils)                | **Dart 常用工具类库**     |
| [flutter_slidable](https://github.com/letsar/flutter_slidable)        | **侧滑删除**     |
| [flustars](https://github.com/Sky24n/flustars)                        | **Flutter 常用工具类库**       |
| [flutter_swiper](https://github.com/best-flutter/flutter_swiper)      | **Flutter 轮播组件**       |
| [url_launcher](https://github.com/flutter/plugins/tree/master/packages/url_launcher)   | **启动URL的插件**       |
| [image_picker](https://github.com/flutter/plugins/tree/master/packages/image_picker)   | **图片选择插件** |
| [rxdart](https://github.com/ReactiveX/rxdart)                         | **Dart的响应式扩展** |
| [webview_flutter](https://github.com/flutter/plugins/tree/master/packages/webview_flutter)    | **WebView插件**       |
| [keyboard_actions](https://github.com/diegoveloper/flutter_keyboard_actions)                  | **处理键盘事件**       |
| [azlistview](https://github.com/flutterchina/azlistview)              | **城市选择列表**   |
| [date_utils](https://github.com/apptreesoftware/date_utils)           | **常用的日期工具类** |
| [bezier_chart](https://github.com/aeyrium/bezier-chart)               | **曲线图表**       |
| [sprintf](https://github.com/Naddiseo/dart-sprintf)                   | **格式化String**   |
| [qr_code_scanner](https://github.com/juliuscanute/qr_code_scanner)     | **扫码功能** |
| [intl](https://github.com/dart-lang/intl)     | **本地化** |
| [device_info_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus)     | **获取设备信息** |
| [vibration](https://github.com/benjamindean/flutter_vibration)     | **振动** |
| [lottie](https://github.com/xvrh/lottie-flutter)     | **动画效果** |

详细内容可以参看[pubspec.yaml](https://github.com/simplezhli/flutter_deer/blob/master/pubspec.yaml)文件

## 后续计划:

* [x] 添加地图功能,具体实现插件见 [flutter_2d_amap](https://github.com/simplezhli/flutter_2d_amap)

* [x] 下拉刷新 + 上拉加载更多

* [x] 引入状态管理,预计使用 [provider](https://github.com/rrousselGit/provider)

* [x] 页面添加设计图路径注释,方便寻找对应的设计图。

* [x] 添加集成测试。

* [x] 深色模式支持。

* [x] 添加`Semantics`(语义)

* [x] Web端支持。

* [x] 迁移到空安全。(安装包减少135KB,10.3M -> 10.1M)

* [ ] 迁移至Navigator 2.0。

## 已知存在问题:

- 部分使用的到的三方库没有适配3.0.0,flutter_swiper(flutter_swiper_null_safety_flutter3替代)、flustars(flustars_flutter3替代)、azlistview(升级scrollable_positioned_list)。

- 3.10.0 已知存在问题(#105203 #113595)

- 2.0.0 已知存在问题(#68571 #73351 #74890 #79773 #79931)

- ListView在没有设置分割线的情况下,个别Item之间存在大约1像素的间隔([像素对齐问题](https://github.com/flutter/flutter/issues/14288))。

- 其他历史问题见docs目录下的问题汇总。

## Thanks For

- [flutter_wanandroid](https://github.com/Sky24n/flutter_wanandroid)

## License

	Copyright 2019 simplezhli

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.


================================================
FILE: analysis_options.yaml
================================================
# Specify analysis options.
#
# For a list of lints, see: https://dart.dev/tools/linter-rules
# For guidelines on configuring static analysis, see:
# https://dart.dev/tools/analysis
#
# There are other similar analysis options files in the flutter repos,
# which should be kept in sync with this file:
#
#   - analysis_options.yaml (this file)
#   - https://github.com/flutter/engine/blob/main/analysis_options.yaml
#   - https://github.com/flutter/packages/blob/main/analysis_options.yaml
#
# This file contains the analysis options used for code in the flutter/flutter
# repository.

analyzer:
  language:
    strict-casts: true
    strict-inference: true
    strict-raw-types: true
  errors:
    # allow deprecated members (we do this because otherwise we have to annotate
    # every member in every test, assert, etc, when we or the Dart SDK deprecates
    # something (https://github.com/flutter/flutter/issues/143312)
    deprecated_member_use: ignore
    deprecated_member_use_from_same_package: ignore
    # Turned off until null-safe rollout is complete.
#    unnecessary_null_comparison: ignore
  exclude:
    # the following two are relative to the stocks example and the flutter package respectively
    # see https://github.com/dart-lang/sdk/issues/28463
    - "lib/l10n/**"
    - "lib/generated/json/**"
    - "lib/widgets/bezier_chart/**"
#    - "test/**"
    - "test_driver/**"

formatter:
   page_width: 100

linter:
  rules:
    # This list is derived from the list of all available lints located at
    # https://github.com/dart-lang/sdk/blob/main/pkg/linter/example/all.yaml
    - always_declare_return_types
    - always_put_control_body_on_new_line
    # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
#    - always_specify_types
    # - always_use_package_imports # we do this commonly
    - annotate_overrides
    - annotate_redeclares
    # - avoid_annotating_with_dynamic # conflicts with always_specify_types
    - avoid_bool_literals_in_conditional_expressions
    # - avoid_catches_without_on_clauses # blocked on https://github.com/dart-lang/linter/issues/3023
    # - avoid_catching_errors # blocked on https://github.com/dart-lang/linter/issues/4998
#    - avoid_classes_with_only_static_members
    - avoid_double_and_int_checks
    - avoid_dynamic_calls
    - avoid_empty_else
    - avoid_equals_and_hash_code_on_mutable_classes
    - avoid_escaping_inner_quotes
    - avoid_field_initializers_in_const_classes
    # - avoid_final_parameters # incompatible with prefer_final_parameters
    - avoid_function_literals_in_foreach_calls
#    - avoid_implementing_value_types
    - avoid_init_to_null
    - avoid_js_rounded_ints
    # - avoid_multiple_declarations_per_line # seems to be a stylistic choice we don't subscribe to
    - avoid_null_checks_in_equality_operators
    # - avoid_positional_boolean_parameters # would have been nice to enable this but by now there's too many places that break it
    - avoid_print
    # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
    - avoid_redundant_argument_values
    - avoid_relative_lib_imports
    - avoid_renaming_method_parameters
    - avoid_return_types_on_setters
    - avoid_returning_null_for_void
    # - avoid_returning_this # there are enough valid reasons to return `this` that this lint ends up with too many false positives
    - avoid_setters_without_getters
    - avoid_shadowing_type_parameters
    - avoid_single_cascade_in_expression_statements
    - avoid_slow_async_io
    - avoid_type_to_string
    - avoid_types_as_parameter_names
    # - avoid_types_on_closure_parameters # conflicts with always_specify_types
    - avoid_unnecessary_containers
    - avoid_unused_constructor_parameters
    - avoid_void_async
    # - avoid_web_libraries_in_flutter # we use web libraries in web-specific code, and our tests prevent us from using them elsewhere
    - await_only_futures
    - camel_case_extensions
    - camel_case_types
    - cancel_subscriptions
    # - cascade_invocations # doesn't match the typical style of this repo
    - cast_nullable_to_non_nullable
    # - close_sinks # not reliable enough
    # - comment_references # blocked on https://github.com/dart-lang/linter/issues/1142
    - conditional_uri_does_not_exist
    # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204
    - control_flow_in_finally
    - curly_braces_in_flow_control_structures
    - depend_on_referenced_packages
    - deprecated_consistency
    # - diagnostic_describe_all_properties # enabled only at the framework level (packages/flutter/lib)
    - directives_ordering
    # - do_not_use_environment # there are appropriate times to use the environment, especially in our tests and build logic
    - empty_catches
    - empty_constructor_bodies
    - empty_statements
    - eol_at_end_of_file
    - exhaustive_cases
    - file_names
    - flutter_style_todos
    - hash_and_equals
    - implementation_imports
    - implicit_call_tearoffs
    - implicit_reopen
    - invalid_case_patterns
    - invalid_runtime_check_with_js_interop_types
    # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811
    # - join_return_with_assignment # not required by flutter style
    - leading_newlines_in_multiline_strings
    - library_names
    - library_prefixes
#    - library_private_types_in_public_api
    # - lines_longer_than_80_chars # required by flutter style
    - literal_only_boolean_expressions
    - missing_code_block_language_in_doc_comment
    - missing_whitespace_between_adjacent_strings
    - no_adjacent_strings_in_list
    - no_default_cases
    - no_duplicate_case_values
    - no_leading_underscores_for_library_prefixes
    - no_leading_underscores_for_local_identifiers
    - no_literal_bool_comparisons
    - no_logic_in_create_state
    - no_self_assignments
    - no_wildcard_variable_uses
    # - no_runtimeType_toString # ok in tests; we enable this only in packages/
    - non_constant_identifier_names
    - noop_primitive_operations
    - null_check_on_nullable_type_parameter
    - null_closures
    # - omit_local_variable_types # opposite of always_specify_types
    # - one_member_abstracts # too many false positives
    - only_throw_errors # this does get disabled in a few places where we have legacy code that uses strings et al
    - overridden_fields
    - package_names
    - package_prefixed_library_names
    # - parameter_assignments # we do this commonly
    - prefer_adjacent_string_concatenation
    - prefer_asserts_in_initializer_lists
    # - prefer_asserts_with_message # not required by flutter style
    - prefer_collection_literals
    - prefer_conditional_assignment
    - prefer_const_constructors
    - prefer_const_constructors_in_immutables
    - prefer_const_declarations
    - prefer_const_literals_to_create_immutables
    # - prefer_constructors_over_static_methods # far too many false positives
    - prefer_contains
    # - prefer_double_quotes # opposite of prefer_single_quotes
    # - prefer_expression_function_bodies # conflicts with ./docs/contributing/Style-guide-for-Flutter-repo.md#consider-using--for-short-functions-and-methods
    - prefer_final_fields
    - prefer_final_in_for_each
    - prefer_final_locals
    # - prefer_final_parameters # we should enable this one day when it can be auto-fixed (https://github.com/dart-lang/linter/issues/3104), see also parameter_assignments
    - prefer_for_elements_to_map_fromIterable
    - prefer_foreach
    - prefer_function_declarations_over_variables
    - prefer_generic_function_type_aliases
    - prefer_if_elements_to_conditional_expressions
    - prefer_if_null_operators
    - prefer_initializing_formals
    - prefer_inlined_adds
    # - prefer_int_literals # conflicts with ./docs/contributing/Style-guide-for-Flutter-repo.md#use-double-literals-for-double-constants
    - prefer_interpolation_to_compose_strings
    - prefer_is_empty
    - prefer_is_not_empty
    - prefer_is_not_operator
    - prefer_iterable_whereType
    # - prefer_mixin # Has false positives, see https://github.com/dart-lang/linter/issues/3018
    # - prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere
#    - prefer_relative_imports
    - prefer_single_quotes
    - prefer_spread_collections
    - prefer_typing_uninitialized_variables
    - prefer_void_to_null
    - provide_deprecation_message
    # - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml
    - recursive_getters
    # - require_trailing_commas # blocked on https://github.com/dart-lang/sdk/issues/47441
    - secure_pubspec_urls
    - sized_box_for_whitespace
    - sized_box_shrink_expand
    - slash_for_doc_comments
    - sort_child_properties_last
    - sort_constructors_first
    # - sort_pub_dependencies # prevents separating pinned transitive dependencies
    - sort_unnamed_constructors_first
    - test_types_in_equals
    - throw_in_finally
    - tighten_type_of_initializing_formals
    # - type_annotate_public_apis # subset of always_specify_types
    - type_init_formals
    - type_literal_in_constant_pattern
    # - unawaited_futures # too many false positives, especially with the way AnimationController works
    - unnecessary_await_in_return
    - unnecessary_brace_in_string_interps
    - unnecessary_const
    - unnecessary_constructor_name
    # - unnecessary_final # conflicts with prefer_final_locals
    - unnecessary_getters_setters
    # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498
    - unnecessary_late
    - unnecessary_library_directive
    # - unnecessary_library_name # blocked on blocked on https://github.com/dart-lang/dartdoc/issues/3882
    - unnecessary_new
    - unnecessary_null_aware_assignments
    - unnecessary_null_aware_operator_on_extension_on_nullable
    - unnecessary_null_checks
    - unnecessary_null_in_if_null_operators
    - unnecessary_nullable_for_final_variable_declarations
    - unnecessary_overrides
    - unnecessary_parenthesis
    # - unnecessary_raw_strings # what's "necessary" is a matter of opinion; consistency across strings can help readability more than this lint
    - unnecessary_statements
    - unnecessary_string_escapes
    - unnecessary_string_interpolations
    - unnecessary_this
    - unnecessary_to_list_in_spreads
    - unreachable_from_main
    - unrelated_type_equality_checks
    - use_build_context_synchronously
    - use_colored_box
    # - use_decorated_box # not yet tested
    - use_enums
    - use_full_hex_values_for_flutter_colors
    - use_function_type_syntax_for_parameters
    - use_if_null_to_convert_nulls_to_bools
    - use_is_even_rather_than_modulo
    - use_key_in_widget_constructors
    - use_late_for_private_fields_and_variables
    - use_named_constants
    - use_raw_strings
    - use_rethrow_when_possible
    - use_setters_to_change_properties
    - use_super_parameters
    # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182
    - use_test_throws_matchers
    # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
    - use_truncating_division
    - valid_regexps
    - void_checks

================================================
FILE: android/app/build.gradle
================================================
plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

def keystorePropertiesFile = rootProject.file("app/key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {
    compileSdkVersion 36
    ndkVersion = "28.2.13676358"
    defaultConfig {
        applicationId "com.weilu.deer"
        minSdkVersion flutter.minSdkVersion
        targetSdkVersion 35
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            // flutter build apk
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.release
            // https://github.com/flutter/flutter/issues/47462  #48015
            // #58967 gradle 4.0.0
            shrinkResources false
            zipAlignEnabled false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    namespace 'com.weilu.deer'
    lint {
        disable 'InvalidPackage'
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21"
}


================================================
FILE: android/app/key.properties
================================================
storePassword=111111
keyPassword=111111
keyAlias=key
storeFile=../app/test.jks

================================================
FILE: android/app/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

#定位
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.loc.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}

#搜索
-keep class com.amap.api.services.**{*;}

#2D地图
-keep class com.amap.api.maps2d.**{*;}
-keep class com.amap.api.mapcore2d.**{*;}

================================================
FILE: android/app/src/debug/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>


================================================
FILE: android/app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
    <uses-permission android:name="android.permission.INTERNET"/>


    <!-- Provide required visibility configuration for API level 30 and above -->
    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="https" />
        </intent>
        <intent>
            <action android:name="android.intent.action.DIAL" />
            <data android:scheme="tel" />
        </intent>
    </queries>

    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <application
        android:networkSecurityConfig="@xml/network_security_config"
        android:name=".MyApp"
        android:label="Flutter Deer"
        android:icon="@mipmap/ic_launcher">

        <activity
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:launchMode="singleTop"
            android:screenOrientation="portrait"
            android:name=".MainActivity"
            android:theme="@style/LaunchTheme"
            android:exported="true"
            android:windowSoftInputMode="adjustResize">

            <!-- Theme to apply as soon as Flutter begins rendering frames -->
            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme" />
            
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />

        <!-- 高德地图 -->
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="29017a09c0b0279853577be7df682513"/>

        <!-- 兼容7.0 -->
        <provider
            android:name=".DeerPickerProvider"
            android:authorities="${applicationId}.Deer"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"/>
        </provider>

        <meta-data android:name="android.max_aspect" android:value="2.4"/>
        <!-- 全屏使用刘海区域-->
        <!-- 华为 -->
        <meta-data android:name="android.notch_support" android:value="true" />
        <!-- 小米 Android O (https://dev.mi.com/console/doc/detail?pId=1341)-->
        <meta-data android:name="notch.config" android:value="portrait" />
        <!-- 其他品牌或系统版本使用官方方法,设置shortEdges-->

    </application>
</manifest>


================================================
FILE: android/app/src/main/java/com/weilu/deer/DeerPickerProvider.java
================================================
package com.weilu.deer;


import androidx.core.content.FileProvider;

/**
 * @author weilu
 * 作者:weilu on 2019/8/08 15:15
 */

public class DeerPickerProvider extends FileProvider {
}


================================================
FILE: android/app/src/main/java/com/weilu/deer/FileProvider7.java
================================================
package com.weilu.deer;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;

import java.io.File;

import androidx.core.content.FileProvider;

/**
 * @author weilu
 * 作者:weilu on 2017/6/20 14:44
 */

public class FileProvider7 {

    public static Uri getUriForFile(Context context, File file) {
        Uri fileUri = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            fileUri = getUriForFile24(context, file);
        } else {
            fileUri = Uri.fromFile(file);
        }
        return fileUri;
    }

    private static Uri getUriForFile24(Context context, File file) {
        return FileProvider.getUriForFile(context, context.getPackageName() + ".Deer", file);
    }

    public static void setIntentDataAndType(Context context, Intent intent, String type, File file, boolean writeAble) {
        
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            intent.setDataAndType(getUriForFile(context, file), type);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            if (writeAble) {
                intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            }
        } else {
            intent.setDataAndType(Uri.fromFile(file), type);
        }
    }
    
    public static void setIntentData(Context context, Intent intent, File file, boolean writeAble) {
        
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            intent.setData(getUriForFile(context, file));
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            if (writeAble) {
                intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            }
        } else {
            intent.setData(Uri.fromFile(file));
        }
    }
}


================================================
FILE: android/app/src/main/java/com/weilu/deer/InstallAPKPlugin.java
================================================
package com.weilu.deer;

import android.app.Activity;
import android.content.Intent;

import java.io.File;

import androidx.annotation.NonNull;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodChannel;

/**
 * @author weilu
 */
public class InstallAPKPlugin implements FlutterPlugin {
  
  private MethodChannel channel;
  private final Activity mActivity;

  public InstallAPKPlugin(Activity activity) {
    this.mActivity = activity;
  }

  @Override
  public void onAttachedToEngine(@NonNull FlutterPlugin.FlutterPluginBinding binding) {
    setupMethodChannel(binding.getBinaryMessenger());
  }

  @Override
  public void onDetachedFromEngine(@NonNull FlutterPlugin.FlutterPluginBinding binding) {
    tearDownChannel();
  }

  private void setupMethodChannel(BinaryMessenger messenger) {
    channel = new MethodChannel(messenger, "version");
    channel.setMethodCallHandler((methodCall, result) -> {
      if ("install".equals(methodCall.method)) {
        String path = methodCall.argument("path");
        openFile(path);
      } else {
        result.notImplemented();
      }
    });
  }

  /**
   * 安装 文件(APK)
   */
  private void openFile(String path) {
    Intent intents = new Intent();
    intents.setAction(Intent.ACTION_VIEW);
    intents.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    FileProvider7.setIntentDataAndType(mActivity, intents, "application/vnd.android.package-archive", new File(path), false);
    mActivity.startActivity(intents);
  }

  private void tearDownChannel() {
    channel.setMethodCallHandler(null);
    channel = null;
  }
}

================================================
FILE: android/app/src/main/java/com/weilu/deer/MainActivity.java
================================================
package com.weilu.deer;

import android.graphics.Color;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;

/**
 * @author weilu
 */
public class MainActivity extends FlutterActivity {

  @Override
  public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
    super.configureFlutterEngine(flutterEngine);
    flutterEngine.getPlugins().add(new InstallAPKPlugin(this));
  }

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    /// 设置状态栏透明,导航栏沉浸。
//    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    getWindow().setStatusBarColor(Color.TRANSPARENT);
  }
}


================================================
FILE: android/app/src/main/java/com/weilu/deer/MyApp.java
================================================
package com.weilu.deer;

import android.app.Application;


/**
 * @Description:
 * @Author: weilu
 * @Time: 2019/8/5 0005 17:08.
 */
public class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
    }
}


================================================
FILE: android/app/src/main/res/drawable/launch_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/bg_color" />

    <!-- You can insert your own image assets here -->
    <!-- <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/launch_image" />
    </item> -->
</layer-list>


================================================
FILE: android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/ic_launcher_background"/>
    <foreground android:drawable="@drawable/ic_launcher_foreground"/>
    <monochrome android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

================================================
FILE: android/app/src/main/res/values/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="bg_color">#FFFFFFFF</color>
</resources>

================================================
FILE: android/app/src/main/res/values/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <!-- Show a splash screen on the activity. Automatically removed when
             Flutter draws its first frame -->
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>

    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:navigationBarColor">@color/bg_color</item>
    </style>
</resources>


================================================
FILE: android/app/src/main/res/values-night/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="bg_color">#FF18191A</color>
</resources>

================================================
FILE: android/app/src/main/res/values-v27/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
        <!--无论是否全屏,都允许应用的内容延伸到刘海区域。为启动页设置-->
        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
    </style>
</resources>

================================================
FILE: android/app/src/main/res/xml/file_paths.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <paths>
        <root-path name="root" path="" />
        <files-path name="files" path="" />
        <cache-path name="cache" path="" />
        <external-path name="external" path="" />
        <external-files-path name="external_files" path="" />
        <external-cache-path name="external_cache" path="" />
    </paths>
</resources>

================================================
FILE: android/app/src/main/res/xml/network_security_config.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

================================================
FILE: android/app/src/profile/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>


================================================
FILE: android/build.gradle
================================================
allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

tasks.register("clean", Delete) {
    delete rootProject.buildDir
}


================================================
FILE: android/gradle/wrapper/gradle-wrapper.properties
================================================
#Sat Nov 23 15:18:48 CST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists


================================================
FILE: android/gradle.properties
================================================
android.useAndroidX=true
android.enableJetifier=true

# 提升编译速度配置 https://blog.csdn.net/weixin_33943347/article/details/91361727
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx3072m -XX:+UseParallelGC -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# 开启gradle缓存
org.gradle.caching=true

#开启 kotlin 的增量和并行编译
kotlin.incremental=true
kotlin.incremental.java=true
kotlin.incremental.js=true
kotlin.caching.enabled=true
kotlin.parallel.tasks.in.project=true
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

================================================
FILE: android/settings.gradle
================================================
pluginManagement {
    def flutterSdkPath = {
        def properties = new Properties()
        file("local.properties").withInputStream { properties.load(it) }
        def flutterSdkPath = properties.getProperty("flutter.sdk")
        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
        return flutterSdkPath
    }()

    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version '8.12.3' apply false
    id "org.jetbrains.kotlin.android" version "2.0.21" apply false
}

include ":app"

================================================
FILE: assets/data/bank.json
================================================
[
  {
    "id": 1,
    "bankName": "民生银行",
    "firstLetter": "M"
  },
  {
    "id": 2,
    "bankName": "工商银行",
    "firstLetter": "G"
  },
  {
    "id": 3,
    "bankName": "农业银行",
    "firstLetter": "N"
  },
  {
    "id": 4,
    "bankName": "中国银行",
    "firstLetter": "Z"
  },
  {
    "id": 5,
    "bankName": "建设银行",
    "firstLetter": "J"
  },
  {
    "id": 6,
    "bankName": "交通银行",
    "firstLetter": "J"
  },
  {
    "id": 7,
    "bankName": "中信银行",
    "firstLetter": "Z"
  },
  {
    "id": 8,
    "bankName": "招商银行",
    "firstLetter": "Z"
  },
  {
    "id": 9,
    "bankName": "兴业银行",
    "firstLetter": "X"
  },
  {
    "id": 10,
    "bankName": "浦发银行",
    "firstLetter": "P"
  },
  {
    "id": 16,
    "bankName": "光大银行",
    "firstLetter": "G"
  },
  {
    "id": 17,
    "bankName": "华夏银行",
    "firstLetter": "H"
  },
  {
    "id": 18,
    "bankName": "广发银行",
    "firstLetter": "G"
  },
  {
    "id": 19,
    "bankName": "平安银行",
    "firstLetter": "P"
  },
  {
    "id": 20,
    "bankName": "北京银行",
    "firstLetter": "B"
  },
  {
    "id": 43,
    "bankName": "上海银行",
    "firstLetter": "S"
  },
  {
    "id": 44,
    "bankName": "南京银行",
    "firstLetter": "N"
  },
  {
    "id": 48,
    "bankName": "杭州银行",
    "firstLetter": "H"
  },
  {
    "id": 49,
    "bankName": "宁波银行",
    "firstLetter": "N"
  },
  {
    "id": 54,
    "bankName": "浙江稠州商业银行",
    "firstLetter": "Z"
  },
  {
    "id": 83,
    "bankName": "汉口银行",
    "firstLetter": "H"
  },
  {
    "id": 84,
    "bankName": "长沙银行",
    "firstLetter": "C"
  },
  {
    "id": 116,
    "bankName": "浙商银行",
    "firstLetter": "Z"
  },
  {
    "id": 118,
    "bankName": "渤海银行",
    "firstLetter": "B"
  },
  {
    "id": 127,
    "bankName": "上海农商银行",
    "firstLetter": "S"
  },
  {
    "id": 128,
    "bankName": "北京农商行",
    "firstLetter": "B"
  },
  {
    "id": 143,
    "bankName": "中国邮储银行",
    "firstLetter": "Y"
  }
]

================================================
FILE: assets/data/bank_2.json
================================================
[
  {
    "id": 13035,
    "bankName": "西安市城南支行",
    "firstLetter": "X"
  },
  {
    "id": 13036,
    "bankName": "西安经济技术开发区支行",
    "firstLetter": "X"
  },
  {
    "id": 13037,
    "bankName": "西安市东新街支行",
    "firstLetter": "X"
  },
  {
    "id": 13038,
    "bankName": "西安南大街支行",
    "firstLetter": "X"
  },
  {
    "id": 13039,
    "bankName": "西安市解放路支行",
    "firstLetter": "X"
  },
  {
    "id": 13040,
    "bankName": "西安市太华路支行",
    "firstLetter": "X"
  },
  {
    "id": 13041,
    "bankName": "西安民乐园支行",
    "firstLetter": "X"
  },
  {
    "id": 13042,
    "bankName": "西安市东大街支行",
    "firstLetter": "X"
  },
  {
    "id": 13043,
    "bankName": "西安南院门支行",
    "firstLetter": "X"
  },
  {
    "id": 13044,
    "bankName": "西安东关支行",
    "firstLetter": "X"
  },
  {
    "id": 13045,
    "bankName": "西安和平路支行",
    "firstLetter": "X"
  },
  {
    "id": 13046,
    "bankName": "西安互助路支行",
    "firstLetter": "X"
  },
  {
    "id": 13047,
    "bankName": "西安市北大街支行",
    "firstLetter": "X"
  },
  {
    "id": 13048,
    "bankName": "西安西大街支行",
    "firstLetter": "X"
  },
  {
    "id": 13049,
    "bankName": "西安星火路支行",
    "firstLetter": "X"
  },
  {
    "id": 13050,
    "bankName": "西安市南关支行",
    "firstLetter": "X"
  },
  {
    "id": 13051,
    "bankName": "西安小寨支行",
    "firstLetter": "X"
  },
  {
    "id": 13052,
    "bankName": "西安雁塔路支行",
    "firstLetter": "X"
  },
  {
    "id": 13053,
    "bankName": "西安含光路支行",
    "firstLetter": "X"
  },
  {
    "id": 13054,
    "bankName": "西安铁路局支行",
    "firstLetter": "X"
  },
  {
    "id": 13055,
    "bankName": "西安电子工业区支行",
    "firstLetter": "X"
  },
  {
    "id": 13056,
    "bankName": "西安大雁塔支行",
    "firstLetter": "X"
  },
  {
    "id": 13057,
    "bankName": "西安市土门支行",
    "firstLetter": "X"
  },
  {
    "id": 13058,
    "bankName": "西安市纺织城支行",
    "firstLetter": "X"
  },
  {
    "id": 13059,
    "bankName": "西安市韩森寨支行",
    "firstLetter": "X"
  },
  {
    "id": 13060,
    "bankName": "西安咸宁路支行",
    "firstLetter": "X"
  },
  {
    "id": 13061,
    "bankName": "西安市韩森寨支行万寿路分理处",
    "firstLetter": "X"
  },
  {
    "id": 13062,
    "bankName": "西安市阎良区支行",
    "firstLetter": "X"
  },
  {
    "id": 13063,
    "bankName": "西安市周至县支行",
    "firstLetter": "X"
  },
  {
    "id": 13064,
    "bankName": "西安市户县支行",
    "firstLetter": "X"
  },
  {
    "id": 13065,
    "bankName": "西安市临潼区支行",
    "firstLetter": "X"
  },
  {
    "id": 13066,
    "bankName": "西安市高新技术开发区支行",
    "firstLetter": "X"
  },
  {
    "id": 13067,
    "bankName": "西安劳动南路支行",
    "firstLetter": "X"
  },
  {
    "id": 13068,
    "bankName": "西安市未央支行",
    "firstLetter": "X"
  },
  {
    "id": 13069,
    "bankName": "西安徐家湾支行",
    "firstLetter": "X"
  },
  {
    "id": 17731,
    "bankName": "西安莲湖路支行",
    "firstLetter": "X"
  },
  {
    "id": 17747,
    "bankName": "陕西省西安凤城八路分理处",
    "firstLetter": "S"
  },
  {
    "id": 17748,
    "bankName": "西安长乐中路支行",
    "firstLetter": "X"
  },
  {
    "id": 17749,
    "bankNumber": "102791013020",
    "bankName": "陕西省西安咸宁中路支行",
    "firstLetter": "S"
  },
  {
    "id": 17750,
    "bankName": "西安万寿南路分理处",
    "firstLetter": "X"
  },
  {
    "id": 17759,
    "bankName": "陕西省西安紫薇田园都市分理处",
    "firstLetter": "S"
  }
]

================================================
FILE: assets/data/city.json
================================================
[
  {
    "name": "阿拉善盟",
    "cityCode": "0483",
    "firstCharacter": "A"
  },
  {
    "name": "鞍山市",
    "cityCode": "0412",
    "firstCharacter": "A"
  },
  {
    "name": "安庆市",
    "cityCode": "0556",
    "firstCharacter": "A"
  },
  {
    "name": "安阳市",
    "cityCode": "0372",
    "firstCharacter": "A"
  },
  {
    "name": "阿坝藏族羌族自治州",
    "cityCode": "0837",
    "firstCharacter": "A"
  },
  {
    "name": "安顺市",
    "cityCode": "0853",
    "firstCharacter": "A"
  },
  {
    "name": "安康市",
    "cityCode": "0915",
    "firstCharacter": "A"
  },
  {
    "name": "阿克苏地区",
    "cityCode": "0997",
    "firstCharacter": "A"
  },
  {
    "name": "阿勒泰地区",
    "cityCode": "0906",
    "firstCharacter": "A"
  },
  {
    "name": "北京市",
    "cityCode": "010",
    "firstCharacter": "B"
  },
  {
    "name": "保定市",
    "cityCode": "0312",
    "firstCharacter": "B"
  },
  {
    "name": "包头市",
    "cityCode": "0472",
    "firstCharacter": "B"
  },
  {
    "name": "巴彦淖尔市",
    "cityCode": "0478",
    "firstCharacter": "B"
  },
  {
    "name": "本溪市",
    "cityCode": "0414",
    "firstCharacter": "B"
  },
  {
    "name": "白山市",
    "cityCode": "0439",
    "firstCharacter": "B"
  },
  {
    "name": "白城市",
    "cityCode": "0436",
    "firstCharacter": "B"
  },
  {
    "name": "蚌埠市",
    "cityCode": "0552",
    "firstCharacter": "B"
  },
  {
    "name": "亳州市",
    "cityCode": "0558",
    "firstCharacter": "B"
  },
  {
    "name": "滨州市",
    "cityCode": "0543",
    "firstCharacter": "B"
  },
  {
    "name": "北海市",
    "cityCode": "0779",
    "firstCharacter": "B"
  },
  {
    "name": "百色市",
    "cityCode": "0776",
    "firstCharacter": "B"
  },
  {
    "name": "巴中市",
    "cityCode": "0827",
    "firstCharacter": "B"
  },
  {
    "name": "毕节市",
    "cityCode": "0857",
    "firstCharacter": "B"
  },
  {
    "name": "保山市",
    "cityCode": "0875",
    "firstCharacter": "B"
  },
  {
    "name": "宝鸡市",
    "cityCode": "0917",
    "firstCharacter": "B"
  },
  {
    "name": "白银市",
    "cityCode": "0943",
    "firstCharacter": "B"
  },
  {
    "name": "博尔塔拉蒙古自治州",
    "cityCode": "0909",
    "firstCharacter": "B"
  },
  {
    "name": "巴音郭楞蒙古自治州",
    "cityCode": "0996",
    "firstCharacter": "B"
  },
  {
    "name": "承德市",
    "cityCode": "0314",
    "firstCharacter": "C"
  },
  {
    "name": "沧州市",
    "cityCode": "0317",
    "firstCharacter": "C"
  },
  {
    "name": "长治市",
    "cityCode": "0355",
    "firstCharacter": "C"
  },
  {
    "name": "赤峰市",
    "cityCode": "0476",
    "firstCharacter": "C"
  },
  {
    "name": "朝阳市",
    "cityCode": "0421",
    "firstCharacter": "C"
  },
  {
    "name": "长春市",
    "cityCode": "0431",
    "firstCharacter": "C"
  },
  {
    "name": "常州市",
    "cityCode": "0519",
    "firstCharacter": "C"
  },
  {
    "name": "滁州市",
    "cityCode": "0550",
    "firstCharacter": "C"
  },
  {
    "name": "池州市",
    "cityCode": "0566",
    "firstCharacter": "C"
  },
  {
    "name": "长沙市",
    "cityCode": "0731",
    "firstCharacter": "C"
  },
  {
    "name": "常德市",
    "cityCode": "0736",
    "firstCharacter": "C"
  },
  {
    "name": "潮州市",
    "cityCode": "0768",
    "firstCharacter": "C"
  },
  {
    "name": "崇左市",
    "cityCode": "0771",
    "firstCharacter": "C"
  },
  {
    "name": "重庆市",
    "cityCode": "023",
    "firstCharacter": "C"
  },
  {
    "name": "成都市",
    "cityCode": "028",
    "firstCharacter": "C"
  },
  {
    "name": "楚雄彝族自治州",
    "cityCode": "0878",
    "firstCharacter": "C"
  },
  {
    "name": "昌吉回族自治州",
    "cityCode": "0994",
    "firstCharacter": "C"
  },
  {
    "name": "嘉义市",
    "cityCode": "05",
    "firstCharacter": "C"
  },
  {
    "name": "彰化县",
    "cityCode": "04",
    "firstCharacter": "C"
  },
  {
    "name": "嘉义县",
    "cityCode": "05",
    "firstCharacter": "C"
  },
  {
    "name": "大同市",
    "cityCode": "0352",
    "firstCharacter": "D"
  },
  {
    "name": "大连市",
    "cityCode": "0411",
    "firstCharacter": "D"
  },
  {
    "name": "丹东市",
    "cityCode": "0415",
    "firstCharacter": "D"
  },
  {
    "name": "大庆市",
    "cityCode": "0459",
    "firstCharacter": "D"
  },
  {
    "name": "德州市",
    "cityCode": "0534",
    "firstCharacter": "D"
  },
  {
    "name": "东莞市",
    "cityCode": "0769",
    "firstCharacter": "D"
  },
  {
    "name": "德阳市",
    "cityCode": "0838",
    "firstCharacter": "D"
  },
  {
    "name": "达州市",
    "cityCode": "0818",
    "firstCharacter": "D"
  },
  {
    "name": "大理白族自治州",
    "cityCode": "0872",
    "firstCharacter": "D"
  },
  {
    "name": "德宏傣族景颇族自治州",
    "cityCode": "0692",
    "firstCharacter": "D"
  },
  {
    "name": "迪庆藏族自治州",
    "cityCode": "0887",
    "firstCharacter": "D"
  },
  {
    "name": "定西市",
    "cityCode": "0932",
    "firstCharacter": "D"
  },
  {
    "name": "鄂州市",
    "cityCode": "0711",
    "firstCharacter": "E"
  },
  {
    "name": "恩施土家族苗族自治州",
    "cityCode": "0718",
    "firstCharacter": "E"
  },
  {
    "name": "抚顺市",
    "cityCode": "024",
    "firstCharacter": "F"
  },
  {
    "name": "阜阳市",
    "cityCode": "0558",
    "firstCharacter": "F"
  },
  {
    "name": "福州市",
    "cityCode": "0591",
    "firstCharacter": "F"
  },
  {
    "name": "抚州市",
    "cityCode": "0794",
    "firstCharacter": "F"
  },
  {
    "name": "佛山市",
    "cityCode": "0757",
    "firstCharacter": "F"
  },
  {
    "name": "防城港市",
    "cityCode": "0770",
    "firstCharacter": "F"
  },
  {
    "name": "赣州市",
    "cityCode": "0797",
    "firstCharacter": "G"
  },
  {
    "name": "广州市",
    "cityCode": "020",
    "firstCharacter": "G"
  },
  {
    "name": "桂林市",
    "cityCode": "0773",
    "firstCharacter": "G"
  },
  {
    "name": "贵港市",
    "cityCode": "0775",
    "firstCharacter": "G"
  },
  {
    "name": "广元市",
    "cityCode": "0839",
    "firstCharacter": "G"
  },
  {
    "name": "广安市",
    "cityCode": "0826",
    "firstCharacter": "G"
  },
  {
    "name": "贵阳市",
    "cityCode": "0851",
    "firstCharacter": "G"
  },
  {
    "name": "甘南藏族自治州",
    "cityCode": "0941",
    "firstCharacter": "G"
  },
  {
    "name": "邯郸市",
    "cityCode": "0310",
    "firstCharacter": "H"
  },
  {
    "name": "衡水市",
    "cityCode": "0318",
    "firstCharacter": "H"
  },
  {
    "name": "呼和浩特市",
    "cityCode": "0471",
    "firstCharacter": "H"
  },
  {
    "name": "呼伦贝尔市",
    "cityCode": "0470",
    "firstCharacter": "H"
  },
  {
    "name": "兴安盟",
    "cityCode": "0482",
    "firstCharacter": "H"
  },
  {
    "name": "葫芦岛市",
    "cityCode": "0429",
    "firstCharacter": "H"
  },
  {
    "name": "哈尔滨市",
    "cityCode": "0451",
    "firstCharacter": "H"
  },
  {
    "name": "鹤岗市",
    "cityCode": "0468",
    "firstCharacter": "H"
  },
  {
    "name": "黑河市",
    "cityCode": "0456",
    "firstCharacter": "H"
  },
  {
    "name": "淮安市",
    "cityCode": "0517",
    "firstCharacter": "H"
  },
  {
    "name": "杭州市",
    "cityCode": "0571",
    "firstCharacter": "H"
  },
  {
    "name": "湖州市",
    "cityCode": "0572",
    "firstCharacter": "H"
  },
  {
    "name": "合肥市",
    "cityCode": "0551",
    "firstCharacter": "H"
  },
  {
    "name": "淮南市",
    "cityCode": "0554",
    "firstCharacter": "H"
  },
  {
    "name": "淮北市",
    "cityCode": "0561",
    "firstCharacter": "H"
  },
  {
    "name": "黄山市",
    "cityCode": "0559",
    "firstCharacter": "H"
  },
  {
    "name": "菏泽市",
    "cityCode": "0530",
    "firstCharacter": "H"
  },
  {
    "name": "鹤壁市",
    "cityCode": "0392",
    "firstCharacter": "H"
  },
  {
    "name": "黄石市",
    "cityCode": "0714",
    "firstCharacter": "H"
  },
  {
    "name": "黄冈市",
    "cityCode": "0713",
    "firstCharacter": "H"
  },
  {
    "name": "衡阳市",
    "cityCode": "0734",
    "firstCharacter": "H"
  },
  {
    "name": "怀化市",
    "cityCode": "0745",
    "firstCharacter": "H"
  },
  {
    "name": "海口市",
    "cityCode": "0898",
    "firstCharacter": "H"
  },
  {
    "name": "汉中市",
    "cityCode": "0916",
    "firstCharacter": "H"
  },
  {
    "name": "伊犁哈萨克自治州",
    "cityCode": "0999",
    "firstCharacter": "I"
  },
  {
    "name": "晋城市",
    "cityCode": "0356",
    "firstCharacter": "J"
  },
  {
    "name": "晋中市",
    "cityCode": "0354",
    "firstCharacter": "J"
  },
  {
    "name": "吉林市",
    "cityCode": "0432",
    "firstCharacter": "J"
  },
  {
    "name": "金华市",
    "cityCode": "0579",
    "firstCharacter": "J"
  },
  {
    "name": "济南市",
    "cityCode": "0531",
    "firstCharacter": "J"
  },
  {
    "name": "焦作市",
    "cityCode": "0391",
    "firstCharacter": "J"
  },
  {
    "name": "开封市",
    "cityCode": "0378",
    "firstCharacter": "K"
  },
  {
    "name": "昆明市",
    "cityCode": "0871",
    "firstCharacter": "K"
  },
  {
    "name": "克孜勒苏柯尔克孜自治州",
    "cityCode": "0908",
    "firstCharacter": "K"
  },
  {
    "name": "九龙",
    "cityCode": "00852",
    "firstCharacter": "K"
  },
  {
    "name": "临汾市",
    "cityCode": "0357",
    "firstCharacter": "L"
  },
  {
    "name": "丽水市",
    "cityCode": "0578",
    "firstCharacter": "L"
  },
  {
    "name": "临沂市",
    "cityCode": "0539",
    "firstCharacter": "L"
  },
  {
    "name": "洛阳市",
    "cityCode": "0379",
    "firstCharacter": "L"
  },
  {
    "name": "拉萨市",
    "cityCode": "0891",
    "firstCharacter": "L"
  },
  {
    "name": "牡丹江市",
    "cityCode": "0453",
    "firstCharacter": "M"
  },
  {
    "name": "马鞍山市",
    "cityCode": "0555",
    "firstCharacter": "M"
  },
  {
    "name": "茂名市",
    "cityCode": "0668",
    "firstCharacter": "M"
  },
  {
    "name": "南京市",
    "cityCode": "025",
    "firstCharacter": "N"
  },
  {
    "name": "南通市",
    "cityCode": "0513",
    "firstCharacter": "N"
  },
  {
    "name": "宁波市",
    "cityCode": "0574",
    "firstCharacter": "N"
  },
  {
    "name": "莆田市",
    "cityCode": "0594",
    "firstCharacter": "P"
  },
  {
    "name": "平顶山市",
    "cityCode": "0375",
    "firstCharacter": "P"
  },
  {
    "name": "衢州市",
    "cityCode": "0570",
    "firstCharacter": "Q"
  },
  {
    "name": "泉州市",
    "cityCode": "0595",
    "firstCharacter": "Q"
  },
  {
    "name": "青岛市",
    "cityCode": "0532",
    "firstCharacter": "Q"
  },
  {
    "name": "庆阳市",
    "cityCode": "0934",
    "firstCharacter": "Q"
  },
  {
    "name": "日照市",
    "cityCode": "0633",
    "firstCharacter": "R"
  },
  {
    "name": "石家庄市",
    "cityCode": "0311",
    "firstCharacter": "S"
  },
  {
    "name": "朔州市",
    "cityCode": "0349",
    "firstCharacter": "S"
  },
  {
    "name": "沈阳市",
    "cityCode": "024",
    "firstCharacter": "S"
  },
  {
    "name": "苏州市",
    "cityCode": "0512",
    "firstCharacter": "S"
  },
  {
    "name": "十堰市",
    "cityCode": "0719",
    "firstCharacter": "S"
  },
  {
    "name": "三沙市",
    "cityCode": "0898",
    "firstCharacter": "S"
  },
  {
    "name": "石嘴山市",
    "cityCode": "0952",
    "firstCharacter": "S"
  },
  {
    "name": "天津市",
    "cityCode": "022",
    "firstCharacter": "T"
  },
  {
    "name": "唐山市",
    "cityCode": "0315",
    "firstCharacter": "T"
  },
  {
    "name": "太原市",
    "cityCode": "0351",
    "firstCharacter": "T"
  },
  {
    "name": "台州市",
    "cityCode": "0576",
    "firstCharacter": "T"
  },
  {
    "name": "吐鲁番地区",
    "cityCode": "0995",
    "firstCharacter": "T"
  },
  {
    "name": "乌兰察布市",
    "cityCode": "0474",
    "firstCharacter": "W"
  },
  {
    "name": "乌鲁木齐市",
    "cityCode": "0991",
    "firstCharacter": "W"
  },
  {
    "name": "潍坊市",
    "cityCode": "0536",
    "firstCharacter": "W"
  },
  {
    "name": "威海市",
    "cityCode": "0631",
    "firstCharacter": "W"
  },
  {
    "name": "武汉市",
    "cityCode": "0022222",
    "firstCharacter": "W"
  },
  {
    "name": "邢台市",
    "cityCode": "0319",
    "firstCharacter": "X"
  },
  {
    "name": "忻州市",
    "cityCode": "0350",
    "firstCharacter": "X"
  },
  {
    "name": "信阳市",
    "cityCode": "0376",
    "firstCharacter": "X"
  },
  {
    "name": "阳泉市",
    "cityCode": "0353",
    "firstCharacter": "Y"
  },
  {
    "name": "运城市",
    "cityCode": "0359",
    "firstCharacter": "Y"
  },
  {
    "name": "营口市",
    "cityCode": "0417",
    "firstCharacter": "Y"
  },
  {
    "name": "宜昌市",
    "cityCode": "0717",
    "firstCharacter": "Y"
  },
  {
    "name": "岳阳市",
    "cityCode": "0730",
    "firstCharacter": "Y"
  },
  {
    "name": "玉溪市",
    "cityCode": "0877",
    "firstCharacter": "Y"
  },
  {
    "name": "舟山群岛新区",
    "cityCode": "0580",
    "firstCharacter": "Z"
  },
  {
    "name": "郑州市",
    "cityCode": "0371",
    "firstCharacter": "Z"
  },
  {
    "name": "肇庆市",
    "cityCode": "0758",
    "firstCharacter": "Z"
  },
  {
    "name": "张掖市",
    "cityCode": "0936",
    "firstCharacter": "Z"
  }
]

================================================
FILE: assets/data/sort_0.json
================================================
[
  {
    "id": "1",
    "name": "超市便利"
  },
  {
    "id": "2",
    "name": "生鲜果蔬"
  },
  {
    "id": "3",
    "name": "零食小吃"
  },
  {
    "id": "4",
    "name": "美食餐饮"
  },
  {
    "id": "5",
    "name": "鲜花烘培"
  },
  {
    "id": "6",
    "name": "生活服务"
  },
  {
    "id": "7",
    "name": "其他"
  },
  {
    "id": "8",
    "name": "综合"
  },
  {
    "id": "10",
    "name": "美容个护"
  },
  {
    "id": "11",
    "name": "家居生活"
  },
  {
    "id": "12",
    "name": "服饰箱包"
  },
  {
    "id": "13",
    "name": "母婴玩具"
  },
  {
    "id": "15",
    "name": "海淘进口"
  },
  {
    "id": "755",
    "name": "快递代收"
  },
  {
    "id": "756",
    "name": "食品保健"
  },
  {
    "id": "764",
    "name": "家居生活"
  },
  {
    "id": "769",
    "name": "米面杂粮"
  },
  {
    "id": "786",
    "name": "水果生鲜"
  },
  {
    "id": "807",
    "name": "社区健身"
  },
  {
    "id": "811",
    "name": "艺术礼品"
  },
  {
    "id": "814",
    "name": "今日特卖"
  },
  {
    "id": "816",
    "name": "周边旅游"
  },
  {
    "id": "820",
    "name": "家装建材"
  },
  {
    "id": "823",
    "name": "虚拟商品"
  },
  {
    "id": "14057",
    "name": "生活用品"
  },
  {
    "id": "14181",
    "name": "手机数码"
  }
]

================================================
FILE: assets/data/sort_1.json
================================================
[
  {
    "id": "15677",
    "name": "厨房用具"
  },
  {
    "id": "15690",
    "name": "精美餐具"
  },
  {
    "id": "15698",
    "name": "家纺"
  },
  {
    "id": "15717",
    "name": "家具"
  },
  {
    "id": "15740",
    "name": "灯具"
  },
  {
    "id": "15755",
    "name": "生活日用"
  },
  {
    "id": "15765",
    "name": "宠物用品"
  },
  {
    "id": "15773",
    "name": "家装建材"
  },
  {
    "id": "15795",
    "name": "赠品"
  },
  {
    "id": "15797",
    "name": "家装软饰"
  },
  {
    "id": "15814",
    "name": "收纳用品"
  },
  {
    "id": "26541",
    "name": "演出票务"
  },
  {
    "id": "26551",
    "name": "健康体检"
  },
  {
    "id": "26554",
    "name": "教育培训"
  },
  {
    "id": "26561",
    "name": "汽车保养"
  },
  {
    "id": "26563",
    "name": "影视会员"
  },
  {
    "id": "26565",
    "name": "摄影、摄像"
  }
]

================================================
FILE: assets/data/sort_2.json
================================================
[
  {
  "id": "15691",
  "name": "酒具/杯具"
  },
  {
    "id": "15692",
    "name": "水具"
  },
  {
    "id": "15693",
    "name": "筷勺/刀叉"
  },
  {
    "id": "15694",
    "name": "碗碟"
  },
  {
    "id": "15695",
    "name": "组合套装"
  },
  {
    "id": "15696",
    "name": "美食工具"
  },
  {
    "id": "15697",
    "name": "茶具/咖啡具"
  }
]

================================================
FILE: assets/lottie/bunny_new_mouth.json
================================================
{
  "assets": [],
  "layers": [
    {
      "ddd": 0,
      "ind": 0,
      "ty": 4,
      "nm": "left_hand_mask",
      "td": 1,
      "ks": {
        "o": {
          "k": 100
        },
        "r": {
          "k": 0
        },
        "p": {
          "k": [
            500,
            500,
            0
          ]
        },
        "a": {
          "k": [
            476.25,
            476.25,
            0
          ]
        },
        "s": {
          "k": [
            100,
            100,
            100
          ]
        }
      },
      "ao": 0,
      "shapes": [
        {
          "ty": "gr",
          "it": [
            {
              "ind": 0,
              "ty": "sh",
              "ks": {
                "k": {
                  "i": [
                    [
                      0,
                      262.888
                    ],
                    [
                      262.888,
                      0
                    ],
                    [
                      0,
                      -262.888
                    ],
                    [
                      -262.888,
                      0
                    ]
                  ],
                  "o": [
                    [
                      0,
                      -262.888
                    ],
                    [
                      -262.888,
                      0
                    ],
                    [
                      0,
                      262.888
                    ],
                    [
                      262.888,
                      0
                    ]
                  ],
                  "v": [
                    [
                      476,
                      0
                    ],
                    [
                      0,
                      -476
                    ],
                    [
                      -476,
                      0
                    ],
                    [
                      0,
                      476
                    ]
                  ],
                  "c": true
                }
              },
              "nm": "Path 1",
              "mn": "ADBE Vector Shape - Group"
            },
            {
              "ty": "fl",
              "fillEnabled": true,
              "c": {
                "k": [
                  0.62,
                  0.79,
                  0.81,
                  1
                ]
              },
              "o": {
                "k": 100
              },
              "nm": "Fill 1",
              "mn": "ADBE Vector Graphic - Fill"
            },
            {
              "ty": "tr",
              "p": {
                "k": [
                  476.25,
                  476.25
                ],
                "ix": 2
              },
              "a": {
                "k": [
                  0,
                  0
                ],
                "ix": 1
              },
              "s": {
                "k": [
                  100,
                  100
                ],
                "ix": 3
              },
              "r": {
                "k": 0,
                "ix": 6
              },
              "o": {
                "k": 100,
                "ix": 7
              },
              "sk": {
                "k": 0,
                "ix": 4
              },
              "sa": {
                "k": 0,
                "ix": 5
              },
              "nm": "Transform"
            }
          ],
          "nm": "Group 1",
          "np": 2,
          "mn": "ADBE Vector Group"
        }
      ],
      "ip": 0,
      "op": 78,
      "st": 0,
      "bm": 0,
      "sr": 1
    },
    {
      "ddd": 0,
      "ind": 1,
      "ty": 4,
      "nm": "hand_left",
      "tt": 1,
      "ks": {
        "o": {
          "k": 100
        },
        "r": {
          "k": 0
        },
        "p": {
          "k": [
            {
              "i": {
                "x": 0.69,
                "y": 1
              },
              "o": {
                "x": 1,
                "y": 0
              },
              "n": "0p69_1_1_0",
              "t": 29,
              "s": [
                208.794,
                1161.368,
                0
              ],
              "e": [
                312.794,
                745.368,
                0
              ],
              "to": [
                17.3333339691162,
                -69.3333358764648,
                0
              ],
              "ti": [
                -17.3333339691162,
                69.3333358764648,
                0
              ]
            },
            {
              "i": {
                "x": 0.21,
                "y": 0.21
              },
              "o": {
                "x": 1,
                "y": 1
              },
              "n": "0p21_0p21_1_1",
              "t": 39,
              "s": [
                312.794,
                745.368,
                0
              ],
              "e": [
                312.794,
                745.368,
                0
              ],
              "to": [
                0,
                0,
                0
              ],
              "ti": [
                0,
                0,
                0
              ]
            },
            {
              "i": {
                "x": 0.21,
                "y": 1
              },
              "o": {
                "x": 0.13,
                "y": 0
              },
              "n": "0p21_1_0p13_0",
              "t": 44,
              "s": [
                312.794,
                745.368,
                0
              ],
              "e": [
                208.794,
                1161.368,
                0
              ],
              "to": [
                -17.3333339691162,
                69.3333358764648,
                0
              ],
              "ti": [
                0,
                0,
                0
              ]
            },
            {
              "i": {
                "x": 0.667,
                "y": 1
              },
              "o": {
                "x": 0.13,
                "y": 0
              },
              "n": "0p667_1_0p13_0",
              "t": 54,
              "s": [
                208.794,
                1161.368,
                0
              ],
              "e": [
                312.794,
                745.368,
                0
              ],
              "to": [
                0,
                0,
                0
              ],
              "ti": [
                -17.3333339691162,
                69.3333358764648,
                0
              ]
            },
            {
              "i": {
                "x": 0.69,
                "y": 0.69
              },
              "o": {
                "x": 0.333,
                "y": 0.333
              },
              "n": "0p69_0p69_0p333_0p333",
              "t": 59,
              "s": [
                312.794,
                745.368,
                0
              ],
              "e": [
                312.794,
                745.368,
                0
              ],
              "to": [
                0,
                0,
                0
              ],
              "ti": [
                0,
                0,
                0
              ]
            },
            {
              "i": {
                "x": 0.69,
                "y": 1
              },
              "o": {
                "x": 0.86,
                "y": 0
              },
              "n": "0p69_1_0p86_0",
              "t": 67.904,
              "s": [
                312.794,
                745.368,
                0
              ],
              "e": [
                208.794,
                1161.368,
                0
              ],
              "to": [
                -17.3333339691162,
                69.3333358764648,
                0
              ],
              "ti": [
                17.3333339691162,
                -69.3333358764648,
                0
              ]
            },
            {
              "t": 76
            }
          ]
        },
        "a": {
          "k": [
            109.858,
            208.134,
            0
          ]
        },
        "s": {
          "k": [
            100,
            100,
            100
          ]
        }
      },
      "ao": 0,
      "shapes": [
        {
          "ty": "gr",
          "it": [
            {
              "ind": 0,
              "ty": "sh",
              "ks": {
                "k": {
                  "i": [
                    [
                      -0.087,
                      0.362
                    ],
                    [
                      -0.849,
                      3.519
                    ],
                    [
                      -1.155,
                      4.776
                    ],
                    [
                      -0.76,
                      3.148
                    ],
                    [
                      -1.315,
                      5.442
                    ],
                    [
                      -1.023,
                      4.221
                    ],
                    [
                      -1.171,
                      4.85
                    ],
                    [
                      -0.84,
                      3.481
                    ],
                    [
                      -1.157,
                      4.774
                    ],
                    [
                      -0.926,
                      3.814
                    ],
                    [
                      -1.17,
                      4.85
                    ],
                    [
                      -0.839,
                      3.482
                    ],
                    [
                      -1.158,
                      4.775
                    ],
                    [
                      -0.922,
                      3.814
                    ],
                    [
                      -1.154,
                      4.776
                    ],
                    [
                      -1.023,
                      4.22
                    ],
                    [
                      -1.17,
                      4.85
                    ],
                    [
                      -0.839,
                      3.481
                    ],
                    [
                      -1.158,
                      4.774
                    ],
                    [
                      -0.924,
                      3.814
                    ],
                    [
                      -1.171,
                      4.85
                    ],
                    [
                      -0.839,
                      3.481
                    ],
                    [
                      -1.156,
                      4.775
                    ],
                    [
                      -0.758,
                      3.149
                    ],
                    [
                      -1.37,
                      5.821
                    ],
                    [
                      -0.54,
                      5.338
                    ],
                    [
                      -0.42,
                      1.913
                    ],
                    [
                      0.047,
                      0.178
                    ],
                    [
                      0.021,
                      1.028
                    ],
                    [
                      0.052,
                      0.414
                    ],
                    [
                      0.518,
                      2.7
                    ],
                    [
                      1.959,
                      4.408
                    ],
                    [
                      1.197,
                      2.003
                    ],
                    [
                      2.498,
                      2.793
                    ],
                    [
                      2.407,
                      2.031
                    ],
                    [
                      3.596,
                      2.031
                    ],
                    [
                      3.788,
                      1.248
                    ],
                    [
                      4.518,
                      0.388
                    ],
                    [
                      2.353,
                      -0.169
                    ],
                    [
                      2.464,
                      -0.317
                    ],
                    [
                      2.752,
                      -0.768
                    ],
                    [
                      4.156,
                      -2.244
                    ],
                    [
                      3.729,
                      -3.237
                    ],
                    [
                      1.854,
                      -2.234
                    ],
                    [
                      2.259,
                      -4.752
                    ],
                    [
                      0.72,
                      -2.134
                    ],
                    [
                      0.626,
                      -2.636
                    ],
                    [
                      1.193,
                      -4.923
                    ],
                    [
                      1.681,
                      -7
                    ],
                    [
                      1.637,
                      -6.696
                    ],
                    [
                      1.23,
                      -5.228
                    ],
                    [
                      1.408,
                      -5.811
                    ],
                    [
                      1.766,
                      -7.293
                    ],
                    [
                      1.244,
                      -5.147
                    ],
                    [
                      1.426,
                      -5.886
                    ],
                    [
                      1.767,
                      -7.253
                    ],
                    [
                      0.872,
                      -3.591
                    ],
                    [
                      1.171,
                      -4.85
                    ],
                    [
                      0.831,
                      -3.443
                    ],
                    [
                      1.184,
                      -4.886
                    ],
                    [
                      0.907,
                      -3.739
                    ],
                    [
                      1.332,
                      -5.517
                    ],
                    [
                      0.838,
                      -3.481
                    ],
                    [
                      1.315,
                      -5.442
                    ],
                    [
                      0.686,
                      -2.797
                    ],
                    [
                      -40.643,
                      -16.932
                    ]
                  ],
                  "o": [
                    [
                      0.85,
                      -3.518
                    ],
                    [
                      1.152,
                      -4.776
                    ],
                    [
                      0.762,
                      -3.147
                    ],
                    [
                      1.314,
                      -5.443
                    ],
                    [
                      1.02,
                      -4.221
                    ],
                    [
                      1.176,
                      -4.848
                    ],
                    [
                      0.84,
                      -3.48
                    ],
                    [
                      1.151,
                      -4.775
                    ],
                    [
                      0.924,
                      -3.814
                    ],
                    [
                      1.176,
                      -4.848
                    ],
                    [
                      0.84,
                      -3.481
                    ],
                    [
                      1.151,
                      -4.776
                    ],
                    [
                      0.924,
                      -3.812
                    ],
                    [
                      1.155,
                      -4.775
                    ],
                    [
                      1.02,
                      -4.221
                    ],
                    [
                      1.175,
                      -4.849
                    ],
                    [
                      0.84,
                      -3.48
                    ],
                    [
                      1.152,
                      -4.775
                    ],
                    [
                      0.924,
                      -3.814
                    ],
                    [
                      1.177,
                      -4.848
                    ],
                    [
                      0.84,
                      -3.481
                    ],
                    [
                      1.152,
                      -4.776
                    ],
                    [
                      0.762,
                      -3.147
                    ],
                    [
                      1.399,
                      -5.813
                    ],
                    [
                      1.221,
                      -5.184
                    ],
                    [
                      0.195,
                      -1.936
                    ],
                    [
                      0.04,
                      -0.182
                    ],
                    [
                      -0.265,
                      -1.021
                    ],
                    [
                      -0.009,
                      -0.421
                    ],
                    [
                      -0.338,
                      -2.718
                    ],
                    [
                      -0.911,
                      -4.753
                    ],
                    [
                      -0.947,
                      -2.131
                    ],
                    [
                      -1.924,
                      -3.218
                    ],
                    [
                      -2.087,
                      -2.334
                    ],
                    [
                      -3.168,
                      -2.671
                    ],
                    [
                      -3.468,
                      -1.959
                    ],
                    [
                      -4.328,
                      -1.427
                    ],
                    [
                      -2.296,
                      -0.196
                    ],
                    [
                      -2.467,
                      0.177
                    ],
                    [
                      -2.844,
                      0.368
                    ],
                    [
                      -4.542,
                      1.269
                    ],
                    [
                      -4.358,
                      2.353
                    ],
                    [
                      -2.197,
                      1.908
                    ],
                    [
                      -3.354,
                      4.041
                    ],
                    [
                      -0.967,
                      2.035
                    ],
                    [
                      -0.865,
                      2.564
                    ],
                    [
                      -1.172,
                      4.929
                    ],
                    [
                      -1.696,
                      6.996
                    ],
                    [
                      -1.611,
                      6.703
                    ],
                    [
                      -1.276,
                      5.217
                    ],
                    [
                      -1.368,
                      5.821
                    ],
                    [
                      -1.766,
                      7.293
                    ],
                    [
                      -1.247,
                      5.146
                    ],
                    [
                      -1.424,
                      5.886
                    ],
                    [
                      -1.758,
                      7.256
                    ],
                    [
                      -0.874,
                      3.59
                    ],
                    [
                      -1.178,
                      4.848
                    ],
                    [
                      -0.832,
                      3.443
                    ],
                    [
                      -1.179,
                      4.888
                    ],
                    [
                      -0.905,
                      3.739
                    ],
                    [
                      -1.336,
                      5.516
                    ],
                    [
                      -0.841,
                      3.48
                    ],
                    [
                      -1.31,
                      5.444
                    ],
                    [
                      -0.676,
                      2.799
                    ],
                    [
                      34.022,
                      26.956
                    ],
                    [
                      0.087,
                      -0.362
                    ]
                  ],
                  "v": [
                    [
                      17.125,
                      196.379
                    ],
                    [
                      19.69,
                      185.829
                    ],
                    [
                      23.133,
                      171.498
                    ],
                    [
                      25.45,
                      162.064
                    ],
                    [
                      29.37,
                      145.732
                    ],
                    [
                      32.463,
                      133.076
                    ],
                    [
                      35.968,
                      118.525
                    ],
                    [
                      38.499,
                      108.085
                    ],
                    [
                      41.944,
                      93.755
                    ],
                    [
                      44.748,
                      82.322
                    ],
                    [
                      48.253,
                      67.771
                    ],
                    [
                      50.784,
                      57.331
                    ],
                    [
                      54.229,
                      43
                    ],
                    [
                      57.032,
                      31.568
                    ],
                    [
                      60.466,
                      17.234
                    ],
                    [
                      63.557,
                      4.579
                    ],
                    [
                      67.062,
                      -9.973
                    ],
                    [
                      69.591,
                      -20.413
                    ],
                    [
                      73.04,
                      -34.742
                    ],
                    [
                      75.841,
                      -46.176
                    ],
                    [
                      79.347,
                      -60.727
                    ],
                    [
                      81.876,
                      -71.167
                    ],
                    [
                      85.324,
                      -85.497
                    ],
                    [
                      87.637,
                      -94.933
                    ],
                    [
                      91.803,
                      -112.38
                    ],
                    [
                      95.063,
                      -128.023
                    ],
                    [
                      95.547,
                      -133.832
                    ],
                    [
                      95.546,
                      -134.402
                    ],
                    [
                      95.415,
                      -137.487
                    ],
                    [
                      95.409,
                      -138.749
                    ],
                    [
                      94.28,
                      -146.888
                    ],
                    [
                      89.919,
                      -160.601
                    ],
                    [
                      86.662,
                      -166.785
                    ],
                    [
                      80.106,
                      -175.871
                    ],
                    [
                      73.416,
                      -182.468
                    ],
                    [
                      63.265,
                      -189.504
                    ],
                    [
                      52.348,
                      -194.232
                    ],
                    [
                      39.068,
                      -197.004
                    ],
                    [
                      32.109,
                      -197.297
                    ],
                    [
                      24.709,
                      -196.721
                    ],
                    [
                      16.32,
                      -195.009
                    ],
                    [
                      3.285,
                      -189.717
                    ],
                    [
                      -8.791,
                      -181.263
                    ],
                    [
                      -14.825,
                      -174.988
                    ],
                    [
                      -23.31,
                      -161.822
                    ],
                    [
                      -25.88,
                      -155.575
                    ],
                    [
                      -28.075,
                      -147.761
                    ],
                    [
                      -31.685,
                      -132.998
                    ],
                    [
                      -36.743,
                      -112.002
                    ],
                    [
                      -41.57,
                      -91.892
                    ],
                    [
                      -45.367,
                      -76.234
                    ],
                    [
                      -49.575,
                      -58.795
                    ],
                    [
                      -54.878,
                      -36.917
                    ],
                    [
                      -58.609,
                      -21.478
                    ],
                    [
                      -62.883,
                      -3.82
                    ],
                    [
                      -68.164,
                      17.945
                    ],
                    [
                      -70.814,
                      28.708
                    ],
                    [
                      -74.32,
                      43.259
                    ],
                    [
                      -76.828,
                      53.586
                    ],
                    [
                      -80.358,
                      68.25
                    ],
                    [
                      -83.1,
                      79.462
                    ],
                    [
                      -87.092,
                      96.012
                    ],
                    [
                      -89.624,
                      106.451
                    ],
                    [
                      -93.542,
                      122.784
                    ],
                    [
                      -95.593,
                      131.176
                    ],
                    [
                      16.864,
                      197.466
                    ]
                  ],
                  "c": true
                }
              },
              "nm": "Path 1",
              "mn": "ADBE Vector Shape - Group"
            },
            {
              "ty": "fl",
              "fillEnabled": true,
              "c": {
                "k": [
                  0.94,
                  0.94,
                  0.94,
                  1
                ]
              },
              "o": {
                "k": 100
              },
              "nm": "Fill 1",
              "mn": "ADBE Vector Graphic - Fill"
            },
            {
              "ty": "tr",
              "p": {
                "k": [
                  108.871,
                  212.877
                ],
                "ix": 2
              },
              "a": {
                "k": [
                  0,
                  0
                ],
                "ix": 1
              },
              "s": {
                "k": [
                  100,
                  100
                ],
                "ix": 3
              },
              "r": {
                "k": 0,
                "ix": 6
              },
              "o": {
                "k": 100,
                "ix": 7
              },
              "sk": {
                "k": 0,
                "ix": 4
              },
              "sa": {
                "k": 0,
                "ix": 5
              },
              "nm": "Transform"
            }
          ],
          "nm": "Group 1",
          "np": 2,
          "mn": "ADBE Vector Group"
        },
        {
          "ty": "gr",
          "it": [
            {
              "ind": 0,
              "ty": "sh",
              "ks": {
                "k": {
                  "i": [
                    [
                      -2.786,
                      11.518
                    ],
                    [
                      -3.055,
                      12.631
                    ],
                    [
                      -3.136,
                      12.966
                    ],
                    [
                      -3.461,
                      14.304
                    ],
                    [
                      -3.307,
                      13.672
                    ],
                    [
                      -2.958,
                      12.223
                    ],
                    [
                      -2.635,
                      10.886
                    ],
                    [
                      -3.051,
                      12.632
                    ],
                    [
                      -0.322,
                      4.6
                    ],
                    [
                      -0.29,
                      0.427
                    ],
                    [
                      -0.07,
                      3.445
                    ],
                    [
                      0.031,
                      0.271
                    ],
                    [
                      -0.008,
                      0.346
                    ],
                    [
                      0.138,
                      1.291
                    ],
                    [
                      3.501,
                      7.461
                    ],
                    [
                      7.346,
                      6.858
                    ],
                    [
                      6.083,
                      3.294
                    ],
                    [
                      5.005,
                      1.469
                    ],
                    [
                      5.277,
                      0.165
                    ],
                    [
                      0.422,
                      0.008
                    ],
                    [
                      0.358,
                      0.007
                    ],
                    [
                      0.311,
                      0.236
                    ],
                    [
                      0,
                      0
                    ],
                    [
                      0.34,
                      -0.041
                    ],
                    [
                      0.303,
                      0.006
                    ],
                    [
                      0.426,
                      -0.167
                    ],
                    [
                      1.784,
                      -0.213
                    ],
                    [
                      4.574,
                      -1.424
                    ],
                    [
                      7.008,
                      -5.122
                    ],
                    [
                      5.118,
                      -7.737
                    ],
                    [
                      2.11,
                      -8.664
                    ],
                    [
                      2.446,
                      -10.105
                    ],
                    [
                      3.411,
                      -14.078
                    ],
                    [
                      2.887,
                      -11.923
                    ],
                    [
                      2.614,
                      -10.81
                    ],
                    [
                      3.056,
                      -12.63
                    ],
                    [
                      2.623,
                      -10.848
                    ],
                    [
                      3.468,
                      -14.34
                    ],
                    [
                      1.587,
                      -6.55
                    ],
                    [
                      -4.407,
                      -3.492
                    ],
                    [
                      -0.677,
                      2.799
                    ],
                    [
                      -1.31,
                      5.444
                    ],
                    [
                      -0.841,
                      3.48
                    ],
                    [
                      -1.337,
                      5.516
                    ],
                    [
                      -0.906,
                      3.739
                    ],
                    [
                      -1.18,
                      4.888
                    ],
                    [
                      -0.831,
                      3.443
                    ],
                    [
                      -1.178,
                      4.848
                    ],
                    [
                      -0.874,
                      3.59
                    ],
                    [
                      -1.758,
                      7.256
                    ],
                    [
                      -1.423,
                      5.887
                    ],
                    [
                      -1.246,
                      5.146
                    ],
                    [
                      -1.767,
                      7.293
                    ],
                    [
                      -1.369,
                      5.821
                    ],
                    [
                      -1.275,
                      5.217
                    ],
                    [
                      -1.61,
                      6.703
                    ],
                    [
                      -1.696,
                      6.996
                    ],
                    [
                      -1.172,
                      4.929
                    ],
                    [
                      -0.866,
                      2.564
                    ],
                    [
                      -0.967,
                      2.035
                    ],
                    [
                      -3.355,
                      4.041
                    ],
                    [
                      -2.197,
                      1.908
                    ],
                    [
                      -4.358,
                      2.353
                    ],
                    [
                      -4.543,
                      1.269
                    ],
                    [
                      -2.845,
                      0.367
                    ],
                    [
                      -2.467,
                      0.177
                    ],
                    [
                      -2.295,
                      -0.196
                    ],
                    [
                      -4.329,
                      -1.427
                    ],
                    [
                      -3.468,
                      -1.959
                    ],
                    [
                      -3.168,
                      -2.671
                    ],
                    [
                      -2.087,
                      -2.334
                    ],
                    [
                      -1.924,
                      -3.218
                    ],
                    [
                      -0.947,
                      -2.13
                    ],
                    [
                      -0.912,
                      -4.753
                    ],
                    [
                      -0.339,
                      -2.718
                    ],
                    [
                      -0.009,
                      -0.421
                    ],
                    [
                      -0.264,
                      -1.021
                    ],
                    [
                      0.04,
                      -0.182
                    ],
                    [
                      0.196,
                      -1.936
                    ],
                    [
                      1.221,
                      -5.184
                    ],
                    [
                      1.399,
                      -5.813
                    ],
                    [
                      0.761,
                      -3.148
                    ],
                    [
                      1.151,
                      -4.776
                    ],
                    [
                      0.841,
                      -3.48
                    ],
                    [
                      1.176,
                      -4.848
                    ],
                    [
                      0.924,
                      -3.814
                    ],
                    [
                      1.151,
                      -4.775
                    ],
                    [
                      0.839,
                      -3.48
                    ],
                    [
                      1.175,
                      -4.85
                    ],
                    [
                      1.02,
                      -4.221
                    ],
                    [
                      1.155,
                      -4.775
                    ],
                    [
                      0.924,
                      -3.813
                    ],
                    [
                      1.151,
                      -4.776
                    ],
                    [
                      0.84,
                      -3.481
                    ],
                    [
                      1.177,
                      -4.848
                    ],
                    [
                      0.925,
                      -3.814
                    ],
                    [
                      1.151,
                      -4.775
                    ],
                    [
                      0.84,
                      -3.48
                    ],
                    [
                      1.176,
                      -4.848
                    ],
                    [
                      1.02,
                      -4.22
                    ],
                    [
                      1.314,
                      -5.442
                    ],
                    [
                      0.762,
                      -3.147
                    ],
                    [
                      1.152,
                      -4.776
                    ],
                    [
                      0.85,
                      -3.518
                    ],
                    [
                      0.087,
                      -0.362
                    ],
                    [
                      -4.789,
                      -1.816
                    ],
                    [
                      0,
                      0
                    ]
                  ],
                  "o": [
                    [
                      3.055,
                      -12.632
                    ],
                    [
                      3.136,
                      -12.966
                    ],
                    [
                      3.461,
                      -14.304
                    ],
                    [
                      3.309,
                      -13.672
                    ],
                    [
                      2.957,
                      -12.222
                    ],
                    [
                      2.635,
                      -10.884
                    ],
                    [
                      3.058,
                      -12.631
                    ],
                    [
                      1.077,
                      -4.46
                    ],
                    [
                      0.214,
                      -0.44
                    ],
                    [
                      0.07,
                      -3.445
                    ],
                    [
                      -0.207,
                      -0.25
                    ],
                    [
                      0.007,
                      -0.346
                    ],
                    [
                      0.042,
                      -1.299
                    ],
                    [
                      -0.88,
                      -8.221
                    ],
                    [
                      -4.248,
                      -9.053
                    ],
                    [
                      -5.069,
                      -4.733
                    ],
                    [
                      -4.591,
                      -2.489
                    ],
                    [
                      -5.034,
                      -1.476
                    ],
                    [
                      -0.422,
                      -0.009
                    ],
                    [
                      -0.358,
                      -0.008
                    ],
                    [
                      -0.336,
                      -0.055
                    ],
                    [
                      0,
                      0
                    ],
                    [
                      -0.323,
                      0.224
                    ],
                    [
                      -0.303,
                      -0.007
                    ],
                    [
                      -0.433,
                      0.031
                    ],
                    [
                      -1.791,
                      0.153
                    ],
                    [
                      -4.754,
                      0.569
                    ],
                    [
                      -8.293,
                      2.582
                    ],
                    [
                      -7.495,
                      5.478
                    ],
                    [
                      -4.922,
                      7.439
                    ],
                    [
                      -2.461,
                      10.1
                    ],
                    [
                      -3.408,
                      14.078
                    ],
                    [
                      -2.888,
                      11.924
                    ],
                    [
                      -2.617,
                      10.811
                    ],
                    [
                      -3.054,
                      12.63
                    ],
                    [
                      -2.625,
                      10.847
                    ],
                    [
                      -3.467,
                      14.34
                    ],
                    [
                      -1.584,
                      6.55
                    ],
                    [
                      4.278,
                      3.642
                    ],
                    [
                      0.686,
                      -2.797
                    ],
                    [
                      1.315,
                      -5.442
                    ],
                    [
                      0.837,
                      -3.481
                    ],
                    [
                      1.333,
                      -5.517
                    ],
                    [
                      0.906,
                      -3.739
                    ],
                    [
                      1.183,
                      -4.886
                    ],
                    [
                      0.831,
                      -3.443
                    ],
                    [
                      1.172,
                      -4.85
                    ],
                    [
                      0.872,
                      -3.591
                    ],
                    [
                      1.766,
                      -7.254
                    ],
                    [
                      1.426,
                      -5.886
                    ],
                    [
                      1.245,
                      -5.146
                    ],
                    [
                      1.766,
                      -7.293
                    ],
                    [
                      1.407,
                      -5.811
                    ],
                    [
                      1.229,
                      -5.228
                    ],
                    [
                      1.637,
                      -6.696
                    ],
                    [
                      1.682,
                      -7
                    ],
                    [
                      1.194,
                      -4.923
                    ],
                    [
                      0.627,
                      -2.636
                    ],
                    [
                      0.72,
                      -2.134
                    ],
                    [
                      2.259,
                      -4.752
                    ],
                    [
                      1.854,
                      -2.234
                    ],
                    [
                      3.728,
                      -3.237
                    ],
                    [
                      4.156,
                      -2.244
                    ],
                    [
                      2.752,
                      -0.768
                    ],
                    [
                      2.464,
                      -0.317
                    ],
                    [
                      2.353,
                      -0.169
                    ],
                    [
                      4.518,
                      0.388
                    ],
                    [
                      3.787,
                      1.248
                    ],
                    [
                      3.597,
                      2.031
                    ],
                    [
                      2.408,
                      2.031
                    ],
                    [
                      2.498,
                      2.793
                    ],
                    [
                      1.198,
                      2.003
                    ],
                    [
                      1.96,
                      4.409
                    ],
                    [
                      0.517,
                      2.7
                    ],
                    [
                      0.051,
                      0.414
                    ],
                    [
                      0.022,
                      1.028
                    ],
                    [
                      0.047,
                      0.178
                    ],
                    [
                      -0.421,
                      1.913
                    ],
                    [
                      -0.54,
                      5.337
                    ],
                    [
                      -1.37,
                      5.82
                    ],
                    [
                      -0.757,
                      3.149
                    ],
                    [
                      -1.157,
                      4.775
                    ],
                    [
                      -0.839,
                      3.48
                    ],
                    [
                      -1.17,
                      4.851
                    ],
                    [
                      -0.925,
                      3.814
                    ],
                    [
                      -1.158,
                      4.774
                    ],
                    [
                      -0.84,
                      3.481
                    ],
                    [
                      -1.171,
                      4.85
                    ],
                    [
                      -1.023,
                      4.22
                    ],
                    [
                      -1.153,
                      4.776
                    ],
                    [
                      -0.922,
                      3.814
                    ],
                    [
                      -1.157,
                      4.775
                    ],
                    [
                      -0.839,
                      3.481
                    ],
                    [
                      -1.171,
                      4.85
                    ],
                    [
                      -0.925,
                      3.814
                    ],
                    [
                      -1.157,
                      4.774
                    ],
                    [
                      -0.839,
                      3.481
                    ],
                    [
                      -1.171,
                      4.85
                    ],
                    [
                      -1.023,
                      4.221
                    ],
                    [
                      -1.316,
                      5.443
                    ],
                    [
                      -0.761,
                      3.149
                    ],
                    [
                      -1.155,
                      4.775
                    ],
                    [
                      -0.848,
                      3.519
                    ],
                    [
                      -0.088,
                      0.362
                    ],
                    [
                      4.714,
                      1.964
                    ],
                    [
                      0,
                      0
                    ],
                    [
                      2.789,
                      -11.518
                    ]
                  ],
                  "v": [
                    [
                      41.848,
                      159.493
                    ],
                    [
                      51.007,
                      121.597
                    ],
                    [
                      60.422,
                      82.7
                    ],
                    [
                      70.799,
                      39.788
                    ],
                    [
                      80.73,
                      -1.226
                    ],
                    [
                      89.593,
                      -37.897
                    ],
                    [
                      97.511,
                      -70.549
                    ],
                    [
                      106.671,
                      -108.445
                    ],
                    [
                      109.181,
                      -121.959
                    ],
                    [
                      109.398,
                      -123.344
                    ],
                    [
                      109.608,
                      -133.679
                    ],
                    [
                      109.506,
                      -134.493
                    ],
                    [
                      109.527,
                      -135.532
                    ],
                    [
                      109.389,
                      -139.419
                    ],
                    [
                      102.719,
                      -162.942
                    ],
                    [
                      85.432,
                      -186.885
                    ],
                    [
                      68.712,
                      -198.905
                    ],
                    [
                      54.295,
                      -204.815
                    ],
                    [
                      38.875,
                      -207.592
                    ],
                    [
                      37.61,
                      -207.617
                    ],
                    [
                      36.536,
                      -207.639
                    ],
                    [
                      35.524,
                      -207.778
                    ],
                    [
                      31.62,
                      -207.857
                    ],
                    [
                      30.597,
                      -207.759
                    ],
                    [
                      29.688,
                      -207.778
                    ],
                    [
                      28.388,
                      -207.717
                    ],
                    [
                      23.015,
                      -207.247
                    ],
                    [
                      9.016,
                      -204.266
                    ],
                    [
                      -13.915,
                      -192.662
                    ],
                    [
                      -32.81,
                      -172.808
                    ],
                    [
                      -43.335,
                      -148.634
                    ],
                    [
                      -50.671,
                      -118.321
                    ],
                    [
                      -60.899,
                      -76.087
                    ],
                    [
                      -69.566,
                      -40.317
                    ],
                    [
                      -77.412,
                      -7.885
                    ],
                    [
                      -86.575,
                      30.007
                    ],
                    [
                      -94.456,
                      62.547
                    ],
                    [
                      -104.849,
                      105.568
                    ],
                    [
                      -109.608,
                      125.217
                    ],
                    [
                      -96.579,
                      135.919
                    ],
                    [
                      -94.528,
                      127.527
                    ],
                    [
                      -90.61,
                      111.194
                    ],
                    [
                      -88.079,
                      100.755
                    ],
                    [
                      -84.086,
                      84.205
                    ],
                    [
                      -81.344,
                      72.993
                    ],
                    [
                      -77.814,
                      58.329
                    ],
                    [
                      -75.307,
                      48.002
                    ],
                    [
                      -71.8,
                      33.451
                    ],
                    [
                      -69.15,
                      22.688
                    ],
                    [
                      -63.87,
                      0.923
                    ],
                    [
                      -59.596,
                      -16.736
                    ],
                    [
                      -55.865,
                      -32.174
                    ],
                    [
                      -50.561,
                      -54.052
                    ],
                    [
                      -46.353,
                      -71.491
                    ],
                    [
                      -42.557,
                      -87.149
                    ],
                    [
                      -37.73,
                      -107.259
                    ],
                    [
                      -32.672,
                      -128.255
                    ],
                    [
                      -29.062,
                      -143.018
                    ],
                    [
                      -26.866,
                      -150.832
                    ],
                    [
                      -24.296,
                      -157.079
                    ],
                    [
                      -15.811,
                      -170.245
                    ],
                    [
                      -9.777,
                      -176.52
                    ],
                    [
                      2.298,
                      -184.974
                    ],
                    [
                      15.334,
                      -190.266
                    ],
                    [
                      23.723,
                      -191.978
                    ],
                    [
                      31.122,
                      -192.554
                    ],
                    [
                      38.081,
                      -192.261
                    ],
                    [
                      51.362,
                      -189.489
                    ],
                    [
                      62.278,
                      -184.761
                    ],
                    [
                      72.429,
                      -177.725
                    ],
                    [
                      79.119,
                      -171.128
                    ],
                    [
                      85.675,
                      -162.042
                    ],
                    [
                      88.932,
                      -155.859
                    ],
                    [
                      93.294,
                      -142.145
                    ],
                    [
                      94.423,
                      -134.006
                    ],
                    [
                      94.428,
                      -132.744
                    ],
                    [
                      94.559,
                      -129.659
                    ],
                    [
                      94.561,
                      -129.089
                    ],
                    [
                      94.076,
                      -123.28
                    ],
                    [
                      90.817,
                      -107.637
                    ],
                    [
                      86.65,
                      -90.19
                    ],
                    [
                      84.338,
                      -80.754
                    ],
                    [
                      80.89,
                      -66.424
                    ],
                    [
                      78.36,
                      -55.985
                    ],
                    [
                      74.855,
                      -41.433
                    ],
                    [
                      72.053,
                      -29.999
                    ],
                    [
                      68.605,
                      -15.67
                    ],
                    [
                      66.076,
                      -5.23
                    ],
                    [
                      62.57,
                      9.322
                    ],
                    [
                      59.479,
                      21.977
                    ],
                    [
                      56.045,
                      36.311
                    ],
                    [
                      53.242,
                      47.743
                    ],
                    [
                      49.797,
                      62.074
                    ],
                    [
                      47.267,
                      72.514
                    ],
                    [
                      43.761,
                      87.065
                    ],
                    [
                      40.957,
                      98.498
                    ],
                    [
                      37.512,
                      112.828
                    ],
                    [
                      34.982,
                      123.268
                    ],
                    [
                      31.476,
                      137.819
                    ],
                    [
                      28.384,
                      150.474
                    ],
                    [
                      24.464,
                      166.806
                    ],
                    [
                      22.146,
                      176.241
                    ],
                    [
                      18.703,
                      190.572
                    ],
                    [
                      16.139,
                      201.122
                    ],
                    [
                      15.878,
                      202.209
                    ],
                    [
                      30.131,
                      207.884
                    ],
                    [
                      33.483,
                      194.044
                    ]
                  ],
                  "c": true
                }
              },
              "nm": "Path 1",
              "mn": "ADBE Vector Shape - Group"
            },
            {
              "ty": "fl",
              "fillEnabled": true,
              "c": {
                "k": [
                  1,
                  0.74,
                  0.75,
                  1
                ]
              },
              "o": {
                "k": 100
              },
              "nm": "Fill 1",
              "mn": "ADBE Vector Graphic - Fill"
            },
            {
              "ty": "tr",
              "p": {
                "k": [
                  109.858,
                  208.134
                ],
                "ix": 2
              },
              "a": {
                "k": [
                  0,
                  0
                ],
                "ix": 1
              },
              "s": {
                "k": [
                  100,
                  100
                ],
                "ix": 3
              },
              "r": {
                "k": 0,
                "ix": 6
              },
              "o": {
                "k": 100,
                "ix": 7
              },
              "sk": {
                "k": 0,
                "ix": 4
              },
              "sa": {
                "k": 0,
                "ix": 5
              },
              "nm": "Transform"
            }
          ],
          "nm": "Group 2",
          "np": 2,
          "mn": "ADBE Vector Group"
        }
      ],
      "ip": 0,
      "op": 78,
      "st": 0,
      "bm": 0,
      "sr": 1
    },
    {
      "ddd": 0,
      "ind": 2,
      "ty": 4,
      "nm": "right_hand_mask",
      "td": 1,
      "ks": {
        "o": {
          "k": 100
        },
        "r": {
          "k": 0
        },
        "p": {
          "k": [
            500,
            500,
            0
          ]
        },
        "a": {
          "k": [
            476.25,
            476.25,
            0
          ]
        },
        "s": {
          "k": [
            100,
            100,
            100
          ]
        }
      },
      "ao": 0,
      "shapes": [
        {
          "ty": "gr",
          "it": [
            {
              "ind": 0,
              "ty": "sh",
              "ks": {
                "k": {
                  "i": [
                    [
                      0,
                      262.888
                    ],
                    [
                      262.888,
                      0
                    ],
                    [
                      0,
                      -262.888
                    ],
                    [
                      -262.888,
                      0
                    ]
                  ],
                  "o": [
                    [
                      0,
                      -262.888
                    ],
                    [
                      -262.888,
                      0
                    ],
                    [
                      0,
                      262.888
                    ],
                    [
                      262.888,
                      0
                    ]
                  ],
                  "v": [
                    [
                      476,
                      0
                    ],
                    [
                      0,
                      -476
                    ],
                    [
                      -476,
                      0
                    ],
                    [
                      0,
                      476
                    ]
                  ],
                  "c": true
                }
              },
              "nm": "Path 1",
              "mn": "ADBE Vector Shape - Group"
            },
            {
              "ty": "fl",
              "fillEnabled": true,
              "c": {
                "k": [
                  0.62,
                  0.79,
                  0.81,
                  1
                ]
              },
              "o": {
                "k": 100
              },
              "nm": "Fill 1",
              "mn": "ADBE Vector Graphic - Fill"
            },
            {
              "ty": "tr",
              "p": {
                "k": [
                  476.25,
                  476.25
                ],
                "ix": 2
              },
              "a": {
                "k": [
                  0,
                  0
                ],
                "ix": 1
              },
              "s": {
                "k": [
                  100,
                  100
                ],
                "ix": 3
              },
              "r": {
                "k": 0,
                "ix": 6
              },
              "o": {
                "k": 100,
                "ix": 7
              },
              "sk": {
                "k": 0,
                "ix": 4
              },
              "sa": {
                "k": 0,
                "ix": 5
              },
              "nm": "Transform"
            }
          ],
          "nm": "Group 1",
          "np": 2,
          "mn": "ADBE Vector Group"
        }
      ],
      "ip": 0,
      "op": 78,
      "st": 0,
      "bm": 0,
      "sr": 1
    },
    {
      "ddd": 0,
      "ind": 3,
      "ty": 4,
      "nm": "hand_right",
      "tt": 1,
      "ks": {
        "o": {
          "k": 100
        },
        "r": {
          "k": 0
        },
        "p": {
          "k": [
            {
              "i": {
                "x": 0.69,
                "y": 1
              },
              "o": {
                "x": 1,
                "y": 0
              },
              "n": "0p69_1_1_0",
              "t": 29,
              "s": [
                819.292,
                1149.194,
                0
              ],
              "e": [
                689.292,
                745.194,
                0
              ],
              "to": [
                -21.6666660308838,
                -67.3333358764648,
                0
              ],
              "ti": [
                21.6666660308838,
                67.3333358764648,
                0
              ]
            },
            {
              "i": {
                "x": 0.21,
                "y": 0.21
              },
              "o": {
                "x": 1,
                "y": 1
              },
              "n": "0p21_0p21_1_1",
              "t": 39,
              "s": [
                689.292,
                745.194,
                0
              ],
              "e": [
                689.292,
                745.194,
                0
              ],
              "to": [
                0,
                0,
                0
              ],
              "ti": [
                0,
                0,
                0
              ]
            },
            {
              "i": {
                "x": 0.21,
                "y": 1
              },
              "o": {
                "x": 0.13,
                "y": 0
              },
              "n": "0p21_1_0p13_0",
              "t": 44,
              "s": [
                689.292,
                745.194,
                0
              ],
              "e": [
                819.292,
                1149.194,
                0
              ],
              "to": [
                21.6666660308838,
                67.3333358764648,
                0
              ],
              "ti": [
                0,
                0,
                0
              ]
            },
            {
              "i": {
                "x": 0.515,
                "y": 1
              },
              "o": {
                "x": 0.13,
                "y": 0
              },
              "n": "0p515_1_0p13_0",
              "t": 54,
              "s": [
                819.292,
                1149.194,
                0
              ],
              "e": [
                689.292,
                745.194,
                0
              ],
              "to": [
                0,
                0,
                0
              ],
              "ti": [
                13.3333330154419,
                40.3333320617676,
                0
              ]
            },
            {
              "i": {
                "x": 0.69,
                "y": 1
              },
              "o": {
                "x": 0.95,
                "y": 0
              },
              "n": "0p69_1_0p95_0",
              "t": 59,
              "s": [
                689.292,
                745.194,
                0
              ],
              "e": [
                739.292,
                907.194,
                0
              ],
              "to": [
                -13.3333330154419,
                -40.3333320617676,
                0
              ],
              "ti": [
                -21.6666660308838,
                -67.3333358764648,
                0
              ]
            },
            {
              "i": {
                "x": 0.69,
                "y": 1
              },
              "o": {
                "x": 0.86,
                "y": 0
              },
              "n": "0p69_1_0p86_0",
              "t": 67.904,
              "s": [
                739.292,
                907.194,
                0
              ],
              "e": [
                819.292,
                1149.194,
                0
              ],
              "to": [
                21.6666660308838,
                67.3333358764648,
                0
              ],
              "ti": [
                -13.3333330154419,
                -40.3333320617676,
                0
              ]
            },
            {
              "t": 76
            }
          ]
        },
        "a": {
          "k": [
            109.772,
            207.96,
            0
          ]
        },
        "s": {
          "k": [
            100,
            100,
            100
          ]
        }
      },
      "ao": 0,
      "shapes": [
        {
          "ty": "gr",
          "it": [
            {
              "ind": 0,
              "ty": "sh",
              "ks": {
                "k": {
                  "i": [
                    [
                      0.622,
                      2.577
                    ],
                    [
                      1.31,
                      5.443
                    ],
                    [
                      0.841,
                      3.48
                    ],
                    [
                      1.336,
                      5.515
                    ],
                    [
                      0.906,
                      3.739
                    ],
                    [
                      1.18,
                      4.887
                    ],
                    [
                      0.831,
                      3.443
                    ],
                    [
                      1.178,
                      4.847
                    ],
                    [
                      0.874,
                      3.59
                    ],
                    [
                      1.758,
                      7.255
                    ],
                    [
                      1.423,
                      5.887
                    ],
                    [
                      1.246,
                      5.145
                    ],
                    [
                      1.766,
                      7.293
                    ],
                    [
                      1.369,
                      5.822
                    ],
                    [
                      1.276,
                      5.217
                    ],
                    [
                      1.611,
                      6.703
                    ],
                    [
                      1.695,
                      6.996
                    ],
                    [
                      1.172,
                      4.929
                    ],
                    [
                      0.865,
                      2.564
                    ],
                    [
                      0.966,
                      2.035
                    ],
                    [
                      3.356,
                      4.041
                    ],
                    [
                      2.197,
                      1.907
                    ],
                    [
                      4.358,
                      2.353
                    ],
                    [
                      4.542,
                      1.269
                    ],
                    [
                      2.845,
                      0.367
                    ],
                    [
                      2.467,
                      0.177
                    ],
                    [
                      2.296,
                      -0.196
                    ],
                    [
                      4.328,
                      -1.426
                    ],
                    [
                      3.468,
                      -1.959
                    ],
                    [
                      3.168,
                      -2.671
                    ],
                    [
                      2.087,
                      -2.334
                    ],
                    [
                      1.924,
                      -3.218
                    ],
                    [
                      0.947,
                      -2.131
                    ],
                    [
                      0.911,
                      -4.753
                    ],
                    [
                      0.338,
                      -2.718
                    ],
                    [
                      0.009,
                      -0.421
                    ],
                    [
                      0.265,
                      -1.02
                    ],
                    [
                      -0.041,
                      -0.182
                    ],
                    [
                      -0.197,
                      -1.935
                    ],
                    [
                      -1.22,
                      -5.185
                    ],
                    [
                      -1.399,
                      -5.813
                    ],
                    [
                      -0.762,
                      -3.148
                    ],
                    [
                      -1.152,
                      -4.777
                    ],
                    [
                      -0.84,
                      -3.48
                    ],
                    [
                      -1.176,
                      -4.849
                    ],
                    [
                      -0.924,
                      -3.814
                    ],
                    [
                      -1.151,
                      -4.776
                    ],
                    [
                      -0.84,
                      -3.48
                    ],
                    [
                      -1.175,
                      -4.85
                    ],
                    [
                      -1.02,
                      -4.221
                    ],
                    [
                      -1.155,
                      -4.775
                    ],
                    [
                      -0.923,
                      -3.813
                    ],
                    [
                      -1.151,
                      -4.776
                    ],
                    [
                      -0.841,
                      -3.48
                    ],
                    [
                      -1.176,
                      -4.849
                    ],
                    [
                      -0.924,
                      -3.814
                    ],
                    [
                      -1.15,
                      -4.776
                    ],
                    [
                      -0.841,
                      -3.48
                    ],
                    [
                      -1.176,
                      -4.849
                    ],
                    [
                      -1.021,
                      -4.22
                    ],
                    [
                      -1.315,
                      -5.442
                    ],
                    [
                      -0.762,
                      -3.148
                    ],
                    [
                      -1.152,
                      -4.776
                    ],
                    [
                      -0.851,
                      -3.518
                    ],
                    [
                      0,
                      0
                    ],
                    [
                      -33.986,
                      27.051
                    ]
                  ],
                  "o": [
                    [
                      -1.315,
                      -5.442
                    ],
                    [
                      -0.838,
                      -3.481
                    ],
                    [
                      -1.332,
                      -5.517
                    ],
                    [
                      -0.907,
                      -3.74
                    ],
                    [
                      -1.183,
                      -4.886
                    ],
                    [
                      -0.831,
                      -3.444
                    ],
                    [
                      -1.172,
                      -4.85
                    ],
                    [
                      -0.872,
                      -3.591
                    ],
                    [
                      -1.766,
                      -7.254
                    ],
                    [
                      -1.426,
                      -5.886
                    ],
                    [
                      -1.245,
                      -5.146
                    ],
                    [
                      -1.767,
                      -7.293
                    ],
                    [
                      -1.408,
                      -5.812
                    ],
                    [
                      -1.229,
                      -5.227
                    ],
                    [
                      -1.637,
                      -6.696
                    ],
                    [
                      -1.681,
                      -7
                    ],
                    [
                      -1.195,
                      -4.923
                    ],
                    [
                      -0.627,
                      -2.637
                    ],
                    [
                      -0.721,
                      -2.134
                    ],
                    [
                      -2.259,
                      -4.752
                    ],
                    [
                      -1.853,
                      -2.234
                    ],
                    [
                      -3.728,
                      -3.237
                    ],
                    [
                      -4.156,
                      -2.244
                    ],
                    [
                      -2.752,
                      -0.769
                    ],
                    [
                      -2.464,
                      -0.317
                    ],
                    [
                      -2.353,
                      -0.169
                    ],
                    [
                      -4.518,
                      0.388
                    ],
                    [
                      -3.788,
                      1.248
                    ],
                    [
                      -3.596,
                      2.031
                    ],
                    [
                      -2.407,
                      2.03
                    ],
                    [
                      -2.498,
                      2.793
                    ],
                    [
                      -1.197,
                      2.003
                    ],
                    [
                      -1.96,
                      4.408
                    ],
                    [
                      -0.518,
                      2.699
                    ],
                    [
                      -0.052,
                      0.414
                    ],
                    [
                      -0.022,
                      1.028
                    ],
                    [
                      -0.047,
                      0.179
                    ],
                    [
                      0.42,
                      1.913
                    ],
                    [
                      0.54,
                      5.338
                    ],
                    [
                      1.37,
                      5.82
                    ],
                    [
                      0.757,
                      3.149
                    ],
                    [
                      1.156,
                      4.775
                    ],
                    [
                      0.839,
                      3.48
                    ],
                    [
                      1.17,
                      4.851
                    ],
                    [
                      0.925,
                      3.814
                    ],
                    [
                      1.158,
                      4.774
                    ],
                    [
                      0.84,
                      3.481
                    ],
                    [
                      1.17,
                      4.85
                    ],
                    [
                      1.023,
                      4.22
                    ],
                    [
                      1.154,
                      4.776
                    ],
                    [
                      0.922,
                      3.814
                    ],
                    [
                      1.158,
                      4.775
                    ],
                    [
                      0.839,
                      3.481
                    ],
                    [
                      1.17,
                      4.851
                    ],
                    [
                      0.926,
                      3.814
                    ],
                    [
                      1.157,
                      4.774
                    ],
                    [
                      0.84,
                      3.481
                    ],
                    [
                      1.17,
                      4.85
                    ],
                    [
                      1.024,
                      4.221
                    ],
                    [
                      1.315,
                      5.443
                    ],
                    [
                      0.76,
                      3.149
                    ],
                    [
                      1.155,
                      4.775
                    ],
                    [
                      0.848,
                      3.518
                    ],
                    [
                      0,
                      0
                    ],
                    [
                      40.632,
                      -17.027
                    ],
                    [
                      -0.632,
                      -2.576
                    ]
                  ],
                  "v": [
                    [
                      93.624,
                      122.973
                    ],
                    [
                      89.706,
                      106.64
                    ],
                    [
                      87.174,
                      96.201
                    ],
                    [
                      83.182,
                      79.651
                    ],
                    [
                      80.438,
                      68.439
                    ],
                    [
                      76.909,
                      53.775
                    ],
                    [
                      74.401,
                      43.448
                    ],
                    [
                      70.895,
                      28.897
                    ],
                    [
                      68.245,
                      18.134
                    ],
                    [
                      62.964,
                      -3.631
                    ],
                    [
                      58.69,
                      -21.29
                    ],
                    [
                      54.961,
                      -36.728
                    ],
                    [
                      49.656,
                      -58.606
                    ],
                    [
                      45.448,
                      -76.046
                    ],
                    [
                      41.651,
                      -91.703
                    ],
                    [
                      36.825,
                      -111.813
                    ],
                    [
                      31.768,
                      -132.809
                    ],
                    [
                      28.156,
                      -147.572
                    ],
                    [
                      25.962,
                      -155.386
                    ],
                    [
                      23.391,
                      -161.633
                    ],
                    [
                      14.906,
                      -174.799
                    ],
                    [
                      8.872,
                      -181.074
                    ],
                    [
                      -3.203,
                      -189.528
                    ],
                    [
                      -16.238,
                      -194.82
                    ],
                    [
                      -24.628,
                      -196.532
                    ],
                    [
                      -32.027,
                      -197.108
                    ],
                    [
                      -38.987,
                      -196.815
                    ],
                    [
                      -52.266,
                      -194.044
                    ],
                    [
                      -63.183,
                      -189.315
                    ],
                    [
                      -73.334,
                      -182.279
                    ],
                    [
                      -80.024,
                      -175.682
                    ],
                    [
                      -86.581,
                      -166.596
                    ],
                    [
                      -89.837,
                      -160.413
                    ],
                    [
                      -94.198,
                      -146.699
                    ],
                    [
                      -95.328,
                      -138.56
                    ],
                    [
                      -95.333,
                      -137.298
                    ],
                    [
                      -95.464,
                      -134.214
                    ],
                    [
                      -95.466,
                      -133.643
                    ],
                    [
                      -94.98,
                      -127.835
                    ],
                    [
                      -91.722,
                      -112.191
                    ],
                    [
                      -87.555,
                      -94.744
                    ],
                    [
                      -85.242,
                      -85.308
                    ],
                    [
                      -81.794,
                      -70.978
                    ],
                    [
                      -79.266,
                      -60.539
                    ],
                    [
                      -75.76,
                      -45.987
                    ],
                    [
                      -72.958,
                      -34.553
                    ],
                    [
                      -69.51,
                      -20.224
                    ],
                    [
                      -66.98,
                      -9.784
                    ],
                    [
                      -63.475,
                      4.768
                    ],
                    [
                      -60.384,
                      17.423
                    ],
                    [
                      -56.951,
                      31.757
                    ],
                    [
                      -54.147,
                      43.189
                    ],
                    [
                      -50.703,
                      57.52
                    ],
                    [
                      -48.172,
                      67.959
                    ],
                    [
                      -44.667,
                      82.511
                    ],
                    [
                      -41.862,
                      93.944
                    ],
                    [
                      -38.417,
                      108.274
                    ],
                    [
                      -35.886,
                      118.714
                    ],
                    [
                      -32.381,
                      133.265
                    ],
                    [
                      -29.289,
                      145.92
                    ],
                    [
                      -25.368,
                      162.252
                    ],
                    [
                      -23.052,
                      171.687
                    ],
                    [
                      -19.609,
                      186.018
                    ],
                    [
                      -17.044,
                      196.568
                    ],
                    [
                      -16.873,
                      197.277
                    ],
                    [
                      95.511,
                      130.699
                    ]
                  ],
                  "c": true
                }
              },
              "nm": "Path 1",
              "mn": "ADBE Vector Shape - Group"
            },
            {
              "ty": "fl",
              "fillEnabled": true,
              "c": {
                "k": [
                  0.94,
                  0.94,
                  0.94,
                  1
                ]
              },
              "o": {
                "k": 100
              },
              "nm": "Fill 1",
              "mn": "ADBE Vector Graphic - Fill"
            },
            {
              "ty": "tr",
              "p": {
                "k": [
                  110.763,
                  212.689
                ],
                "ix": 2
              },
              "a": {
                "k": [
                  0,
                  0
                ],
                "ix": 1
              },
              "s": {
                "k": [
                  100,
                  100
                ],
                "ix": 3
              },
              "r": {
                "k": 0,
                "ix": 6
              },
              "o": {
                "k": 100,
                "ix": 7
              },
              "sk": {
                "k": 0,
                "ix": 4
              },
              "sa": {
                "k": 0,
                "ix": 5
              },
              "nm": "Transform"
            }
          ],
          "nm": "Group 1",
          "np": 2,
          "mn": "ADBE Vector Group"
        },
        {
          "ty": "gr",
          "it": [
            {
              "ind": 0,
              "ty": "sh",
              "ks": {
                "k": {
                  "i": [
                    [
                      3.468,
                      14.34
                    ],
                    [
                      2.625,
                      10.848
                    ],
                    [
                      3.055,
                      12.63
                    ],
                    [
                      2.618,
                      10.81
                    ],
                    [
                      2.889,
                      11.924
                    ],
                    [
                      3.407,
                      14.078
                    ],
                    [
                      2.461,
                      10.1
                    ],
                    [
                      4.922,
                      7.438
                    ],
                    [
                      7.495,
                      5.479
                    ],
                    [
                      8.293,
                      2.582
                    ],
                    [
                      4.755,
                      0.569
                    ],
                    [
                      1.791,
                      0.154
                    ],
                    [
                      0.433,
                      0.03
                    ],
                    [
                      0.304,
                      -0.006
                    ],
                    [
                      0.322,
                      0.223
                    ],
                    [
                      1.301,
                      -0.027
                    ],
                    [
                      0.336,
                      -0.054
                    ],
                    [
                      0.358,
                      -0.008
                    ],
                    [
                      0.422,
                      -0.008
                    ],
                    [
                      5.034,
                      -1.477
                    ],
                    [
                      4.592,
                      -2.488
                    ],
                    [
                      5.07,
                      -4.733
                    ],
                    [
                      4.249,
                      -9.054
                    ],
                    [
                      0.88,
                      -8.221
                    ],
                    [
                      -0.042,
                      -1.299
                    ],
                    [
                      -0.008,
                      -0.346
                    ],
                    [
                      0.207,
                      -0.25
                    ],
                    [
                      -0.07,
                      -3.445
                    ],
                    [
                      -0.215,
                      -0.439
                    ],
                    [
                      -1.077,
                      -4.46
                    ],
                    [
                      -3.057,
                      -12.631
                    ],
                    [
                      -2.635,
                      -10.885
                    ],
                    [
                      -2.957,
                      -12.223
                    ],
                    [
                      -3.307,
                      -13.672
                    ],
                    [
                      -3.46,
                      -14.303
                    ],
                    [
                      -3.136,
                      -12.966
                    ],
                    [
                      -3.054,
                      -12.632
                    ],
                    [
                      -2.789,
                      -11.518
                    ],
                    [
                      -1.089,
                      -4.498
                    ],
                    [
                      -4.712,
                      1.975
                    ],
                    [
                      0,
                      0
                    ],
                    [
                      0.848,
                      3.519
                    ],
                    [
                      1.156,
                      4.776
                    ],
                    [
                      0.76,
                      3.148
                    ],
                    [
                      1.316,
                      5.442
                    ],
                    [
                      1.024,
                      4.221
                    ],
                    [
                      1.17,
                      4.849
                    ],
                    [
                      0.84,
                      3.482
                    ],
                    [
                      1.157,
                      4.775
                    ],
                    [
                      0.926,
                      3.813
                    ],
                    [
                      1.17,
                      4.85
                    ],
                    [
                      0.839,
                      3.482
                    ],
                    [
                      1.157,
                      4.776
                    ],
                    [
                      0.922,
                      3.813
                    ],
                    [
                      1.154,
                      4.775
                    ],
                    [
                      1.022,
                      4.22
                    ],
                    [
                      1.171,
                      4.849
                    ],
                    [
                      0.84,
                      3.482
                    ],
                    [
                      1.158,
                      4.775
                    ],
                    [
                      0.925,
                      3.813
                    ],
                    [
                      1.169,
                      4.85
                    ],
                    [
                      0.839,
                      3.481
                    ],
                    [
                      1.156,
                      4.776
                    ],
                    [
                      0.756,
                      3.148
                    ],
                    [
                      1.37,
                      5.821
                    ],
                    [
                      0.54,
                      5.338
                    ],
                    [
                      0.42,
                      1.913
                    ],
                    [
                      -0.047,
                      0.179
                    ],
                    [
                      -0.021,
                      1.028
                    ],
                    [
                      -0.052,
                      0.414
                    ],
                    [
                      -0.518,
                      2.699
                    ],
                    [
                      -1.96,
                      4.408
                    ],
                    [
                      -1.197,
                      2.003
                    ],
                    [
                      -2.497,
                      2.793
                    ],
                    [
                      -2.407,
                      2.03
                    ],
                    [
                      -3.597,
                      2.032
                    ],
                    [
                      -3.788,
                      1.248
                    ],
                    [
                      -4.518,
                      0.388
                    ],
                    [
                      -2.353,
                      -0.169
                    ],
                    [
                      -2.464,
                      -0.318
                    ],
                    [
                      -2.752,
                      -0.769
                    ],
                    [
                      -4.156,
                      -2.244
                    ],
                    [
                      -3.728,
                      -3.238
                    ],
                    [
                      -1.853,
                      -2.233
                    ],
                    [
                      -2.259,
                      -4.752
                    ],
                    [
                      -0.721,
                      -2.134
                    ],
                    [
                      -0.627,
                      -2.637
                    ],
                    [
                      -1.195,
                      -4.923
                    ],
                    [
                      -1.681,
                      -7
                    ],
                    [
                      -1.638,
                      -6.697
                    ],
                    [
                      -1.229,
                      -5.228
                    ],
                    [
                      -1.408,
                      -5.811
                    ],
                    [
                      -1.766,
                      -7.293
                    ],
                    [
                      -1.245,
                      -5.147
                    ],
                    [
                      -1.426,
                      -5.886
                    ],
                    [
                      -1.765,
                      -7.254
                    ],
                    [
                      -0.872,
                      -3.591
                    ],
                    [
                      -1.172,
                      -4.85
                    ],
                    [
                      -0.831,
                      -3.443
                    ],
                    [
                      -1.184,
                      -4.885
                    ],
                    [
                      -0.906,
                      -3.739
                    ],
                    [
                      -1.332,
                      -5.517
                    ],
                    [
                      -0.838,
                      -3.481
                    ],
                    [
                      -1.315,
                      -5.442
                    ],
                    [
                      -0.632,
                      -2.575
                    ],
                    [
                      -4.275,
                      3.657
                    ],
                    [
                      1.527,
                      6.314
                    ]
         
Download .txt
gitextract_mfrrwjd0/

├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   └── deer-issue-template.md
│   └── workflows/
│       ├── flutter-drive.yml
│       └── flutter-web-deploy.yml
├── .gitignore
├── .metadata
├── LICENSE
├── README-EN.md
├── README.md
├── analysis_options.yaml
├── android/
│   ├── app/
│   │   ├── build.gradle
│   │   ├── key.properties
│   │   ├── proguard-rules.pro
│   │   ├── src/
│   │   │   ├── debug/
│   │   │   │   └── AndroidManifest.xml
│   │   │   ├── main/
│   │   │   │   ├── AndroidManifest.xml
│   │   │   │   ├── java/
│   │   │   │   │   └── com/
│   │   │   │   │       └── weilu/
│   │   │   │   │           └── deer/
│   │   │   │   │               ├── DeerPickerProvider.java
│   │   │   │   │               ├── FileProvider7.java
│   │   │   │   │               ├── InstallAPKPlugin.java
│   │   │   │   │               ├── MainActivity.java
│   │   │   │   │               └── MyApp.java
│   │   │   │   └── res/
│   │   │   │       ├── drawable/
│   │   │   │       │   └── launch_background.xml
│   │   │   │       ├── mipmap-anydpi-v26/
│   │   │   │       │   └── ic_launcher.xml
│   │   │   │       ├── values/
│   │   │   │       │   ├── colors.xml
│   │   │   │       │   └── styles.xml
│   │   │   │       ├── values-night/
│   │   │   │       │   └── colors.xml
│   │   │   │       ├── values-v27/
│   │   │   │       │   └── styles.xml
│   │   │   │       └── xml/
│   │   │   │           ├── file_paths.xml
│   │   │   │           └── network_security_config.xml
│   │   │   └── profile/
│   │   │       └── AndroidManifest.xml
│   │   └── test.jks
│   ├── build.gradle
│   ├── gradle/
│   │   └── wrapper/
│   │       └── gradle-wrapper.properties
│   ├── gradle.properties
│   └── settings.gradle
├── assets/
│   ├── data/
│   │   ├── bank.json
│   │   ├── bank_2.json
│   │   ├── city.json
│   │   ├── sort_0.json
│   │   ├── sort_1.json
│   │   └── sort_2.json
│   └── lottie/
│       └── bunny_new_mouth.json
├── devtools_options.yaml
├── docs/
│   ├── Android问题汇总.md
│   ├── CHANGELOG.md
│   ├── Web问题汇总.md
│   └── iOS问题汇总.md
├── integration_test/
│   ├── goods_test.dart
│   ├── integration_test.dart
│   └── login_test.dart
├── ios/
│   ├── .gitignore
│   ├── Flutter/
│   │   ├── AppFrameworkInfo.plist
│   │   ├── Debug.xcconfig
│   │   └── Release.xcconfig
│   ├── Podfile
│   ├── Runner/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── LaunchImage.imageset/
│   │   │   │   ├── Contents.json
│   │   │   │   └── README.md
│   │   │   └── flutter_dash_black.imageset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   └── Runner-Bridging-Header.h
│   ├── Runner.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       ├── IDEWorkspaceChecks.plist
│   │   │       └── WorkspaceSettings.xcsettings
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           └── Runner.xcscheme
│   ├── Runner.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       ├── IDEWorkspaceChecks.plist
│   │       └── WorkspaceSettings.xcsettings
│   └── RunnerTests/
│       └── RunnerTests.swift
├── l10n.yaml
├── lib/
│   ├── account/
│   │   ├── account_router.dart
│   │   ├── models/
│   │   │   ├── bank_entity.dart
│   │   │   ├── city_entity.dart
│   │   │   └── withdrawal_account_model.dart
│   │   ├── page/
│   │   │   ├── account_page.dart
│   │   │   ├── account_record_list_page.dart
│   │   │   ├── add_withdrawal_account_page.dart
│   │   │   ├── bank_select_page.dart
│   │   │   ├── city_select_page.dart
│   │   │   ├── withdrawal_account_list_page.dart
│   │   │   ├── withdrawal_account_page.dart
│   │   │   ├── withdrawal_page.dart
│   │   │   ├── withdrawal_password_page.dart
│   │   │   ├── withdrawal_record_list_page.dart
│   │   │   └── withdrawal_result_page.dart
│   │   └── widgets/
│   │       ├── rise_number_text.dart
│   │       ├── sms_verify_dialog.dart
│   │       ├── withdrawal_account_item.dart
│   │       └── withdrawal_password_setting.dart
│   ├── demo/
│   │   ├── demo_page.dart
│   │   ├── focus/
│   │   │   └── focus_demo_page.dart
│   │   ├── lottie/
│   │   │   ├── bunny.dart
│   │   │   └── lottie_demo.dart
│   │   ├── navigator/
│   │   │   ├── book_entity.dart
│   │   │   ├── books_app_state.dart
│   │   │   ├── books_main.dart
│   │   │   ├── delegate/
│   │   │   │   ├── inner_router_delegate.dart
│   │   │   │   └── router_delegate.dart
│   │   │   ├── parser/
│   │   │   │   └── route_information_parser.dart
│   │   │   └── screen/
│   │   │       ├── app_shell.dart
│   │   │       ├── book_details_screen.dart
│   │   │       ├── books_list_screen.dart
│   │   │       └── setting_screen.dart
│   │   ├── overlay/
│   │   │   ├── bottom_navigation/
│   │   │   │   └── my_bottom_navigation_bar.dart
│   │   │   ├── overlay_main.dart
│   │   │   ├── page/
│   │   │   │   ├── overlay_demo_page.dart
│   │   │   │   └── test_page.dart
│   │   │   └── route/
│   │   │       ├── application.dart
│   │   │       └── my_navigator_observer.dart
│   │   ├── ripple/
│   │   │   └── ripples_animation_page.dart
│   │   ├── scratcher/
│   │   │   └── scratch_card_demo_page.dart
│   │   └── widgets/
│   │       └── neumorphic.dart
│   ├── generated/
│   │   └── json/
│   │       ├── bank_entity.g.dart
│   │       ├── base/
│   │       │   ├── json_convert_content.dart
│   │       │   └── json_field.dart
│   │       ├── city_entity.g.dart
│   │       ├── goods_sort_entity.g.dart
│   │       ├── search_entity.g.dart
│   │       └── user_entity.g.dart
│   ├── goods/
│   │   ├── goods_router.dart
│   │   ├── models/
│   │   │   ├── goods_item_entity.dart
│   │   │   ├── goods_size_model.dart
│   │   │   └── goods_sort_entity.dart
│   │   ├── page/
│   │   │   ├── goods_edit_page.dart
│   │   │   ├── goods_list_page.dart
│   │   │   ├── goods_page.dart
│   │   │   ├── goods_search_page.dart
│   │   │   ├── goods_size_edit_page.dart
│   │   │   ├── goods_size_page.dart
│   │   │   └── qr_code_scanner_page.dart
│   │   ├── provider/
│   │   │   ├── goods_page_provider.dart
│   │   │   └── goods_sort_provider.dart
│   │   └── widgets/
│   │       ├── goods_add_menu.dart
│   │       ├── goods_delete_bottom_sheet.dart
│   │       ├── goods_item.dart
│   │       ├── goods_size_dialog.dart
│   │       ├── goods_sort_bottom_sheet.dart
│   │       ├── goods_sort_menu.dart
│   │       └── menu_reveal.dart
│   ├── home/
│   │   ├── home_page.dart
│   │   ├── provider/
│   │   │   └── home_provider.dart
│   │   ├── splash_page.dart
│   │   └── webview_page.dart
│   ├── l10n/
│   │   ├── deer_localizations.dart
│   │   ├── deer_localizations_en.dart
│   │   ├── deer_localizations_zh.dart
│   │   ├── intl_en.arb
│   │   └── intl_zh.arb
│   ├── login/
│   │   ├── login_router.dart
│   │   ├── page/
│   │   │   ├── login_page.dart
│   │   │   ├── register_page.dart
│   │   │   ├── reset_password_page.dart
│   │   │   ├── sms_login_page.dart
│   │   │   └── update_password_page.dart
│   │   └── widgets/
│   │       └── my_text_field.dart
│   ├── main.dart
│   ├── mvp/
│   │   ├── base_page.dart
│   │   ├── base_page_presenter.dart
│   │   ├── base_presenter.dart
│   │   ├── i_lifecycle.dart
│   │   ├── mvps.dart
│   │   └── power_presenter.dart
│   ├── net/
│   │   ├── base_entity.dart
│   │   ├── dio_utils.dart
│   │   ├── error_handle.dart
│   │   ├── http_api.dart
│   │   ├── intercept.dart
│   │   └── net.dart
│   ├── order/
│   │   ├── iview/
│   │   │   └── order_search_iview.dart
│   │   ├── models/
│   │   │   └── search_entity.dart
│   │   ├── order_router.dart
│   │   ├── page/
│   │   │   ├── order_info_page.dart
│   │   │   ├── order_list_page.dart
│   │   │   ├── order_page.dart
│   │   │   ├── order_search_page.dart
│   │   │   └── order_track_page.dart
│   │   ├── presenter/
│   │   │   └── order_search_presenter.dart
│   │   ├── provider/
│   │   │   ├── base_list_provider.dart
│   │   │   └── order_page_provider.dart
│   │   └── widgets/
│   │       ├── order_item.dart
│   │       ├── order_tag_item.dart
│   │       └── pay_type_dialog.dart
│   ├── res/
│   │   ├── colors.dart
│   │   ├── constant.dart
│   │   ├── dimens.dart
│   │   ├── gaps.dart
│   │   ├── resources.dart
│   │   └── styles.dart
│   ├── routers/
│   │   ├── fluro_navigator.dart
│   │   ├── i_router.dart
│   │   ├── not_found_page.dart
│   │   ├── routers.dart
│   │   └── web_page_transitions.dart
│   ├── setting/
│   │   ├── page/
│   │   │   ├── about_page.dart
│   │   │   ├── account_manager_page.dart
│   │   │   ├── locale_page.dart
│   │   │   ├── setting_page.dart
│   │   │   └── theme_page.dart
│   │   ├── provider/
│   │   │   ├── locale_provider.dart
│   │   │   └── theme_provider.dart
│   │   ├── setting_router.dart
│   │   └── widgets/
│   │       ├── exit_dialog.dart
│   │       └── update_dialog.dart
│   ├── shop/
│   │   ├── iview/
│   │   │   └── shop_iview.dart
│   │   ├── models/
│   │   │   ├── freight_config_model.dart
│   │   │   └── user_entity.dart
│   │   ├── page/
│   │   │   ├── freight_config_page.dart
│   │   │   ├── input_text_page.dart
│   │   │   ├── message_page.dart
│   │   │   ├── select_address_page.dart
│   │   │   ├── shop_page.dart
│   │   │   └── shop_setting_page.dart
│   │   ├── presenter/
│   │   │   └── shop_presenter.dart
│   │   ├── provider/
│   │   │   └── user_provider.dart
│   │   ├── shop_router.dart
│   │   └── widgets/
│   │       ├── pay_type_dialog.dart
│   │       ├── price_input_dialog.dart
│   │       ├── range_price_input_dialog.dart
│   │       └── send_type_dialog.dart
│   ├── statistics/
│   │   ├── page/
│   │   │   ├── goods_statistics_page.dart
│   │   │   ├── order_statistics_page.dart
│   │   │   └── statistics_page.dart
│   │   ├── statistics_router.dart
│   │   └── widgets/
│   │       └── selected_date.dart
│   ├── store/
│   │   ├── page/
│   │   │   ├── store_audit_page.dart
│   │   │   └── store_audit_result_page.dart
│   │   └── store_router.dart
│   ├── util/
│   │   ├── app_navigator.dart
│   │   ├── change_notifier_manage.dart
│   │   ├── date_utils.dart
│   │   ├── device_utils.dart
│   │   ├── handle_error_utils.dart
│   │   ├── image_utils.dart
│   │   ├── input_formatter/
│   │   │   ├── fix_ios_input_formatter.dart
│   │   │   └── number_text_input_formatter.dart
│   │   ├── log_utils.dart
│   │   ├── other_utils.dart
│   │   ├── screen_utils.dart
│   │   ├── theme_utils.dart
│   │   ├── toast_utils.dart
│   │   └── version_utils.dart
│   └── widgets/
│       ├── base_dialog.dart
│       ├── bezier_chart/
│       │   ├── bezier_chart.dart
│       │   ├── bezier_chart_config.dart
│       │   ├── bezier_chart_widget.dart
│       │   ├── bezier_line.dart
│       │   └── my_single_child_scroll_view.dart
│       ├── click_item.dart
│       ├── double_tap_back_exit_app.dart
│       ├── fractionally_aligned_sized_box.dart
│       ├── load_image.dart
│       ├── my_app_bar.dart
│       ├── my_button.dart
│       ├── my_card.dart
│       ├── my_flexible_space_bar.dart
│       ├── my_refresh_list.dart
│       ├── my_scroll_view.dart
│       ├── my_search_bar.dart
│       ├── pie_chart/
│       │   ├── pie_chart.dart
│       │   └── pie_data.dart
│       ├── popup_window.dart
│       ├── progress_dialog.dart
│       ├── selected_image.dart
│       ├── selected_item.dart
│       ├── state_layout.dart
│       └── text_field_item.dart
├── macos/
│   ├── .gitignore
│   ├── Flutter/
│   │   ├── Flutter-Debug.xcconfig
│   │   ├── Flutter-Release.xcconfig
│   │   └── GeneratedPluginRegistrant.swift
│   ├── Podfile
│   ├── Runner/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   └── MainMenu.xib
│   │   ├── Configs/
│   │   │   ├── AppInfo.xcconfig
│   │   │   ├── Debug.xcconfig
│   │   │   ├── Release.xcconfig
│   │   │   └── Warnings.xcconfig
│   │   ├── DebugProfile.entitlements
│   │   ├── Info.plist
│   │   ├── MainFlutterWindow.swift
│   │   └── Release.entitlements
│   ├── Runner.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   └── xcshareddata/
│   │   │       └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           └── Runner.xcscheme
│   └── Runner.xcworkspace/
│       ├── contents.xcworkspacedata
│       └── xcshareddata/
│           └── IDEWorkspaceChecks.plist
├── pubspec.yaml
├── shader/
│   ├── README.md
│   └── flutter_01.sksl.json
├── test/
│   ├── accessibility_test.dart
│   ├── account/
│   │   └── account_accessibility_test.dart
│   ├── goods/
│   │   └── goods_accessibility_test.dart
│   ├── login/
│   │   └── login_accessibility_test.dart
│   ├── net/
│   │   └── dio_test.dart
│   ├── order/
│   │   └── order_accessibility_test.dart
│   ├── setting/
│   │   └── setting_accessibility_test.dart
│   ├── shop/
│   │   └── shop_accessibility_test.dart
│   ├── statistics/
│   │   └── statistic_accessibility_test.dart
│   ├── store/
│   │   └── store_accessibility_test.dart
│   └── widget_test.dart
├── test_driver/
│   ├── account/
│   │   ├── account.dart
│   │   └── account_test.dart
│   ├── driver.dart
│   ├── driver_test.dart
│   ├── goods/
│   │   ├── goods.dart
│   │   └── goods_test.dart
│   ├── home/
│   │   ├── splash_page.dart
│   │   └── splash_page_test.dart
│   ├── login/
│   │   ├── login_page.dart
│   │   └── login_page_test.dart
│   ├── order/
│   │   ├── order.dart
│   │   └── order_test.dart
│   ├── setting/
│   │   ├── setting.dart
│   │   └── setting_test.dart
│   ├── shop/
│   │   ├── shop.dart
│   │   └── shop_test.dart
│   ├── statistic/
│   │   ├── statistic.dart
│   │   └── statistic_test.dart
│   ├── store/
│   │   ├── store.dart
│   │   └── store_test.dart
│   └── tools/
│       └── test_utils.dart
├── web/
│   ├── index.html
│   ├── index1.html
│   └── manifest.json
└── windows/
    ├── .gitignore
    ├── CMakeLists.txt
    ├── flutter/
    │   ├── CMakeLists.txt
    │   ├── generated_plugin_registrant.cc
    │   ├── generated_plugin_registrant.h
    │   └── generated_plugins.cmake
    └── runner/
        ├── CMakeLists.txt
        ├── Runner.rc
        ├── flutter_window.cpp
        ├── flutter_window.h
        ├── main.cpp
        ├── resource.h
        ├── run_loop.cpp
        ├── run_loop.h
        ├── runner.exe.manifest
        ├── utils.cpp
        ├── utils.h
        ├── win32_window.cpp
        └── win32_window.h
Download .txt
SYMBOL INDEX (1169 symbols across 240 files)

FILE: android/app/src/main/java/com/weilu/deer/DeerPickerProvider.java
  class DeerPickerProvider (line 11) | public class DeerPickerProvider extends FileProvider {

FILE: android/app/src/main/java/com/weilu/deer/FileProvider7.java
  class FileProvider7 (line 17) | public class FileProvider7 {
    method getUriForFile (line 19) | public static Uri getUriForFile(Context context, File file) {
    method getUriForFile24 (line 29) | private static Uri getUriForFile24(Context context, File file) {
    method setIntentDataAndType (line 33) | public static void setIntentDataAndType(Context context, Intent intent...
    method setIntentData (line 46) | public static void setIntentData(Context context, Intent intent, File ...

FILE: android/app/src/main/java/com/weilu/deer/InstallAPKPlugin.java
  class InstallAPKPlugin (line 16) | public class InstallAPKPlugin implements FlutterPlugin {
    method InstallAPKPlugin (line 21) | public InstallAPKPlugin(Activity activity) {
    method onAttachedToEngine (line 25) | @Override
    method onDetachedFromEngine (line 30) | @Override
    method setupMethodChannel (line 35) | private void setupMethodChannel(BinaryMessenger messenger) {
    method openFile (line 50) | private void openFile(String path) {
    method tearDownChannel (line 58) | private void tearDownChannel() {

FILE: android/app/src/main/java/com/weilu/deer/MainActivity.java
  class MainActivity (line 13) | public class MainActivity extends FlutterActivity {
    method configureFlutterEngine (line 15) | @Override
    method onCreate (line 21) | @Override

FILE: android/app/src/main/java/com/weilu/deer/MyApp.java
  class MyApp (line 11) | public class MyApp extends Application {
    method onCreate (line 13) | @Override

FILE: integration_test/goods_test.dart
  function main (line 14) | void main()
  function fireOnTap (line 116) | void fireOnTap(Finder finder, String text)

FILE: integration_test/integration_test.dart
  function main (line 4) | Future<void> main()

FILE: integration_test/login_test.dart
  function main (line 10) | void main()

FILE: lib/account/account_router.dart
  class AccountRouter (line 17) | class AccountRouter implements IRouterProvider{
    method initRouter (line 32) | void initRouter(FluroRouter router)

FILE: lib/account/models/bank_entity.dart
  class BankEntity (line 5) | @JsonSerializable()
    method toJson (line 12) | Map<String, dynamic> toJson()
    method getSuspensionTag (line 19) | String getSuspensionTag()

FILE: lib/account/models/city_entity.dart
  class CityEntity (line 5) | @JsonSerializable()
    method toJson (line 12) | Map<String, dynamic> toJson()
    method getSuspensionTag (line 19) | String getSuspensionTag()

FILE: lib/account/models/withdrawal_account_model.dart
  class WithdrawalAccountModel (line 2) | class WithdrawalAccountModel {
    method toJson (line 17) | Map<String, dynamic> toJson()

FILE: lib/account/page/account_page.dart
  class AccountPage (line 13) | class AccountPage extends StatefulWidget {
    method createState (line 18) | _AccountPageState createState()
  class _AccountPageState (line 21) | class _AccountPageState extends State<AccountPage> {
    method build (line 23) | Widget build(BuildContext context)
    method _buildCard (line 52) | Widget _buildCard()
  class _AccountMoney (line 87) | class _AccountMoney extends StatelessWidget {
    method build (line 102) | Widget build(BuildContext context)

FILE: lib/account/page/account_record_list_page.dart
  class AccountRecordListPage (line 8) | class AccountRecordListPage extends StatefulWidget {
    method createState (line 13) | _AccountRecordListPageState createState()
  class _AccountRecordListPageState (line 16) | class _AccountRecordListPageState extends State<AccountRecordListPage> {
    method build (line 18) | Widget build(BuildContext context)
    method _buildGroup (line 32) | Widget _buildGroup(int index)
    method _buildItem (line 59) | Widget _buildItem(int i)

FILE: lib/account/page/add_withdrawal_account_page.dart
  class AddWithdrawalAccountPage (line 17) | class AddWithdrawalAccountPage extends StatefulWidget {
    method createState (line 22) | _AddWithdrawalAccountPageState createState()
  class _AddWithdrawalAccountPageState (line 25) | class _AddWithdrawalAccountPageState extends State<AddWithdrawalAccountP...
    method build (line 33) | Widget build(BuildContext context)
    method _dialogSelect (line 125) | void _dialogSelect(bool flag)
    method _showSelectAccountTypeDialog (line 133) | void _showSelectAccountTypeDialog()

FILE: lib/account/page/bank_select_page.dart
  class BankSelectPage (line 15) | class BankSelectPage extends StatefulWidget {
    method createState (line 22) | _BankSelectPageState createState()
  class _BankSelectPageState (line 25) | class _BankSelectPageState extends State<BankSelectPage> {
    method initState (line 42) | void initState()
    method _loadData (line 47) | void _loadData()
    method _addBank (line 72) | void _addBank(dynamic value)
    method build (line 77) | Widget build(BuildContext context)
    method _buildHeader (line 107) | Widget _buildHeader()
    method _buildListItem (line 144) | Widget _buildListItem(int index)

FILE: lib/account/page/city_select_page.dart
  class CitySelectPage (line 14) | class CitySelectPage extends StatefulWidget {
    method createState (line 19) | _CitySelectPageState createState()
  class _CitySelectPageState (line 22) | class _CitySelectPageState extends State<CitySelectPage> {
    method initState (line 28) | void initState()
    method _loadData (line 33) | Future<void> _loadData()
    method _addCity (line 57) | void _addCity(dynamic value)
    method _loadString (line 62) | Future<String> _loadString(String key)
    method build (line 68) | Widget build(BuildContext context)
    method _buildListItem (line 93) | Widget _buildListItem(int index)

FILE: lib/account/page/withdrawal_account_list_page.dart
  class WithdrawalAccountListPage (line 11) | class WithdrawalAccountListPage extends StatefulWidget {
    method createState (line 16) | _WithdrawalAccountListPageState createState()
  class _WithdrawalAccountListPageState (line 19) | class _WithdrawalAccountListPageState extends State<WithdrawalAccountLis...
    method initState (line 25) | void initState()
    method build (line 33) | Widget build(BuildContext context)
    method _buildItem (line 48) | Widget _buildItem(int index)

FILE: lib/account/page/withdrawal_account_page.dart
  class WithdrawalAccountPage (line 13) | class WithdrawalAccountPage extends StatefulWidget {
    method createState (line 18) | _WithdrawalAccountPageState createState()
  class _WithdrawalAccountPageState (line 21) | class _WithdrawalAccountPageState extends State<WithdrawalAccountPage> {
    method initState (line 28) | void initState()
    method build (line 37) | Widget build(BuildContext context)
    method sizeItem (line 58) | Widget sizeItem(WithdrawalAccountModel data, int index, Animation<doub...
    method _removeItem (line 71) | void _removeItem(int index)
    method _insertItem (line 89) | void _insertItem(int index)
    method _showDeleteBottomSheet (line 104) | void _showDeleteBottomSheet(int index)

FILE: lib/account/page/withdrawal_page.dart
  class WithdrawalPage (line 15) | class WithdrawalPage extends StatefulWidget {
    method createState (line 20) | _WithdrawalPageState createState()
  class _WithdrawalPageState (line 23) | class _WithdrawalPageState extends State<WithdrawalPage> {
    method initState (line 31) | void initState()
    method dispose (line 37) | void dispose()
    method _verify (line 43) | void _verify()
    method build (line 57) | Widget build(BuildContext context)
    method _buildWithdrawalType (line 191) | Widget _buildWithdrawalType(int type)

FILE: lib/account/page/withdrawal_password_page.dart
  class WithdrawalPasswordPage (line 12) | class WithdrawalPasswordPage extends StatefulWidget {
    method createState (line 17) | _WithdrawalPasswordPageState createState()
  class _WithdrawalPasswordPageState (line 20) | class _WithdrawalPasswordPageState extends State<WithdrawalPasswordPage> {
    method build (line 22) | Widget build(BuildContext context)
    method _showHintDialog (line 52) | void _showHintDialog()
    method _showVerifyDialog (line 72) | void _showVerifyDialog()

FILE: lib/account/page/withdrawal_record_list_page.dart
  class WithdrawalRecordListPage (line 8) | class WithdrawalRecordListPage extends StatefulWidget {
    method createState (line 13) | _WithdrawalRecordListPageState createState()
  class _WithdrawalRecordListPageState (line 16) | class _WithdrawalRecordListPageState extends State<WithdrawalRecordListP...
    method build (line 18) | Widget build(BuildContext context)
    method _buildGroup (line 32) | Widget _buildGroup(int index)
    method _buildItem (line 59) | Widget _buildItem(int i)

FILE: lib/account/page/withdrawal_result_page.dart
  class WithdrawalResultPage (line 9) | class WithdrawalResultPage extends StatefulWidget {
    method createState (line 14) | _WithdrawalResultPageState createState()
  class _WithdrawalResultPageState (line 17) | class _WithdrawalResultPageState extends State<WithdrawalResultPage> {
    method build (line 19) | Widget build(BuildContext context)

FILE: lib/account/widgets/rise_number_text.dart
  class RiseNumberText (line 4) | class RiseNumberText extends StatefulWidget {
    method createState (line 17) | _RiseNumberTextState createState()
  class _RiseNumberTextState (line 20) | class _RiseNumberTextState extends State<RiseNumberText> with SingleTick...
    method initState (line 27) | void initState()
    method didUpdateWidget (line 37) | void didUpdateWidget(RiseNumberText oldWidget)
    method dispose (line 47) | void dispose()
    method build (line 53) | Widget build(BuildContext context)

FILE: lib/account/widgets/sms_verify_dialog.dart
  class SMSVerifyDialog (line 17) | class SMSVerifyDialog extends StatefulWidget {
    method createState (line 22) | _SMSVerifyDialogState createState()
  class _SMSVerifyDialogState (line 25) | class _SMSVerifyDialogState extends State<SMSVerifyDialog> {
    method initState (line 39) | void initState()
    method dispose (line 54) | void dispose()
    method build (line 62) | Widget build(BuildContext context)
    method _buildInputWidget (line 222) | Widget _buildInputWidget(int p, Color textColor)

FILE: lib/account/widgets/withdrawal_account_item.dart
  class WithdrawalAccountItem (line 10) | class WithdrawalAccountItem extends StatefulWidget {
    method createState (line 22) | _WithdrawalAccountItemState createState()
  class _WithdrawalAccountItemState (line 26) | class _WithdrawalAccountItemState extends State<WithdrawalAccountItem> w...
    method initState (line 33) | void initState()
    method dispose (line 43) | void dispose()
    method build (line 49) | Widget build(BuildContext context)
  class AccountCard (line 141) | class AccountCard extends StatefulWidget {
    method createState (line 153) | _AccountCardState createState()
  class _AccountCardState (line 156) | class _AccountCardState extends State<AccountCard> {
    method build (line 158) | Widget build(BuildContext context)

FILE: lib/account/widgets/withdrawal_password_setting.dart
  class WithdrawalPasswordSetting (line 12) | class WithdrawalPasswordSetting extends StatefulWidget {
    method createState (line 17) | _WithdrawalPasswordSettingState createState()
  class _WithdrawalPasswordSettingState (line 20) | class _WithdrawalPasswordSettingState extends State<WithdrawalPasswordSe...
    method build (line 27) | Widget build(BuildContext context)
    method _buildButton (line 104) | Widget _buildButton(int index)
    method _buildInputWidget (line 164) | Widget _buildInputWidget(int p)

FILE: lib/demo/demo_page.dart
  class DemoPage (line 15) | class DemoPage extends StatefulWidget {
    method createState (line 20) | _DemoPageState createState()
  class _DemoPageState (line 23) | class _DemoPageState extends State<DemoPage> {
    method initState (line 26) | void initState()
    method build (line 35) | Widget build(BuildContext context)

FILE: lib/demo/focus/focus_demo_page.dart
  class FocusDemoPage (line 7) | class FocusDemoPage extends StatefulWidget {
    method createState (line 13) | _FocusDemoPageState createState()
  class _FocusDemoPageState (line 16) | class _FocusDemoPageState extends State<FocusDemoPage> {
    method dispose (line 22) | void dispose()
    method build (line 28) | Widget build(BuildContext context)

FILE: lib/demo/lottie/bunny.dart
  class Bunny (line 4) | class Bunny {
    method setNeutralState (line 27) | void setNeutralState()
    method setShyState (line 45) | void setShyState()
    method setPeekState (line 61) | void setPeekState()
    method setTrackingState (line 77) | void setTrackingState()
    method setEyesPosition (line 95) | void setEyesPosition(double progress)
    method setMinMaxFrame (line 109) | void setMinMaxFrame(List<int> frames)
    method framesToPercentage (line 117) | double framesToPercentage(int frame)
  type BunnyState (line 123) | enum BunnyState {

FILE: lib/demo/lottie/lottie_demo.dart
  class LottieDemo (line 8) | class LottieDemo extends StatefulWidget {
    method createState (line 13) | _LottieDemoState createState()
  class _LottieDemoState (line 20) | class _LottieDemoState extends State<LottieDemo> with TickerProviderStat...
    method initState (line 26) | void initState()
    method dispose (line 34) | void dispose()
    method build (line 40) | Widget build(BuildContext context)
    method _getTextSize (line 122) | double _getTextSize(String text)
  class _MyTextField (line 133) | class _MyTextField extends StatefulWidget {
    method createState (line 155) | _MyTextFieldState createState()
  class _MyTextFieldState (line 158) | class _MyTextFieldState extends State<_MyTextField> {
    method initState (line 164) | void initState()
    method _refresh (line 169) | void _refresh()
    method dispose (line 179) | void dispose()
    method build (line 186) | Widget build(BuildContext context)

FILE: lib/demo/navigator/book_entity.dart
  class Book (line 1) | class Book {
  class BookRoutePath (line 10) | abstract class BookRoutePath {}
  class BooksListPath (line 12) | class BooksListPath extends BookRoutePath {}
  class BooksSettingsPath (line 14) | class BooksSettingsPath extends BookRoutePath {}
  class BooksDetailsPath (line 16) | class BooksDetailsPath extends BookRoutePath {

FILE: lib/demo/navigator/books_app_state.dart
  class BooksAppState (line 4) | class BooksAppState extends ChangeNotifier {
    method getSelectedBookById (line 38) | int getSelectedBookById()
    method setSelectedBookById (line 45) | void setSelectedBookById(int id)

FILE: lib/demo/navigator/books_main.dart
  class NestedRouterDemo (line 7) | class NestedRouterDemo extends StatefulWidget {
    method createState (line 12) | _NestedRouterDemoState createState()
  class _NestedRouterDemoState (line 15) | class _NestedRouterDemoState extends State<NestedRouterDemo> {
    method build (line 21) | Widget build(BuildContext context)

FILE: lib/demo/navigator/delegate/inner_router_delegate.dart
  class InnerRouterDelegate (line 8) | class InnerRouterDelegate extends RouterDelegate<BookRoutePath>
    method build (line 26) | Widget build(BuildContext context)
    method setNewRoutePath (line 58) | Future<void> setNewRoutePath(BookRoutePath configuration)
    method _handleBookTapped (line 64) | void _handleBookTapped(Book book)
  class FadeAnimationPage (line 70) | class FadeAnimationPage extends Page<void> {
    method createRoute (line 77) | Route<dynamic> createRoute(BuildContext context)

FILE: lib/demo/navigator/delegate/router_delegate.dart
  class BookRouterDelegate (line 6) | class BookRouterDelegate extends RouterDelegate<BookRoutePath>
    method build (line 32) | Widget build(BuildContext context)
    method setNewRoutePath (line 55) | Future<void> setNewRoutePath(BookRoutePath configuration)

FILE: lib/demo/navigator/parser/route_information_parser.dart
  class BookRouteInformationParser (line 5) | class BookRouteInformationParser extends RouteInformationParser<BookRout...
    method parseRouteInformation (line 7) | Future<BookRoutePath> parseRouteInformation(
    method restoreRouteInformation (line 24) | RouteInformation? restoreRouteInformation(BookRoutePath configuration)

FILE: lib/demo/navigator/screen/app_shell.dart
  class AppShell (line 6) | class AppShell extends StatefulWidget {
    method createState (line 16) | _AppShellState createState()
  class _AppShellState (line 19) | class _AppShellState extends State<AppShell> {
    method initState (line 24) | void initState()
    method didUpdateWidget (line 30) | void didUpdateWidget(covariant AppShell oldWidget)
    method didChangeDependencies (line 36) | void didChangeDependencies()
    method build (line 45) | Widget build(BuildContext context)

FILE: lib/demo/navigator/screen/book_details_screen.dart
  class BookDetailsScreen (line 4) | class BookDetailsScreen extends StatelessWidget {
    method build (line 14) | Widget build(BuildContext context)

FILE: lib/demo/navigator/screen/books_list_screen.dart
  class BooksListScreen (line 4) | class BooksListScreen extends StatelessWidget {
    method build (line 16) | Widget build(BuildContext context)

FILE: lib/demo/navigator/screen/setting_screen.dart
  class SettingsScreen (line 3) | class SettingsScreen extends StatelessWidget {
    method build (line 8) | Widget build(BuildContext context)

FILE: lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart
  class MyBottomNavigationBar (line 4) | class MyBottomNavigationBar extends StatefulWidget {
    method createState (line 19) | _MyBottomNavigationBarState createState()
  class _MyBottomNavigationBarState (line 22) | class _MyBottomNavigationBarState extends State<MyBottomNavigationBar> w...
    method initState (line 49) | void initState()
    method build (line 68) | Widget build(BuildContext context)
    method _selectedPosition (line 136) | void _selectedPosition(int position)
    method dispose (line 155) | void dispose()

FILE: lib/demo/overlay/overlay_main.dart
  class OverlayDemo (line 7) | class OverlayDemo extends StatelessWidget {
    method build (line 14) | Widget build(BuildContext context)

FILE: lib/demo/overlay/page/overlay_demo_page.dart
  class OverlayDemoPage (line 12) | class OverlayDemoPage extends StatefulWidget {
    method createState (line 17) | _OverlayDemoPageState createState()
  class _OverlayDemoPageState (line 20) | class _OverlayDemoPageState extends State<OverlayDemoPage> {
    method initState (line 25) | void initState()
    method dispose (line 37) | void dispose()
    method build (line 45) | Widget build(BuildContext context)
    method _buildBottomNavigation (line 74) | Widget _buildBottomNavigation(BuildContext context)
    method removeRoute (line 86) | void removeRoute(Route<dynamic> route)

FILE: lib/demo/overlay/page/test_page.dart
  class TestPage (line 5) | class TestPage extends StatefulWidget {
    method createState (line 10) | _TestPageState createState()
  class _TestPageState (line 13) | class _TestPageState extends State<TestPage> {
    method build (line 15) | Widget build(BuildContext context)

FILE: lib/demo/overlay/route/application.dart
  class Application (line 5) | class Application {

FILE: lib/demo/overlay/route/my_navigator_observer.dart
  class MyNavigatorObserver (line 5) | class MyNavigatorObserver extends NavigatorObserver {
    method didPush (line 9) | void didPush(Route<dynamic> route, Route<dynamic>? previousRoute)
    method didPop (line 18) | void didPop(Route<dynamic> route, Route<dynamic>? previousRoute)

FILE: lib/demo/ripple/ripples_animation_page.dart
  class RipplesAnimationPage (line 8) | class RipplesAnimationPage extends StatefulWidget {
    method createState (line 19) | _RipplesAnimationState createState()
  class _RipplesAnimationState (line 22) | class _RipplesAnimationState extends State<RipplesAnimationPage> with Ti...
    method initState (line 27) | void initState()
    method dispose (line 36) | void dispose()
    method _button (line 41) | Widget _button()
    method build (line 69) | Widget build(BuildContext context)
  class CirclePainter (line 92) | class CirclePainter extends CustomPainter {
    method circle (line 101) | void circle(Canvas canvas, Rect rect, double value)
    method paint (line 111) | void paint(Canvas canvas, Size size)
    method shouldRepaint (line 119) | bool shouldRepaint(CirclePainter oldDelegate)
  class PulsateCurve (line 122) | class PulsateCurve extends Curve {
    method transform (line 125) | double transform(double t)

FILE: lib/demo/scratcher/scratch_card_demo_page.dart
  class ScratchCardDemoPage (line 9) | class ScratchCardDemoPage extends StatefulWidget {
    method createState (line 14) | _ScratchCardDemoPageState createState()
  class _ScratchCardDemoPageState (line 17) | class _ScratchCardDemoPageState extends State<ScratchCardDemoPage> {
    method build (line 22) | Widget build(BuildContext context)

FILE: lib/demo/widgets/neumorphic.dart
  class NeumorphicContainer (line 6) | class NeumorphicContainer extends StatefulWidget {
    method createState (line 21) | _NeumorphicContainerState createState()
  class _NeumorphicContainerState (line 24) | class _NeumorphicContainerState extends State<NeumorphicContainer> {
    method _onPointerDown (line 27) | void _onPointerDown(PointerDownEvent event)
    method _onPointerUp (line 33) | void _onPointerUp(PointerUpEvent event)
    method build (line 40) | Widget build(BuildContext context)
  function mix (line 82) | Color mix(Color another, double amount)

FILE: lib/generated/json/bank_entity.g.dart
  function $BankEntityFromJson (line 6) | BankEntity $BankEntityFromJson(Map<String, dynamic> json)
  function $BankEntityToJson (line 23) | Map<String, dynamic> $BankEntityToJson(BankEntity entity)

FILE: lib/generated/json/base/json_convert_content.dart
  class JsonConvert (line 19) | class JsonConvert {
    method convert (line 21) | T? convert<T>(dynamic value)
    method convertList (line 28) | List<T?>? convertList<T>(List<dynamic>? value)
    method convertListNotNull (line 40) | List<T>? convertListNotNull<T>(dynamic value)
    method asT (line 51) | T? asT<T extends Object?>(dynamic value)
    method _fromJsonSingle (line 84) | M? _fromJsonSingle<M>(Map<String, dynamic> json)
    method _getListChildType (line 117) | M? _getListChildType<M>(List<dynamic> data)
    method fromJsonAsT (line 148) | M? fromJsonAsT<M>(dynamic json)

FILE: lib/generated/json/base/json_field.dart
  class JsonSerializable (line 7) | class JsonSerializable{
  class JSONField (line 11) | class JSONField {

FILE: lib/generated/json/city_entity.g.dart
  function $CityEntityFromJson (line 6) | CityEntity $CityEntityFromJson(Map<String, dynamic> json)
  function $CityEntityToJson (line 23) | Map<String, dynamic> $CityEntityToJson(CityEntity entity)

FILE: lib/generated/json/goods_sort_entity.g.dart
  function $GoodsSortEntityFromJson (line 4) | GoodsSortEntity $GoodsSortEntityFromJson(Map<String, dynamic> json)
  function $GoodsSortEntityToJson (line 17) | Map<String, dynamic> $GoodsSortEntityToJson(GoodsSortEntity entity)

FILE: lib/generated/json/search_entity.g.dart
  function $SearchEntityFromJson (line 4) | SearchEntity $SearchEntityFromJson(Map<String, dynamic> json)
  function $SearchEntityToJson (line 21) | Map<String, dynamic> $SearchEntityToJson(SearchEntity entity)
  function $SearchItemsFromJson (line 29) | SearchItems $SearchItemsFromJson(Map<String, dynamic> json)
  function $SearchItemsToJson (line 326) | Map<String, dynamic> $SearchItemsToJson(SearchItems entity)
  function $SearchItemsOwnerFromJson (line 404) | SearchItemsOwner $SearchItemsOwnerFromJson(Map<String, dynamic> json)
  function $SearchItemsOwnerToJson (line 481) | Map<String, dynamic> $SearchItemsOwnerToJson(SearchItemsOwner entity)
  function $SearchItemsLicenseFromJson (line 504) | SearchItemsLicense $SearchItemsLicenseFromJson(Map<String, dynamic> json)
  function $SearchItemsLicenseToJson (line 529) | Map<String, dynamic> $SearchItemsLicenseToJson(SearchItemsLicense entity)

FILE: lib/generated/json/user_entity.g.dart
  function $UserEntityFromJson (line 4) | UserEntity $UserEntityFromJson(Map<String, dynamic> json)
  function $UserEntityToJson (line 25) | Map<String, dynamic> $UserEntityToJson(UserEntity entity)

FILE: lib/goods/goods_router.dart
  class GoodsRouter (line 13) | class GoodsRouter implements IRouterProvider{
    method initRouter (line 23) | void initRouter(FluroRouter router)

FILE: lib/goods/models/goods_item_entity.dart
  class GoodsItemEntity (line 1) | class GoodsItemEntity {
    method toJson (line 15) | Map<String, dynamic> toJson()

FILE: lib/goods/models/goods_size_model.dart
  class GoodsSizeModel (line 2) | class GoodsSizeModel {
    method toJson (line 27) | Map<String, dynamic> toJson()

FILE: lib/goods/models/goods_sort_entity.dart
  class GoodsSortEntity (line 5) | @JsonSerializable()
    method toJson (line 12) | Map<String, dynamic> toJson()

FILE: lib/goods/page/goods_edit_page.dart
  class GoodsEditPage (line 20) | class GoodsEditPage extends StatefulWidget {
    method createState (line 36) | _GoodsEditPageState createState()
  class _GoodsEditPageState (line 39) | class _GoodsEditPageState extends State<GoodsEditPage> {
    method initState (line 45) | void initState()
    method _scan (line 54) | Future<void> _scan()
    method build (line 72) | Widget build(BuildContext context)
    method dispose (line 199) | void dispose()
    method _showBottomSheet (line 205) | void _showBottomSheet()

FILE: lib/goods/page/goods_list_page.dart
  class GoodsListPage (line 16) | class GoodsListPage extends StatefulWidget {
    method createState (line 26) | _GoodsListPageState createState()
  class _GoodsListPageState (line 29) | class _GoodsListPageState extends State<GoodsListPage> with AutomaticKee...
    method initState (line 38) | void initState()
    method dispose (line 55) | void dispose()
    method _onRefresh (line 72) | Future<dynamic> _onRefresh()
    method _loadMore (line 83) | Future<dynamic> _loadMore()
    method _setGoodsCount (line 94) | void _setGoodsCount(int count)
    method build (line 105) | Widget build(BuildContext context)
    method _showDeleteBottomSheet (line 164) | void _showDeleteBottomSheet(int index)

FILE: lib/goods/page/goods_page.dart
  class GoodsPage (line 17) | class GoodsPage extends StatefulWidget {
    method createState (line 22) | _GoodsPageState createState()
  class _GoodsPageState (line 25) | class _GoodsPageState extends State<GoodsPage> with SingleTickerProvider...
    method initState (line 38) | void initState()
    method dispose (line 44) | void dispose()
    method didChangeDependencies (line 52) | void didChangeDependencies()
    method build (line 56) | Widget build(BuildContext context)
    method _onPageChange (line 168) | void _onPageChange(int index)
    method _showSortMenu (line 174) | void _showSortMenu()
    method _showAddMenu (line 196) | void _showAddMenu()
  class _TabView (line 212) | class _TabView extends StatelessWidget {
    method build (line 220) | Widget build(BuildContext context)

FILE: lib/goods/page/goods_search_page.dart
  class GoodsSearchPage (line 6) | class GoodsSearchPage extends StatefulWidget {
    method createState (line 11) | _GoodsSearchPageState createState()
  class _GoodsSearchPageState (line 14) | class _GoodsSearchPageState extends State<GoodsSearchPage> {
    method build (line 16) | Widget build(BuildContext context)

FILE: lib/goods/page/goods_size_edit_page.dart
  class GoodsSizeEditPage (line 11) | class GoodsSizeEditPage extends StatefulWidget {
    method createState (line 16) | _GoodsSizeEditPageState createState()
  class _GoodsSizeEditPageState (line 19) | class _GoodsSizeEditPageState extends State<GoodsSizeEditPage> {
    method build (line 22) | Widget build(BuildContext context)

FILE: lib/goods/page/goods_size_page.dart
  class GoodsSizePage (line 21) | class GoodsSizePage extends StatefulWidget {
    method createState (line 26) | _GoodsSizePageState createState()
  class _GoodsSizePageState (line 29) | class _GoodsSizePageState extends State<GoodsSizePage> {
    method initState (line 38) | void initState()
    method _showHint (line 56) | void _showHint()
    method build (line 83) | Widget build(BuildContext context)
    method _buildGoodsSizeItem (line 151) | Widget _buildGoodsSizeItem(int index)
    method _buildGoodsTag (line 261) | Widget _buildGoodsTag(Color color, String text)
    method _showGoodsSizeDialog (line 278) | void _showGoodsSizeDialog()

FILE: lib/goods/page/qr_code_scanner_page.dart
  class QrCodeScannerPage (line 9) | class QrCodeScannerPage extends StatefulWidget {
    method createState (line 14) | _QrCodeScannerPageState createState()
  class _QrCodeScannerPageState (line 17) | class _QrCodeScannerPageState extends State<QrCodeScannerPage> {
    method reassemble (line 24) | void reassemble()
    method build (line 35) | Widget build(BuildContext context)
    method _onQRViewCreated (line 82) | void _onQRViewCreated(QRViewController? controller)
    method dispose (line 103) | void dispose()

FILE: lib/goods/provider/goods_page_provider.dart
  class GoodsPageProvider (line 3) | class GoodsPageProvider extends ChangeNotifier {
    method setSortIndex (line 16) | void setSortIndex(int sortIndex)
    method setIndex (line 21) | void setIndex(int index)
    method setGoodsCount (line 26) | void setGoodsCount(int count)

FILE: lib/goods/provider/goods_sort_provider.dart
  class GoodsSortProvider (line 8) | class GoodsSortProvider extends ChangeNotifier {
    method setIndex (line 30) | void setIndex(int index)
    method indexIncrement (line 35) | void indexIncrement()
    method setList (line 39) | void setList(int index)
    method setListAndChangeTab (line 53) | void setListAndChangeTab()
    method initData (line 71) | void initData()

FILE: lib/goods/widgets/goods_add_menu.dart
  class GoodsAddMenu (line 8) | class GoodsAddMenu extends StatefulWidget {
    method createState (line 15) | _GoodsAddMenuState createState()
  class _GoodsAddMenuState (line 18) | class _GoodsAddMenuState extends State<GoodsAddMenu> with SingleTickerPr...
    method initState (line 24) | void initState()
    method dispose (line 36) | void dispose()
    method build (line 42) | Widget build(BuildContext context)

FILE: lib/goods/widgets/goods_delete_bottom_sheet.dart
  class GoodsDeleteBottomSheet (line 7) | class GoodsDeleteBottomSheet extends StatelessWidget {
    method build (line 17) | Widget build(BuildContext context)

FILE: lib/goods/widgets/goods_item.dart
  class GoodsItem (line 15) | class GoodsItem extends StatelessWidget {
    method build (line 43) | Widget build(BuildContext context)
    method _buildGoodsMenu (line 142) | Widget _buildGoodsMenu(BuildContext context)
    method _buildGoodsMenuContent (line 157) | Widget _buildGoodsMenuContent(BuildContext context)
  class _GoodsItemTag (line 213) | class _GoodsItemTag extends StatelessWidget {
    method build (line 224) | Widget build(BuildContext context)

FILE: lib/goods/widgets/goods_size_dialog.dart
  class GoodsSizeDialog (line 7) | class GoodsSizeDialog extends StatefulWidget {
    method createState (line 17) | _GoodsSizeDialog createState()
  class _GoodsSizeDialog (line 21) | class _GoodsSizeDialog extends State<GoodsSizeDialog> {
    method dispose (line 26) | void dispose()
    method build (line 32) | Widget build(BuildContext context)

FILE: lib/goods/widgets/goods_sort_bottom_sheet.dart
  class GoodsSortBottomSheet (line 13) | class GoodsSortBottomSheet extends StatefulWidget {
    method createState (line 26) | GoodsSortBottomSheetState createState()
  class GoodsSortBottomSheetState (line 29) | class GoodsSortBottomSheetState extends State<GoodsSortBottomSheet> with...
    method initState (line 35) | void initState()
    method dispose (line 45) | void dispose()
    method build (line 52) | Widget build(BuildContext context)
    method _buildItem (line 138) | Widget _buildItem(GoodsSortProvider provider, int index)

FILE: lib/goods/widgets/goods_sort_menu.dart
  class GoodsSortMenu (line 7) | class GoodsSortMenu extends StatefulWidget {
    method createState (line 23) | _GoodsSortMenuState createState()
  class _GoodsSortMenuState (line 26) | class _GoodsSortMenuState extends State<GoodsSortMenu> with SingleTicker...
    method initState (line 40) | void initState()
    method _statusListener (line 45) | void _statusListener(AnimationStatus status)
    method dispose (line 53) | void dispose()
    method build (line 60) | Widget build(BuildContext context)
    method _buildItem (line 88) | Widget _buildItem(int index, Color backgroundColor)

FILE: lib/goods/widgets/menu_reveal.dart
  class MenuReveal (line 7) | class MenuReveal extends StatelessWidget {
    method build (line 19) | Widget build(BuildContext context)
  class CircleRevealClipper (line 27) | class CircleRevealClipper extends CustomClipper<Rect> {
    method getClip (line 34) | Rect getClip(Size size)
    method shouldReclip (line 49) | bool shouldReclip(CustomClipper<Rect> oldClipper)

FILE: lib/home/home_page.dart
  class Home (line 13) | class Home extends StatefulWidget {
    method createState (line 18) | _HomeState createState()
  class _HomeState (line 21) | class _HomeState extends State<Home> with RestorationMixin{
    method initState (line 35) | void initState()
    method dispose (line 41) | void dispose()
    method initData (line 46) | void initData()
    method _buildBottomNavigationBarItem (line 55) | List<BottomNavigationBarItem> _buildBottomNavigationBarItem()
    method _buildDarkBottomNavigationBarItem (line 87) | List<BottomNavigationBarItem> _buildDarkBottomNavigationBarItem()
    method build (line 121) | Widget build(BuildContext context)
    method restoreState (line 160) | void restoreState(RestorationBucket? oldBucket, bool initialRestore)

FILE: lib/home/provider/home_provider.dart
  class HomeProvider (line 4) | class HomeProvider extends RestorableInt {

FILE: lib/home/splash_page.dart
  class SplashPage (line 19) | class SplashPage extends StatefulWidget {
    method createState (line 23) | _SplashPageState createState()
  class _SplashPageState (line 26) | class _SplashPageState extends State<SplashPage> {
    method initState (line 32) | void initState()
    method precacheImages (line 41) | void precacheImages(String image)
    method dispose (line 61) | void dispose()
    method _initGuide (line 66) | void _initGuide()
    method _initSplash (line 72) | void _initSplash()
    method _goLogin (line 83) | void _goLogin()
    method build (line 88) | Widget build(BuildContext context)

FILE: lib/home/webview_page.dart
  class WebViewPage (line 8) | class WebViewPage extends StatefulWidget {
    method createState (line 20) | _WebViewPageState createState()
  class _WebViewPageState (line 23) | class _WebViewPageState extends State<WebViewPage> {
    method initState (line 29) | void initState()
    method build (line 50) | Widget build(BuildContext context)

FILE: lib/l10n/deer_localizations.dart
  class DeerLocalizations (line 64) | abstract class DeerLocalizations {
    method of (line 69) | DeerLocalizations? of(BuildContext context)
  class _DeerLocalizationsDelegate (line 205) | class _DeerLocalizationsDelegate extends LocalizationsDelegate<DeerLocal...
    method load (line 209) | Future<DeerLocalizations> load(Locale locale)
    method isSupported (line 214) | bool isSupported(Locale locale)
    method shouldReload (line 217) | bool shouldReload(_DeerLocalizationsDelegate old)
  function lookupDeerLocalizations (line 220) | DeerLocalizations lookupDeerLocalizations(Locale locale)

FILE: lib/l10n/deer_localizations_en.dart
  class DeerLocalizationsEn (line 8) | class DeerLocalizationsEn extends DeerLocalizations {

FILE: lib/l10n/deer_localizations_zh.dart
  class DeerLocalizationsZh (line 8) | class DeerLocalizationsZh extends DeerLocalizations {

FILE: lib/login/login_router.dart
  class LoginRouter (line 11) | class LoginRouter implements IRouterProvider{
    method initRouter (line 20) | void initRouter(FluroRouter router)

FILE: lib/login/page/login_page.dart
  class LoginPage (line 19) | class LoginPage extends StatefulWidget {
    method createState (line 24) | _LoginPageState createState()
  class _LoginPageState (line 27) | class _LoginPageState extends State<LoginPage> with ChangeNotifierMixin<...
    method changeNotifier (line 36) | Map<ChangeNotifier, List<VoidCallback>?>? changeNotifier()
    method initState (line 47) | void initState()
    method _verify (line 56) | void _verify()
    method _login (line 75) | void _login()
    method build (line 81) | Widget build(BuildContext context)

FILE: lib/login/page/register_page.dart
  class RegisterPage (line 13) | class RegisterPage extends StatefulWidget {
    method createState (line 18) | _RegisterPageState createState()
  class _RegisterPageState (line 21) | class _RegisterPageState extends State<RegisterPage> with ChangeNotifier...
    method changeNotifier (line 32) | Map<ChangeNotifier, List<VoidCallback>?>? changeNotifier()
    method _verify (line 44) | void _verify()
    method _register (line 65) | void _register()
    method build (line 70) | Widget build(BuildContext context)
    method _buildBody (line 84) | List<Widget> _buildBody()

FILE: lib/login/page/reset_password_page.dart
  class ResetPasswordPage (line 14) | class ResetPasswordPage extends StatefulWidget {
    method createState (line 19) | _ResetPasswordPageState createState()
  class _ResetPasswordPageState (line 22) | class _ResetPasswordPageState extends State<ResetPasswordPage> with Chan...
    method changeNotifier (line 33) | Map<ChangeNotifier, List<VoidCallback>?>? changeNotifier()
    method _verify (line 45) | void _verify()
    method _reset (line 66) | void _reset()
    method build (line 71) | Widget build(BuildContext context)
    method _buildBody (line 85) | List<Widget> _buildBody()

FILE: lib/login/page/sms_login_page.dart
  class SMSLoginPage (line 17) | class SMSLoginPage extends StatefulWidget {
    method createState (line 21) | _SMSLoginPageState createState()
  class _SMSLoginPageState (line 24) | class _SMSLoginPageState extends State<SMSLoginPage> with ChangeNotifier...
    method changeNotifier (line 33) | Map<ChangeNotifier, List<VoidCallback>?>? changeNotifier()
    method _verify (line 43) | void _verify()
    method _login (line 60) | void _login()
    method build (line 65) | Widget build(BuildContext context)
    method _buildBody (line 76) | List<Widget> _buildBody()

FILE: lib/login/page/update_password_page.dart
  class UpdatePasswordPage (line 14) | class UpdatePasswordPage extends StatefulWidget {
    method createState (line 19) | _UpdatePasswordPageState createState()
  class _UpdatePasswordPageState (line 22) | class _UpdatePasswordPageState extends State<UpdatePasswordPage> with Ch...
    method changeNotifier (line 31) | Map<ChangeNotifier, List<VoidCallback>?>? changeNotifier()
    method _verify (line 41) | void _verify()
    method _confirm (line 58) | void _confirm()
    method build (line 64) | Widget build(BuildContext context)

FILE: lib/login/widgets/my_text_field.dart
  class MyTextField (line 14) | class MyTextField extends StatefulWidget {
    method createState (line 41) | _MyTextFieldState createState()
  class _MyTextFieldState (line 44) | class _MyTextFieldState extends State<MyTextField> {
    method initState (line 55) | void initState()
    method isEmpty (line 63) | void isEmpty()
    method dispose (line 74) | void dispose()
    method _getVCode (line 80) | Future<dynamic> _getVCode()
    method build (line 97) | Widget build(BuildContext context)

FILE: lib/main.dart
  function main (line 25) | Future<void> main()
  class MyApp (line 76) | class MyApp extends StatelessWidget {
    method initDio (line 88) | void initDio()
    method initQuickActions (line 110) | void initQuickActions()
    method build (line 136) | Widget build(BuildContext context)
    method _buildMaterialApp (line 159) | Widget _buildMaterialApp(ThemeProvider provider, LocaleProvider locale...

FILE: lib/mvp/base_page.dart
  function createPresenter (line 13) | P createPresenter()
  function getContext (line 16) | BuildContext getContext()
  function closeProgress (line 21) | void closeProgress()
  function showProgress (line 31) | void showProgress()
  function showToast (line 59) | void showToast(String string)
  function buildProgress (line 64) | Widget buildProgress()
  function didChangeDependencies (line 67) | void didChangeDependencies()
  function dispose (line 74) | void dispose()
  function deactivate (line 81) | void deactivate()
  function didUpdateWidget (line 88) | void didUpdateWidget(T oldWidget)
  function initState (line 95) | void initState()

FILE: lib/mvp/base_page_presenter.dart
  class BasePagePresenter (line 8) | class BasePagePresenter<V extends IMvpView> extends BasePresenter<V> {
    method dispose (line 17) | void dispose()
    method requestNetwork (line 25) | Future<dynamic> requestNetwork<T>(Method method, {
    method asyncRequestNetwork (line 56) | void asyncRequestNetwork<T>(Method method, {
    method uploadImg (line 88) | Future<String> uploadImg(File image)
    method _onError (line 109) | void _onError(int code, String msg, NetErrorCallback? onError)

FILE: lib/mvp/base_presenter.dart
  class BasePresenter (line 3) | class BasePresenter<V extends IMvpView> extends IPresenter {
    method deactivate (line 8) | void deactivate()
    method didChangeDependencies (line 11) | void didChangeDependencies()
    method didUpdateWidgets (line 14) | void didUpdateWidgets<W>(W oldWidget)
    method dispose (line 17) | void dispose()
    method initState (line 20) | void initState()

FILE: lib/mvp/i_lifecycle.dart
  class ILifecycle (line 2) | abstract class ILifecycle {
    method initState (line 4) | void initState()
    method didChangeDependencies (line 6) | void didChangeDependencies()
    method didUpdateWidgets (line 8) | void didUpdateWidgets<W>(W oldWidget)
    method deactivate (line 10) | void deactivate()
    method dispose (line 12) | void dispose()

FILE: lib/mvp/mvps.dart
  class IMvpView (line 6) | abstract class IMvpView {
    method getContext (line 8) | BuildContext getContext()
    method showProgress (line 10) | void showProgress()
    method closeProgress (line 13) | void closeProgress()
    method showToast (line 16) | void showToast(String string)
  class IPresenter (line 19) | abstract class IPresenter extends ILifecycle {}

FILE: lib/mvp/power_presenter.dart
  class PowerPresenter (line 6) | class PowerPresenter<IMvpView> extends BasePresenter {
    method requestPresenter (line 15) | void requestPresenter(List<BasePagePresenter> presenters)
    method _requestPresenter (line 20) | void _requestPresenter(BasePagePresenter presenter)
    method deactivate (line 25) | void deactivate()
    method _deactivate (line 29) | void _deactivate(BasePagePresenter presenter)
    method didChangeDependencies (line 34) | void didChangeDependencies()
    method _didChangeDependencies (line 38) | void _didChangeDependencies(BasePagePresenter presenter)
    method didUpdateWidgets (line 43) | void didUpdateWidgets<W>(W oldWidget)
    method didUpdateWidgets (line 45) | void didUpdateWidgets(BasePagePresenter presenter)
    method dispose (line 52) | void dispose()
    method _dispose (line 56) | void _dispose(BasePagePresenter presenter)
    method initState (line 61) | void initState()
    method _initState (line 65) | void _initState(BasePagePresenter presenter)

FILE: lib/net/base_entity.dart
  class BaseEntity (line 4) | class BaseEntity<T> {
    method _generateOBJ (line 20) | T? _generateOBJ<O>(Object? json)

FILE: lib/net/dio_utils.dart
  function configDio (line 18) | void configDio({
  type NetSuccessCallback (line 32) | typedef NetSuccessCallback<T> = void Function(T data);
  type NetSuccessListCallback (line 33) | typedef NetSuccessListCallback<T> = void Function(List<T> data);
  type NetErrorCallback (line 34) | typedef NetErrorCallback = void Function(int code, String msg);
  class DioUtils (line 37) | class DioUtils {
    method addInterceptor (line 66) | void addInterceptor(Interceptor interceptor)
    method _request (line 81) | Future<BaseEntity<T>> _request<T>(String method, String url, {
    method _checkOptions (line 109) | Options _checkOptions(String method, Options? options)
    method requestNetwork (line 115) | Future<dynamic> requestNetwork<T>(Method method, String url, {
    method asyncRequestNetwork (line 142) | void asyncRequestNetwork<T>(Method method, String url, {
    method _cancelLogPrint (line 171) | void _cancelLogPrint(dynamic e, String url)
    method _onError (line 177) | void _onError(int? code, String msg, NetErrorCallback? onError)
  function parseData (line 187) | Map<String, dynamic> parseData(String data)
  type Method (line 191) | enum Method {

FILE: lib/net/error_handle.dart
  class ExceptionHandle (line 5) | class ExceptionHandle {
    method handleException (line 35) | NetError handleException(dynamic error)
    method _handleException (line 48) | NetError _handleException(dynamic error)
  class NetError (line 63) | class NetError{

FILE: lib/net/http_api.dart
  class HttpApi (line 2) | class HttpApi{

FILE: lib/net/intercept.dart
  class AuthInterceptor (line 15) | class AuthInterceptor extends Interceptor {
    method onRequest (line 17) | void onRequest(RequestOptions options, RequestInterceptorHandler handler)
  class TokenInterceptor (line 30) | class TokenInterceptor extends QueuedInterceptor {
    method getToken (line 34) | Future<String?> getToken()
    method onResponse (line 52) | Future<void> onResponse(Response<dynamic> response, ResponseIntercepto...
  class LoggingInterceptor (line 90) | class LoggingInterceptor extends Interceptor{
    method onRequest (line 96) | void onRequest(RequestOptions options, RequestInterceptorHandler handler)
    method onResponse (line 112) | void onResponse(Response<dynamic> response, ResponseInterceptorHandler...
    method onError (line 127) | void onError(DioException err, ErrorInterceptorHandler handler)
  class AdapterInterceptor (line 133) | class AdapterInterceptor extends Interceptor{
    method onResponse (line 146) | void onResponse(Response<dynamic> response, ResponseInterceptorHandler...
    method onError (line 152) | void onError(DioException err, ErrorInterceptorHandler handler)
    method adapterData (line 159) | Response<dynamic> adapterData(Response<dynamic> response)

FILE: lib/order/iview/order_search_iview.dart
  class OrderSearchIMvpView (line 5) | abstract class OrderSearchIMvpView implements IMvpView {

FILE: lib/order/models/search_entity.dart
  class SearchEntity (line 4) | @JsonSerializable()
    method toJson (line 11) | Map<String, dynamic> toJson()
  class SearchItems (line 20) | @JsonSerializable()
    method toJson (line 27) | Map<String, dynamic> toJson()
  class SearchItemsOwner (line 161) | @JsonSerializable()
    method toJson (line 168) | Map<String, dynamic> toJson()
  class SearchItemsLicense (line 204) | @JsonSerializable()
    method toJson (line 211) | Map<String, dynamic> toJson()

FILE: lib/order/order_router.dart
  class OrderRouter (line 9) | class OrderRouter implements IRouterProvider{
    method initRouter (line 17) | void initRouter(FluroRouter router)

FILE: lib/order/page/order_info_page.dart
  class OrderInfoPage (line 17) | class OrderInfoPage extends StatefulWidget {
    method createState (line 22) | _OrderInfoPageState createState()
  class _OrderInfoPageState (line 25) | class _OrderInfoPageState extends State<OrderInfoPage> {
    method build (line 28) | Widget build(BuildContext context)
    method _buildOrderInfoItem (line 173) | Widget _buildOrderInfoItem(String title, String content)
    method _buildOrderGoodsItem (line 188) | Widget _buildOrderGoodsItem(int index)
    method _buildGoodsTag (line 242) | Widget _buildGoodsTag(Color color, String text)
    method _buildGoodsInfoItem (line 258) | Widget _buildGoodsInfoItem(String title, String content, {Color? conte...
    method _showCallPhoneDialog (line 276) | void _showCallPhoneDialog(String phone)

FILE: lib/order/page/order_list_page.dart
  class OrderListPage (line 10) | class OrderListPage extends StatefulWidget {
    method createState (line 20) | _OrderListPageState createState()
  class _OrderListPageState (line 23) | class _OrderListPageState extends State<OrderListPage> with AutomaticKee...
    method initState (line 35) | void initState()
    method changeNotifier (line 42) | Map<ChangeNotifier, List<VoidCallback>?>? changeNotifier()
    method build (line 47) | Widget build(BuildContext context)
    method _onRefresh (line 95) | Future<void> _onRefresh()
    method _hasMore (line 104) | bool _hasMore()
    method _loadMore (line 108) | Future<void> _loadMore()

FILE: lib/order/page/order_page.dart
  class OrderPage (line 19) | class OrderPage extends StatefulWidget {
    method createState (line 24) | _OrderPageState createState()
  class _OrderPageState (line 27) | class _OrderPageState extends State<OrderPage> with AutomaticKeepAliveCl...
    method initState (line 38) | void initState()
    method _preCacheImage (line 47) | void _preCacheImage()
    method dispose (line 56) | void dispose()
    method didChangeDependencies (line 64) | void didChangeDependencies()
    method build (line 70) | Widget build(BuildContext context)
    method _sliverBuilder (line 121) | List<Widget> _sliverBuilder(BuildContext context)
    method _onPageChange (line 209) | Future<void> _onPageChange(int index)
  class _TabView (line 232) | class _TabView extends StatelessWidget {
    method build (line 240) | Widget build(BuildContext context)
  class SliverAppBarDelegate (line 276) | class SliverAppBarDelegate extends SliverPersistentHeaderDelegate {
    method build (line 291) | Widget build(BuildContext context, double shrinkOffset, bool overlapsC...
    method shouldRebuild (line 296) | bool shouldRebuild(SliverAppBarDelegate oldDelegate)

FILE: lib/order/page/order_search_page.dart
  class OrderSearchPage (line 18) | class OrderSearchPage extends StatefulWidget {
    method createState (line 23) | _OrderSearchPageState createState()
  class _OrderSearchPageState (line 26) | class _OrderSearchPageState extends State<OrderSearchPage> with BasePage...
    method initState (line 35) | void initState()
    method build (line 42) | Widget build(BuildContext context)
    method _onRefresh (line 83) | Future<void> _onRefresh()
    method _loadMore (line 88) | Future<void> _loadMore()
    method createPresenter (line 97) | PowerPresenter<dynamic> createPresenter()
    method setUser (line 109) | void setUser(UserEntity? user)

FILE: lib/order/page/order_track_page.dart
  class OrderTrackPage (line 8) | class OrderTrackPage extends StatefulWidget {
    method createState (line 13) | _OrderTrackPageState createState()
  class _OrderTrackPageState (line 16) | class _OrderTrackPageState extends State<OrderTrackPage> {
    method build (line 19) | Widget build(BuildContext context)
    method _buildStep (line 55) | Step _buildStep(int index)

FILE: lib/order/presenter/order_search_presenter.dart
  class OrderSearchPresenter (line 8) | class OrderSearchPresenter extends BasePagePresenter<OrderSearchIMvpView> {
    method search (line 10) | Future<dynamic> search(String text, int page, bool isShowDialog)

FILE: lib/order/provider/base_list_provider.dart
  class BaseListProvider (line 4) | class BaseListProvider<T> extends ChangeNotifier {
    method setStateType (line 13) | void setStateType(StateType stateType)
    method add (line 18) | void add(T data)
    method addAll (line 23) | void addAll(List<T> data)
    method insert (line 28) | void insert(int i, T data)
    method insertAll (line 33) | void insertAll(int i, List<T> data)
    method remove (line 38) | void remove(T data)
    method removeAt (line 43) | void removeAt(int i)
    method clear (line 48) | void clear()
    method refresh (line 53) | void refresh()

FILE: lib/order/provider/order_page_provider.dart
  class OrderPageProvider (line 3) | class OrderPageProvider extends ChangeNotifier {
    method refresh (line 9) | void refresh()
    method setIndex (line 13) | void setIndex(int index)

FILE: lib/order/widgets/order_item.dart
  class OrderItem (line 16) | class OrderItem extends StatelessWidget {
    method build (line 28) | Widget build(BuildContext context)
    method _buildContent (line 44) | Widget _buildContent(BuildContext context)
    method _showCallPhoneDialog (line 155) | void _showCallPhoneDialog(BuildContext context, String phone)
    method _showPayTypeDialog (line 185) | void _showPayTypeDialog(BuildContext context)
  class OrderItemButton (line 202) | class OrderItemButton extends StatelessWidget {
    method build (line 218) | Widget build(BuildContext context)

FILE: lib/order/widgets/order_tag_item.dart
  class OrderTagItem (line 7) | class OrderTagItem extends StatelessWidget {
    method build (line 19) | Widget build(BuildContext context)

FILE: lib/order/widgets/pay_type_dialog.dart
  class PayTypeDialog (line 8) | class PayTypeDialog extends StatefulWidget {
    method createState (line 18) | _PayTypeDialog createState()
  class _PayTypeDialog (line 22) | class _PayTypeDialog extends State<PayTypeDialog> {
    method _buildItem (line 27) | Widget _buildItem(int index)
    method build (line 64) | Widget build(BuildContext context)

FILE: lib/res/colors.dart
  class Colours (line 3) | class Colours {

FILE: lib/res/constant.dart
  class Constant (line 3) | class Constant {

FILE: lib/res/dimens.dart
  class Dimens (line 1) | class Dimens {

FILE: lib/res/gaps.dart
  class Gaps (line 6) | class Gaps {

FILE: lib/res/resources.dart
  class Images (line 9) | class Images {

FILE: lib/res/styles.dart
  class TextStyles (line 6) | class TextStyles {

FILE: lib/routers/fluro_navigator.dart
  class NavigatorUtils (line 7) | class NavigatorUtils {
    method push (line 9) | void push(BuildContext context, String path,
    method pushResult (line 22) | void pushResult(BuildContext context, String path, void Function(Objec...
    method goBack (line 44) | void goBack(BuildContext context)
    method goBackWithParams (line 50) | void goBackWithParams(BuildContext context, Object result)
    method goWebViewPage (line 56) | void goWebViewPage(BuildContext context, String title, String url)
    method unfocus (line 61) | void unfocus()

FILE: lib/routers/i_router.dart
  class IRouterProvider (line 4) | abstract class IRouterProvider {
    method initRouter (line 6) | void initRouter(FluroRouter router)

FILE: lib/routers/not_found_page.dart
  class NotFoundPage (line 5) | class NotFoundPage extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)

FILE: lib/routers/routers.dart
  class Routes (line 16) | class Routes {
    method initRoutes (line 25) | void initRoutes()
    method initRouter (line 54) | void initRouter(IRouterProvider routerProvider)

FILE: lib/routers/web_page_transitions.dart
  class NoTransitionsOnWeb (line 6) | class NoTransitionsOnWeb extends PageTransitionsTheme {
    method buildTransitions (line 8) | Widget buildTransitions<T>(

FILE: lib/setting/page/about_page.dart
  class AboutPage (line 12) | class AboutPage extends StatefulWidget {
    method createState (line 17) | _AboutPageState createState()
  class _AboutPageState (line 20) | class _AboutPageState extends State<AboutPage> {
    method _randomColor (line 35) | Color _randomColor()
    method initState (line 45) | void initState()
    method dispose (line 62) | void dispose()
    method build (line 69) | Widget build(BuildContext context)
    method _launchWebURL (line 98) | void _launchWebURL(String title, String url)

FILE: lib/setting/page/account_manager_page.dart
  class AccountManagerPage (line 10) | class AccountManagerPage extends StatefulWidget {
    method createState (line 15) | _AccountManagerPageState createState()
  class _AccountManagerPageState (line 18) | class _AccountManagerPageState extends State<AccountManagerPage> {
    method build (line 20) | Widget build(BuildContext context)

FILE: lib/setting/page/locale_page.dart
  class LocalePage (line 9) | class LocalePage extends StatefulWidget {
    method createState (line 14) | _LocalePageState createState()
  class _LocalePageState (line 17) | class _LocalePageState extends State<LocalePage> {
    method build (line 22) | Widget build(BuildContext context)

FILE: lib/setting/page/setting_page.dart
  class SettingPage (line 21) | class SettingPage extends StatefulWidget {
    method createState (line 26) | _SettingPageState createState()
  class _SettingPageState (line 29) | class _SettingPageState extends State<SettingPage> {
    method build (line 31) | Widget build(BuildContext context)
    method _getCurrentTheme (line 87) | String _getCurrentTheme()
    method _getCurrentLocale (line 104) | String _getCurrentLocale()
    method _showExitDialog (line 121) | void _showExitDialog()
    method _showUpdateDialog (line 128) | void _showUpdateDialog()

FILE: lib/setting/page/theme_page.dart
  class ThemePage (line 8) | class ThemePage extends StatefulWidget {
    method createState (line 13) | _ThemePageState createState()
  class _ThemePageState (line 16) | class _ThemePageState extends State<ThemePage> {
    method build (line 21) | Widget build(BuildContext context)

FILE: lib/setting/provider/locale_provider.dart
  class LocaleProvider (line 6) | class LocaleProvider extends ChangeNotifier {
    method setLocale (line 20) | void setLocale(String locale)

FILE: lib/setting/provider/theme_provider.dart
  class ThemeProvider (line 14) | class ThemeProvider extends ChangeNotifier {
    method syncTheme (line 16) | void syncTheme()
    method setTheme (line 23) | void setTheme(ThemeMode themeMode)
    method getThemeMode (line 28) | ThemeMode getThemeMode()
    method getTheme (line 40) | ThemeData getTheme({bool isDarkMode = false})

FILE: lib/setting/setting_router.dart
  class SettingRouter (line 10) | class SettingRouter implements IRouterProvider{
    method initRouter (line 19) | void initRouter(FluroRouter router)

FILE: lib/setting/widgets/exit_dialog.dart
  class ExitDialog (line 7) | class ExitDialog extends StatefulWidget {
    method createState (line 14) | _ExitDialog createState()
  class _ExitDialog (line 18) | class _ExitDialog extends State<ExitDialog> {
    method build (line 21) | Widget build(BuildContext context)

FILE: lib/setting/widgets/update_dialog.dart
  class UpdateDialog (line 17) | class UpdateDialog extends StatefulWidget {
    method createState (line 22) | _UpdateDialogState createState()
  class _UpdateDialogState (line 25) | class _UpdateDialogState extends State<UpdateDialog> {
    method dispose (line 32) | void dispose()
    method build (line 40) | Widget build(BuildContext context)
    method _buildButton (line 95) | Widget _buildButton(BuildContext context)
    method _download (line 149) | Future<void> _download()

FILE: lib/shop/iview/shop_iview.dart
  class ShopIMvpView (line 4) | abstract class ShopIMvpView implements IMvpView {
    method setUser (line 6) | void setUser(UserEntity? user)

FILE: lib/shop/models/freight_config_model.dart
  class FreightConfigModel (line 2) | class FreightConfigModel {
    method toJson (line 20) | Map<String, dynamic> toJson()

FILE: lib/shop/models/user_entity.dart
  class UserEntity (line 4) | @JsonSerializable()
    method toJson (line 11) | Map<String, dynamic> toJson()

FILE: lib/shop/page/freight_config_page.dart
  class FreightConfigPage (line 16) | class FreightConfigPage extends StatefulWidget {
    method createState (line 21) | _FreightConfigPageState createState()
  class _FreightConfigPageState (line 24) | class _FreightConfigPageState extends State<FreightConfigPage> {
    method initState (line 29) | void initState()
    method _reset (line 34) | void  _reset()
    method build (line 42) | Widget build(BuildContext context)
    method _buildItem (line 87) | Widget _buildItem(int index)
    method _showOrderPriceInputDialog (line 213) | void _showOrderPriceInputDialog(int index)
    method _showRangePriceInputDialog (line 234) | void _showRangePriceInputDialog(int index)
    method _showFreightInputDialog (line 252) | void _showFreightInputDialog(int index)
    method _getPriceText (line 270) | String _getPriceText(int index)

FILE: lib/shop/page/input_text_page.dart
  class InputTextPage (line 8) | class InputTextPage extends StatefulWidget {
    method createState (line 24) | _InputTextPageState createState()
  class _InputTextPageState (line 27) | class _InputTextPageState extends State<InputTextPage> {
    method initState (line 34) | void initState()
    method dispose (line 42) | void dispose()
    method build (line 48) | Widget build(BuildContext context)

FILE: lib/shop/page/message_page.dart
  class MessagePage (line 7) | class MessagePage extends StatefulWidget {
    method createState (line 12) | _MessagePageState createState()
  class _MessagePageState (line 15) | class _MessagePageState extends State<MessagePage> {
    method dispose (line 20) | void dispose()
    method build (line 26) | Widget build(BuildContext context)
  class _MessageItem (line 48) | class _MessageItem extends StatefulWidget {
    method createState (line 50) | _MessageItemState createState()
  class _MessageItemState (line 53) | class _MessageItemState extends State<_MessageItem> {
    method build (line 55) | Widget build(BuildContext context)

FILE: lib/shop/page/select_address_page.dart
  class AddressSelectPage (line 9) | class AddressSelectPage extends StatefulWidget {
    method createState (line 14) | _AddressSelectPageState createState()
  class _AddressSelectPageState (line 17) | class _AddressSelectPageState extends State<AddressSelectPage> {
    method dispose (line 25) | void dispose()
    method initState (line 31) | void initState()
    method build (line 42) | Widget build(BuildContext context)
  class _AddressItem (line 115) | class _AddressItem extends StatelessWidget {
    method build (line 128) | Widget build(BuildContext context)

FILE: lib/shop/page/shop_page.dart
  class ShopPage (line 18) | class ShopPage extends StatefulWidget {
    method createState (line 28) | _ShopPageState createState()
  class _ShopPageState (line 31) | class _ShopPageState extends State<ShopPage> with BasePageMixin<ShopPage...
    method setUser (line 40) | void setUser(UserEntity? user)
    method build (line 48) | Widget build(BuildContext context)
    method createPresenter (line 191) | ShopPagePresenter createPresenter()
  class _ShopFunctionModule (line 195) | class _ShopFunctionModule extends StatelessWidget {
    method build (line 210) | Widget build(BuildContext context)

FILE: lib/shop/page/shop_setting_page.dart
  class ShopSettingPage (line 16) | class ShopSettingPage extends StatefulWidget {
    method createState (line 21) | _ShopSettingPageState createState()
  class _ShopSettingPageState (line 24) | class _ShopSettingPageState extends State<ShopSettingPage> {
    method build (line 37) | Widget build(BuildContext context)
    method _getPayType (line 192) | String _getPayType()
    method _goInputTextPage (line 206) | void _goInputTextPage(BuildContext context, String title,
    method _showInputDialog (line 221) | void _showInputDialog(String title, void Function(String) onPressed)
    method _showPayTypeDialog (line 234) | void _showPayTypeDialog()
    method _showSendTypeDialog (line 251) | void _showSendTypeDialog()
  class InputTextPageArgumentsData (line 269) | class InputTextPageArgumentsData {

FILE: lib/shop/presenter/shop_presenter.dart
  class ShopPagePresenter (line 9) | class ShopPagePresenter extends BasePagePresenter<ShopIMvpView> {
    method initState (line 12) | void initState()
    method testListData (line 29) | void testListData()

FILE: lib/shop/provider/user_provider.dart
  class UserProvider (line 4) | class UserProvider extends ChangeNotifier {
    method setUser (line 9) | void setUser(UserEntity? user)

FILE: lib/shop/shop_router.dart
  class ShopRouter (line 11) | class ShopRouter implements IRouterProvider{
    method initRouter (line 21) | void initRouter(FluroRouter router)

FILE: lib/shop/widgets/pay_type_dialog.dart
  class PayTypeDialog (line 10) | class PayTypeDialog extends StatefulWidget {
    method createState (line 22) | _PayTypeDialog createState()
  class _PayTypeDialog (line 26) | class _PayTypeDialog extends State<PayTypeDialog> {
    method _buildItem (line 31) | Widget _buildItem(int index)
    method build (line 69) | Widget build(BuildContext context)

FILE: lib/shop/widgets/price_input_dialog.dart
  class PriceInputDialog (line 10) | class PriceInputDialog extends StatefulWidget {
    method createState (line 24) | _PriceInputDialog createState()
  class _PriceInputDialog (line 28) | class _PriceInputDialog extends State<PriceInputDialog> {
    method dispose (line 33) | void dispose()
    method build (line 39) | Widget build(BuildContext context)

FILE: lib/shop/widgets/range_price_input_dialog.dart
  class RangePriceInputDialog (line 9) | class RangePriceInputDialog extends StatefulWidget {
    method createState (line 21) | _RangePriceInputDialog createState()
  class _RangePriceInputDialog (line 25) | class _RangePriceInputDialog extends State<RangePriceInputDialog> {
    method dispose (line 31) | void dispose()
    method build (line 38) | Widget build(BuildContext context)
    method _buildTextField (line 81) | Widget _buildTextField(TextEditingController controller)

FILE: lib/shop/widgets/send_type_dialog.dart
  class SendTypeDialog (line 9) | class SendTypeDialog extends StatefulWidget {
    method createState (line 19) | _SendTypeDialog createState()
  class _SendTypeDialog (line 22) | class _SendTypeDialog extends State<SendTypeDialog> {
    method _buildItem (line 27) | Widget _buildItem(int index)
    method build (line 64) | Widget build(BuildContext context)

FILE: lib/statistics/page/goods_statistics_page.dart
  class GoodsStatisticsPage (line 16) | class GoodsStatisticsPage extends StatefulWidget {
    method createState (line 21) | _GoodsStatisticsPageState createState()
  class _GoodsStatisticsPageState (line 24) | class _GoodsStatisticsPageState extends State<GoodsStatisticsPage> {
    method initState (line 32) | void initState()
    method build (line 38) | Widget build(BuildContext context)
    method _buildChart (line 92) | Widget _buildChart()
    method _getRandomData (line 110) | List<PieData> _getRandomData()
    method _buildItem (line 139) | Widget _buildItem(int index)
    method _buildSelectedText (line 210) | Widget _buildSelectedText(String text, int index)

FILE: lib/statistics/page/order_statistics_page.dart
  class OrderStatisticsPage (line 17) | class OrderStatisticsPage extends StatefulWidget {
    method createState (line 24) | _OrderStatisticsPageState createState()
  class _OrderStatisticsPageState (line 27) | class _OrderStatisticsPageState extends State<OrderStatisticsPage> with ...
    method initState (line 46) | void initState()
    method build (line 61) | Widget build(BuildContext context)
    method _buildButton (line 156) | Widget _buildButton(String text, Key key, int index)
    method _buildChart (line 171) | Widget _buildChart(Color color, Color shadowColor, String title, Strin...
    method _getRandomData (line 233) | List<DataPoint<dynamic>> _getRandomData()
    method _buildCalendar (line 255) | Widget _buildCalendar()
    method _buildWeeks (line 273) | List<Widget> _buildWeeks()
    method addWidget (line 275) | void addWidget(String str)
    method _builderMonthCalendar (line 284) | List<Widget> _builderMonthCalendar()
    method addButton (line 294) | void addButton(DateTime day)
    method _builderYearCalendar (line 319) | List<Widget> _builderYearCalendar()
    method addButton (line 321) | void addButton(int month)
    method _builderWeekCalendar (line 342) | List<Widget> _builderWeekCalendar()
    method addButton (line 345) | void addButton(DateTime day)

FILE: lib/statistics/page/statistics_page.dart
  class StatisticsPage (line 15) | class StatisticsPage extends StatefulWidget {
    method createState (line 20) | _StatisticsPageState createState()
  class _StatisticsPageState (line 23) | class _StatisticsPageState extends State<StatisticsPage> {
    method build (line 26) | Widget build(BuildContext context)
    method _sliverBuilder (line 38) | List<Widget> _sliverBuilder()
  class _StatisticsItem (line 112) | class _StatisticsItem extends StatelessWidget {
    method build (line 121) | Widget build(BuildContext context)
  class _StatisticsTab (line 157) | class _StatisticsTab extends StatelessWidget {
    method build (line 166) | Widget build(BuildContext context)

FILE: lib/statistics/statistics_router.dart
  class StatisticsRouter (line 8) | class StatisticsRouter implements IRouterProvider{
    method initRouter (line 14) | void initRouter(FluroRouter router)

FILE: lib/statistics/widgets/selected_date.dart
  class SelectedDateButton (line 5) | class SelectedDateButton extends StatelessWidget {
    method build (line 26) | Widget build(BuildContext context)
    method _buildText (line 61) | Widget _buildText()
    method getTextColor (line 79) | Color getTextColor()

FILE: lib/store/page/store_audit_page.dart
  class StoreAuditPage (line 21) | class StoreAuditPage extends StatefulWidget {
    method createState (line 26) | _StoreAuditPageState createState()
  class _StoreAuditPageState (line 29) | class _StoreAuditPageState extends State<StoreAuditPage> {
    method _buildConfig (line 39) | KeyboardActionsConfig _buildConfig(BuildContext context)
    method build (line 71) | Widget build(BuildContext context)
    method _buildBody (line 97) | List<Widget> _buildBody()
    method _showBottomSheet (line 163) | void _showBottomSheet()

FILE: lib/store/page/store_audit_result_page.dart
  class StoreAuditResultPage (line 10) | class StoreAuditResultPage extends StatefulWidget {
    method createState (line 15) | _StoreAuditResultPageState createState()
  class _StoreAuditResultPageState (line 18) | class _StoreAuditResultPageState extends State<StoreAuditResultPage> {
    method build (line 20) | Widget build(BuildContext context)

FILE: lib/store/store_router.dart
  class StoreRouter (line 8) | class StoreRouter implements IRouterProvider{
    method initRouter (line 14) | void initRouter(FluroRouter router)

FILE: lib/util/app_navigator.dart
  class AppNavigator (line 5) | class AppNavigator {
    method push (line 6) | void push(BuildContext context, Widget scene)
    method pushReplacement (line 16) | void pushReplacement(BuildContext context, Widget scene)
    method pushAndRemoveUntil (line 26) | void pushAndRemoveUntil(BuildContext context, Widget scene)
    method pushResult (line 35) | void pushResult(BuildContext context, Widget scene, void Function(Obje...
    method goBack (line 53) | void goBack(BuildContext context)
    method goBackWithParams (line 58) | void goBackWithParams(BuildContext context, dynamic result)

FILE: lib/util/change_notifier_manage.dart
  function changeNotifier (line 46) | Map<ChangeNotifier?, List<VoidCallback>?>? changeNotifier()
  function initState (line 49) | void initState()
  function addListener (line 55) | void addListener(VoidCallback callback)
  function dispose (line 66) | void dispose()
  function removeListener (line 69) | void removeListener(VoidCallback callback)

FILE: lib/util/date_utils.dart
  class DateUtils (line 8) | class DateUtils {
    method formatMonth (line 16) | String formatMonth(DateTime d)
    method formatDay (line 17) | String formatDay(DateTime d)
    method formatFirstDay (line 18) | String formatFirstDay(DateTime d)
    method fullDayFormat (line 19) | String fullDayFormat(DateTime d)
    method apiDayFormat (line 20) | String apiDayFormat(DateTime d)
    method apiDayFormat2 (line 21) | String apiDayFormat2(DateTime d)
    method daysInMonth (line 35) | List<DateTime> daysInMonth(DateTime month)
    method isFirstDayOfMonth (line 63) | bool isFirstDayOfMonth(DateTime day)
    method isLastDayOfMonth (line 67) | bool isLastDayOfMonth(DateTime day)
    method firstDayOfMonth (line 71) | DateTime firstDayOfMonth(DateTime month)
    method firstDayOfWeek (line 75) | DateTime firstDayOfWeek(DateTime day)
    method lastDayOfWeek (line 86) | DateTime lastDayOfWeek(DateTime day)
    method lastDayOfMonth (line 98) | DateTime lastDayOfMonth(DateTime month)
    method daysInRange (line 109) | Iterable<DateTime> daysInRange(DateTime start, DateTime end)
    method isSameDay (line 124) | bool isSameDay(DateTime a, DateTime b)
    method isSameWeek (line 128) | bool isSameWeek(DateTime a, DateTime b)
    method previousMonth (line 145) | DateTime previousMonth(DateTime m)
    method nextMonth (line 157) | DateTime nextMonth(DateTime m)
    method previousWeek (line 170) | DateTime previousWeek(DateTime w)
    method nextWeek (line 174) | DateTime nextWeek(DateTime w)
    method previousWeekToString (line 178) | String previousWeekToString(DateTime w)
    method nextDay (line 182) | DateTime nextDay(DateTime w)
    method daysInWeek (line 186) | List<DateTime> daysInWeek(DateTime week)
    method _firstDayOfWeek (line 194) | DateTime _firstDayOfWeek(DateTime day)
    method _lastDayOfWeek (line 201) | DateTime _lastDayOfWeek(DateTime day)
    method isExtraDay (line 208) | bool isExtraDay(DateTime day, DateTime now)
    method _isExtraDayBefore (line 212) | bool _isExtraDayBefore(DateTime day, DateTime now)
    method _isExtraDayAfter (line 216) | bool _isExtraDayAfter(DateTime day, DateTime now)

FILE: lib/util/device_utils.dart
  class Device (line 7) | class Device {
    method initDeviceInfo (line 21) | Future<void> initDeviceInfo()
    method getAndroidSdkInt (line 29) | int getAndroidSdkInt()

FILE: lib/util/handle_error_utils.dart
  function handleError (line 7) | void handleError(void Function() body)
  function _reportError (line 26) | Future<void> _reportError(Object error, StackTrace stackTrace)

FILE: lib/util/image_utils.dart
  class ImageUtils (line 7) | class ImageUtils {
    method getAssetImage (line 9) | ImageProvider getAssetImage(String name, {ImageFormat format = ImageFo...
    method getImgPath (line 13) | String getImgPath(String name, {ImageFormat format = ImageFormat.png})
    method getImageProvider (line 17) | ImageProvider getImageProvider(String? imageUrl, {String holderImg = '...
  type ImageFormat (line 25) | enum ImageFormat {

FILE: lib/util/input_formatter/fix_ios_input_formatter.dart
  class FixIOSTextInputFormatter (line 14) | @Deprecated('1.22已修复')
    method formatEditUpdate (line 18) | TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditi...

FILE: lib/util/input_formatter/number_text_input_formatter.dart
  class UsNumberTextInputFormatter (line 4) | class UsNumberTextInputFormatter extends TextInputFormatter {
    method _strToFloat (line 18) | double _strToFloat(String str, [double defaultValue = _kDefaultDouble])
    method _getValueDigit (line 27) | int _getValueDigit(String value)
    method formatEditUpdate (line 36) | TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditi...

FILE: lib/util/log_utils.dart
  class Log (line 7) | class Log {
    method init (line 11) | void init()
    method d (line 15) | void d(String msg, {String tag = tag})
    method e (line 21) | void e(String msg, {String tag = tag})
    method json (line 27) | void json(String msg, {String tag = tag})
    method _printMap (line 45) | void _printMap(Map<dynamic, dynamic> data, {String tag = tag, int tabs...
    method _printList (line 84) | void _printList(List<dynamic> list, {String tag = tag, int tabs = 1})
    method _canFlattenMap (line 101) | bool _canFlattenMap(Map<dynamic, dynamic> map, List<dynamic> list)
    method _indent (line 105) | String _indent([int tabCount = 1])

FILE: lib/util/other_utils.dart
  class Utils (line 13) | class Utils {
    method launchWebURL (line 16) | Future<void> launchWebURL(String url)
    method launchTelURL (line 26) | Future<void> launchTelURL(String phone)
    method formatPrice (line 35) | String formatPrice(String price, {MoneyFormat format = MoneyFormat.END...
    method getKeyboardActionsConfig (line 39) | KeyboardActionsConfig getKeyboardActionsConfig(BuildContext context, L...
    method getCurrLocale (line 59) | String? getCurrLocale()
  function showElasticDialog (line 69) | Future<T?> showElasticDialog<T>({
  function _buildDialogTransitions (line 91) | Widget _buildDialogTransitions(BuildContext context, Animation<double> a...

FILE: lib/util/screen_utils.dart
  class Screen (line 13) | class Screen {
    method isLandscape (line 16) | bool isLandscape(BuildContext context)
    method size (line 18) | Size size(BuildContext context)
    method width (line 20) | double width(BuildContext context)
    method height (line 22) | double height(BuildContext context)
    method diagonal (line 24) | double diagonal(BuildContext context)
    method inches (line 30) | Size inches(BuildContext context)
    method widthInches (line 35) | double widthInches(BuildContext context)
    method heightInches (line 37) | double heightInches(BuildContext context)
    method diagonalInches (line 39) | double diagonalInches(BuildContext context)

FILE: lib/util/theme_utils.dart
  class ThemeUtils (line 5) | class ThemeUtils {
    method isDark (line 7) | bool isDark(BuildContext context)
    method getDarkColor (line 11) | Color? getDarkColor(BuildContext context, Color darkColor)
    method getIconColor (line 15) | Color? getIconColor(BuildContext context)
    method getStickyHeaderColor (line 19) | Color getStickyHeaderColor(BuildContext context)
    method getDialogTextFieldColor (line 23) | Color getDialogTextFieldColor(BuildContext context)
    method getKeyboardActionsColor (line 27) | Color? getKeyboardActionsColor(BuildContext context)

FILE: lib/util/toast_utils.dart
  class Toast (line 5) | class Toast {
    method show (line 6) | void show(String? msg, {int duration = 2000})
    method cancelToast (line 17) | void cancelToast()

FILE: lib/util/version_utils.dart
  class VersionUtils (line 4) | class VersionUtils {
    method install (line 8) | void install(String path)
    method jumpAppStore (line 13) | void jumpAppStore()

FILE: lib/widgets/base_dialog.dart
  class BaseDialog (line 8) | class BaseDialog extends StatelessWidget {
    method build (line 24) | Widget build(BuildContext context)
  class _DialogButton (line 106) | class _DialogButton extends StatelessWidget {
    method build (line 119) | Widget build(BuildContext context)

FILE: lib/widgets/bezier_chart/bezier_chart_config.dart
  type BezierChartScale (line 5) | enum BezierChartScale {
  type BezierChartAggregation (line 15) | enum BezierChartAggregation {
  class BezierChartConfig (line 25) | class BezierChartConfig {

FILE: lib/widgets/bezier_chart/bezier_chart_widget.dart
  type FooterValueBuilder (line 13) | typedef FooterValueBuilder = String Function(double value);
  type FooterDateTimeBuilder (line 14) | typedef FooterDateTimeBuilder = String Function(
  class BezierChart (line 17) | class BezierChart extends StatefulWidget {
    method createState (line 144) | BezierChartState createState()
  class BezierChartState (line 147) | @visibleForTesting
    method _refreshPosition (line 201) | void _refreshPosition(details)
    method _updatePosition (line 209) | void _updatePosition(Offset globalPosition)
    method _onDataPointSnap (line 257) | void _onDataPointSnap(double value)
    method _buildXDataPoints (line 284) | void _buildXDataPoints()
    method _convertToDateOnly (line 361) | DateTime _convertToDateOnly(DateTime date)
    method _buildContentWidth (line 369) | double _buildContentWidth(BoxConstraints constraints)
    method _notifyScaleChanged (line 707) | void _notifyScaleChanged(BezierChartScale lastScale)
    method didUpdateWidget (line 717) | void didUpdateWidget(BezierChart oldWidget)
    method initState (line 768) | void initState()
    method dispose (line 784) | void dispose()
    method build (line 793) | Widget build(BuildContext context)
    method _addYItem (line 949) | _addYItem(double value, {Key? key})
  function _getRealValue (line 1005) | _getRealValue(double value, double maxConstraint, double maxValue)
  class _BezierChartPainter (line 1009) | class _BezierChartPainter extends CustomPainter {
    method _getMaxValueX (line 1063) | double _getMaxValueX()
    method _getMaxValueY (line 1072) | double _getMaxValueY()
    method paint (line 1085) | void paint(Canvas canvas, Size size)
    method _drawBezierLinePath (line 1113) | void _drawBezierLinePath(BezierLine line)
    method _getInfoTitleText (line 1520) | String _getInfoTitleText()
    method _getFooterText (line 1572) | String _getFooterText(DataPoint dataPoint)
    method _fromCenter (line 1626) | Rect _fromCenter({required Offset center, required double width, requi...
    method shouldRepaint (line 1635) | bool shouldRepaint(_BezierChartPainter oldDelegate)
  class _AxisValue (line 1644) | class _AxisValue {
  function _compareLengths (line 1653) | bool _compareLengths(int currentValue, List<BezierLine> val2)
  function _isSorted (line 1662) | bool _isSorted<T>(List<double> list, [int Function(double, double)? comp...
  function _checkCustomValues (line 1674) | bool _checkCustomValues(List<BezierLine> list)
  function _areAllPositive (line 1683) | bool _areAllPositive(Iterable<double> list)
  function formatAsIntOrDouble (line 1691) | String formatAsIntOrDouble(double str)
  class _CustomValue (line 1702) | class _CustomValue {
  function areEqualDates (line 1714) | bool areEqualDates(DateTime dateTime1, DateTime dateTime2)
  function areEqualDatesIncludingHour (line 1719) | bool areEqualDatesIncludingHour(DateTime dateTime1, DateTime dateTime2)

FILE: lib/widgets/bezier_chart/bezier_line.dart
  type MissingValueBuilder (line 3) | typedef MissingValueBuilder = double Function(DateTime value);
  class BezierLine (line 6) | class BezierLine {
  class DataPoint (line 72) | class DataPoint<T> {
    method toString (line 85) | String toString()

FILE: lib/widgets/bezier_chart/my_single_child_scroll_view.dart
  class MySingleChildScrollView (line 8) | class MySingleChildScrollView extends StatelessWidget {
    method _getDirection (line 90) | AxisDirection _getDirection(BuildContext context)
    method build (line 96) | Widget build(BuildContext context)
  class _SingleChildViewport (line 121) | class _SingleChildViewport extends SingleChildRenderObjectWidget {
    method createRenderObject (line 133) | _RenderSingleChildViewport createRenderObject(BuildContext context)
    method updateRenderObject (line 141) | void updateRenderObject(
  class _RenderSingleChildViewport (line 150) | class _RenderSingleChildViewport extends RenderBox
    method _hasScrolled (line 193) | void _hasScrolled()
    method setupParentData (line 199) | void setupParentData(RenderObject child)
    method attach (line 206) | void attach(PipelineOwner owner)
    method detach (line 212) | void detach()
    method _getInnerConstraints (line 247) | BoxConstraints _getInnerConstraints(BoxConstraints constraints)
    method computeMinIntrinsicWidth (line 257) | double computeMinIntrinsicWidth(double height)
    method computeMaxIntrinsicWidth (line 264) | double computeMaxIntrinsicWidth(double height)
    method computeMinIntrinsicHeight (line 271) | double computeMinIntrinsicHeight(double width)
    method computeMaxIntrinsicHeight (line 278) | double computeMaxIntrinsicHeight(double width)
    method performLayout (line 290) | void performLayout()
    method _paintOffsetForPosition (line 304) | Offset _paintOffsetForPosition(double position)
    method _shouldClipAtPaintOffset (line 317) | bool _shouldClipAtPaintOffset(Offset paintOffset)
    method paint (line 324) | void paint(PaintingContext context, Offset offset)
    method paintContents (line 328) | void paintContents(PaintingContext context, Offset offset)
    method applyPaintTransform (line 343) | void applyPaintTransform(RenderBox child, Matrix4 transform)
    method describeApproximatePaintClip (line 349) | Rect? describeApproximatePaintClip(RenderObject child)
    method hitTestChildren (line 356) | bool hitTestChildren(BoxHitTestResult result, {required Offset position})
    method getOffsetToReveal (line 365) | RevealedOffset getOffsetToReveal(RenderObject target, double alignment,
    method showOnScreen (line 411) | void showOnScreen({
    method describeSemanticsClip (line 442) | Rect describeSemanticsClip(RenderObject child)

FILE: lib/widgets/click_item.dart
  class ClickItem (line 4) | class ClickItem extends StatelessWidget {
    method build (line 22) | Widget build(BuildContext context)

FILE: lib/widgets/double_tap_back_exit_app.dart
  class DoubleTapBackExitApp (line 6) | class DoubleTapBackExitApp extends StatefulWidget {
    method createState (line 19) | _DoubleTapBackExitAppState createState()
  class _DoubleTapBackExitAppState (line 22) | class _DoubleTapBackExitAppState extends State<DoubleTapBackExitApp> {
    method build (line 27) | Widget build(BuildContext context)
    method _isExit (line 34) | Future<bool> _isExit()

FILE: lib/widgets/fractionally_aligned_sized_box.dart
  class FractionallyAlignedSizedBox (line 5) | class FractionallyAlignedSizedBox extends StatelessWidget {
    method build (line 53) | Widget build(BuildContext context)

FILE: lib/widgets/load_image.dart
  class LoadImage (line 6) | class LoadImage extends StatelessWidget {
    method build (line 29) | Widget build(BuildContext context)
  class LoadAssetImage (line 57) | class LoadAssetImage extends StatelessWidget {
    method build (line 80) | Widget build(BuildContext context)

FILE: lib/widgets/my_app_bar.dart
  class MyAppBar (line 9) | class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
    method build (line 33) | Widget build(BuildContext context)

FILE: lib/widgets/my_button.dart
  class MyButton (line 6) | class MyButton extends StatelessWidget {
    method build (line 38) | Widget build(BuildContext context)

FILE: lib/widgets/my_card.dart
  class MyCard (line 5) | class MyCard extends StatelessWidget {
    method build (line 19) | Widget build(BuildContext context)

FILE: lib/widgets/my_flexible_space_bar.dart
  class MyFlexibleSpaceBar (line 23) | class MyFlexibleSpaceBar extends StatefulWidget {
    method createSettings (line 86) | Widget createSettings({
    method createState (line 103) | _FlexibleSpaceBarState createState()
  class _FlexibleSpaceBarState (line 106) | class _FlexibleSpaceBarState extends State<MyFlexibleSpaceBar> {
    method _getEffectiveCenterTitle (line 107) | bool _getEffectiveCenterTitle(ThemeData theme)
    method _getTitleAlignment (line 123) | Alignment _getTitleAlignment(bool effectiveCenterTitle)
    method _getCollapsePadding (line 136) | double? _getCollapsePadding(double t, FlexibleSpaceBarSettings settings)
    method initState (line 153) | void initState()
    method build (line 163) | Widget build(BuildContext context)

FILE: lib/widgets/my_refresh_list.dart
  class DeerListView (line 9) | class DeerListView extends StatefulWidget {
    method createState (line 37) | _DeerListViewState createState()
  type RefreshCallback (line 40) | typedef RefreshCallback = Future<void> Function();
  type LoadMoreCallback (line 41) | typedef LoadMoreCallback = Future<void> Function();
  class _DeerListViewState (line 43) | class _DeerListViewState extends State<DeerListView> {
    method build (line 49) | Widget build(BuildContext context)
    method _loadMore (line 82) | Future<void> _loadMore()
  class MoreWidget (line 99) | class MoreWidget extends StatelessWidget {
    method build (line 108) | Widget build(BuildContext context)

FILE: lib/widgets/my_scroll_view.dart
  class MyScrollView (line 9) | class MyScrollView extends StatelessWidget {
    method build (line 37) | Widget build(BuildContext context)

FILE: lib/widgets/my_search_bar.dart
  class MySearchBar (line 11) | class MySearchBar extends StatefulWidget implements PreferredSizeWidget {
    method createState (line 25) | _MySearchBarState createState()
  class _MySearchBarState (line 31) | class _MySearchBarState extends State<MySearchBar> {
    method dispose (line 37) | void dispose()
    method build (line 53) | Widget build(BuildContext context)

FILE: lib/widgets/pie_chart/pie_chart.dart
  class PieChart (line 10) | class PieChart extends StatefulWidget {
    method createState (line 27) | _PieChartState createState()
  class _PieChartState (line 30) | class _PieChartState extends State<PieChart> with SingleTickerProviderSt...
    method initState (line 38) | void initState()
    method didUpdateWidget (line 48) | void didUpdateWidget(PieChart oldWidget)
    method dispose (line 57) | void dispose()
    method build (line 63) | Widget build(BuildContext context)
  class PieChartPainter (line 112) | class PieChartPainter extends CustomPainter {
    method paint (line 164) | void paint(Canvas canvas, Size size)
    method drawPercentage (line 205) | void drawPercentage(Canvas context, String percentage, double x, doubl...
    method shouldRepaint (line 218) | bool shouldRepaint(PieChartPainter oldDelegate)
    method _buildSemantics (line 227) | List<CustomPainterSemantics> _buildSemantics(Size size)

FILE: lib/widgets/pie_chart/pie_data.dart
  class PieData (line 3) | class PieData {
    method toString (line 14) | String toString()

FILE: lib/widgets/popup_window.dart
  function showPopupWindow (line 15) | Future<T?> showPopupWindow<T>({
  class _PopupWindowRoute (line 63) | class _PopupWindowRoute<T> extends PopupRoute<T> {
    method createAnimation (line 91) | Animation<double> createAnimation()
    method buildPage (line 99) | Widget buildPage(BuildContext context, Animation<double> animation,
  class _PopupWindow (line 138) | class _PopupWindow<T> extends StatelessWidget {
    method build (line 149) | Widget build(BuildContext context)
  class _PopupWindowLayoutDelegate (line 187) | class _PopupWindowLayoutDelegate extends SingleChildLayoutDelegate {
    method getConstraintsForChild (line 195) | BoxConstraints getConstraintsForChild(BoxConstraints constraints)
    method getPositionForChild (line 203) | Offset getPositionForChild(Size size, Size childSize)
    method shouldRelayout (line 248) | bool shouldRelayout(_PopupWindowLayoutDelegate oldDelegate)

FILE: lib/widgets/progress_dialog.dart
  class ProgressDialog (line 6) | class ProgressDialog extends Dialog {
    method build (line 16) | Widget build(BuildContext context)

FILE: lib/widgets/selected_image.dart
  class SelectedImage (line 13) | class SelectedImage extends StatefulWidget {
    method createState (line 27) | SelectedImageState createState()
  class SelectedImageState (line 30) | class SelectedImageState extends State<SelectedImage> {
    method _getImage (line 36) | Future<void> _getImage()
    method build (line 63) | Widget build(BuildContext context)

FILE: lib/widgets/selected_item.dart
  class SelectedItem (line 4) | class SelectedItem extends StatelessWidget {
    method build (line 22) | Widget build(BuildContext context)

FILE: lib/widgets/state_layout.dart
  class StateLayout (line 8) | class StateLayout extends StatelessWidget {
    method build (line 20) | Widget build(BuildContext context)
  type StateType (line 46) | enum StateType {

FILE: lib/widgets/text_field_item.dart
  class TextFieldItem (line 7) | class TextFieldItem extends StatelessWidget {
    method build (line 25) | Widget build(BuildContext context)
    method _getInputFormatters (line 64) | List<TextInputFormatter>? _getInputFormatters()

FILE: test/accessibility_test.dart
  function main (line 18) | void main()

FILE: test/account/account_accessibility_test.dart
  function main (line 16) | void main()

FILE: test/goods/goods_accessibility_test.dart
  function main (line 10) | void main()

FILE: test/login/login_accessibility_test.dart
  function main (line 11) | void main()

FILE: test/net/dio_test.dart
  function main (line 7) | void main()

FILE: test/order/order_accessibility_test.dart
  function main (line 7) | void main()

FILE: test/setting/setting_accessibility_test.dart
  function main (line 10) | void main()

FILE: test/shop/shop_accessibility_test.dart
  function main (line 11) | void main()

FILE: test/statistics/statistic_accessibility_test.dart
  function main (line 8) | void main()

FILE: test/store/store_accessibility_test.dart
  function main (line 7) | void main()

FILE: test/widget_test.dart
  function main (line 12) | void main()

FILE: test_driver/account/account.dart
  function main (line 9) | void main()

FILE: test_driver/account/account_test.dart
  function main (line 7) | void main()

FILE: test_driver/driver.dart
  function main (line 9) | void main()

FILE: test_driver/driver_test.dart
  function main (line 17) | void main()

FILE: test_driver/goods/goods.dart
  function main (line 9) | void main()

FILE: test_driver/goods/goods_test.dart
  function main (line 7) | void main()

FILE: test_driver/home/splash_page.dart
  function main (line 6) | void main()

FILE: test_driver/home/splash_page_test.dart
  function main (line 7) | void main([List<String> args = const <String>[]])

FILE: test_driver/login/login_page.dart
  function main (line 8) | void main()

FILE: test_driver/login/login_page_test.dart
  function main (line 7) | void main()

FILE: test_driver/order/order.dart
  function main (line 9) | void main()

FILE: test_driver/order/order_test.dart
  function main (line 7) | void main()

FILE: test_driver/setting/setting.dart
  function main (line 10) | Future<void> main()

FILE: test_driver/setting/setting_test.dart
  function main (line 7) | void main([List<String> args = const <String>[]])

FILE: test_driver/shop/shop.dart
  function main (line 9) | void main()

FILE: test_driver/shop/shop_test.dart
  function main (line 7) | void main()

FILE: test_driver/statistic/statistic.dart
  function main (line 8) | void main()

FILE: test_driver/statistic/statistic_test.dart
  function main (line 7) | void main()

FILE: test_driver/store/store.dart
  function main (line 8) | void main()

FILE: test_driver/store/store_test.dart
  function main (line 7) | void main()

FILE: test_driver/tools/test_utils.dart
  function delayed (line 2) | Future<dynamic> delayed ({int milliseconds = 666})

FILE: windows/flutter/generated_plugin_registrant.cc
  function RegisterPlugins (line 14) | void RegisterPlugins(flutter::PluginRegistry* registry) {

FILE: windows/runner/flutter_window.cpp
  function LRESULT (line 43) | LRESULT

FILE: windows/runner/flutter_window.h
  function class (line 13) | class FlutterWindow : public Win32Window {

FILE: windows/runner/main.cpp
  function wWinMain (line 9) | int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,

FILE: windows/runner/run_loop.h
  function class (line 11) | class RunLoop {

FILE: windows/runner/utils.cpp
  function CreateAndAttachConsole (line 10) | void CreateAndAttachConsole() {
  function GetCommandLineArguments (line 24) | std::vector<std::string> GetCommandLineArguments() {
  function Utf8FromUtf16 (line 44) | std::string Utf8FromUtf16(const wchar_t* utf16_string) {

FILE: windows/runner/win32_window.cpp
  function Scale (line 18) | int Scale(int source, double scale_factor) {
  function EnableFullDpiSupportIfAvailable (line 24) | void EnableFullDpiSupportIfAvailable(HWND hwnd) {
  class WindowClassRegistrar (line 41) | class WindowClassRegistrar {
    method WindowClassRegistrar (line 46) | static WindowClassRegistrar* GetInstance() {
    method WindowClassRegistrar (line 62) | WindowClassRegistrar() = default;
  function wchar_t (line 71) | const wchar_t* WindowClassRegistrar::GetWindowClass() {
  function LRESULT (line 133) | LRESULT CALLBACK Win32Window::WndProc(HWND const window,
  function LRESULT (line 152) | LRESULT
  function Win32Window (line 208) | Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept {
  function RECT (line 224) | RECT Win32Window::GetClientArea() {
  function HWND (line 230) | HWND Win32Window::GetHandle() {

FILE: windows/runner/win32_window.h
  type Size (line 21) | struct Size {
Condensed preview — 347 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,697K chars).
[
  {
    "path": ".github/FUNDING.yml",
    "chars": 718,
    "preview": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [u"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/deer-issue-template.md",
    "chars": 288,
    "preview": "---\nname: deer issue template\nabout: 请确保使用最新的代码并详细阅读了readme和查找了已有的issue,避免提出重复的问题。\ntitle: ''\nlabels: ''\nassignees: ''\n\n-"
  },
  {
    "path": ".github/workflows/flutter-drive.yml",
    "chars": 4105,
    "preview": "# https://medium.com/flutter-community/run-flutter-driver-tests-on-github-actions-13c639c7e4ab\n# https://github.com/naza"
  },
  {
    "path": ".github/workflows/flutter-web-deploy.yml",
    "chars": 762,
    "preview": "name: flutter_deer web deploy\n\n# push 提交中修改`pubspec.yaml`触发此workflow。\n# 为了避免每次部署,这里使用一个不存在的文件名。\non:\n  push:\n    paths:\n "
  },
  {
    "path": ".gitignore",
    "chars": 1484,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n*.lock\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*."
  },
  {
    "path": ".metadata",
    "chars": 964,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README-EN.md",
    "chars": 10162,
    "preview": "# Flutter Deer\n\n<img src=\"preview/logo.jpg\"/>\n\n## English | [中文](README.md)\n\nThis project is an exercise in learning Flu"
  },
  {
    "path": "README.md",
    "chars": 8264,
    "preview": "# Flutter Deer\n\n<img src=\"preview/logo.jpg\"/>\n\n## [English](README-EN.md) | 中文\n\n本项目为个人学习Flutter的练习项目。\n\n通过设置、修改、组合自带部件以及自"
  },
  {
    "path": "analysis_options.yaml",
    "chars": 11475,
    "preview": "# Specify analysis options.\n#\n# For a list of lints, see: https://dart.dev/tools/linter-rules\n# For guidelines on config"
  },
  {
    "path": "android/app/build.gradle",
    "chars": 2338,
    "preview": "plugins {\n    id \"com.android.application\"\n    id \"kotlin-android\"\n    id \"dev.flutter.flutter-gradle-plugin\"\n}\n\ndef loc"
  },
  {
    "path": "android/app/key.properties",
    "chars": 78,
    "preview": "storePassword=111111\nkeyPassword=111111\nkeyAlias=key\nstoreFile=../app/test.jks"
  },
  {
    "path": "android/app/proguard-rules.pro",
    "chars": 1045,
    "preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
  },
  {
    "path": "android/app/src/debug/AndroidManifest.xml",
    "chars": 293,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <!-- Flutter needs it to communicate with the "
  },
  {
    "path": "android/app/src/main/AndroidManifest.xml",
    "chars": 3281,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <uses-permission android:name=\"android.permis"
  },
  {
    "path": "android/app/src/main/java/com/weilu/deer/DeerPickerProvider.java",
    "chars": 184,
    "preview": "package com.weilu.deer;\n\n\nimport androidx.core.content.FileProvider;\n\n/**\n * @author weilu\n * 作者:weilu on 2019/8/08 15:1"
  },
  {
    "path": "android/app/src/main/java/com/weilu/deer/FileProvider7.java",
    "chars": 1814,
    "preview": "package com.weilu.deer;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.net.Uri;\nimport a"
  },
  {
    "path": "android/app/src/main/java/com/weilu/deer/InstallAPKPlugin.java",
    "chars": 1663,
    "preview": "package com.weilu.deer;\n\nimport android.app.Activity;\nimport android.content.Intent;\n\nimport java.io.File;\n\nimport andro"
  },
  {
    "path": "android/app/src/main/java/com/weilu/deer/MainActivity.java",
    "chars": 828,
    "preview": "package com.weilu.deer;\n\nimport android.graphics.Color;\nimport android.os.Bundle;\nimport androidx.annotation.NonNull;\nim"
  },
  {
    "path": "android/app/src/main/java/com/weilu/deer/MyApp.java",
    "chars": 252,
    "preview": "package com.weilu.deer;\n\nimport android.app.Application;\n\n\n/**\n * @Description:\n * @Author: weilu\n * @Time: 2019/8/5 000"
  },
  {
    "path": "android/app/src/main/res/drawable/launch_background.xml",
    "chars": 429,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
  },
  {
    "path": "android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "chars": 340,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <b"
  },
  {
    "path": "android/app/src/main/res/values/colors.xml",
    "chars": 108,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"bg_color\">#FFFFFFFF</color>\n</resources>"
  },
  {
    "path": "android/app/src/main/res/values/styles.xml",
    "chars": 683,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <style name=\"LaunchTheme\" parent=\"@android:style/Theme.Black.NoTi"
  },
  {
    "path": "android/app/src/main/res/values-night/colors.xml",
    "chars": 108,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"bg_color\">#FF18191A</color>\n</resources>"
  },
  {
    "path": "android/app/src/main/res/values-v27/styles.xml",
    "chars": 360,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <style name=\"LaunchTheme\" parent=\"@android:style/Theme.Black.NoT"
  },
  {
    "path": "android/app/src/main/res/xml/file_paths.xml",
    "chars": 392,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <paths>\n        <root-path name=\"root\" path=\"\" />\n        <files-"
  },
  {
    "path": "android/app/src/main/res/xml/network_security_config.xml",
    "chars": 144,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<network-security-config>\n    <base-config cleartextTrafficPermitted=\"true\" />\n</"
  },
  {
    "path": "android/app/src/profile/AndroidManifest.xml",
    "chars": 293,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <!-- Flutter needs it to communicate with the "
  },
  {
    "path": "android/build.gradle",
    "chars": 641,
    "preview": "allprojects {\n    repositories {\n        maven { url 'https://maven.aliyun.com/repository/public' }\n        maven { url "
  },
  {
    "path": "android/gradle/wrapper/gradle-wrapper.properties",
    "chars": 231,
    "preview": "#Sat Nov 23 15:18:48 CST 2024\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://"
  },
  {
    "path": "android/gradle.properties",
    "chars": 649,
    "preview": "android.useAndroidX=true\nandroid.enableJetifier=true\n\n# 提升编译速度配置 https://blog.csdn.net/weixin_33943347/article/details/9"
  },
  {
    "path": "android/settings.gradle",
    "chars": 727,
    "preview": "pluginManagement {\n    def flutterSdkPath = {\n        def properties = new Properties()\n        file(\"local.properties\")"
  },
  {
    "path": "assets/data/bank.json",
    "chars": 1897,
    "preview": "[\n  {\n    \"id\": 1,\n    \"bankName\": \"民生银行\",\n    \"firstLetter\": \"M\"\n  },\n  {\n    \"id\": 2,\n    \"bankName\": \"工商银行\",\n    \"fir"
  },
  {
    "path": "assets/data/bank_2.json",
    "chars": 3198,
    "preview": "[\n  {\n    \"id\": 13035,\n    \"bankName\": \"西安市城南支行\",\n    \"firstLetter\": \"X\"\n  },\n  {\n    \"id\": 13036,\n    \"bankName\": \"西安经济"
  },
  {
    "path": "assets/data/city.json",
    "chars": 12486,
    "preview": "[\n  {\n    \"name\": \"阿拉善盟\",\n    \"cityCode\": \"0483\",\n    \"firstCharacter\": \"A\"\n  },\n  {\n    \"name\": \"鞍山市\",\n    \"cityCode\": "
  },
  {
    "path": "assets/data/sort_0.json",
    "chars": 1151,
    "preview": "[\n  {\n    \"id\": \"1\",\n    \"name\": \"超市便利\"\n  },\n  {\n    \"id\": \"2\",\n    \"name\": \"生鲜果蔬\"\n  },\n  {\n    \"id\": \"3\",\n    \"name\": \""
  },
  {
    "path": "assets/data/sort_1.json",
    "chars": 794,
    "preview": "[\n  {\n    \"id\": \"15677\",\n    \"name\": \"厨房用具\"\n  },\n  {\n    \"id\": \"15690\",\n    \"name\": \"精美餐具\"\n  },\n  {\n    \"id\": \"15698\",\n "
  },
  {
    "path": "assets/data/sort_2.json",
    "chars": 327,
    "preview": "[\n  {\n  \"id\": \"15691\",\n  \"name\": \"酒具/杯具\"\n  },\n  {\n    \"id\": \"15692\",\n    \"name\": \"水具\"\n  },\n  {\n    \"id\": \"15693\",\n    \"n"
  },
  {
    "path": "assets/lottie/bunny_new_mouth.json",
    "chars": 474021,
    "preview": "{\n  \"assets\": [],\n  \"layers\": [\n    {\n      \"ddd\": 0,\n      \"ind\": 0,\n      \"ty\": 4,\n      \"nm\": \"left_hand_mask\",\n     "
  },
  {
    "path": "devtools_options.yaml",
    "chars": 184,
    "preview": "description: This file stores settings for Dart & Flutter DevTools.\ndocumentation: https://docs.flutter.dev/tools/devtoo"
  },
  {
    "path": "docs/Android问题汇总.md",
    "chars": 1488,
    "preview": "# Android 问题汇总\n\n## Could not resolve io.flutter:flutter_embedding_xxx\n\n### 大致异常如下:\n\n```java\nCould not resolve all files "
  },
  {
    "path": "docs/CHANGELOG.md",
    "chars": 1058,
    "preview": "# Change Log:\n\n## 1.3.3\n\n* 适配Android 14。\n* Flutter SDK升至3.24.0。\n\n## 1.3.2\n\n* Android导航栏颜色优化。\n\n## 1.3.1\n\n* Flutter SDK升至3"
  },
  {
    "path": "docs/Web问题汇总.md",
    "chars": 1698,
    "preview": "# Web 问题汇总(flutter 2.10.3)\n\n## service worker\n\nflutter 2.2中新的`service worker`加载机制目前发现兼容不够,部分浏览器无法正常工作。(web/index1.html)\n"
  },
  {
    "path": "docs/iOS问题汇总.md",
    "chars": 1086,
    "preview": "# iOS 问题汇总\n\n## CDN: trunk Repo update failed\n\n### 问题如下:\n\n```java\n[!] CDN: trunk Repo update failed - xx error(s):\n    CD"
  },
  {
    "path": "integration_test/goods_test.dart",
    "chars": 4821,
    "preview": "import 'package:flutter/gestures.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter/rendering.dart';"
  },
  {
    "path": "integration_test/integration_test.dart",
    "chars": 110,
    "preview": "import 'package:integration_test/integration_test_driver.dart';\n\n\nFuture<void> main() => integrationDriver();\n"
  },
  {
    "path": "integration_test/login_test.dart",
    "chars": 3174,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/login/page/login_page.dart';\nimport 'package:flutte"
  },
  {
    "path": "ios/.gitignore",
    "chars": 569,
    "preview": "**/dgph\n*.mode1v3\n*.mode2v3\n*.moved-aside\n*.pbxuser\n*.perspectivev3\n**/*sync/\n.sconsign.dblite\n.tags*\n**/.vagrant/\n**/De"
  },
  {
    "path": "ios/Flutter/AppFrameworkInfo.plist",
    "chars": 720,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "ios/Flutter/Debug.xcconfig",
    "chars": 106,
    "preview": "#include \"Generated.xcconfig\"\n#include \"Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig\"\n"
  },
  {
    "path": "ios/Flutter/Release.xcconfig",
    "chars": 108,
    "preview": "#include \"Generated.xcconfig\"\n#include \"Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig\"\n"
  },
  {
    "path": "ios/Podfile",
    "chars": 1888,
    "preview": "# Uncomment this line to define a global platform for your project\nplatform :ios, '13.0'\n\n# source 'https://github.com/C"
  },
  {
    "path": "ios/Runner/AppDelegate.swift",
    "chars": 1212,
    "preview": "import UIKit\nimport Flutter\n\n@main\n@objc class AppDelegate: FlutterAppDelegate {\n  override func application(\n    _ appl"
  },
  {
    "path": "ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 2519,
    "preview": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-20x20@2x.png\",\n   "
  },
  {
    "path": "ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
    "chars": 391,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"LaunchImage.png\",\n      \"scale\" : \"1x\"\n    },\n  "
  },
  {
    "path": "ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
    "chars": 336,
    "preview": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in"
  },
  {
    "path": "ios/Runner/Assets.xcassets/flutter_dash_black.imageset/Contents.json",
    "chars": 484,
    "preview": "{\n  \"images\" : [\n    {\n      \"filename\" : \"flutter_dash_black_1x.png\",\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\""
  },
  {
    "path": "ios/Runner/Base.lproj/LaunchScreen.storyboard",
    "chars": 2934,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "ios/Runner/Base.lproj/Main.storyboard",
    "chars": 1790,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "ios/Runner/Info.plist",
    "chars": 1998,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "ios/Runner/Runner-Bridging-Header.h",
    "chars": 38,
    "preview": "#import \"GeneratedPluginRegistrant.h\"\n"
  },
  {
    "path": "ios/Runner.xcodeproj/project.pbxproj",
    "chars": 30585,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "chars": 226,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
    "chars": 3833,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1510\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "ios/Runner.xcworkspace/contents.xcworkspacedata",
    "chars": 224,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Runner.xcodepr"
  },
  {
    "path": "ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "chars": 226,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "ios/RunnerTests/RunnerTests.swift",
    "chars": 285,
    "preview": "import Flutter\nimport UIKit\nimport XCTest\n\nclass RunnerTests: XCTestCase {\n\n  func testExample() {\n    // If you add cod"
  },
  {
    "path": "l10n.yaml",
    "chars": 253,
    "preview": "# 文档:https://flutter.dev/docs/development/accessibility-and-localization/internationalization\narb-dir: lib/l10n\ntemplate"
  },
  {
    "path": "lib/account/account_router.dart",
    "chars": 2715,
    "preview": "import 'package:fluro/fluro.dart';\nimport 'package:flutter_deer/routers/i_router.dart';\n\nimport 'page/account_page.dart'"
  },
  {
    "path": "lib/account/models/bank_entity.dart",
    "chars": 571,
    "preview": "import 'package:azlistview/azlistview.dart';\nimport 'package:flutter_deer/generated/json/bank_entity.g.dart';\nimport 'pa"
  },
  {
    "path": "lib/account/models/city_entity.dart",
    "chars": 544,
    "preview": "import 'package:azlistview/azlistview.dart';\nimport 'package:flutter_deer/generated/json/base/json_field.dart';\nimport '"
  },
  {
    "path": "lib/account/models/withdrawal_account_model.dart",
    "chars": 616,
    "preview": "\nclass WithdrawalAccountModel {\n\n  WithdrawalAccountModel(this.name, this.typeName, this.type, this.code);\n\n  Withdrawal"
  },
  {
    "path": "lib/account/page/account_page.dart",
    "chars": 3699,
    "preview": "import 'package:common_utils/common_utils.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/ac"
  },
  {
    "path": "lib/account/page/account_record_list_page.dart",
    "chars": 2784,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/u"
  },
  {
    "path": "lib/account/page/add_withdrawal_account_page.dart",
    "chars": 6707,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/account/account_router.dart';\nimport 'package:flutt"
  },
  {
    "path": "lib/account/page/bank_select_page.dart",
    "chars": 5537,
    "preview": "import 'dart:convert';\n\nimport 'package:azlistview/azlistview.dart';\nimport 'package:flutter/material.dart';\nimport 'pac"
  },
  {
    "path": "lib/account/page/city_select_page.dart",
    "chars": 3762,
    "preview": "import 'dart:convert';\n\nimport 'package:azlistview/azlistview.dart';\nimport 'package:flutter/material.dart';\nimport 'pac"
  },
  {
    "path": "lib/account/page/withdrawal_account_list_page.dart",
    "chars": 2620,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/account/models/withdrawal_account_model.dart';\nimpo"
  },
  {
    "path": "lib/account/page/withdrawal_account_page.dart",
    "chars": 4551,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/account/models/withdrawal_account_model.dart';\nimpo"
  },
  {
    "path": "lib/account/page/withdrawal_page.dart",
    "chars": 8052,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/account/models/withdrawal_account_model.dart';\nimpo"
  },
  {
    "path": "lib/account/page/withdrawal_password_page.dart",
    "chars": 2293,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/account/widgets/sms_verify_dialog.dart';\nimport 'pa"
  },
  {
    "path": "lib/account/page/withdrawal_record_list_page.dart",
    "chars": 2826,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/u"
  },
  {
    "path": "lib/account/page/withdrawal_result_page.dart",
    "chars": 1646,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/r"
  },
  {
    "path": "lib/account/widgets/rise_number_text.dart",
    "chars": 1578,
    "preview": "import 'package:flutter/material.dart';\n\n// 简易实现数字滚动效果\nclass RiseNumberText extends StatefulWidget {\n\n  const RiseNumber"
  },
  {
    "path": "lib/account/widgets/sms_verify_dialog.dart",
    "chars": 7927,
    "preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter/scheduler.dart';\nimport 'package:f"
  },
  {
    "path": "lib/account/widgets/withdrawal_account_item.dart",
    "chars": 5579,
    "preview": "import 'dart:math';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/account/models/withdrawal_acco"
  },
  {
    "path": "lib/account/widgets/withdrawal_password_setting.dart",
    "chars": 5545,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/r"
  },
  {
    "path": "lib/demo/demo_page.dart",
    "chars": 2288,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:flutter_deer/demo/focus/"
  },
  {
    "path": "lib/demo/focus/focus_demo_page.dart",
    "chars": 1953,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/u"
  },
  {
    "path": "lib/demo/lottie/bunny.dart",
    "chars": 3026,
    "preview": "\nimport 'package:flutter/material.dart';\n\nclass Bunny {\n\n  Bunny(this.controller) {\n    setNeutralState();\n  }\n\n  Animat"
  },
  {
    "path": "lib/demo/lottie/lottie_demo.dart",
    "chars": 6787,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:flutter_deer/demo/lottie"
  },
  {
    "path": "lib/demo/navigator/book_entity.dart",
    "chars": 331,
    "preview": "class Book {\n\n  Book(this.title, this.author);\n\n  final String title;\n  final String author;\n}\n\n// Routes\nabstract class"
  },
  {
    "path": "lib/demo/navigator/books_app_state.dart",
    "chars": 1233,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/navigator/book_entity.dart';\n\nclass BooksAppSt"
  },
  {
    "path": "lib/demo/navigator/books_main.dart",
    "chars": 940,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/navigator/delegate/router_delegate.dart';\nimpo"
  },
  {
    "path": "lib/demo/navigator/delegate/inner_router_delegate.dart",
    "chars": 2599,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/navigator/book_entity.dart';\nimport 'package:f"
  },
  {
    "path": "lib/demo/navigator/delegate/router_delegate.dart",
    "chars": 1803,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/navigator/book_entity.dart';\nimport 'package:f"
  },
  {
    "path": "lib/demo/navigator/parser/route_information_parser.dart",
    "chars": 1096,
    "preview": "import 'package:flutter/material.dart';\n\nimport '../book_entity.dart';\n\nclass BookRouteInformationParser extends RouteIn"
  },
  {
    "path": "lib/demo/navigator/screen/app_shell.dart",
    "chars": 2017,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/navigator/books_app_state.dart';\nimport 'packa"
  },
  {
    "path": "lib/demo/navigator/screen/book_details_screen.dart",
    "chars": 861,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/navigator/book_entity.dart';\n\nclass BookDetail"
  },
  {
    "path": "lib/demo/navigator/screen/books_list_screen.dart",
    "chars": 662,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/navigator/book_entity.dart';\n\nclass BooksListS"
  },
  {
    "path": "lib/demo/navigator/screen/setting_screen.dart",
    "chars": 287,
    "preview": "import 'package:flutter/material.dart';\n\nclass SettingsScreen extends StatelessWidget {\n\n  const SettingsScreen({super.k"
  },
  {
    "path": "lib/demo/overlay/bottom_navigation/my_bottom_navigation_bar.dart",
    "chars": 4449,
    "preview": "\nimport 'package:flutter/material.dart';\n\nclass MyBottomNavigationBar extends StatefulWidget {\n\n  const MyBottomNavigati"
  },
  {
    "path": "lib/demo/overlay/overlay_main.dart",
    "chars": 762,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/overlay/page/overlay_demo_page.dart';\nimport '"
  },
  {
    "path": "lib/demo/overlay/page/overlay_demo_page.dart",
    "chars": 2729,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/overlay/bottom_navigation/my_bottom_navigation"
  },
  {
    "path": "lib/demo/overlay/page/test_page.dart",
    "chars": 1510,
    "preview": "\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/widgets/neumorphic.dart';\n\nclass TestPage ext"
  },
  {
    "path": "lib/demo/overlay/route/application.dart",
    "chars": 155,
    "preview": "\n\nimport 'package:flutter_deer/demo/overlay/route/my_navigator_observer.dart';\n\nclass Application {\n  static late MyNavi"
  },
  {
    "path": "lib/demo/overlay/route/my_navigator_observer.dart",
    "chars": 510,
    "preview": "\nimport 'package:flutter/material.dart';\n\n/// 记录路由,便于清空路由栈\nclass MyNavigatorObserver extends NavigatorObserver {\n  List<"
  },
  {
    "path": "lib/demo/ripple/ripples_animation_page.dart",
    "chars": 3369,
    "preview": "import 'dart:math' as math show sin, pi, sqrt;\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/res"
  },
  {
    "path": "lib/demo/scratcher/scratch_card_demo_page.dart",
    "chars": 2409,
    "preview": "\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/colors.dart';\nimport 'package:flutter_deer/res"
  },
  {
    "path": "lib/demo/widgets/neumorphic.dart",
    "chars": 2356,
    "preview": "\nimport 'package:flutter/material.dart';\n\n\n/// https://medium.com/flutter-community/neumorphic-designs-in-flutter-eab9a4"
  },
  {
    "path": "lib/generated/json/bank_entity.g.dart",
    "chars": 935,
    "preview": "import 'package:flutter_deer/generated/json/base/json_convert_content.dart';\nimport 'package:flutter_deer/account/models"
  },
  {
    "path": "lib/generated/json/base/json_convert_content.dart",
    "chars": 4784,
    "preview": "// ignore_for_file: non_constant_identifier_names\n// ignore_for_file: camel_case_types\n// ignore_for_file: prefer_single"
  },
  {
    "path": "lib/generated/json/base/json_field.dart",
    "chars": 546,
    "preview": "// ignore_for_file: non_constant_identifier_names\n// ignore_for_file: camel_case_types\n// ignore_for_file: prefer_single"
  },
  {
    "path": "lib/generated/json/city_entity.g.dart",
    "chars": 976,
    "preview": "import 'package:flutter_deer/generated/json/base/json_convert_content.dart';\nimport 'package:flutter_deer/account/models"
  },
  {
    "path": "lib/generated/json/goods_sort_entity.g.dart",
    "chars": 728,
    "preview": "import 'package:flutter_deer/generated/json/base/json_convert_content.dart';\nimport 'package:flutter_deer/goods/models/g"
  },
  {
    "path": "lib/generated/json/search_entity.g.dart",
    "chars": 19558,
    "preview": "import 'package:flutter_deer/generated/json/base/json_convert_content.dart';\nimport 'package:flutter_deer/order/models/s"
  },
  {
    "path": "lib/generated/json/user_entity.g.dart",
    "chars": 990,
    "preview": "import 'package:flutter_deer/generated/json/base/json_convert_content.dart';\nimport 'package:flutter_deer/shop/models/us"
  },
  {
    "path": "lib/goods/goods_router.dart",
    "chars": 1780,
    "preview": "\nimport 'package:common_utils/common_utils.dart';\nimport 'package:fluro/fluro.dart';\nimport 'package:flutter_deer/goods/"
  },
  {
    "path": "lib/goods/models/goods_item_entity.dart",
    "chars": 501,
    "preview": "class GoodsItemEntity {\n\n\tGoodsItemEntity({required this.icon, required this.title, required this.type});\n\n\tGoodsItemEnt"
  },
  {
    "path": "lib/goods/models/goods_size_model.dart",
    "chars": 1110,
    "preview": "\nclass GoodsSizeModel {\n\n  GoodsSizeModel(this.icon, this.sizeName, this.stock, \n      this.price, this.minSaleNum, this"
  },
  {
    "path": "lib/goods/models/goods_sort_entity.dart",
    "chars": 406,
    "preview": "import 'package:flutter_deer/generated/json/base/json_field.dart';\nimport 'package:flutter_deer/generated/json/goods_sor"
  },
  {
    "path": "lib/goods/page/goods_edit_page.dart",
    "chars": 6403,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/goods/provider/goods_sort_provider.dart';\nimport 'p"
  },
  {
    "path": "lib/goods/page/goods_list_page.dart",
    "chars": 5759,
    "preview": "import 'package:common_utils/common_utils.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/go"
  },
  {
    "path": "lib/goods/page/goods_page.dart",
    "chars": 7842,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/goods/goods_router.dart';\nimport 'package:flutter_d"
  },
  {
    "path": "lib/goods/page/goods_search_page.dart",
    "chars": 614,
    "preview": "\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/util/toast_utils.dart';\nimport 'package:flutter_de"
  },
  {
    "path": "lib/goods/page/goods_size_edit_page.dart",
    "chars": 2959,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/r"
  },
  {
    "path": "lib/goods/page/goods_size_page.dart",
    "chars": 9419,
    "preview": "import 'package:flutter/gestures.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/goods/model"
  },
  {
    "path": "lib/goods/page/qr_code_scanner_page.dart",
    "chars": 2837,
    "preview": "\nimport 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/routers/fluro_navigator.dart';\n"
  },
  {
    "path": "lib/goods/provider/goods_page_provider.dart",
    "chars": 602,
    "preview": "import 'package:flutter/material.dart';\n\nclass GoodsPageProvider extends ChangeNotifier {\n\n  /// Tab的下标\n  int _index = 0"
  },
  {
    "path": "lib/goods/provider/goods_sort_provider.dart",
    "chars": 2285,
    "preview": "import 'dart:convert';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:"
  },
  {
    "path": "lib/goods/widgets/goods_add_menu.dart",
    "chars": 3671,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/goods/goods_router.dart';\nimport 'package:flutter_d"
  },
  {
    "path": "lib/goods/widgets/goods_delete_bottom_sheet.dart",
    "chars": 1571,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/r"
  },
  {
    "path": "lib/goods/widgets/goods_item.dart",
    "chars": 7379,
    "preview": "import 'package:common_utils/common_utils.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/go"
  },
  {
    "path": "lib/goods/widgets/goods_size_dialog.dart",
    "chars": 1611,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/routers/fluro_navigator.dart';\nimport 'package:flut"
  },
  {
    "path": "lib/goods/widgets/goods_sort_bottom_sheet.dart",
    "chars": 6134,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/goods/provider/goods_sort_provider.dart';\nimport 'p"
  },
  {
    "path": "lib/goods/widgets/goods_sort_menu.dart",
    "chars": 3143,
    "preview": "\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/"
  },
  {
    "path": "lib/goods/widgets/menu_reveal.dart",
    "chars": 1176,
    "preview": "import 'dart:math';\n\nimport 'package:flutter/material.dart';\n\n\n//https://github.com/alibaba/flutter-go/blob/master/lib/v"
  },
  {
    "path": "lib/home/home_page.dart",
    "chars": 5561,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/goods/page/goods_page.dart';\nimport 'package:flutte"
  },
  {
    "path": "lib/home/provider/home_provider.dart",
    "chars": 116,
    "preview": "\nimport 'package:flutter/material.dart';\n\nclass HomeProvider extends RestorableInt {\n  HomeProvider() : super(0);\n}\n"
  },
  {
    "path": "lib/home/splash_page.dart",
    "chars": 3546,
    "preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/demo_page.dart';\nimport "
  },
  {
    "path": "lib/home/webview_page.dart",
    "chars": 1977,
    "preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/gaps.dart';\nimport 'packa"
  },
  {
    "path": "lib/l10n/deer_localizations.dart",
    "chars": 7074,
    "preview": "import 'dart:async';\n\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/widgets.dart';\nimport 'package:f"
  },
  {
    "path": "lib/l10n/deer_localizations_en.dart",
    "chars": 1542,
    "preview": "// ignore: unused_import\nimport 'package:intl/intl.dart' as intl;\nimport 'deer_localizations.dart';\n\n// ignore_for_file:"
  },
  {
    "path": "lib/l10n/deer_localizations_zh.dart",
    "chars": 1294,
    "preview": "// ignore: unused_import\nimport 'package:intl/intl.dart' as intl;\nimport 'deer_localizations.dart';\n\n// ignore_for_file:"
  },
  {
    "path": "lib/l10n/intl_en.arb",
    "chars": 2920,
    "preview": "{\n  \"@@last_modified\": \"2020-05-29T16:55:56.054100\",\n  \"title\": \"Flutter Deer\",\n  \"@title\": {\n    \"description\": \"Title "
  },
  {
    "path": "lib/l10n/intl_zh.arb",
    "chars": 572,
    "preview": "{\n  \"title\": \"Flutter Deer\",\n  \"verificationCodeLogin\": \"验证码登录\",\n  \"passwordLogin\": \"密码登录\",\n  \"login\": \"登录\",\n  \"forgotPa"
  },
  {
    "path": "lib/login/login_router.dart",
    "chars": 1144,
    "preview": "import 'package:fluro/fluro.dart';\nimport 'package:flutter_deer/routers/i_router.dart';\n\nimport 'page/login_page.dart';\n"
  },
  {
    "path": "lib/login/page/login_page.dart",
    "chars": 4818,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:flutter_deer/login/widge"
  },
  {
    "path": "lib/login/page/register_page.dart",
    "chars": 4332,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/login/widgets/my_text_field.dart';\nimport 'package:"
  },
  {
    "path": "lib/login/page/reset_password_page.dart",
    "chars": 3929,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/login/widgets/my_text_field.dart';\nimport 'package:"
  },
  {
    "path": "lib/login/page/sms_login_page.dart",
    "chars": 4558,
    "preview": "import 'package:flutter/gestures.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/login/widge"
  },
  {
    "path": "lib/login/page/update_password_page.dart",
    "chars": 3371,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/login/widgets/my_text_field.dart';\nimport 'package:"
  },
  {
    "path": "lib/login/widgets/my_text_field.dart",
    "chars": 6487,
    "preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:fl"
  },
  {
    "path": "lib/main.dart",
    "chars": 6356,
    "preview": "import 'package:dio/dio.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'p"
  },
  {
    "path": "lib/mvp/base_page.dart",
    "chars": 2408,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/mvp/base_presenter.dart';\nimport 'package:flutter_d"
  },
  {
    "path": "lib/mvp/base_page_presenter.dart",
    "chars": 2974,
    "preview": "import 'dart:io';\nimport 'package:dio/dio.dart';\nimport 'package:flutter_deer/mvp/base_presenter.dart';\nimport 'package:"
  },
  {
    "path": "lib/mvp/base_presenter.dart",
    "chars": 307,
    "preview": "import 'mvps.dart';\n\nclass BasePresenter<V extends IMvpView> extends IPresenter {\n\n  late V view;\n\n  @override\n  void de"
  },
  {
    "path": "lib/mvp/i_lifecycle.dart",
    "chars": 178,
    "preview": "\nabstract class ILifecycle {\n  \n  void initState();\n  \n  void didChangeDependencies();\n  \n  void didUpdateWidgets<W>(W o"
  },
  {
    "path": "lib/mvp/mvps.dart",
    "chars": 307,
    "preview": "\nimport 'package:flutter/material.dart';\n\nimport 'i_lifecycle.dart';\n\nabstract class IMvpView {\n\n  BuildContext getConte"
  },
  {
    "path": "lib/mvp/power_presenter.dart",
    "chars": 1502,
    "preview": "import 'package:flutter_deer/mvp/base_page.dart';\nimport 'package:flutter_deer/mvp/base_page_presenter.dart';\nimport 'pa"
  },
  {
    "path": "lib/net/base_entity.dart",
    "chars": 850,
    "preview": "import 'package:flutter_deer/generated/json/base/json_convert_content.dart';\nimport 'package:flutter_deer/res/constant.d"
  },
  {
    "path": "lib/net/dio_utils.dart",
    "chars": 5989,
    "preview": "import 'dart:convert';\n\nimport 'package:dio/dio.dart';\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter"
  },
  {
    "path": "lib/net/error_handle.dart",
    "chars": 2476,
    "preview": "import 'dart:io';\nimport 'package:dio/dio.dart';\nimport 'package:flutter/foundation.dart';\n\nclass ExceptionHandle {\n  st"
  },
  {
    "path": "lib/net/http_api.dart",
    "chars": 244,
    "preview": "\nclass HttpApi{\n  static const String users = 'users/simplezhli';\n  static const String search = 'search/repositories';\n"
  },
  {
    "path": "lib/net/intercept.dart",
    "chars": 7219,
    "preview": "\nimport 'dart:convert';\n\nimport 'package:dio/dio.dart';\nimport 'package:flutter_deer/res/constant.dart';\nimport 'package"
  },
  {
    "path": "lib/net/net.dart",
    "chars": 77,
    "preview": "export 'dio_utils.dart';\nexport 'error_handle.dart';\nexport 'http_api.dart';\n"
  },
  {
    "path": "lib/order/iview/order_search_iview.dart",
    "chars": 285,
    "preview": "import 'package:flutter_deer/mvp/mvps.dart';\nimport 'package:flutter_deer/order/models/search_entity.dart';\nimport 'pack"
  },
  {
    "path": "lib/order/models/search_entity.dart",
    "chars": 5530,
    "preview": "import 'package:flutter_deer/generated/json/base/json_field.dart';\nimport 'package:flutter_deer/generated/json/search_en"
  },
  {
    "path": "lib/order/order_router.dart",
    "chars": 922,
    "preview": "import 'package:fluro/fluro.dart';\nimport 'package:flutter_deer/routers/i_router.dart';\n\nimport 'page/order_info_page.da"
  },
  {
    "path": "lib/order/page/order_info_page.dart",
    "chars": 9373,
    "preview": "\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/"
  },
  {
    "path": "lib/order/page/order_list_page.dart",
    "chars": 3791,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/order/provider/order_page_provider.dart';\nimport 'p"
  },
  {
    "path": "lib/order/page/order_page.dart",
    "chars": 9864,
    "preview": "\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/order/page/order_list_page.dart';\nimport 'package:"
  },
  {
    "path": "lib/order/page/order_search_page.dart",
    "chars": 3683,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/mvp/base_page.dart';\nimport 'package:flutter_deer/m"
  },
  {
    "path": "lib/order/page/order_track_page.dart",
    "chars": 2290,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/w"
  },
  {
    "path": "lib/order/presenter/order_search_presenter.dart",
    "chars": 1599,
    "preview": "import 'package:flutter_deer/mvp/base_page_presenter.dart';\nimport 'package:flutter_deer/net/net.dart';\nimport 'package:"
  },
  {
    "path": "lib/order/provider/base_list_provider.dart",
    "chars": 982,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/widgets/state_layout.dart';\n\nclass BaseListProvider"
  },
  {
    "path": "lib/order/provider/order_page_provider.dart",
    "chars": 280,
    "preview": "import 'package:flutter/material.dart';\n\nclass OrderPageProvider extends ChangeNotifier {\n\n  /// Tab的下标\n  int _index = 0"
  },
  {
    "path": "lib/order/widgets/order_item.dart",
    "chars": 7146,
    "preview": "import 'package:common_utils/common_utils.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/or"
  },
  {
    "path": "lib/order/widgets/order_tag_item.dart",
    "chars": 1186,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/u"
  },
  {
    "path": "lib/order/widgets/pay_type_dialog.dart",
    "chars": 2019,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\nimport 'package:flutter_deer/r"
  },
  {
    "path": "lib/res/colors.dart",
    "chars": 1664,
    "preview": "import 'package:flutter/material.dart';\n\nclass Colours {\n  static const Color app_main = Color(0xFF4688FA);\n  static con"
  },
  {
    "path": "lib/res/constant.dart",
    "chars": 666,
    "preview": "import 'package:flutter/foundation.dart';\n\nclass Constant {\n\n  /// App运行在Release环境时,inProduction为true;当App运行在Debug和Profi"
  },
  {
    "path": "lib/res/dimens.dart",
    "chars": 622,
    "preview": "class Dimens {\n  static const double font_sp10 = 10.0;\n  static const double font_sp12 = 12.0;\n  static const double fon"
  },
  {
    "path": "lib/res/gaps.dart",
    "chars": 1853,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resources.dart';\n\n/// 间隔\n/// 官方做法:https://githu"
  },
  {
    "path": "lib/res/resources.dart",
    "chars": 298,
    "preview": "import 'package:flutter/widgets.dart';\nimport 'package:flutter_deer/widgets/load_image.dart';\n\nexport 'colors.dart';\nexp"
  },
  {
    "path": "lib/res/styles.dart",
    "chars": 2010,
    "preview": "import 'package:flutter/material.dart';\n\nimport 'colors.dart';\nimport 'dimens.dart';\n\nclass TextStyles {\n  \n  static con"
  },
  {
    "path": "lib/routers/fluro_navigator.dart",
    "chars": 1836,
    "preview": "import 'package:fluro/fluro.dart';\nimport 'package:flutter/material.dart';\n\nimport 'routers.dart';\n\n/// fluro的路由跳转工具类\ncl"
  },
  {
    "path": "lib/routers/i_router.dart",
    "chars": 114,
    "preview": "\nimport 'package:fluro/fluro.dart';\n\nabstract class IRouterProvider {\n  \n  void initRouter(FluroRouter router);\n}\n"
  },
  {
    "path": "lib/routers/not_found_page.dart",
    "chars": 483,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/widgets/my_app_bar.dart';\nimport 'package:flutter_d"
  },
  {
    "path": "lib/routers/routers.dart",
    "chars": 2092,
    "preview": "import 'package:fluro/fluro.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/account/account_"
  },
  {
    "path": "lib/routers/web_page_transitions.dart",
    "chars": 619,
    "preview": "import 'package:flutter/foundation.dart';\nimport 'package:flutter/material.dart';\n\n/// https://medium.com/flutter/improv"
  },
  {
    "path": "lib/setting/page/about_page.dart",
    "chars": 2807,
    "preview": "import 'dart:async';\nimport 'dart:math';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/resou"
  },
  {
    "path": "lib/setting/page/account_manager_page.dart",
    "chars": 1483,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/login/login_router.dart';\nimport 'package:flutter_d"
  },
  {
    "path": "lib/setting/page/locale_page.dart",
    "chars": 2096,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/constant.dart';\nimport 'package:flutter_deer/se"
  },
  {
    "path": "lib/setting/page/setting_page.dart",
    "chars": 4004,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/demo/demo_page.dart';\nimport 'package:flutter_deer/"
  },
  {
    "path": "lib/setting/page/theme_page.dart",
    "chars": 2164,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_deer/res/constant.dart';\nimport 'package:flutter_deer/se"
  }
]

// ... and 147 more files (download for full content)

About this extraction

This page contains the full source code of the simplezhli/flutter_deer GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 347 files (1.5 MB), approximately 439.7k tokens, and a symbol index with 1169 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!