gitextract_7g62ejnc/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ ├── config.yml │ │ └── feature.yml │ └── workflows/ │ ├── docs-deploy.yaml │ ├── pr.yaml │ ├── publish_app_dev.yaml │ ├── publish_app_release.yml │ └── publish_tv_app_release.yaml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── assets/ │ ├── app_version.json │ ├── tv_app_version.json │ └── update-linux-metainfo.dart ├── docs/ │ ├── .gitignore │ ├── .vitepress/ │ │ └── config.mts │ ├── README.md │ ├── contributing.md │ ├── index.md │ ├── package.json │ └── user.md ├── flatpak/ │ ├── flatpak-manifest.yaml │ └── libplacebo-python-3.14.patch ├── simple_live_app/ │ ├── .fvmrc │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── analysis_options.yaml │ ├── android/ │ │ ├── .gitignore │ │ ├── app/ │ │ │ ├── build.gradle.kts │ │ │ ├── google-services.json │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ ├── debug/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin/ │ │ │ │ │ └── com/ │ │ │ │ │ └── slotsun/ │ │ │ │ │ └── slive/ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res/ │ │ │ │ ├── drawable/ │ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ │ ├── ic_launcher_foreground.xml │ │ │ │ │ ├── ic_launcher_monochrome.xml │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable-v21/ │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── values/ │ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── values-night/ │ │ │ │ │ └── styles.xml │ │ │ │ └── xml/ │ │ │ │ └── network_security_config.xml │ │ │ └── profile/ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle.kts │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ └── settings.gradle.kts │ ├── assets/ │ │ ├── fonts/ │ │ │ └── fonts-manifest.json │ │ ├── io.github.SlotSun.Slive.desktop │ │ ├── io.github.SlotSun.Slive.metainfo.xml │ │ ├── io.github.SlotSun.dart_simple_live.desktop │ │ ├── io.github.SlotSun.dart_simple_live.metainfo.xml │ │ ├── lotties/ │ │ │ ├── empty.json │ │ │ ├── error.json │ │ │ └── loadding.json │ │ └── statement.txt │ ├── distribute_options.yaml │ ├── flutter_rust_bridge.yaml │ ├── integration_test/ │ │ └── simple_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 │ │ │ ├── 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 │ ├── lib/ │ │ ├── app/ │ │ │ ├── app_style.dart │ │ │ ├── constant.dart │ │ │ ├── controller/ │ │ │ │ ├── app_settings_controller.dart │ │ │ │ └── base_controller.dart │ │ │ ├── custom_throttle.dart │ │ │ ├── event_bus.dart │ │ │ ├── log.dart │ │ │ ├── sites.dart │ │ │ ├── utils/ │ │ │ │ ├── archive.dart │ │ │ │ ├── document.dart │ │ │ │ ├── duration_2_str_utils.dart │ │ │ │ ├── dynamic_filter.dart │ │ │ │ ├── dynamic_sort.dart │ │ │ │ ├── listen_fourth_button.dart │ │ │ │ ├── permission_handler.dart │ │ │ │ ├── sandbox.dart │ │ │ │ ├── string_normalizer.dart │ │ │ │ └── url_parse.dart │ │ │ └── utils.dart │ │ ├── firebase_options.dart │ │ ├── icons/ │ │ │ └── live_icons.dart │ │ ├── main.dart │ │ ├── models/ │ │ │ ├── account/ │ │ │ │ ├── bilibili_user_info_page.dart │ │ │ │ └── douyin_user_info.dart │ │ │ ├── db/ │ │ │ │ ├── follow_user.dart │ │ │ │ ├── follow_user.g.dart │ │ │ │ ├── follow_user_tag.dart │ │ │ │ ├── follow_user_tag.g.dart │ │ │ │ ├── history.dart │ │ │ │ └── history.g.dart │ │ │ ├── font_model.dart │ │ │ ├── fonts_model.dart │ │ │ ├── sync_client_info_model.dart │ │ │ └── version_model.dart │ │ ├── modules/ │ │ │ ├── category/ │ │ │ │ ├── category_controller.dart │ │ │ │ ├── category_list_controller.dart │ │ │ │ ├── category_list_view.dart │ │ │ │ ├── category_page.dart │ │ │ │ └── detail/ │ │ │ │ ├── category_detail_controller.dart │ │ │ │ └── category_detail_page.dart │ │ │ ├── follow_user/ │ │ │ │ ├── follow_app_setting/ │ │ │ │ │ ├── follow_app_settings_controller.dart │ │ │ │ │ └── follow_app_settings_page.dart │ │ │ │ ├── follow_info_setting/ │ │ │ │ │ ├── follow_info_controller.dart │ │ │ │ │ ├── follow_info_page.dart │ │ │ │ │ └── readme.md │ │ │ │ ├── follow_user_controller.dart │ │ │ │ └── follow_user_page.dart │ │ │ ├── home/ │ │ │ │ ├── home_controller.dart │ │ │ │ ├── home_list_controller.dart │ │ │ │ ├── home_list_view.dart │ │ │ │ └── home_page.dart │ │ │ ├── indexed/ │ │ │ │ ├── indexed_controller.dart │ │ │ │ └── indexed_page.dart │ │ │ ├── live_room/ │ │ │ │ ├── danmu/ │ │ │ │ │ └── danmaku_mask.dart │ │ │ │ ├── live_room_controller.dart │ │ │ │ ├── live_room_page.dart │ │ │ │ └── player/ │ │ │ │ ├── player_controller.dart │ │ │ │ └── player_controls.dart │ │ │ ├── mine/ │ │ │ │ ├── account/ │ │ │ │ │ ├── account_controller.dart │ │ │ │ │ ├── account_page.dart │ │ │ │ │ └── bilibili/ │ │ │ │ │ ├── qr_login_controller.dart │ │ │ │ │ ├── qr_login_page.dart │ │ │ │ │ ├── web_login_controller.dart │ │ │ │ │ └── web_login_page.dart │ │ │ │ ├── history/ │ │ │ │ │ ├── history_controller.dart │ │ │ │ │ └── history_page.dart │ │ │ │ ├── mine_page.dart │ │ │ │ └── parse/ │ │ │ │ ├── parse_controller.dart │ │ │ │ └── parse_page.dart │ │ │ ├── other/ │ │ │ │ └── debug_log_page.dart │ │ │ ├── search/ │ │ │ │ ├── douyin/ │ │ │ │ │ ├── douyin_search_controller.dart │ │ │ │ │ └── douyin_search_view.dart │ │ │ │ ├── search_controller.dart │ │ │ │ ├── search_list_controller.dart │ │ │ │ ├── search_list_view.dart │ │ │ │ └── search_page.dart │ │ │ ├── settings/ │ │ │ │ ├── appstyle_settings/ │ │ │ │ │ ├── appstyle_setting_contorller.dart │ │ │ │ │ └── appstyle_setting_page.dart │ │ │ │ ├── auto_exit_settings_page.dart │ │ │ │ ├── danmu_settings_page.dart │ │ │ │ ├── danmu_shield/ │ │ │ │ │ ├── danmu_shield_controller.dart │ │ │ │ │ └── danmu_shield_page.dart │ │ │ │ ├── indexed_settings/ │ │ │ │ │ ├── indexed_settings_controller.dart │ │ │ │ │ └── indexed_settings_page.dart │ │ │ │ ├── other/ │ │ │ │ │ ├── other_settings_controller.dart │ │ │ │ │ └── other_settings_page.dart │ │ │ │ └── play_settings_page.dart │ │ │ └── sync/ │ │ │ ├── local_sync/ │ │ │ │ ├── device/ │ │ │ │ │ ├── sync_device_controller.dart │ │ │ │ │ └── sync_device_page.dart │ │ │ │ ├── local_sync_controller.dart │ │ │ │ ├── local_sync_page.dart │ │ │ │ └── scan_qr/ │ │ │ │ ├── sync_scan_qr_controller.dart │ │ │ │ └── sync_scan_qr_page.dart │ │ │ ├── remote_sync/ │ │ │ │ ├── room/ │ │ │ │ │ ├── remote_sync_room_controller.dart │ │ │ │ │ └── remote_sync_room_page.dart │ │ │ │ └── webdav/ │ │ │ │ ├── remote_sync_webdav_config_page.dart │ │ │ │ ├── remote_sync_webdav_controller.dart │ │ │ │ └── remote_sync_webdav_page.dart │ │ │ └── sync_page.dart │ │ ├── requests/ │ │ │ ├── common_request.dart │ │ │ ├── custom_log_interceptor.dart │ │ │ ├── http_client.dart │ │ │ ├── http_error.dart │ │ │ ├── sync_client_request.dart │ │ │ └── webdav_client.dart │ │ ├── routes/ │ │ │ ├── app_analytics_observer.dart │ │ │ ├── app_navigation.dart │ │ │ ├── app_pages.dart │ │ │ └── route_path.dart │ │ ├── services/ │ │ │ ├── bilibili_account_service.dart │ │ │ ├── core_api_service.dart │ │ │ ├── db_service.dart │ │ │ ├── douyin_account_service.dart │ │ │ ├── firebase_service.dart │ │ │ ├── follow_service.dart │ │ │ ├── history_service.dart │ │ │ ├── local_storage_service.dart │ │ │ ├── migration_service.dart │ │ │ ├── signalr_service.dart │ │ │ ├── sync_service.dart │ │ │ └── window_service.dart │ │ ├── src/ │ │ │ └── rust/ │ │ │ ├── api/ │ │ │ │ ├── danmaku_mask.dart │ │ │ │ └── simple.dart │ │ │ ├── frb_generated.dart │ │ │ ├── frb_generated.io.dart │ │ │ └── frb_generated.web.dart │ │ └── widgets/ │ │ ├── desktop_refresh_button.dart │ │ ├── filter_button.dart │ │ ├── follow_user_item.dart │ │ ├── keep_alive_wrapper.dart │ │ ├── live_room_card.dart │ │ ├── net_image.dart │ │ ├── none_border_circular_textfield.dart │ │ ├── page_grid_view.dart │ │ ├── page_list_view.dart │ │ ├── rectangular_indicator.dart │ │ ├── settings/ │ │ │ ├── settings_action.dart │ │ │ ├── settings_card.dart │ │ │ ├── settings_menu.dart │ │ │ ├── settings_menu_check.dart │ │ │ ├── settings_number.dart │ │ │ └── settings_switch.dart │ │ ├── shadow_card.dart │ │ ├── status/ │ │ │ ├── app_empty_widget.dart │ │ │ ├── app_error_widget.dart │ │ │ └── app_loadding_widget.dart │ │ ├── superchat_card.dart │ │ └── ui/ │ │ └── after_post_frame.dart │ ├── linux/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── flutter/ │ │ │ ├── CMakeLists.txt │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ ├── packaging/ │ │ │ ├── aur/ │ │ │ │ └── slive.desktop │ │ │ └── deb/ │ │ │ └── make_config.yaml │ │ └── runner/ │ │ ├── CMakeLists.txt │ │ ├── main.cc │ │ ├── my_application.cc │ │ └── my_application.h │ ├── macos/ │ │ ├── .gitignore │ │ ├── Flutter/ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ ├── Flutter-Release.xcconfig │ │ │ └── GeneratedPluginRegistrant.swift │ │ ├── Podfile │ │ ├── Runner/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── 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 │ │ ├── RunnerTests/ │ │ │ └── RunnerTests.swift │ │ └── packaging/ │ │ └── dmg/ │ │ └── make_config.yaml │ ├── pubspec.yaml │ ├── rust/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── api/ │ │ │ ├── danmaku_mask.rs │ │ │ ├── mod.rs │ │ │ └── simple.rs │ │ ├── frb_generated.rs │ │ └── lib.rs │ ├── rust_builder/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ ├── settings.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── AndroidManifest.xml │ │ ├── cargokit/ │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── README │ │ │ ├── build_pod.sh │ │ │ ├── build_tool/ │ │ │ │ ├── README.md │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── bin/ │ │ │ │ │ └── build_tool.dart │ │ │ │ ├── lib/ │ │ │ │ │ ├── build_tool.dart │ │ │ │ │ └── src/ │ │ │ │ │ ├── android_environment.dart │ │ │ │ │ ├── artifacts_provider.dart │ │ │ │ │ ├── build_cmake.dart │ │ │ │ │ ├── build_gradle.dart │ │ │ │ │ ├── build_pod.dart │ │ │ │ │ ├── build_tool.dart │ │ │ │ │ ├── builder.dart │ │ │ │ │ ├── cargo.dart │ │ │ │ │ ├── crate_hash.dart │ │ │ │ │ ├── environment.dart │ │ │ │ │ ├── logging.dart │ │ │ │ │ ├── options.dart │ │ │ │ │ ├── precompile_binaries.dart │ │ │ │ │ ├── rustup.dart │ │ │ │ │ ├── target.dart │ │ │ │ │ ├── util.dart │ │ │ │ │ └── verify_binaries.dart │ │ │ │ ├── pubspec.lock │ │ │ │ └── pubspec.yaml │ │ │ ├── cmake/ │ │ │ │ ├── cargokit.cmake │ │ │ │ └── resolve_symlinks.ps1 │ │ │ ├── gradle/ │ │ │ │ └── plugin.gradle │ │ │ ├── run_build_tool.cmd │ │ │ └── run_build_tool.sh │ │ ├── ios/ │ │ │ ├── Classes/ │ │ │ │ └── dummy_file.c │ │ │ └── rust_lib_simple_live_app.podspec │ │ ├── linux/ │ │ │ └── CMakeLists.txt │ │ ├── macos/ │ │ │ ├── Classes/ │ │ │ │ └── dummy_file.c │ │ │ └── rust_lib_simple_live_app.podspec │ │ ├── pubspec.yaml │ │ └── windows/ │ │ ├── .gitignore │ │ └── CMakeLists.txt │ ├── shorebird.yaml │ ├── test/ │ │ ├── tool_test.dart │ │ └── widget_test.dart │ ├── test_driver/ │ │ └── integration_test.dart │ └── windows/ │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter/ │ │ ├── CMakeLists.txt │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ ├── packaging/ │ │ ├── exe/ │ │ │ ├── ChineseSimplified.isl │ │ │ └── make_config.yaml │ │ └── msix/ │ │ └── make_config.yaml │ └── runner/ │ ├── CMakeLists.txt │ ├── Runner.rc │ ├── flutter_window.cpp │ ├── flutter_window.h │ ├── main.cpp │ ├── resource.h │ ├── runner.exe.manifest │ ├── utils.cpp │ ├── utils.h │ ├── win32_window.cpp │ └── win32_window.h ├── simple_live_console/ │ ├── .fvmrc │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── analysis_options.yaml │ ├── bin/ │ │ └── simple_live_console.dart │ ├── pubspec.yaml │ └── test/ │ └── all_live_console_test.dart ├── simple_live_core/ │ ├── .fvmrc │ ├── .gitattributes │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── analysis_options.yaml │ ├── assets/ │ │ └── js/ │ │ ├── a_bogus.js │ │ └── douyin-webmssdk.js │ ├── example/ │ │ └── simple_live_core_example.dart │ ├── lib/ │ │ ├── simple_live_core.dart │ │ └── src/ │ │ ├── common/ │ │ │ ├── binary_writer.dart │ │ │ ├── convert_helper.dart │ │ │ ├── core_error.dart │ │ │ ├── core_log.dart │ │ │ ├── custom_interceptor.dart │ │ │ ├── douyin/ │ │ │ │ ├── abogus.dart │ │ │ │ ├── douyinRequestParams.dart │ │ │ │ └── douyin_utils.dart │ │ │ ├── http_client.dart │ │ │ ├── js_engine.dart │ │ │ └── web_socket_util.dart │ │ ├── danmaku/ │ │ │ ├── bilibili_danmaku.dart │ │ │ ├── douyin_danmaku.dart │ │ │ ├── douyu_danmaku.dart │ │ │ ├── huya_danmaku.dart │ │ │ ├── proto/ │ │ │ │ ├── douyin.pb.dart │ │ │ │ ├── douyin.pbenum.dart │ │ │ │ ├── douyin.pbjson.dart │ │ │ │ └── douyin.proto │ │ │ └── twitch_danmaku.dart │ │ ├── interface/ │ │ │ ├── live_danmaku.dart │ │ │ └── live_site.dart │ │ ├── model/ │ │ │ ├── live_anchor_item.dart │ │ │ ├── live_category.dart │ │ │ ├── live_category_result.dart │ │ │ ├── live_message.dart │ │ │ ├── live_play_quality.dart │ │ │ ├── live_play_url.dart │ │ │ ├── live_room_detail.dart │ │ │ ├── live_room_item.dart │ │ │ ├── live_search_result.dart │ │ │ └── tars/ │ │ │ ├── get_cdn_token_ex_req.dart │ │ │ ├── get_cdn_token_ex_resp.dart │ │ │ ├── get_cdn_token_req.dart │ │ │ ├── get_cdn_token_resp.dart │ │ │ ├── huya_danmaku.dart │ │ │ ├── tar2dart.dart │ │ │ └── types.dart │ │ └── platforms/ │ │ ├── bilibili/ │ │ │ └── bilibili_site.dart │ │ ├── douyin/ │ │ │ ├── abogus.dart │ │ │ ├── douyin_request_params.dart │ │ │ ├── douyin_site.dart │ │ │ └── douyin_utils.dart │ │ ├── douyu/ │ │ │ └── douyu_site.dart │ │ ├── huya/ │ │ │ ├── huya_site.dart │ │ │ └── utils.dart │ │ ├── readme.md │ │ └── twitch/ │ │ ├── models.dart │ │ └── twitch_site.dart │ ├── packages/ │ │ └── tars_dart/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ └── tars/ │ │ │ ├── codec/ │ │ │ │ ├── tars_decode_exception.dart │ │ │ │ ├── tars_deep_copyable.dart │ │ │ │ ├── tars_displayer.dart │ │ │ │ ├── tars_encode_exception.dart │ │ │ │ ├── tars_input_stream.dart │ │ │ │ ├── tars_output_stream.dart │ │ │ │ └── tars_struct.dart │ │ │ ├── net/ │ │ │ │ └── base_tars_http.dart │ │ │ └── tup/ │ │ │ ├── basic_class_type_util.dart │ │ │ ├── const.dart │ │ │ ├── object_create_exception.dart │ │ │ ├── request_packet.dart │ │ │ ├── tars_uni_packet.dart │ │ │ ├── tup_response.dart │ │ │ ├── tup_result_exception.dart │ │ │ ├── uni_attribute.dart │ │ │ ├── uni_packet.dart │ │ │ └── write_buffer.dart │ │ └── pubspec.yaml │ ├── pubspec.yaml │ └── test/ │ ├── douyu_sc.json │ └── simple_live_core_test.dart └── simple_live_tv_app/ ├── .fvmrc ├── .gitignore ├── .metadata ├── README.md ├── analysis_options.yaml ├── android/ │ ├── .gitignore │ ├── app/ │ │ ├── build.gradle.kts │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── debug/ │ │ │ └── AndroidManifest.xml │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── bgylde/ │ │ │ │ └── live/ │ │ │ │ └── MainActivity.java │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── xycz/ │ │ │ │ └── simple_live_tv/ │ │ │ │ └── MainActivity.kt │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ └── launch_background.xml │ │ │ ├── drawable-v21/ │ │ │ │ └── launch_background.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ └── ic_banner.xml │ │ │ ├── values/ │ │ │ │ ├── ic_banner_background.xml │ │ │ │ └── styles.xml │ │ │ ├── values-night/ │ │ │ │ └── styles.xml │ │ │ └── xml/ │ │ │ └── network_security_config.xml │ │ └── profile/ │ │ └── AndroidManifest.xml │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ └── settings.gradle.kts ├── assets/ │ ├── lotties/ │ │ ├── empty.json │ │ ├── error.json │ │ └── loadding.json │ └── statement.txt ├── lib/ │ ├── app/ │ │ ├── app_error.dart │ │ ├── app_focus_node.dart │ │ ├── app_style.dart │ │ ├── base_focus_model.dart │ │ ├── constant.dart │ │ ├── controller/ │ │ │ ├── app_settings_controller.dart │ │ │ └── base_controller.dart │ │ ├── event_bus.dart │ │ ├── log.dart │ │ ├── sites.dart │ │ └── utils.dart │ ├── main.dart │ ├── models/ │ │ ├── account/ │ │ │ └── bilibili_user_info_page.dart │ │ ├── db/ │ │ │ ├── follow_user.dart │ │ │ ├── follow_user.g.dart │ │ │ ├── history.dart │ │ │ └── history.g.dart │ │ ├── follow_user_item.dart │ │ └── version_model.dart │ ├── modules/ │ │ ├── account/ │ │ │ └── bilibili/ │ │ │ ├── qr_login_controller.dart │ │ │ └── qr_login_page.dart │ │ ├── agreement/ │ │ │ └── agreement_page.dart │ │ ├── category/ │ │ │ ├── category_controller.dart │ │ │ ├── category_page.dart │ │ │ └── detail/ │ │ │ ├── category_detail_controller.dart │ │ │ └── category_detail_page.dart │ │ ├── follow_user/ │ │ │ └── follow_user_page.dart │ │ ├── history/ │ │ │ ├── history_controller.dart │ │ │ └── history_page.dart │ │ ├── home/ │ │ │ ├── home_controller.dart │ │ │ └── home_page.dart │ │ ├── hot_live/ │ │ │ ├── hot_live_controller.dart │ │ │ └── hot_live_page.dart │ │ ├── live_room/ │ │ │ ├── live_room_controller.dart │ │ │ ├── live_room_page.dart │ │ │ └── player/ │ │ │ ├── player_controller.dart │ │ │ └── player_controls.dart │ │ ├── search/ │ │ │ ├── anchor/ │ │ │ │ ├── search_anchor_controller.dart │ │ │ │ └── search_anchor_page.dart │ │ │ └── room/ │ │ │ ├── search_room_controller.dart │ │ │ └── search_room_page.dart │ │ ├── settings/ │ │ │ ├── settings_controller.dart │ │ │ └── settings_page.dart │ │ └── sync/ │ │ ├── sync_controller.dart │ │ └── sync_page.dart │ ├── requests/ │ │ ├── common_request.dart │ │ ├── custom_log_interceptor.dart │ │ ├── http_client.dart │ │ └── http_error.dart │ ├── routes/ │ │ ├── app_navigation.dart │ │ ├── app_pages.dart │ │ └── route_path.dart │ ├── services/ │ │ ├── bilibili_account_service.dart │ │ ├── db_service.dart │ │ ├── follow_user_service.dart │ │ ├── local_storage_service.dart │ │ ├── signalr_service.dart │ │ └── sync_service.dart │ └── widgets/ │ ├── app_scaffold.dart │ ├── button/ │ │ ├── highlight_button.dart │ │ ├── highlight_list_tile.dart │ │ └── home_big_button.dart │ ├── card/ │ │ ├── anchor_card.dart │ │ └── live_room_card.dart │ ├── highlight_widget.dart │ ├── keep_alive_wrapper.dart │ ├── net_image.dart │ ├── page_grid_view.dart │ ├── rectangular_indicator.dart │ ├── settings_item_widget.dart │ └── status/ │ ├── app_empty_widget.dart │ ├── app_error_widget.dart │ └── app_loadding_widget.dart ├── pubspec.yaml ├── test/ │ └── widget_test.dart └── 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 ├── runner.exe.manifest ├── utils.cpp ├── utils.h ├── win32_window.cpp └── win32_window.h