├── README.md ├── analysis_options.yaml ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── pinkacg │ │ │ │ └── pink_acg │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable-v21 │ │ │ └── launch_background.xml │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── key.jks ├── settings.gradle └── settings_aar.gradle ├── assets ├── emoji │ ├── aixin.png │ ├── aoman.png │ ├── baiyan.png │ ├── baoquan.png │ ├── bianbian.png │ ├── bishi.png │ ├── bizui.png │ ├── cahan.png │ ├── caidao.png │ ├── chigua.png │ ├── ciya.png │ ├── daku.png │ ├── dalian.png │ ├── dangao.png │ ├── deyi.png │ ├── diaoxie.png │ ├── emm.png │ ├── fa.png │ ├── fadai.png │ ├── fadou.png │ ├── fanu.png │ ├── fendou.png │ ├── fu.png │ ├── ganga.png │ ├── gouyin.png │ ├── guzhang.png │ ├── haixiu.png │ ├── han.png │ ├── hanxiao.png │ ├── haode.png │ ├── haqian.png │ ├── hehe.png │ ├── heiha.png │ ├── hongbao.png │ ├── huaixiao.png │ ├── ji.png │ ├── jianxiao.png │ ├── jiayou.png │ ├── jiayoujiayou.png │ ├── jingkong.png │ ├── jingya.png │ ├── jiong.png │ ├── jizhi.png │ ├── kafei.png │ ├── kelian.png │ ├── koubi.png │ ├── kuaikule.png │ ├── kulou.png │ ├── kun.png │ ├── lazhu.png │ ├── liuhan.png │ ├── liulei.png │ ├── meigui.png │ ├── nanguo.png │ ├── ohuo.png │ ├── ok.png │ ├── piezui.png │ ├── pijiu.png │ ├── qiang.png │ ├── qiaoda.png │ ├── qinqin.png │ ├── quantou.png │ ├── ruo.png │ ├── se.png │ ├── shehuishehui.png │ ├── shengli.png │ ├── shui.png │ ├── sui.png │ ├── taiyang.png │ ├── tiana.png │ ├── tiaopi.png │ ├── tiaotiao.png │ ├── touxiao.png │ ├── tu.png │ ├── wa.png │ ├── wangchai.png │ ├── weiqu.png │ ├── woshou.png │ ├── wulian.png │ ├── xigua.png │ ├── xinsui.png │ ├── xu.png │ ├── ye.png │ ├── yinxian.png │ ├── yiwen.png │ ├── yongbao.png │ ├── youhengheng.png │ ├── youxian.png │ ├── yueliang.png │ ├── yukuai.png │ ├── yun.png │ ├── zaininmadejian.png │ ├── zhadan.png │ ├── zhouma.png │ ├── zhoumei.png │ ├── zhuakuang.png │ ├── zhuanquan.png │ ├── zhutou.png │ ├── zuichun.png │ └── zuohengheng.png ├── font │ └── PinkApp.ttf ├── icon │ ├── active.png │ ├── add.png │ ├── aite.png │ ├── avatar_default.png │ ├── back.png │ ├── comment.png │ ├── comment_icon.png │ ├── comment_like.png │ ├── comment_unlike.png │ ├── dark_mode_1.png │ ├── dark_mode_2.png │ ├── default.png │ ├── del.png │ ├── download.png │ ├── edit.png │ ├── emoji.png │ ├── friends.png │ ├── image.png │ ├── message.png │ ├── msg.png │ ├── noti.png │ ├── pic.png │ ├── play_await.png │ ├── qq.png │ ├── qzone.png │ ├── re_star.png │ ├── scan.png │ ├── share.png │ ├── star.png │ ├── theme.png │ ├── up_icon.png │ ├── user.png │ ├── video.png │ ├── video_card_comment.png │ ├── video_card_play.png │ ├── video_card_star.png │ └── wechat.png ├── images │ ├── 404.png │ ├── avatar.png │ ├── head_left.png │ ├── head_left_protect.png │ ├── head_right.png │ ├── head_right_protect.png │ └── logo.png └── json │ ├── loading.json │ └── loading_more.json ├── component ├── pink_net │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── lib │ │ ├── core │ │ │ ├── dio_adapter.dart │ │ │ ├── pink_error.dart │ │ │ └── pink_net_adapter.dart │ │ ├── pink_net.dart │ │ └── request │ │ │ └── pink_base_request.dart │ ├── pubspec.lock │ ├── pubspec.yaml │ └── test │ │ └── pink_net_test.dart └── rich_editor │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── assets │ └── editor │ │ ├── editor.html │ │ ├── interact.min.js │ │ ├── normalize.css │ │ ├── platform_style.css │ │ ├── rich_text_editor.js │ │ └── style.css │ ├── example │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── jideguru │ │ │ │ │ │ └── example │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values-night │ │ │ │ │ └── styles.xml │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Podfile │ │ ├── Podfile.lock │ │ ├── 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 │ │ └── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ ├── lib │ │ ├── basic.dart │ │ ├── custom_toolbar_demo.dart │ │ └── main.dart │ ├── macos │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── Flutter-Debug.xcconfig │ │ │ ├── Flutter-Release.xcconfig │ │ │ └── GeneratedPluginRegistrant.swift │ │ ├── Podfile │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── app_icon_1024.png │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_256.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_512.png │ │ │ │ └── app_icon_64.png │ │ │ ├── Base.lproj │ │ │ └── MainMenu.xib │ │ │ ├── Configs │ │ │ ├── AppInfo.xcconfig │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ └── Warnings.xcconfig │ │ │ ├── DebugProfile.entitlements │ │ │ ├── Info.plist │ │ │ ├── MainFlutterWindow.swift │ │ │ └── Release.entitlements │ ├── pubspec.lock │ ├── pubspec.yaml │ ├── test │ │ └── widget_test.dart │ └── web │ │ ├── favicon.png │ │ ├── icons │ │ ├── Icon-192.png │ │ └── Icon-512.png │ │ ├── index.html │ │ └── manifest.json │ ├── lib │ ├── rich_editor.dart │ └── src │ │ ├── extensions │ │ └── extensions.dart │ │ ├── models │ │ ├── alias.dart │ │ ├── button.dart │ │ ├── callbacks │ │ │ ├── did_html_change_listener.dart │ │ │ ├── get_current_html_callback.dart │ │ │ ├── html_changed_listener.dart │ │ │ └── loaded_listener.dart │ │ ├── command_state.dart │ │ ├── config.dart │ │ ├── editor_state.dart │ │ ├── enum │ │ │ ├── bar_position.dart │ │ │ └── command_name.dart │ │ ├── family.dart │ │ ├── font.dart │ │ ├── rich_editor_options.dart │ │ └── system_font.dart │ │ ├── rendering │ │ └── rich_editor.dart │ │ ├── services │ │ └── local_server.dart │ │ ├── utils │ │ ├── constants.dart │ │ ├── font_list_parser.dart │ │ └── javascript_executor_base.dart │ │ └── widgets │ │ ├── check_dialog.dart │ │ ├── color_picker_dialog.dart │ │ ├── custom_dialog_template.dart │ │ ├── editor_tool_bar.dart │ │ ├── font_size_dialog.dart │ │ ├── fonts_dialog.dart │ │ ├── heading_dialog.dart │ │ ├── html_text.dart │ │ ├── insert_image_dialog.dart │ │ ├── insert_link_dialog.dart │ │ └── tab_button.dart │ ├── pubspec.lock │ ├── pubspec.yaml │ ├── res │ └── 1.png │ └── test │ └── rich_editor_test.dart ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Podfile ├── 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 └── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── Runner-Bridging-Header.h ├── lib ├── app │ ├── core │ │ ├── pink_base_tab_state.dart │ │ ├── pink_state.dart │ │ └── socket.dart │ ├── data │ │ ├── category_mo.dart │ │ ├── chat_mo.dart │ │ ├── comment_mo.dart │ │ ├── contact.dart │ │ ├── dynamic_mo.dart │ │ ├── follow_list_mo.dart │ │ ├── home_mo.dart │ │ ├── post_mo.dart │ │ ├── profile_mo.dart │ │ ├── ranking_mo.dart │ │ ├── recommend_mo.dart │ │ ├── search.dart │ │ ├── upload_mo.dart │ │ ├── user_center_mo.dart │ │ └── video_detail_mo.dart │ ├── http │ │ ├── dao │ │ │ ├── await_watch_dao.dart │ │ │ ├── category_dao.dart │ │ │ ├── chat_dao.dart │ │ │ ├── coin_dao.dart │ │ │ ├── comment_dao.dart │ │ │ ├── contact_dao.dart │ │ │ ├── dynamic_dao.dart │ │ │ ├── email_validate_code_dao.dart │ │ │ ├── favorite_dao.dart │ │ │ ├── follow_dao.dart │ │ │ ├── follow_list_dao.dart │ │ │ ├── home_dao.dart │ │ │ ├── like_dao.dart │ │ │ ├── log_dao.dart │ │ │ ├── login_dao.dart │ │ │ ├── post_view_dao.dart │ │ │ ├── profile_dao.dart │ │ │ ├── publish_post_dao.dart │ │ │ ├── ranking_dao.dart │ │ │ ├── search_dao.dart │ │ │ ├── upload_dao.dart │ │ │ ├── user_center_dao.dart │ │ │ ├── user_post_dao.dart │ │ │ ├── user_update_dao.dart │ │ │ └── video_detail_dao.dart │ │ └── request │ │ │ ├── await_watch_request.dart │ │ │ ├── barrage_switch.dart │ │ │ ├── base_request.dart │ │ │ ├── cancel_favorite_request.dart │ │ │ ├── category_request.dart │ │ │ ├── chat_request.dart │ │ │ ├── coin_request.dart │ │ │ ├── comment_request.dart │ │ │ ├── contact_request.dart │ │ │ ├── dynamic_request.dart │ │ │ ├── email_validate_code_request.dart │ │ │ ├── favorite_request.dart │ │ │ ├── follow_list_request.dart │ │ │ ├── follow_request.dart │ │ │ ├── forget_pwd_request.dart │ │ │ ├── home_request.dart │ │ │ ├── like_request.dart │ │ │ ├── log_request.dart │ │ │ ├── login_request.dart │ │ │ ├── post_view_request.dart │ │ │ ├── profile_request.dart │ │ │ ├── publish_post_request.dart │ │ │ ├── ranking_request.dart │ │ │ ├── reco_posts_request.dart │ │ │ ├── registration_request.dart │ │ │ ├── search_request.dart │ │ │ ├── upload_request.dart │ │ │ ├── user_center_request.dart │ │ │ ├── user_post_request.dart │ │ │ ├── user_update_request.dart │ │ │ └── video_detail_request.dart │ ├── lib │ │ └── fijkplayer_skin │ │ │ ├── fijkplayer_skin.dart │ │ │ ├── schema.dart │ │ │ └── slider.dart │ ├── middlewares │ │ └── auth_middleware.dart │ ├── modules │ │ ├── aboutApp │ │ │ ├── bindings │ │ │ │ └── about_app_binding.dart │ │ │ ├── controllers │ │ │ │ └── about_app_controller.dart │ │ │ └── views │ │ │ │ └── about_app_view.dart │ │ ├── aboutUs │ │ │ ├── bindings │ │ │ │ └── about_us_binding.dart │ │ │ ├── controllers │ │ │ │ └── about_us_controller.dart │ │ │ └── views │ │ │ │ └── about_us_view.dart │ │ ├── chat │ │ │ ├── bindings │ │ │ │ └── chat_binding.dart │ │ │ ├── controllers │ │ │ │ └── chat_controller.dart │ │ │ └── views │ │ │ │ └── chat_view.dart │ │ ├── contact │ │ │ ├── bindings │ │ │ │ └── contact_binding.dart │ │ │ ├── controllers │ │ │ │ └── contact_controller.dart │ │ │ └── views │ │ │ │ └── contact_view.dart │ │ ├── controller │ │ │ └── websocket_controller.dart │ │ ├── darkMode │ │ │ ├── bindings │ │ │ │ └── dark_mode_binding.dart │ │ │ ├── controllers │ │ │ │ └── dark_mode_controller.dart │ │ │ └── views │ │ │ │ └── dark_mode_view.dart │ │ ├── dynamic │ │ │ ├── bindings │ │ │ │ └── dynamic_binding.dart │ │ │ ├── controllers │ │ │ │ └── dynamic_controller.dart │ │ │ └── views │ │ │ │ └── dynamic_view.dart │ │ ├── forgetPwd │ │ │ ├── bindings │ │ │ │ └── forget_pwd_binding.dart │ │ │ ├── controllers │ │ │ │ └── forget_pwd_controller.dart │ │ │ └── views │ │ │ │ └── forget_pwd_view.dart │ │ ├── home │ │ │ ├── bindings │ │ │ │ └── home_binding.dart │ │ │ ├── controllers │ │ │ │ └── home_controller.dart │ │ │ └── views │ │ │ │ └── home_view.dart │ │ ├── index │ │ │ ├── bindings │ │ │ │ └── index_binding.dart │ │ │ ├── controllers │ │ │ │ └── index_controller.dart │ │ │ └── views │ │ │ │ └── index_view.dart │ │ ├── login │ │ │ ├── bindings │ │ │ │ └── login_binding.dart │ │ │ ├── controllers │ │ │ │ └── login_controller.dart │ │ │ └── views │ │ │ │ └── login_view.dart │ │ ├── photoDia │ │ │ ├── bindings │ │ │ │ └── photo_dia_binding.dart │ │ │ ├── controllers │ │ │ │ └── photo_dia_controller.dart │ │ │ └── views │ │ │ │ └── photo_dia_view.dart │ │ ├── post │ │ │ ├── bindings │ │ │ │ └── post_binding.dart │ │ │ ├── controllers │ │ │ │ └── post_controller.dart │ │ │ └── views │ │ │ │ └── post_view.dart │ │ ├── profile │ │ │ ├── bindings │ │ │ │ └── profile_binding.dart │ │ │ ├── controllers │ │ │ │ └── profile_controller.dart │ │ │ └── views │ │ │ │ └── profile_view.dart │ │ ├── profileFollow │ │ │ ├── bindings │ │ │ │ └── profile_follow_binding.dart │ │ │ ├── controllers │ │ │ │ └── profile_follow_controller.dart │ │ │ └── views │ │ │ │ └── profile_follow_view.dart │ │ ├── profilePost │ │ │ ├── bindings │ │ │ │ └── profile_post_binding.dart │ │ │ ├── controllers │ │ │ │ └── profile_post_controller.dart │ │ │ └── views │ │ │ │ └── profile_post_view.dart │ │ ├── publish │ │ │ ├── bindings │ │ │ │ └── publish_binding.dart │ │ │ ├── controllers │ │ │ │ └── publish_controller.dart │ │ │ └── views │ │ │ │ └── publish_view.dart │ │ ├── rank │ │ │ ├── bindings │ │ │ │ └── rank_binding.dart │ │ │ ├── controllers │ │ │ │ └── rank_controller.dart │ │ │ └── views │ │ │ │ └── rank_view.dart │ │ ├── recommend │ │ │ ├── controllers │ │ │ │ └── recommend_controller.dart │ │ │ └── views │ │ │ │ └── recommend_view.dart │ │ ├── reg │ │ │ ├── bindings │ │ │ │ └── reg_binding.dart │ │ │ ├── controllers │ │ │ │ └── reg_controller.dart │ │ │ └── views │ │ │ │ └── reg_view.dart │ │ ├── scan │ │ │ ├── bindings │ │ │ │ └── scan_binding.dart │ │ │ ├── controllers │ │ │ │ └── scan_controller.dart │ │ │ └── views │ │ │ │ └── scan_view.dart │ │ ├── search │ │ │ ├── bindings │ │ │ │ └── search_binding.dart │ │ │ ├── controllers │ │ │ │ └── search_controller.dart │ │ │ └── views │ │ │ │ └── search_view.dart │ │ ├── setting │ │ │ ├── bindings │ │ │ │ └── setting_binding.dart │ │ │ ├── controllers │ │ │ │ └── setting_controller.dart │ │ │ └── views │ │ │ │ └── setting_view.dart │ │ ├── userCenter │ │ │ ├── bindings │ │ │ │ └── user_center_binding.dart │ │ │ ├── controllers │ │ │ │ └── user_center_controller.dart │ │ │ └── views │ │ │ │ └── user_center_view.dart │ │ ├── userDesc │ │ │ ├── bindings │ │ │ │ └── user_desc_binding.dart │ │ │ ├── controllers │ │ │ │ └── user_desc_controller.dart │ │ │ └── views │ │ │ │ └── user_desc_view.dart │ │ ├── userEmail │ │ │ ├── bindings │ │ │ │ └── user_email_binding.dart │ │ │ ├── controllers │ │ │ │ └── user_email_controller.dart │ │ │ └── views │ │ │ │ └── user_email_view.dart │ │ ├── userInfo │ │ │ ├── bindings │ │ │ │ └── user_info_binding.dart │ │ │ ├── controllers │ │ │ │ └── user_info_controller.dart │ │ │ └── views │ │ │ │ └── user_info_view.dart │ │ ├── userPwd │ │ │ ├── bindings │ │ │ │ └── user_pwd_binding.dart │ │ │ ├── controllers │ │ │ │ └── user_pwd_controller.dart │ │ │ └── views │ │ │ │ └── user_pwd_view.dart │ │ ├── userQrcode │ │ │ ├── bindings │ │ │ │ └── user_qrcode_binding.dart │ │ │ ├── controllers │ │ │ │ └── user_qrcode_controller.dart │ │ │ └── views │ │ │ │ └── user_qrcode_view.dart │ │ ├── userUsername │ │ │ ├── bindings │ │ │ │ └── user_username_binding.dart │ │ │ ├── controllers │ │ │ │ └── user_username_controller.dart │ │ │ └── views │ │ │ │ └── user_username_view.dart │ │ ├── video │ │ │ ├── bindings │ │ │ │ └── video_binding.dart │ │ │ ├── controllers │ │ │ │ └── video_controller.dart │ │ │ └── views │ │ │ │ └── video_view.dart │ │ └── webBrowser │ │ │ ├── bindings │ │ │ └── web_browser_binding.dart │ │ │ ├── controllers │ │ │ └── web_browser_controller.dart │ │ │ └── views │ │ │ └── web_browser_view.dart │ ├── routes │ │ ├── app_pages.dart │ │ └── app_routes.dart │ ├── util │ │ ├── button.dart │ │ ├── clipboard_tool.dart │ │ ├── color.dart │ │ ├── contact.dart │ │ ├── emoji.dart │ │ ├── follow.dart │ │ ├── format_util.dart │ │ ├── image_picker.dart │ │ ├── pink_defend.dart │ │ ├── screenutil.dart │ │ ├── string_util.dart │ │ ├── toast.dart │ │ ├── update.dart │ │ ├── video_analysis.dart │ │ └── view_util.dart │ └── widget │ │ ├── appbar.dart │ │ ├── card │ │ ├── banner_card.dart │ │ ├── dynamic_card.dart │ │ ├── dynamic_large_card.dart │ │ ├── post_card.dart │ │ ├── ranking_large_card.dart │ │ ├── user_center_card.dart │ │ ├── video_card.dart │ │ └── video_large_card.dart │ │ ├── email_input.dart │ │ ├── getx_dialog_button.dart │ │ ├── getx_dialog_input.dart │ │ ├── loading_container.dart │ │ ├── login │ │ ├── login_button.dart │ │ ├── login_effect.dart │ │ └── login_input.dart │ │ ├── navigation_bar.dart │ │ ├── not_found.dart │ │ ├── pink_tab.dart │ │ ├── setting_choose_item.dart │ │ ├── share_card.dart │ │ ├── tab │ │ ├── await_watch_page.dart │ │ ├── comment_tab_page.dart │ │ ├── dynamic_tab_page.dart │ │ ├── home_tab_page.dart │ │ ├── ranking_tab_page.dart │ │ ├── recommend_tab_page.dart │ │ ├── search_tab_page.dart │ │ └── user_center_tab_page.dart │ │ ├── update.dart │ │ ├── user_textarea.dart │ │ ├── video_content.dart │ │ ├── video_header.dart │ │ ├── video_player.dart │ │ └── video_toolbar.dart ├── main.dart └── pink_constants.dart ├── md-image ├── Screenshot_2021-11-12-18-14-47-022_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-14-51-122_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-14-55-429_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-14-57-881_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-03-883_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-16-766_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-22-130_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-25-046_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-35-090_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-37-651_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-43-388_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-52-607_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-15-58-026_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-16-01-595_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-16-07-861_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-16-25-974_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-16-42-516_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-16-58-577_com.pinkacg.pi.jpg ├── Screenshot_2021-11-12-18-17-12-053_com.pinkacg.pi.jpg └── Screenshot_2021-11-12-18-17-16-991_com.pinkacg.pi.jpg ├── pubspec.lock ├── pubspec.yaml ├── test └── widget_test.dart └── web ├── favicon.png ├── icons ├── Icon-192.png └── Icon-512.png ├── index.html └── manifest.json /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:lints/recommended.yaml 2 | linter: 3 | rules: 4 | 5 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/pinkacg/pink_acg/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.pinkacg.pink_acg 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.6.10' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:4.1.3' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip 7 | -------------------------------------------------------------------------------- /android/key.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/android/key.jks -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /android/settings_aar.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /assets/emoji/aixin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/aixin.png -------------------------------------------------------------------------------- /assets/emoji/aoman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/aoman.png -------------------------------------------------------------------------------- /assets/emoji/baiyan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/baiyan.png -------------------------------------------------------------------------------- /assets/emoji/baoquan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/baoquan.png -------------------------------------------------------------------------------- /assets/emoji/bianbian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/bianbian.png -------------------------------------------------------------------------------- /assets/emoji/bishi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/bishi.png -------------------------------------------------------------------------------- /assets/emoji/bizui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/bizui.png -------------------------------------------------------------------------------- /assets/emoji/cahan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/cahan.png -------------------------------------------------------------------------------- /assets/emoji/caidao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/caidao.png -------------------------------------------------------------------------------- /assets/emoji/chigua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/chigua.png -------------------------------------------------------------------------------- /assets/emoji/ciya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/ciya.png -------------------------------------------------------------------------------- /assets/emoji/daku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/daku.png -------------------------------------------------------------------------------- /assets/emoji/dalian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/dalian.png -------------------------------------------------------------------------------- /assets/emoji/dangao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/dangao.png -------------------------------------------------------------------------------- /assets/emoji/deyi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/deyi.png -------------------------------------------------------------------------------- /assets/emoji/diaoxie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/diaoxie.png -------------------------------------------------------------------------------- /assets/emoji/emm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/emm.png -------------------------------------------------------------------------------- /assets/emoji/fa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/fa.png -------------------------------------------------------------------------------- /assets/emoji/fadai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/fadai.png -------------------------------------------------------------------------------- /assets/emoji/fadou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/fadou.png -------------------------------------------------------------------------------- /assets/emoji/fanu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/fanu.png -------------------------------------------------------------------------------- /assets/emoji/fendou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/fendou.png -------------------------------------------------------------------------------- /assets/emoji/fu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/fu.png -------------------------------------------------------------------------------- /assets/emoji/ganga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/ganga.png -------------------------------------------------------------------------------- /assets/emoji/gouyin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/gouyin.png -------------------------------------------------------------------------------- /assets/emoji/guzhang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/guzhang.png -------------------------------------------------------------------------------- /assets/emoji/haixiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/haixiu.png -------------------------------------------------------------------------------- /assets/emoji/han.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/han.png -------------------------------------------------------------------------------- /assets/emoji/hanxiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/hanxiao.png -------------------------------------------------------------------------------- /assets/emoji/haode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/haode.png -------------------------------------------------------------------------------- /assets/emoji/haqian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/haqian.png -------------------------------------------------------------------------------- /assets/emoji/hehe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/hehe.png -------------------------------------------------------------------------------- /assets/emoji/heiha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/heiha.png -------------------------------------------------------------------------------- /assets/emoji/hongbao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/hongbao.png -------------------------------------------------------------------------------- /assets/emoji/huaixiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/huaixiao.png -------------------------------------------------------------------------------- /assets/emoji/ji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/ji.png -------------------------------------------------------------------------------- /assets/emoji/jianxiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/jianxiao.png -------------------------------------------------------------------------------- /assets/emoji/jiayou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/jiayou.png -------------------------------------------------------------------------------- /assets/emoji/jiayoujiayou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/jiayoujiayou.png -------------------------------------------------------------------------------- /assets/emoji/jingkong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/jingkong.png -------------------------------------------------------------------------------- /assets/emoji/jingya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/jingya.png -------------------------------------------------------------------------------- /assets/emoji/jiong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/jiong.png -------------------------------------------------------------------------------- /assets/emoji/jizhi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/jizhi.png -------------------------------------------------------------------------------- /assets/emoji/kafei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/kafei.png -------------------------------------------------------------------------------- /assets/emoji/kelian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/kelian.png -------------------------------------------------------------------------------- /assets/emoji/koubi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/koubi.png -------------------------------------------------------------------------------- /assets/emoji/kuaikule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/kuaikule.png -------------------------------------------------------------------------------- /assets/emoji/kulou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/kulou.png -------------------------------------------------------------------------------- /assets/emoji/kun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/kun.png -------------------------------------------------------------------------------- /assets/emoji/lazhu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/lazhu.png -------------------------------------------------------------------------------- /assets/emoji/liuhan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/liuhan.png -------------------------------------------------------------------------------- /assets/emoji/liulei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/liulei.png -------------------------------------------------------------------------------- /assets/emoji/meigui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/meigui.png -------------------------------------------------------------------------------- /assets/emoji/nanguo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/nanguo.png -------------------------------------------------------------------------------- /assets/emoji/ohuo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/ohuo.png -------------------------------------------------------------------------------- /assets/emoji/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/ok.png -------------------------------------------------------------------------------- /assets/emoji/piezui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/piezui.png -------------------------------------------------------------------------------- /assets/emoji/pijiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/pijiu.png -------------------------------------------------------------------------------- /assets/emoji/qiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/qiang.png -------------------------------------------------------------------------------- /assets/emoji/qiaoda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/qiaoda.png -------------------------------------------------------------------------------- /assets/emoji/qinqin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/qinqin.png -------------------------------------------------------------------------------- /assets/emoji/quantou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/quantou.png -------------------------------------------------------------------------------- /assets/emoji/ruo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/ruo.png -------------------------------------------------------------------------------- /assets/emoji/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/se.png -------------------------------------------------------------------------------- /assets/emoji/shehuishehui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/shehuishehui.png -------------------------------------------------------------------------------- /assets/emoji/shengli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/shengli.png -------------------------------------------------------------------------------- /assets/emoji/shui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/shui.png -------------------------------------------------------------------------------- /assets/emoji/sui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/sui.png -------------------------------------------------------------------------------- /assets/emoji/taiyang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/taiyang.png -------------------------------------------------------------------------------- /assets/emoji/tiana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/tiana.png -------------------------------------------------------------------------------- /assets/emoji/tiaopi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/tiaopi.png -------------------------------------------------------------------------------- /assets/emoji/tiaotiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/tiaotiao.png -------------------------------------------------------------------------------- /assets/emoji/touxiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/touxiao.png -------------------------------------------------------------------------------- /assets/emoji/tu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/tu.png -------------------------------------------------------------------------------- /assets/emoji/wa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/wa.png -------------------------------------------------------------------------------- /assets/emoji/wangchai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/wangchai.png -------------------------------------------------------------------------------- /assets/emoji/weiqu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/weiqu.png -------------------------------------------------------------------------------- /assets/emoji/woshou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/woshou.png -------------------------------------------------------------------------------- /assets/emoji/wulian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/wulian.png -------------------------------------------------------------------------------- /assets/emoji/xigua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/xigua.png -------------------------------------------------------------------------------- /assets/emoji/xinsui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/xinsui.png -------------------------------------------------------------------------------- /assets/emoji/xu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/xu.png -------------------------------------------------------------------------------- /assets/emoji/ye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/ye.png -------------------------------------------------------------------------------- /assets/emoji/yinxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/yinxian.png -------------------------------------------------------------------------------- /assets/emoji/yiwen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/yiwen.png -------------------------------------------------------------------------------- /assets/emoji/yongbao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/yongbao.png -------------------------------------------------------------------------------- /assets/emoji/youhengheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/youhengheng.png -------------------------------------------------------------------------------- /assets/emoji/youxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/youxian.png -------------------------------------------------------------------------------- /assets/emoji/yueliang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/yueliang.png -------------------------------------------------------------------------------- /assets/emoji/yukuai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/yukuai.png -------------------------------------------------------------------------------- /assets/emoji/yun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/yun.png -------------------------------------------------------------------------------- /assets/emoji/zaininmadejian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zaininmadejian.png -------------------------------------------------------------------------------- /assets/emoji/zhadan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zhadan.png -------------------------------------------------------------------------------- /assets/emoji/zhouma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zhouma.png -------------------------------------------------------------------------------- /assets/emoji/zhoumei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zhoumei.png -------------------------------------------------------------------------------- /assets/emoji/zhuakuang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zhuakuang.png -------------------------------------------------------------------------------- /assets/emoji/zhuanquan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zhuanquan.png -------------------------------------------------------------------------------- /assets/emoji/zhutou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zhutou.png -------------------------------------------------------------------------------- /assets/emoji/zuichun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zuichun.png -------------------------------------------------------------------------------- /assets/emoji/zuohengheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/emoji/zuohengheng.png -------------------------------------------------------------------------------- /assets/font/PinkApp.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/font/PinkApp.ttf -------------------------------------------------------------------------------- /assets/icon/active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/active.png -------------------------------------------------------------------------------- /assets/icon/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/add.png -------------------------------------------------------------------------------- /assets/icon/aite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/aite.png -------------------------------------------------------------------------------- /assets/icon/avatar_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/avatar_default.png -------------------------------------------------------------------------------- /assets/icon/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/back.png -------------------------------------------------------------------------------- /assets/icon/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/comment.png -------------------------------------------------------------------------------- /assets/icon/comment_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/comment_icon.png -------------------------------------------------------------------------------- /assets/icon/comment_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/comment_like.png -------------------------------------------------------------------------------- /assets/icon/comment_unlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/comment_unlike.png -------------------------------------------------------------------------------- /assets/icon/dark_mode_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/dark_mode_1.png -------------------------------------------------------------------------------- /assets/icon/dark_mode_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/dark_mode_2.png -------------------------------------------------------------------------------- /assets/icon/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/default.png -------------------------------------------------------------------------------- /assets/icon/del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/del.png -------------------------------------------------------------------------------- /assets/icon/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/download.png -------------------------------------------------------------------------------- /assets/icon/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/edit.png -------------------------------------------------------------------------------- /assets/icon/emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/emoji.png -------------------------------------------------------------------------------- /assets/icon/friends.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/friends.png -------------------------------------------------------------------------------- /assets/icon/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/image.png -------------------------------------------------------------------------------- /assets/icon/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/message.png -------------------------------------------------------------------------------- /assets/icon/msg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/msg.png -------------------------------------------------------------------------------- /assets/icon/noti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/noti.png -------------------------------------------------------------------------------- /assets/icon/pic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/pic.png -------------------------------------------------------------------------------- /assets/icon/play_await.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/play_await.png -------------------------------------------------------------------------------- /assets/icon/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/qq.png -------------------------------------------------------------------------------- /assets/icon/qzone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/qzone.png -------------------------------------------------------------------------------- /assets/icon/re_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/re_star.png -------------------------------------------------------------------------------- /assets/icon/scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/scan.png -------------------------------------------------------------------------------- /assets/icon/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/share.png -------------------------------------------------------------------------------- /assets/icon/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/star.png -------------------------------------------------------------------------------- /assets/icon/theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/theme.png -------------------------------------------------------------------------------- /assets/icon/up_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/up_icon.png -------------------------------------------------------------------------------- /assets/icon/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/user.png -------------------------------------------------------------------------------- /assets/icon/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/video.png -------------------------------------------------------------------------------- /assets/icon/video_card_comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/video_card_comment.png -------------------------------------------------------------------------------- /assets/icon/video_card_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/video_card_play.png -------------------------------------------------------------------------------- /assets/icon/video_card_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/video_card_star.png -------------------------------------------------------------------------------- /assets/icon/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/icon/wechat.png -------------------------------------------------------------------------------- /assets/images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/images/404.png -------------------------------------------------------------------------------- /assets/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/images/avatar.png -------------------------------------------------------------------------------- /assets/images/head_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/images/head_left.png -------------------------------------------------------------------------------- /assets/images/head_left_protect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/images/head_left_protect.png -------------------------------------------------------------------------------- /assets/images/head_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/images/head_right.png -------------------------------------------------------------------------------- /assets/images/head_right_protect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/images/head_right_protect.png -------------------------------------------------------------------------------- /assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/assets/images/logo.png -------------------------------------------------------------------------------- /component/pink_net/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 18116933e77adc82f80866c928266a5b4f1ed645 8 | channel: stable 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /component/pink_net/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /component/pink_net/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /component/pink_net/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | # Additional information about this file can be found at 4 | # https://dart.dev/guides/language/analysis-options 5 | -------------------------------------------------------------------------------- /component/pink_net/lib/core/pink_error.dart: -------------------------------------------------------------------------------- 1 | ///需要登录异常 2 | class NeedLogin extends PinkNetError { 3 | NeedLogin({int code: 401, String message: '需要登录'}) : super(code, message); 4 | } 5 | 6 | ///需要授权异常 7 | class NeedAuth extends PinkNetError { 8 | NeedAuth(String message, {int code: 403, dynamic data}) 9 | : super(code, message, data: data); 10 | } 11 | 12 | ///网络异常统一格式类 13 | class PinkNetError implements Exception { 14 | final int code; 15 | final String message; 16 | final dynamic data; 17 | 18 | PinkNetError(this.code, this.message, {this.data}); 19 | } 20 | -------------------------------------------------------------------------------- /component/pink_net/lib/core/pink_net_adapter.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | import 'package:dio/dio.dart'; 4 | import 'package:pink_net/request/pink_base_request.dart'; 5 | 6 | ///网络请求抽象类 7 | abstract class PinkNetAdapter { 8 | ProgressCallback? sendProgress; 9 | Future> send(PinkBaseRequest request); 10 | } 11 | 12 | ///统一网络层返回格式 13 | class PinkNetResponse { 14 | T? data; 15 | PinkBaseRequest request; 16 | int? statusCode; 17 | String? statusMessage; 18 | late dynamic extra; 19 | 20 | PinkNetResponse( 21 | {this.data, 22 | required this.request, 23 | this.statusCode, 24 | this.statusMessage, 25 | this.extra}); 26 | 27 | @override 28 | String toString() { 29 | if (data is Map) { 30 | return jsonEncode(data); 31 | } 32 | return data.toString(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /component/pink_net/lib/request/pink_base_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:dio/dio.dart'; 2 | 3 | enum HttpMethod { GET, POST, DELETE } 4 | 5 | /// 基础请求 6 | 7 | abstract class PinkBaseRequest { 8 | var pathParams; 9 | var useHttps = false; 10 | String authority() { 11 | return "localhost"; 12 | } 13 | 14 | HttpMethod httpMethod(); 15 | String path(); 16 | String url() { 17 | Uri uri; 18 | var pathStr = path(); 19 | // 拼接path参数 20 | if (pathParams != null) { 21 | if (path().endsWith("/")) { 22 | pathStr = "${path()}$pathParams"; 23 | } else { 24 | pathStr = "${path()}/$pathParams"; 25 | } 26 | } 27 | // http和https切换 28 | if (useHttps) { 29 | uri = Uri.https(authority(), pathStr, params); 30 | } else { 31 | uri = Uri.http(authority(), pathStr, params); 32 | } 33 | return uri.toString(); 34 | } 35 | 36 | bool needLogin(); 37 | Map params = Map(); 38 | FormData? file; 39 | 40 | ///添加参数 41 | PinkBaseRequest add(String k, Object v) { 42 | params[k] = v.toString(); 43 | return this; 44 | } 45 | 46 | Map header = {}; 47 | 48 | ///添加header 49 | PinkBaseRequest addHeader(String k, Object v) { 50 | header[k] = v.toString(); 51 | return this; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /component/pink_net/test/pink_net_test.dart: -------------------------------------------------------------------------------- 1 | void main() {} 2 | -------------------------------------------------------------------------------- /component/rich_editor/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: b22742018b3edf16c6cadd7b76d9db5e7f9064b5 8 | channel: stable 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /component/rich_editor/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * Initial release with basic features 4 | 5 | # 0.0.3 6 | 7 | * Editor specific settings 8 | * Video addition feature -------------------------------------------------------------------------------- /component/rich_editor/assets/editor/editor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /component/rich_editor/assets/editor/platform_style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: serif; 3 | font-size: 18px; 4 | } 5 | 6 | h1, h2, h3, h4, h5, h6 { 7 | font-family: sans-serif; 8 | } -------------------------------------------------------------------------------- /component/rich_editor/example/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Android Studio will place build artifacts here 44 | /android/app/debug 45 | /android/app/profile 46 | /android/app/release 47 | -------------------------------------------------------------------------------- /component/rich_editor/example/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: b22742018b3edf16c6cadd7b76d9db5e7f9064b5 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /component/rich_editor/example/README.md: -------------------------------------------------------------------------------- 1 | # example 2 | 3 | A new Flutter application. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/kotlin/com/jideguru/example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.jideguru.example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:4.1.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip 7 | -------------------------------------------------------------------------------- /component/rich_editor/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/ephemeral/ 22 | Flutter/app.flx 23 | Flutter/app.zip 24 | Flutter/flutter_assets/ 25 | Flutter/flutter_export_environment.sh 26 | ServiceDefinitions.json 27 | Runner/GeneratedPluginRegistrant.* 28 | 29 | # Exceptions to above rules. 30 | !default.mode1v3 31 | !default.mode2v3 32 | !default.pbxuser 33 | !default.perspectivev3 34 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - flutter_inappwebview (0.0.1): 4 | - Flutter 5 | - flutter_inappwebview/Core (= 0.0.1) 6 | - OrderedSet (~> 5.0) 7 | - flutter_inappwebview/Core (0.0.1): 8 | - Flutter 9 | - OrderedSet (~> 5.0) 10 | - image_picker (0.0.1): 11 | - Flutter 12 | - OrderedSet (5.0.0) 13 | 14 | DEPENDENCIES: 15 | - Flutter (from `Flutter`) 16 | - flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`) 17 | - image_picker (from `.symlinks/plugins/image_picker/ios`) 18 | 19 | SPEC REPOS: 20 | trunk: 21 | - OrderedSet 22 | 23 | EXTERNAL SOURCES: 24 | Flutter: 25 | :path: Flutter 26 | flutter_inappwebview: 27 | :path: ".symlinks/plugins/flutter_inappwebview/ios" 28 | image_picker: 29 | :path: ".symlinks/plugins/image_picker/ios" 30 | 31 | SPEC CHECKSUMS: 32 | Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c 33 | flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721 34 | image_picker: 50e7c7ff960e5f58faa4d1f4af84a771c671bc4a 35 | OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c 36 | 37 | PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c 38 | 39 | COCOAPODS: 1.10.1 40 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /component/rich_editor/example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /component/rich_editor/example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | import 'package:example/basic.dart'; 4 | import 'package:example/custom_toolbar_demo.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:rich_editor/rich_editor.dart'; 7 | 8 | void main() { 9 | runApp(MyApp()); 10 | } 11 | 12 | class MyApp extends StatelessWidget { 13 | // This widget is the root of your application. 14 | @override 15 | Widget build(BuildContext context) { 16 | return MaterialApp( 17 | title: 'Flutter Demo', 18 | theme: ThemeData( 19 | primarySwatch: Colors.blue, 20 | ), 21 | home: BasicDemo(), 22 | // home: CustomToolbarDemo(), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/xcuserdata/ 7 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | 9 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 10 | } 11 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = example 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.jideguru.example 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2021 com.jideguru. All rights reserved. 15 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | $(PRODUCT_COPYRIGHT) 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /component/rich_editor/example/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /component/rich_editor/example/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:example/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /component/rich_editor/example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/web/favicon.png -------------------------------------------------------------------------------- /component/rich_editor/example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /component/rich_editor/example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /component/rich_editor/example/web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "short_name": "example", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /component/rich_editor/lib/rich_editor.dart: -------------------------------------------------------------------------------- 1 | library rich_editor; 2 | 3 | export 'src/models/enum/bar_position.dart'; 4 | export 'src/models/rich_editor_options.dart'; 5 | export 'src/rendering/rich_editor.dart'; 6 | export 'src/utils/javascript_executor_base.dart'; 7 | export 'src/widgets/editor_tool_bar.dart'; 8 | export 'src/widgets/tab_button.dart'; 9 | export 'src/widgets/tab_button.dart'; 10 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/extensions/extensions.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | /// An extension that makes it easy to get Hex code 4 | /// from [Color] and [MaterialColor] 5 | extension ColorX on Color { 6 | String toHexColorString() { 7 | String hex = value.toRadixString(16).replaceAll('ff', ''); 8 | if (hex.isEmpty) hex = '000000'; 9 | return '#$hex'; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/alias.dart: -------------------------------------------------------------------------------- 1 | class Alias { 2 | String? name; 3 | String? to; 4 | String? weight; 5 | 6 | Alias({this.name, this.to, this.weight}); 7 | 8 | Alias.fromJson(Map json) { 9 | name = json['name']; 10 | to = json['to']; 11 | weight = json['weight']; 12 | } 13 | 14 | Map toJson() { 15 | final Map data = new Map(); 16 | data['name'] = this.name; 17 | data['to'] = this.to; 18 | data['weight'] = this.weight; 19 | return data; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class Button { 5 | String? slug; 6 | IconData? icon; 7 | Function? onTap; 8 | 9 | Button({this.slug, this.icon, this.onTap}); 10 | } 11 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/callbacks/did_html_change_listener.dart: -------------------------------------------------------------------------------- 1 | class DidHtmlChangeListener { 2 | didHtmlChange(bool didHtmlChange) {} 3 | } 4 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/callbacks/get_current_html_callback.dart: -------------------------------------------------------------------------------- 1 | class GetCurrentHtmlCallback { 2 | htmlRetrieved(String html) {} 3 | } 4 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/callbacks/html_changed_listener.dart: -------------------------------------------------------------------------------- 1 | class HtmlChangedListener { 2 | htmlChangedAsync(String html) {} 3 | } 4 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/callbacks/loaded_listener.dart: -------------------------------------------------------------------------------- 1 | class LoadedListener { 2 | editorLoaded() {} 3 | } 4 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/command_state.dart: -------------------------------------------------------------------------------- 1 | class CommandState { 2 | bool executable = false; 3 | var value = ""; 4 | 5 | CommandState(this.executable, this.value); 6 | } 7 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/config.dart: -------------------------------------------------------------------------------- 1 | import 'package:rich_editor/src/models/alias.dart'; 2 | 3 | import 'family.dart'; 4 | 5 | class Config { 6 | String? version; 7 | List? families; 8 | List? aliases; 9 | 10 | Config({this.version, this.families, this.aliases}); 11 | 12 | Config.fromJson(Map json) { 13 | version = json['version']; 14 | if (json['family'] != null) { 15 | families = []; 16 | json['family'].forEach((v) { 17 | families!.add(new Family.fromJson(v)); 18 | }); 19 | } 20 | if (json['alias'] != null) { 21 | aliases = []; 22 | json['alias'].forEach((v) { 23 | aliases!.add(new Alias.fromJson(v)); 24 | }); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/editor_state.dart: -------------------------------------------------------------------------------- 1 | import 'command_state.dart'; 2 | import 'enum/command_name.dart'; 3 | 4 | class EditorState { 5 | bool? didHtmlChange; 6 | String? html; 7 | Map? commandStates; 8 | 9 | EditorState({ 10 | this.didHtmlChange = false, 11 | this.html = '', 12 | this.commandStates = const {}, 13 | }); 14 | 15 | EditorState.fromJson(Map json) { 16 | didHtmlChange = json['didHtmlChange']; 17 | html = json['html']; 18 | commandStates = json['commandStates']; 19 | } 20 | 21 | Map toJson() { 22 | final Map data = new Map(); 23 | data['didHtmlChange'] = this.didHtmlChange; 24 | data['html'] = this.html; 25 | data['commandStates'] = this.commandStates; 26 | return data; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/enum/bar_position.dart: -------------------------------------------------------------------------------- 1 | /// Position the inbuilt Toolbar or use your custom toolbar 2 | enum BarPosition { TOP, BOTTOM, CUSTOM } 3 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/enum/command_name.dart: -------------------------------------------------------------------------------- 1 | enum CommandName { 2 | UNDO, 3 | REDO, 4 | FORECOLOR, 5 | BACKCOLOR, 6 | FONTNAME, 7 | FONTSIZE, 8 | BOLD, 9 | ITALIC, 10 | UNDERLINE, 11 | SUBSCRIPT, 12 | SUPERSCRIPT, 13 | STRIKETHROUGH, 14 | FORMATBLOCK, // passes value for below format 15 | H1, 16 | H2, 17 | H3, 18 | H4, 19 | H5, 20 | H6, 21 | P, 22 | PRE, 23 | BR, // not settable (at least i don't know how) 24 | BLOCKQUOTE, 25 | REMOVEFORMAT, 26 | JUSTIFYCENTER, 27 | JUSTIFYFULL, 28 | JUSTIFYLEFT, 29 | JUSTIFYRIGHT, 30 | INDENT, 31 | OUTDENT, 32 | INSERTUNORDEREDLIST, 33 | INSERTORDEREDLIST, 34 | INSERTHORIZONTALRULE, 35 | INSERTHTML, // determines if the three command below are executable 36 | INSERTLINK, // pseudo commands, there are no corresponding values for execCommand() 37 | INSERTIMAGE, 38 | INSERTCHECKBOX, 39 | // pseudo commands for toggling grouped command views 40 | EXPANDING_SEARCH_VIEWING, 41 | } 42 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/family.dart: -------------------------------------------------------------------------------- 1 | import 'font.dart'; 2 | 3 | class Family { 4 | String? name; 5 | List? fonts; 6 | String? lang; 7 | String? variant; 8 | 9 | Family({this.name, this.fonts, this.lang, this.variant}); 10 | 11 | Family.fromJson(Map json) { 12 | name = json['name']; 13 | if (json['font'] != null) { 14 | fonts = []; 15 | if (json['font'] is List) { 16 | json['font'].forEach((v) { 17 | fonts!.add(new Font.fromJson(v)); 18 | }); 19 | } 20 | } 21 | lang = json['lang']; 22 | variant = json['variant']; 23 | } 24 | 25 | Map toJson() { 26 | final Map data = new Map(); 27 | data['name'] = this.name; 28 | if (this.fonts != null) { 29 | data['font'] = this.fonts!.map((v) => v.toJson()).toList(); 30 | } 31 | data['lang'] = this.lang; 32 | data['variant'] = this.variant; 33 | return data; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/rich_editor_options.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'enum/bar_position.dart'; 4 | 5 | class RichEditorOptions { 6 | Color? backgroundColor; 7 | Color? baseTextColor; 8 | EdgeInsets? padding; 9 | String? placeholder; 10 | String? baseFontFamily; 11 | BarPosition? barPosition; 12 | bool? enableVideo; 13 | 14 | RichEditorOptions({ 15 | Color? backgroundColor, 16 | Color? baseTextColor, 17 | EdgeInsets? padding, 18 | String? placeholder, 19 | String? baseFontFamily, 20 | BarPosition? barPosition, 21 | bool? enableVideo = true, 22 | }) { 23 | this.backgroundColor = backgroundColor; 24 | this.baseTextColor = baseTextColor; 25 | this.padding = padding; 26 | this.placeholder = placeholder; 27 | this.baseFontFamily = baseFontFamily; 28 | this.barPosition = barPosition; 29 | this.enableVideo = enableVideo; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/models/system_font.dart: -------------------------------------------------------------------------------- 1 | class SystemFont { 2 | String? name; 3 | String? path; 4 | 5 | SystemFont(String name, String path) { 6 | this.name = name; 7 | this.path = path; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/utils/constants.dart: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/widgets/check_dialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'custom_dialog_template.dart'; 4 | 5 | class CheckDialog extends StatelessWidget { 6 | TextEditingController text = TextEditingController(); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return CustomDialogTemplate( 11 | body: [ 12 | Text('Checkbox title'), 13 | TextField( 14 | controller: text, 15 | decoration: InputDecoration(hintText: ''), 16 | ), 17 | ], 18 | onDone: () => Navigator.pop(context, text.text), 19 | onCancel: () => Navigator.pop(context), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/widgets/custom_dialog_template.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomDialogTemplate extends StatelessWidget { 4 | final List? body; 5 | final Function? onDone; 6 | final Function? onCancel; 7 | 8 | CustomDialogTemplate({this.body, this.onDone, this.onCancel}); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return AlertDialog( 13 | content: Column( 14 | crossAxisAlignment: CrossAxisAlignment.start, 15 | mainAxisSize: MainAxisSize.min, 16 | children: body!, 17 | ), 18 | actions: [ 19 | TextButton( 20 | onPressed: () => onDone!(), 21 | child: Text('Done'), 22 | ), 23 | TextButton( 24 | onPressed: () => onCancel!(), 25 | child: Text('Cancel'), 26 | ), 27 | ], 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/widgets/font_size_dialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'html_text.dart'; 4 | 5 | class FontSizeDialog extends StatelessWidget { 6 | List formats = [ 7 | {'id': '1', 'title': 'Teeny'}, 8 | {'id': '2', 'title': 'Very small'}, 9 | {'id': '3', 'title': 'Small'}, 10 | {'id': '4', 'title': 'Medium'}, 11 | {'id': '5', 'title': 'Large'}, 12 | {'id': '6', 'title': 'Very large'}, 13 | {'id': '7', 'title': 'Huge'}, 14 | ]; 15 | 16 | @override 17 | Widget build(BuildContext context) { 18 | return AlertDialog( 19 | content: SingleChildScrollView( 20 | child: Column( 21 | crossAxisAlignment: CrossAxisAlignment.start, 22 | mainAxisSize: MainAxisSize.min, 23 | children: [ 24 | for (Map format in formats) 25 | InkWell( 26 | child: HtmlText(html: format['title']), 27 | onTap: () => Navigator.pop(context, format['id']), 28 | ) 29 | ], 30 | ), 31 | ), 32 | ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/widgets/fonts_dialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:path/path.dart'; 3 | import 'package:rich_editor/src/models/system_font.dart'; 4 | import 'package:rich_editor/src/utils/font_list_parser.dart'; 5 | 6 | import 'html_text.dart'; 7 | 8 | class FontsDialog extends StatelessWidget { 9 | List getSystemFonts() { 10 | return FontListParser().getSystemFonts(); 11 | } 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return AlertDialog( 16 | content: SingleChildScrollView( 17 | child: Column( 18 | crossAxisAlignment: CrossAxisAlignment.start, 19 | mainAxisSize: MainAxisSize.min, 20 | children: [ 21 | for (SystemFont font in getSystemFonts()) 22 | InkWell( 23 | child: HtmlText( 24 | html: '

' 25 | '${basename(font.path!)}

'), 26 | onTap: () { 27 | Navigator.pop(context, font.name); 28 | }, 29 | ) 30 | ], 31 | ), 32 | ), 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/widgets/html_text.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart'; 3 | 4 | class HtmlText extends StatelessWidget { 5 | final String html; 6 | 7 | HtmlText({required this.html}); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return Container( 12 | child: HtmlWidget(html), 13 | height: 40.0, 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /component/rich_editor/lib/src/widgets/insert_link_dialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'custom_dialog_template.dart'; 4 | 5 | class InsertLinkDialog extends StatelessWidget { 6 | TextEditingController link = TextEditingController(); 7 | TextEditingController label = TextEditingController(); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return CustomDialogTemplate( 12 | body: [ 13 | Text('Link'), 14 | TextField( 15 | controller: link, 16 | decoration: InputDecoration( 17 | hintText: 'type link here', 18 | ), 19 | ), 20 | SizedBox(height: 20.0), 21 | Text('Label'), 22 | TextField( 23 | controller: label, 24 | decoration: InputDecoration( 25 | hintText: 'type label text here', 26 | ), 27 | ), 28 | ], 29 | onDone: () => Navigator.pop(context, [link.text, label.text]), 30 | onCancel: () => Navigator.pop(context), 31 | ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /component/rich_editor/res/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/component/rich_editor/res/1.png -------------------------------------------------------------------------------- /component/rich_editor/test/rich_editor_test.dart: -------------------------------------------------------------------------------- 1 | void main() {} 2 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/ephemeral/ 22 | Flutter/app.flx 23 | Flutter/app.zip 24 | Flutter/flutter_assets/ 25 | Flutter/flutter_export_environment.sh 26 | ServiceDefinitions.json 27 | Runner/GeneratedPluginRegistrant.* 28 | 29 | # Exceptions to above rules. 30 | !default.mode1v3 31 | !default.mode2v3 32 | !default.pbxuser 33 | !default.perspectivev3 34 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /lib/app/core/pink_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | 3 | ///页面状态异常管理 4 | abstract class PinkState extends State { 5 | @override 6 | void setState(VoidCallback fn) { 7 | // TODO: implement setState 8 | if (mounted) { 9 | super.setState(fn); 10 | } else {} 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/data/category_mo.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/home_mo.dart'; 2 | 3 | class CategoryModel { 4 | late int code; 5 | late String msg; 6 | late List data; 7 | 8 | CategoryModel({required this.code, required this.msg, required this.data}); 9 | 10 | CategoryModel.fromJson(Map json) { 11 | code = json['code']; 12 | msg = json['msg']; 13 | if (json['data'] != null) { 14 | data = []; 15 | json['data'].forEach((v) { 16 | data.add(new CategoryMo.fromJson(v)); 17 | }); 18 | } else { 19 | data = []; 20 | } 21 | } 22 | 23 | Map toJson() { 24 | final Map data = new Map(); 25 | data['code'] = this.code; 26 | data['msg'] = this.msg; 27 | if (this.data != null) { 28 | data['data'] = this.data.map((v) => v.toJson()).toList(); 29 | } 30 | return data; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /lib/app/data/dynamic_mo.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/post_mo.dart'; 2 | 3 | class DynamicMo { 4 | late List list; 5 | late int total; 6 | 7 | DynamicMo({required this.list, required this.total}); 8 | 9 | DynamicMo.fromJson(Map json) { 10 | if (json['list'] != null) { 11 | list = []; 12 | json['list'].forEach((v) { 13 | list.add(new PostMo.fromJson(v)); 14 | }); 15 | } else { 16 | list = []; 17 | } 18 | total = json['total']; 19 | } 20 | 21 | Map toJson() { 22 | final Map data = new Map(); 23 | if (this.list != null) { 24 | data['list'] = this.list.map((v) => v.toJson()).toList(); 25 | } 26 | data['total'] = this.total; 27 | return data; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /lib/app/data/profile_mo.dart: -------------------------------------------------------------------------------- 1 | class ProfileMo { 2 | late int userId; 3 | late String avatar; 4 | late String background; 5 | late String username; 6 | late int fans; 7 | late int follows; 8 | late int coin; 9 | late int active; 10 | 11 | ProfileMo( 12 | {required this.userId, 13 | required this.avatar, 14 | required this.background, 15 | required this.username, 16 | required this.fans, 17 | required this.follows, 18 | required this.coin, 19 | required this.active}); 20 | 21 | ProfileMo.fromJson(Map json) { 22 | userId = json['user_id']; 23 | avatar = json['avatar']; 24 | background = json['background']; 25 | username = json['username']; 26 | fans = json['fans']; 27 | follows = json['follows']; 28 | coin = json['coin']; 29 | active = json['active']; 30 | } 31 | 32 | Map toJson() { 33 | final Map data = {}; 34 | data['user_id'] = userId; 35 | data['avatar'] = avatar; 36 | data['background'] = background; 37 | data['username'] = username; 38 | data['fans'] = fans; 39 | data['follows'] = follows; 40 | data['coin'] = coin; 41 | data['active'] = active; 42 | return data; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /lib/app/data/ranking_mo.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/post_mo.dart'; 2 | 3 | class RankingMo { 4 | late List list; 5 | late int total; 6 | 7 | RankingMo({required this.list, required this.total}); 8 | 9 | RankingMo.fromJson(Map json) { 10 | if (json['list'] != null) { 11 | list = []; 12 | json['list'].forEach((v) { 13 | list.add(new PostMo.fromJson(v)); 14 | }); 15 | } else { 16 | list = []; 17 | } 18 | total = json['total']; 19 | } 20 | 21 | Map toJson() { 22 | final Map data = new Map(); 23 | if (this.list != null) { 24 | data['list'] = this.list.map((v) => v.toJson()).toList(); 25 | } 26 | data['total'] = this.total; 27 | return data; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /lib/app/data/upload_mo.dart: -------------------------------------------------------------------------------- 1 | class UplaodMo { 2 | late int code; 3 | late String msg; 4 | late String data; 5 | 6 | UplaodMo({required this.code, required this.msg, required this.data}); 7 | 8 | UplaodMo.fromJson(Map json) { 9 | code = json['code']; 10 | msg = json['msg']; 11 | data = json['data']; 12 | } 13 | 14 | Map toJson() { 15 | final Map data = new Map(); 16 | data['code'] = this.code; 17 | data['msg'] = this.msg; 18 | data['data'] = this.data; 19 | return data; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/dao/await_watch_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/dynamic_mo.dart'; 2 | import 'package:pink_acg/app/http/request/await_watch_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class AwaitWatchDao { 6 | static get(String awaitWatchIds, {int page = 1, int size = 10}) async { 7 | AwaitWatchRequest request = AwaitWatchRequest(); 8 | request.add("postIds", awaitWatchIds).add("page", page).add("size", size); 9 | var result = await PinkNet.getInstance().fire(request); 10 | return DynamicMo.fromJson(result["data"]); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/http/dao/category_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/category_mo.dart'; 2 | import 'package:pink_acg/app/http/request/category_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class CategoryDao { 6 | static get(int size) async { 7 | CategoryRequest request = CategoryRequest(); 8 | request.add("size", size); 9 | var result = await PinkNet.getInstance().fire(request); 10 | return CategoryModel.fromJson(result); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/http/dao/chat_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/chat_mo.dart'; 2 | import 'package:pink_acg/app/http/request/chat_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class ChatDao { 6 | static get(int sid, {int page = 1, int size = 10}) async { 7 | ChatRequest request = ChatRequest(); 8 | request.add("sid", sid).add("page", page).add("size", size); 9 | var result = await PinkNet.getInstance().fire(request); 10 | return ChatList.fromJson(result["data"]); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/http/dao/coin_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/http/request/coin_request.dart'; 2 | import 'package:pink_net/pink_net.dart'; 3 | 4 | class CoinDao { 5 | static get(int postId) async { 6 | CoinRequest request = CoinRequest(); 7 | request.add("coin", "1").add("post_id", postId); 8 | var result = await PinkNet.getInstance().fire(request); 9 | return result; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/app/http/dao/comment_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/comment_mo.dart'; 2 | import 'package:pink_acg/app/http/request/comment_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class CommentDao { 6 | static get(int postId, int page, int size) async { 7 | CommentRequest request = CommentRequest(); 8 | request.add("page", page); 9 | request.add("size", size); 10 | request.add("post_id", postId); 11 | var result = await PinkNet.getInstance().fire(request); 12 | print(result); 13 | return CommentMo.fromJson(result["data"]); 14 | } 15 | 16 | static post(int postId, String content, String type, 17 | {String parent = "0"}) async { 18 | CommentCreateRequest request = CommentCreateRequest(); 19 | request.add("post_id", postId); 20 | request.add("content", content); 21 | request.add("type", type); 22 | request.add("parent", parent); 23 | var result = await PinkNet.getInstance().fire(request); 24 | return result; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/app/http/dao/contact_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/contact.dart'; 2 | import 'package:pink_acg/app/http/request/contact_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class ContactDao { 6 | static get() async { 7 | ContactRequest request = ContactRequest(); 8 | var result = await PinkNet.getInstance().fire(request); 9 | print(result); 10 | return ContactMo.fromJson(result["data"]); 11 | } 12 | 13 | static getItem(String sendId) async { 14 | ContactItemRequest request = ContactItemRequest(); 15 | request.pathParams = sendId; 16 | var result = await PinkNet.getInstance().fire(request); 17 | print(result); 18 | return ContactList.fromJson(result["data"]); 19 | } 20 | 21 | static post(String sid) async { 22 | ContactAddRequest request = ContactAddRequest(); 23 | request.add("send_id", sid); 24 | var result = await PinkNet.getInstance().fire(request); 25 | return result; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/app/http/dao/dynamic_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/dynamic_mo.dart'; 2 | import 'package:pink_acg/app/http/request/dynamic_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class DynamicDao { 6 | static get(String dynamic, {int page = 1, size = 10}) async { 7 | DynamicRequest request = DynamicRequest(); 8 | request.add("dynamic", dynamic).add("page", page).add("size", size); 9 | var result = await PinkNet.getInstance().fire(request); 10 | return DynamicMo.fromJson(result["data"]); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/http/dao/favorite_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/http/request/favorite_request.dart'; 2 | import 'package:pink_net/pink_net.dart'; 3 | 4 | class FavoriteDao { 5 | static get(int postId) async { 6 | FavoriteRequest request = FavoriteRequest(); 7 | request.add("post_id", postId); 8 | var result = await PinkNet.getInstance().fire(request); 9 | return result; 10 | } 11 | 12 | static remove(int postId) async { 13 | UnFavoriteRequest request = UnFavoriteRequest(); 14 | request.add("post_id", postId); 15 | var result = await PinkNet.getInstance().fire(request); 16 | return result; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/app/http/dao/follow_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/http/request/follow_request.dart'; 2 | import 'package:pink_net/pink_net.dart'; 3 | 4 | class FollowDao { 5 | static get(int followId) async { 6 | FollowRequest request = FollowRequest(); 7 | request.add("follow_id", followId); 8 | var result = await PinkNet.getInstance().fire(request); 9 | return result; 10 | } 11 | 12 | static remove(int followId) async { 13 | UnFollowRequest request = UnFollowRequest(); 14 | request.add("follow_id", followId); 15 | var result = await PinkNet.getInstance().fire(request); 16 | return result; 17 | } 18 | 19 | static status(int followId) async { 20 | FollowStatusRequest request = FollowStatusRequest(); 21 | request.pathParams = followId; 22 | var result = await PinkNet.getInstance().fire(request); 23 | return result; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/app/http/dao/follow_list_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/follow_list_mo.dart'; 2 | import 'package:pink_acg/app/http/request/follow_list_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class FollowListDao { 6 | static followList(int page) async { 7 | FollowListRequest request = FollowListRequest(); 8 | request.add("page", page); 9 | var result = await PinkNet.getInstance().fire(request); 10 | print(result); 11 | return FansListMo.fromJson(result['data']); 12 | } 13 | 14 | static fansList(int page) async { 15 | FansListRequest request = FansListRequest(); 16 | request.add("page", page); 17 | var result = await PinkNet.getInstance().fire(request); 18 | return FansListMo.fromJson(result['data']); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/app/http/dao/home_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/home_mo.dart'; 2 | import 'package:pink_acg/app/http/request/home_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | import '../../data/recommend_mo.dart'; 6 | import '../request/reco_posts_request.dart'; 7 | 8 | class HomeDao { 9 | static get(int categoryId, 10 | {int size = 10, int page = 1, String sort = "rand"}) async { 11 | HomeRequest request = HomeRequest(); 12 | request 13 | .add("category_id", categoryId) 14 | .add("page", page) 15 | .add("size", size) 16 | .add("sort", sort) 17 | .add("cSize", size); 18 | var result = await PinkNet.getInstance().fire(request); 19 | return HomeMo.fromJson(result['data']); 20 | } 21 | 22 | static getRecoPosts(int categoryId, 23 | {int size = 10, int time_stamp = 1649412155013}) async { 24 | RecoPostsRequest request = RecoPostsRequest(); 25 | request 26 | .add("category_id", categoryId) 27 | .add("time_stamp", time_stamp) 28 | .add("article_num", size); 29 | var result = await PinkNet.getInstance().fire(request); 30 | print("--------------------------------"); 31 | print(categoryId); 32 | print(time_stamp); 33 | print(result); 34 | return RecommendMo.fromJson(result['data']); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /lib/app/http/dao/like_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/http/request/like_request.dart'; 2 | import 'package:pink_net/pink_net.dart'; 3 | 4 | class LikeDao { 5 | static get(int postId) async { 6 | LikeRequest request = LikeRequest(); 7 | request.add("post_id", postId); 8 | var result = await PinkNet.getInstance().fire(request); 9 | return result; 10 | } 11 | 12 | static remove(int postId) async { 13 | UnLikeRequest request = UnLikeRequest(); 14 | request.add("post_id", postId); 15 | var result = await PinkNet.getInstance().fire(request); 16 | return result; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/app/http/dao/log_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | import 'package:pink_acg/app/http/request/log_request.dart'; 4 | import 'package:pink_net/pink_net.dart'; 5 | 6 | class LogDao { 7 | static post(dynamic param, 8 | {required String readTime, required int categoryId}) async { 9 | LogRequest request = LogRequest(); 10 | request 11 | .add("param", jsonEncode(param)) 12 | .add("readTime", readTime) 13 | .add("categoryId", categoryId); 14 | var result = await PinkNet.getInstance().fire(request); 15 | print(result); 16 | return result; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/app/http/dao/post_view_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/http/request/post_view_request.dart'; 2 | import 'package:pink_net/pink_net.dart'; 3 | 4 | class PostViewDao { 5 | static get(int postId) async { 6 | PostViewRequest request = PostViewRequest(); 7 | request.pathParams = postId; 8 | var result = await PinkNet.getInstance().fire(request); 9 | return result; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/app/http/dao/profile_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/user_center_mo.dart'; 2 | import 'package:pink_acg/app/http/request/profile_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class ProfileDao { 6 | static get() async { 7 | ProfileRequest request = ProfileRequest(); 8 | var result = await PinkNet.getInstance().fire(request); 9 | return UserMeta.fromJson(result["data"]); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/app/http/dao/publish_post_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/http/request/publish_post_request.dart'; 2 | import 'package:pink_net/pink_net.dart'; 3 | 4 | class PublishPostDao { 5 | static get(String title, String content, String cover, int categoryId, 6 | String type, String video) async { 7 | PublishPostRequest request = PublishPostRequest(); 8 | request 9 | .add("title", title) 10 | .add("content", content) 11 | .add("cover", cover) 12 | .add("post_type", type) 13 | .add("video", video) 14 | .add("category_id", categoryId); 15 | var result = await PinkNet.getInstance().fire(request); 16 | return result; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/app/http/dao/ranking_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/ranking_mo.dart'; 2 | import 'package:pink_acg/app/http/request/ranking_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class RankingDao { 6 | static get(String ranking, {int page = 1, size = 10}) async { 7 | RankingRequest request = RankingRequest(); 8 | request.add("ranking", ranking).add("page", page).add("size", size); 9 | var result = await PinkNet.getInstance().fire(request); 10 | return RankingMo.fromJson(result["data"]); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/http/dao/search_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/search.dart'; 2 | import 'package:pink_acg/app/http/request/search_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class SearchDao { 6 | static get(String type, String word, 7 | {String postType = "post", int page = 1, int size = 10}) async { 8 | SearchRequest request = SearchRequest(); 9 | if (type == "all") { 10 | request 11 | .add("type", "all") 12 | .add("word", word) 13 | .add("page", page) 14 | .add("size", size); 15 | } else if (type == "post" || type == "video") { 16 | request 17 | .add("type", type) 18 | .add("word", word) 19 | .add("page", page) 20 | .add("size", size); 21 | } else if (type == "user") { 22 | request 23 | .add("type", type) 24 | .add("word", word) 25 | .add("page", page) 26 | .add("size", size); 27 | } 28 | var result = await PinkNet.getInstance().fire(request); 29 | return SearchPostMo.fromJson(result["data"]); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /lib/app/http/dao/user_center_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/user_center_mo.dart'; 2 | import 'package:pink_acg/app/http/request/user_center_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class UserCenterDao { 6 | static get(String userId) async { 7 | UserCenterRequest request = UserCenterRequest(); 8 | request.pathParams = userId; 9 | var result = await PinkNet.getInstance().fire(request); 10 | return UserCenterMo.fromJson(result["data"]); 11 | } 12 | 13 | static getUserMeta(String userId) async { 14 | UserMetaRequest request = UserMetaRequest(); 15 | request.pathParams = userId; 16 | var result = await PinkNet.getInstance().fire(request); 17 | return UserMeta.fromJson(result["data"]); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/app/http/dao/user_post_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/dynamic_mo.dart'; 2 | import 'package:pink_acg/app/http/request/user_post_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class UserPostDao { 6 | static get(int userId, String type, int page, int size) async { 7 | UserPostRequest request = UserPostRequest(); 8 | request.add("user_id", userId); 9 | request.add("post_type", type); 10 | request.add("page", page); 11 | request.add("size", size); 12 | var result = await PinkNet.getInstance().fire(request); 13 | return DynamicMo.fromJson(result["data"]); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/app/http/dao/video_detail_dao.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/data/video_detail_mo.dart'; 2 | import 'package:pink_acg/app/http/request/video_detail_request.dart'; 3 | import 'package:pink_net/pink_net.dart'; 4 | 5 | class VideoDetailDao { 6 | static get(String vid) async { 7 | VideoDetailRequest request = VideoDetailRequest(); 8 | request.pathParams = vid; 9 | var result = await PinkNet.getInstance().fire(request); 10 | print(result); 11 | return VideoDetailMo.fromJson(result["data"]); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/app/http/request/await_watch_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class AwaitWatchRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/postListByIds"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/base_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/http/dao/login_dao.dart'; 2 | import 'package:pink_acg/pink_constants.dart'; 3 | import 'package:pink_net/request/pink_base_request.dart'; 4 | 5 | abstract class BaseRequest extends PinkBaseRequest { 6 | @override 7 | String authority() { 8 | return "${PinkConstants.domain}:${PinkConstants.port}"; 9 | } 10 | 11 | @override 12 | String url() { 13 | //是否需要登录 14 | if (needLogin()) { 15 | addHeader( 16 | PinkConstants.authorization, "Bearer " + LoginDao.getBoardingPass()); 17 | } 18 | return super.url(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/app/http/request/cancel_favorite_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_net/request/pink_base_request.dart'; 2 | 3 | import 'favorite_request.dart'; 4 | 5 | class CancelFavoriteRequest extends FavoriteRequest { 6 | @override 7 | HttpMethod httpMethod() { 8 | // TODO: implement httpMethod 9 | return HttpMethod.DELETE; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/app/http/request/category_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class CategoryRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/categoryList"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/chat_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class ChatRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/chatList"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/coin_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class CoinRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/coin"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/comment_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class CommentRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/commentList"; 20 | } 21 | } 22 | 23 | class CommentCreateRequest extends BaseRequest { 24 | @override 25 | HttpMethod httpMethod() { 26 | return HttpMethod.POST; 27 | } 28 | 29 | @override 30 | bool needLogin() { 31 | return true; 32 | } 33 | 34 | @override 35 | String path() { 36 | return "${PinkConstants.versionPath}/comment"; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /lib/app/http/request/contact_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class ContactRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/contactList"; 20 | } 21 | } 22 | 23 | class ContactItemRequest extends BaseRequest { 24 | @override 25 | HttpMethod httpMethod() { 26 | return HttpMethod.GET; 27 | } 28 | 29 | @override 30 | bool needLogin() { 31 | return true; 32 | } 33 | 34 | @override 35 | String path() { 36 | return "${PinkConstants.versionPath}/contact"; 37 | } 38 | } 39 | 40 | class ContactAddRequest extends BaseRequest { 41 | @override 42 | HttpMethod httpMethod() { 43 | return HttpMethod.POST; 44 | } 45 | 46 | @override 47 | bool needLogin() { 48 | return true; 49 | } 50 | 51 | @override 52 | String path() { 53 | return "${PinkConstants.versionPath}/contact"; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /lib/app/http/request/dynamic_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class DynamicRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/dynamic"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/favorite_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class FavoriteRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/star"; 20 | } 21 | } 22 | 23 | class UnFavoriteRequest extends BaseRequest { 24 | @override 25 | HttpMethod httpMethod() { 26 | return HttpMethod.POST; 27 | } 28 | 29 | @override 30 | bool needLogin() { 31 | return true; 32 | } 33 | 34 | @override 35 | String path() { 36 | return "${PinkConstants.versionPath}/unStar"; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /lib/app/http/request/follow_list_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class FollowListRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/followList"; 20 | } 21 | } 22 | 23 | class FansListRequest extends BaseRequest { 24 | @override 25 | HttpMethod httpMethod() { 26 | return HttpMethod.GET; 27 | } 28 | 29 | @override 30 | bool needLogin() { 31 | return true; 32 | } 33 | 34 | @override 35 | String path() { 36 | return "${PinkConstants.versionPath}/fansList"; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /lib/app/http/request/follow_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class FollowRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/follow"; 20 | } 21 | } 22 | 23 | class UnFollowRequest extends BaseRequest { 24 | @override 25 | HttpMethod httpMethod() { 26 | return HttpMethod.POST; 27 | } 28 | 29 | @override 30 | bool needLogin() { 31 | return true; 32 | } 33 | 34 | @override 35 | String path() { 36 | return "${PinkConstants.versionPath}/unFollow"; 37 | } 38 | } 39 | 40 | class FollowStatusRequest extends BaseRequest { 41 | @override 42 | HttpMethod httpMethod() { 43 | return HttpMethod.GET; 44 | } 45 | 46 | @override 47 | bool needLogin() { 48 | return true; 49 | } 50 | 51 | @override 52 | String path() { 53 | return "${PinkConstants.versionPath}/followStatus"; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /lib/app/http/request/forget_pwd_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class ForgetPwdRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return false; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/forgetPwd"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/home_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class HomeRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/home"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/like_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class LikeRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/like"; 20 | } 21 | } 22 | 23 | class UnLikeRequest extends BaseRequest { 24 | @override 25 | HttpMethod httpMethod() { 26 | return HttpMethod.POST; 27 | } 28 | 29 | @override 30 | bool needLogin() { 31 | return true; 32 | } 33 | 34 | @override 35 | String path() { 36 | return "${PinkConstants.versionPath}/unLike"; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /lib/app/http/request/log_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class LogRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/log"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/login_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class LoginRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return false; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/login"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/post_view_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class PostViewRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/postView"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/profile_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class ProfileRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/profile"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/publish_post_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class PublishPostRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/post"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/ranking_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class RankingRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/ranking"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/reco_posts_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class RecoPostsRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/recommend"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/registration_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class RegistrationRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | // TODO: implement httpMethod 10 | return HttpMethod.POST; 11 | } 12 | 13 | @override 14 | bool needLogin() { 15 | // TODO: implement needLogin 16 | return false; 17 | } 18 | 19 | @override 20 | String path() { 21 | // TODO: implement path 22 | return '${PinkConstants.versionPath}/signup'; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/app/http/request/search_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class SearchRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/search"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/upload_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class UploadRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/upload"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/user_center_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class UserCenterRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/userCenter"; 20 | } 21 | } 22 | 23 | class UserMetaRequest extends BaseRequest { 24 | @override 25 | HttpMethod httpMethod() { 26 | return HttpMethod.GET; 27 | } 28 | 29 | @override 30 | bool needLogin() { 31 | return true; 32 | } 33 | 34 | @override 35 | String path() { 36 | return "${PinkConstants.versionPath}/user"; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /lib/app/http/request/user_post_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class UserPostRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/userPost"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/http/request/user_update_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class UserInfoUpdateRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.POST; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/userInfoUpdate"; 20 | } 21 | } 22 | 23 | class UserPasswordUpdateRequest extends BaseRequest { 24 | @override 25 | HttpMethod httpMethod() { 26 | return HttpMethod.POST; 27 | } 28 | 29 | @override 30 | bool needLogin() { 31 | return true; 32 | } 33 | 34 | @override 35 | String path() { 36 | return "${PinkConstants.versionPath}/userPasswordUpdate"; 37 | } 38 | } 39 | 40 | class UserEmailUpdateRequest extends BaseRequest { 41 | @override 42 | HttpMethod httpMethod() { 43 | return HttpMethod.POST; 44 | } 45 | 46 | @override 47 | bool needLogin() { 48 | return true; 49 | } 50 | 51 | @override 52 | String path() { 53 | return "${PinkConstants.versionPath}/userEmailUpdate"; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /lib/app/http/request/video_detail_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/pink_constants.dart'; 2 | import 'package:pink_net/request/pink_base_request.dart'; 3 | 4 | import 'base_request.dart'; 5 | 6 | class VideoDetailRequest extends BaseRequest { 7 | @override 8 | HttpMethod httpMethod() { 9 | return HttpMethod.GET; 10 | } 11 | 12 | @override 13 | bool needLogin() { 14 | return true; 15 | } 16 | 17 | @override 18 | String path() { 19 | return "${PinkConstants.versionPath}/post/"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/middlewares/auth_middleware.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:get/get.dart'; 4 | import 'package:get/get_navigation/src/routes/get_route.dart'; 5 | import 'package:get/get_navigation/src/routes/route_middleware.dart'; 6 | import 'package:pink_acg/app/http/dao/login_dao.dart'; 7 | import 'package:pink_acg/app/routes/app_pages.dart'; 8 | 9 | class AuthMiddleware extends GetMiddleware { 10 | @override 11 | int? priority = 2; 12 | 13 | bool get isAuthenticated => 14 | LoginDao.getBoardingPass() != null && LoginDao.getBoardingPass() != ""; 15 | 16 | @override 17 | RouteSettings? redirect(String? route) { 18 | if (!isAuthenticated) { 19 | return RouteSettings(name: Routes.LOGIN); 20 | } 21 | return super.redirect(route); 22 | } 23 | 24 | @override 25 | GetPage? onPageCalled(GetPage? page) { 26 | return super.onPageCalled(page); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/app/modules/aboutApp/bindings/about_app_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/about_app_controller.dart'; 4 | 5 | class AboutAppBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => AboutAppController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/aboutApp/controllers/about_app_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | import 'package:package_info/package_info.dart'; 3 | 4 | class AboutAppController extends GetxController { 5 | //TODO: Implement AboutAppController 6 | var version = "".obs; 7 | var appName = "".obs; 8 | var buildNumber = "".obs; 9 | var packageName = "".obs; 10 | 11 | @override 12 | Future onInit() async { 13 | PackageInfo packageInfo = await PackageInfo.fromPlatform(); 14 | version.value = packageInfo.version; 15 | appName.value = packageInfo.appName; 16 | buildNumber.value = packageInfo.buildNumber; 17 | packageName.value = packageInfo.packageName; 18 | super.onInit(); 19 | } 20 | 21 | @override 22 | void onReady() { 23 | super.onReady(); 24 | } 25 | 26 | @override 27 | void onClose() {} 28 | } 29 | -------------------------------------------------------------------------------- /lib/app/modules/aboutUs/bindings/about_us_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/about_us_controller.dart'; 4 | 5 | class AboutUsBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => AboutUsController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/aboutUs/controllers/about_us_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | class AboutUsController extends GetxController { 4 | //TODO: Implement AboutUsController 5 | 6 | @override 7 | void onInit() { 8 | super.onInit(); 9 | } 10 | 11 | @override 12 | void onReady() { 13 | super.onReady(); 14 | } 15 | 16 | @override 17 | void onClose() {} 18 | } 19 | -------------------------------------------------------------------------------- /lib/app/modules/chat/bindings/chat_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/chat_controller.dart'; 4 | 5 | class ChatBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => ChatController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/contact/bindings/contact_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/contact_controller.dart'; 4 | 5 | class ContactBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => ContactController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/darkMode/bindings/dark_mode_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/dark_mode_controller.dart'; 4 | 5 | class DarkModeBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => DarkModeController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/darkMode/controllers/dark_mode_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:get/get.dart'; 3 | import 'package:get_storage/get_storage.dart'; 4 | 5 | class DarkModeController extends GetxController { 6 | //TODO: Implement DarkModeController 7 | var items = [ 8 | {"name": "跟随系统", "mode": "system"}, 9 | {"name": "夜间模式", "mode": "dark"}, 10 | {"name": "白天模式", "mode": "light"}, 11 | ]; 12 | 13 | var currentTheme = "".obs; 14 | 15 | void switchTheme(int index) { 16 | currentTheme.value = items[index]["mode"] as String; 17 | GetStorage().write("dark_mode", currentTheme.value); 18 | Get.changeTheme( 19 | currentTheme.value == "dark" ? ThemeData.dark() : ThemeData.light()); 20 | } 21 | 22 | @override 23 | void onInit() { 24 | currentTheme.value = 25 | GetStorage().read("dark_mode") == "dark" ? "dark" : "light"; 26 | super.onInit(); 27 | } 28 | 29 | @override 30 | void onReady() { 31 | super.onReady(); 32 | } 33 | 34 | @override 35 | void onClose() {} 36 | } 37 | -------------------------------------------------------------------------------- /lib/app/modules/dynamic/bindings/dynamic_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/dynamic_controller.dart'; 4 | 5 | class DynamicBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => DynamicController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/dynamic/controllers/dynamic_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:get/get.dart'; 3 | import 'package:pink_acg/app/http/dao/ranking_dao.dart'; 4 | 5 | class DynamicController extends GetxController 6 | with SingleGetTickerProviderMixin { 7 | //TODO: Implement DynamicController 8 | var tabs = [ 9 | {"key": "video", "name": "视频"}, 10 | {"key": "all", "name": "综合"}, 11 | ]; 12 | late TabController controller; 13 | 14 | @override 15 | void onInit() { 16 | controller = TabController(length: tabs.length, vsync: this); 17 | RankingDao.get("likes"); 18 | super.onInit(); 19 | } 20 | 21 | @override 22 | void onReady() { 23 | super.onReady(); 24 | } 25 | 26 | @override 27 | void onClose() { 28 | controller.dispose(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/app/modules/forgetPwd/bindings/forget_pwd_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/forget_pwd_controller.dart'; 4 | 5 | class ForgetPwdBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => ForgetPwdController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/home/bindings/home_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/home_controller.dart'; 4 | 5 | class HomeBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => HomeController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/index/bindings/index_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/index_controller.dart'; 4 | 5 | class IndexBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => IndexController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/index/controllers/index_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:get/get.dart'; 3 | import 'package:pink_acg/app/util/color.dart'; 4 | 5 | class IndexController extends GetxController { 6 | //TODO: Implement IndexController 7 | final defaultColor = Color.fromRGBO(86, 91, 97, 1); 8 | final activeColor = primary; 9 | var currentIndex = 0.obs; 10 | static int initialPage = 0; 11 | final PageController controller = PageController(initialPage: initialPage); 12 | late List pages; 13 | bool hasBuild = false; 14 | 15 | @override 16 | void onInit() { 17 | super.onInit(); 18 | } 19 | 20 | @override 21 | void onReady() { 22 | super.onReady(); 23 | } 24 | 25 | @override 26 | void onClose() { 27 | controller.dispose(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /lib/app/modules/login/bindings/login_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/login_controller.dart'; 4 | 5 | class LoginBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => LoginController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/photoDia/bindings/photo_dia_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/photo_dia_controller.dart'; 4 | 5 | class PhotoDiaBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => PhotoDiaController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/photoDia/views/photo_dia_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:get/get.dart'; 3 | import 'package:photo_view/photo_view.dart'; 4 | 5 | import '../controllers/photo_dia_controller.dart'; 6 | 7 | class PhotoDiaView extends GetView { 8 | @override 9 | Widget build(BuildContext context) { 10 | return Scaffold( 11 | body: GestureDetector( 12 | child: Center( 13 | child: Obx(() => PhotoView( 14 | imageProvider: NetworkImage(controller.image.value), 15 | )), 16 | ), 17 | onLongPress: () { 18 | controller.getPerm(); 19 | }, 20 | onTap: () { 21 | Navigator.pop(context); 22 | }, 23 | ), 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/app/modules/post/bindings/post_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/post_controller.dart'; 4 | 5 | class PostBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => PostController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/profile/bindings/profile_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/profile_controller.dart'; 4 | 5 | class ProfileBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => ProfileController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/profile/controllers/profile_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:get/get.dart'; 3 | import 'package:pink_acg/app/data/user_center_mo.dart'; 4 | import 'package:pink_acg/app/http/dao/profile_dao.dart'; 5 | import 'package:pink_acg/app/util/toast.dart'; 6 | import 'package:pink_net/core/pink_error.dart'; 7 | 8 | class ProfileController extends GetxController { 9 | //TODO: Implement ProfileController 10 | final profileMo = UserMeta().obs; 11 | Color color = Colors.white; 12 | 13 | Future loadData() async { 14 | try { 15 | UserMeta result = await ProfileDao.get(); 16 | profileMo.value = result; 17 | } on NeedAuth catch (e) { 18 | showToast(e.message); 19 | } on NeedLogin catch (e) { 20 | showToast(e.message); 21 | } on PinkNetError catch (e) { 22 | showToast(e.message); 23 | } 24 | } 25 | 26 | @override 27 | void onInit() { 28 | loadData(); 29 | super.onInit(); 30 | } 31 | 32 | @override 33 | void onReady() { 34 | super.onReady(); 35 | } 36 | 37 | @override 38 | void onClose() {} 39 | } 40 | -------------------------------------------------------------------------------- /lib/app/modules/profileFollow/bindings/profile_follow_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/profile_follow_controller.dart'; 4 | 5 | class ProfileFollowBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => ProfileFollowController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/profilePost/bindings/profile_post_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/profile_post_controller.dart'; 4 | 5 | class ProfilePostBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => ProfilePostController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/publish/bindings/publish_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/publish_controller.dart'; 4 | 5 | class PublishBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => PublishController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/rank/bindings/rank_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/rank_controller.dart'; 4 | 5 | class RankBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => RankController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/rank/controllers/rank_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:get/get.dart'; 3 | 4 | class RankController extends GetxController with SingleGetTickerProviderMixin { 5 | //TODO: Implement RankController 6 | var tabs = [ 7 | {"key": "likes", "name": "最热"}, 8 | {"key": "create_time", "name": "最新"}, 9 | {"key": "favorite", "name": "收藏"}, 10 | ]; 11 | late TabController controller; 12 | 13 | @override 14 | void onInit() { 15 | controller = TabController(length: tabs.length, vsync: this); 16 | super.onInit(); 17 | } 18 | 19 | @override 20 | void onReady() { 21 | super.onReady(); 22 | } 23 | 24 | @override 25 | void onClose() { 26 | controller.dispose(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/app/modules/reg/bindings/reg_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/reg_controller.dart'; 4 | 5 | class RegBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => RegController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/scan/bindings/scan_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/scan_controller.dart'; 4 | 5 | class ScanBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => ScanController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/search/bindings/search_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/search_controller.dart'; 4 | 5 | class SearchBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => SearchController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/setting/bindings/setting_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/setting_controller.dart'; 4 | 5 | class SettingBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => SettingController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/setting/controllers/setting_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | class SettingController extends GetxController { 4 | //TODO: Implement SettingController 5 | var items = [ 6 | {"name": "关于我们", "type": "about-us"}, 7 | {"name": "关于App", "type": "about-app"}, 8 | ]; 9 | 10 | @override 11 | void onInit() { 12 | super.onInit(); 13 | } 14 | 15 | @override 16 | void onReady() { 17 | super.onReady(); 18 | } 19 | 20 | @override 21 | void onClose() {} 22 | } 23 | -------------------------------------------------------------------------------- /lib/app/modules/userCenter/bindings/user_center_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/user_center_controller.dart'; 4 | 5 | class UserCenterBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => UserCenterController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/userDesc/bindings/user_desc_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/user_desc_controller.dart'; 4 | 5 | class UserDescBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => UserDescController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/userDesc/controllers/user_desc_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | import 'package:pink_acg/app/data/user_center_mo.dart'; 3 | 4 | class UserDescController extends GetxController { 5 | //TODO: Implement UserDescController 6 | var profileMo = UserMeta().obs; 7 | 8 | @override 9 | void onInit() { 10 | profileMo.value = (Get.arguments as Map)["profileMo"]; 11 | super.onInit(); 12 | } 13 | 14 | @override 15 | void onReady() { 16 | super.onReady(); 17 | } 18 | 19 | @override 20 | void onClose() {} 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/modules/userEmail/bindings/user_email_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/user_email_controller.dart'; 4 | 5 | class UserEmailBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => UserEmailController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/userInfo/bindings/user_info_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/user_info_controller.dart'; 4 | 5 | class UserInfoBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => UserInfoController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/userInfo/controllers/user_info_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:get/get.dart'; 3 | import 'package:pink_acg/app/data/user_center_mo.dart'; 4 | import 'package:pink_acg/app/http/dao/user_update_dao.dart'; 5 | import 'package:pink_acg/app/util/toast.dart'; 6 | import 'package:pink_net/core/pink_error.dart'; 7 | 8 | class UserInfoController extends GetxController { 9 | //TODO: Implement UserInfoController 10 | ScrollController scrollController = ScrollController(); 11 | var profileMo = UserMeta().obs; 12 | 13 | Future updateInfo(String slug, String value) async { 14 | try { 15 | var result = await UserUpdateDao.update(slug, value); 16 | if (result["code"] == 1000) { 17 | showToast("修改成功"); 18 | } else { 19 | showToast("修改失败"); 20 | } 21 | } on NeedLogin catch (e) { 22 | showWarnToast(e.message); 23 | } on NeedAuth catch (e) { 24 | showWarnToast(e.message); 25 | } 26 | } 27 | 28 | @override 29 | void onInit() { 30 | profileMo.value = (Get.arguments as Map)["profileMo"]; 31 | super.onInit(); 32 | } 33 | 34 | @override 35 | void onReady() { 36 | super.onReady(); 37 | } 38 | 39 | @override 40 | void onClose() { 41 | scrollController.dispose(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /lib/app/modules/userPwd/bindings/user_pwd_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/user_pwd_controller.dart'; 4 | 5 | class UserPwdBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => UserPwdController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/userQrcode/bindings/user_qrcode_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/user_qrcode_controller.dart'; 4 | 5 | class UserQrcodeBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => UserQrcodeController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/userUsername/bindings/user_username_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/user_username_controller.dart'; 4 | 5 | class UserUsernameBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => UserUsernameController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/userUsername/controllers/user_username_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | import 'package:pink_acg/app/data/user_center_mo.dart'; 3 | 4 | class UserUsernameController extends GetxController { 5 | //TODO: Implement UserUsernameController 6 | var profileMo = UserMeta().obs; 7 | 8 | @override 9 | void onInit() { 10 | profileMo.value = (Get.arguments as Map)["profileMo"]; 11 | super.onInit(); 12 | } 13 | 14 | @override 15 | void onReady() { 16 | super.onReady(); 17 | } 18 | 19 | @override 20 | void onClose() {} 21 | } 22 | -------------------------------------------------------------------------------- /lib/app/modules/video/bindings/video_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/video_controller.dart'; 4 | 5 | class VideoBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => VideoController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/webBrowser/bindings/web_browser_binding.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | 3 | import '../controllers/web_browser_controller.dart'; 4 | 5 | class WebBrowserBinding extends Bindings { 6 | @override 7 | void dependencies() { 8 | Get.lazyPut( 9 | () => WebBrowserController(), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/app/modules/webBrowser/controllers/web_browser_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:get/get.dart'; 2 | import 'package:webview_flutter/webview_flutter.dart'; 3 | 4 | class WebBrowserController extends GetxController { 5 | //TODO: Implement WebBrowserController 6 | var url = "".obs; 7 | var title = "".obs; 8 | late WebViewController webViewController; 9 | 10 | @override 11 | void onInit() { 12 | super.onInit(); 13 | url.value = Get.parameters["url"]!; 14 | if (GetPlatform.isAndroid) WebView.platform = SurfaceAndroidWebView(); 15 | } 16 | 17 | @override 18 | void onReady() { 19 | super.onReady(); 20 | } 21 | 22 | @override 23 | void onClose() {} 24 | } 25 | -------------------------------------------------------------------------------- /lib/app/util/clipboard_tool.dart: -------------------------------------------------------------------------------- 1 | //复制粘贴 2 | import 'package:flutter/services.dart'; 3 | import 'package:pink_acg/app/util/toast.dart'; 4 | 5 | /// 剪切板工具 6 | class ClipboardTool { 7 | //复制内容 8 | static setData(String data) { 9 | if (data != null && data != '') { 10 | Clipboard.setData(ClipboardData(text: data)); 11 | } 12 | } 13 | 14 | //复制内容 15 | static setDataToast(String data) { 16 | if (data != null && data != '') { 17 | Clipboard.setData(ClipboardData(text: data)); 18 | showToast('复制成功'); 19 | } 20 | } 21 | 22 | //复制内容 23 | static setDataToastMsg(String data, {String toastMsg = '复制成功'}) { 24 | if (data != null && data != '') { 25 | Clipboard.setData(ClipboardData(text: data)); 26 | showToast(toastMsg); 27 | } 28 | } 29 | 30 | //获取内容 31 | static Future getData() { 32 | return Clipboard.getData(Clipboard.kTextPlain); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /lib/app/util/color.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | /// 颜色工具 4 | const MaterialColor white = MaterialColor( 5 | 0xFFFFFFFF, 6 | { 7 | 50: Color(0xFFFFFFFF), 8 | 100: Color(0xFFF5F5F5), 9 | 200: Color(0xFFFFFFFF), 10 | 300: Color(0xFFFFFFFF), 11 | 400: Color(0xFFFFFFFF), 12 | 500: Color(0xFFFFFFFF), 13 | 600: Color(0xFFFFFFFF), 14 | 700: Color(0xFFFFFFFF), 15 | 800: Color(0xFFFFFFFF), 16 | 900: Color(0xFFFFFFFF), 17 | }, 18 | ); 19 | 20 | ///主色调 21 | const MaterialColor primary = MaterialColor(0xfffb7299, { 22 | 50: Color(0xffff9db5), 23 | }); 24 | 25 | class HiColor { 26 | static const Color red = Color(0xFFFF4759); 27 | static const Color dark_red = Color(0xFFE03E4E); 28 | static const Color dark_bg = Color(0xFF18191A); 29 | } 30 | -------------------------------------------------------------------------------- /lib/app/util/format_util.dart: -------------------------------------------------------------------------------- 1 | /// 数字转万 2 | String countFormat(int count) { 3 | String views = ""; 4 | if (count > 9999) { 5 | views = "${(count / 10000).toStringAsFixed(2)}w"; 6 | } else { 7 | views = count.toString(); 8 | } 9 | return views; 10 | } 11 | 12 | /// 时间转换将秒转换为分钟:秒 13 | String durationTransform(int seconds) { 14 | int m = (seconds / 60).truncate(); 15 | int s = seconds - m * 60; 16 | if (s < 10) { 17 | return "$m:0$s"; 18 | } 19 | return "$m:$s"; 20 | } 21 | 22 | /// 格式化tz格式时间 23 | String formatDate(DateTime time) { 24 | var year = time.year; 25 | var month = time.month; 26 | var day = time.day; 27 | var hour = time.hour; 28 | var minute = time.minute; 29 | //获取当前时间 30 | DateTime nowTime = DateTime.now(); 31 | var nowYear = nowTime.year; 32 | var nowMonth = nowTime.month; 33 | var nowDay = nowTime.day; 34 | if (year == nowYear && month == nowMonth && day == nowDay) { 35 | return "今天$hour:$minute"; 36 | } else { 37 | return "$month月$day日"; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/app/util/image_picker.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/animation.dart'; 2 | import 'package:photo_manager/photo_manager.dart'; 3 | import 'package:pink_acg/app/util/color.dart'; 4 | import 'package:wechat_assets_picker/wechat_assets_picker.dart'; 5 | import 'package:wechat_camera_picker/wechat_camera_picker.dart'; 6 | 7 | Future?> getImagePicker(context, 8 | {required int maxAssets, 9 | RequestType requestType = RequestType.image}) async { 10 | final List? fileList = await AssetPicker.pickAssets(context, 11 | maxAssets: maxAssets, 12 | requestType: requestType, 13 | themeColor: primary, 14 | routeCurve: Curves.fastLinearToSlowEaseIn); 15 | return fileList; 16 | } 17 | 18 | Future getImageCamera(context) async { 19 | final AssetEntity? fileList = await CameraPicker.pickFromCamera(context, 20 | theme: CameraPicker.themeData(primary)); 21 | return fileList; 22 | } 23 | -------------------------------------------------------------------------------- /lib/app/util/pink_defend.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter/cupertino.dart'; 4 | import 'package:flutter/foundation.dart'; 5 | import 'package:flutter_bugly/flutter_bugly.dart'; 6 | 7 | class PinkDefend { 8 | run(Widget app) { 9 | // 框架异常 10 | FlutterError.onError = (FlutterErrorDetails details) async { 11 | if (kReleaseMode) { 12 | // 线上环境,走上报流程 13 | Zone.current.handleUncaughtError(details.exception, details.stack!); 14 | } else { 15 | // 开发期间,走控制台 16 | FlutterError.dumpErrorToConsole(details); 17 | } 18 | }; 19 | runZonedGuarded(() { 20 | FlutterBugly.postCatchedException(() { 21 | runApp(app); 22 | }); 23 | }, (e, s) => _reportError(e, s)); 24 | } 25 | 26 | _reportError(Object error, StackTrace s) { 27 | print("当前环境:$kReleaseMode"); 28 | print("catch error:$error"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/app/util/screenutil.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter_screenutil/flutter_screenutil.dart'; 3 | import 'package:get/get.dart'; 4 | 5 | setScreenInit() { 6 | //设置尺寸(填写设计中设备的屏幕尺寸)如果设计基于360dp * 690dp的屏幕 7 | ScreenUtil.init(BoxConstraints(maxWidth: Get.width, maxHeight: Get.height), 8 | designSize: Size(1080, 2248), orientation: Orientation.portrait); 9 | } 10 | 11 | setWidth(int width) { 12 | return width.w; 13 | } 14 | 15 | setHeight(int height) { 16 | return height.h; 17 | } 18 | 19 | setR(int height) { 20 | return height.r; 21 | } 22 | 23 | setRadius(int radius) { 24 | return ScreenUtil().radius(radius); 25 | } 26 | 27 | setSp(int sp) { 28 | return sp.sp; 29 | } 30 | -------------------------------------------------------------------------------- /lib/app/util/string_util.dart: -------------------------------------------------------------------------------- 1 | /// 判断是否为空 2 | bool isNotEmpty(String text) { 3 | return text.isNotEmpty ? text.isNotEmpty : false; 4 | } 5 | 6 | /// 判断是否为空 7 | bool isEmpty(String text) { 8 | return text.isEmpty ? text.isEmpty : true; 9 | } 10 | 11 | // 邮箱判断 12 | bool isEmail(String input) { 13 | String regexEmail = 14 | "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}\$"; 15 | if (input.isEmpty) return false; 16 | return RegExp(regexEmail).hasMatch(input); 17 | } 18 | -------------------------------------------------------------------------------- /lib/app/util/toast.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:fluttertoast/fluttertoast.dart'; 3 | 4 | /// 警告通知 5 | void showWarnToast(String text) { 6 | Fluttertoast.showToast( 7 | msg: text, 8 | toastLength: Toast.LENGTH_LONG, 9 | gravity: ToastGravity.CENTER, 10 | backgroundColor: Colors.red, 11 | textColor: Colors.white); 12 | } 13 | 14 | /// 正常通知 15 | void showToast(String text) { 16 | Fluttertoast.showToast( 17 | msg: text, toastLength: Toast.LENGTH_LONG, gravity: ToastGravity.CENTER); 18 | } 19 | -------------------------------------------------------------------------------- /lib/app/util/video_analysis.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | import 'package:dio/dio.dart'; 4 | 5 | Future getHttp(url) async { 6 | FormData formData = FormData.fromMap({"url": url}); 7 | var response = await Dio().post( 8 | "https://www.daimadog.com/wp-content/themes/mytheme/action/dyjx.php", 9 | data: formData); 10 | var data = jsonDecode(response.toString()); 11 | return data["playurl"][0]; 12 | } 13 | 14 | Future getHttp2(url) async { 15 | var response = await Dio() 16 | .get("https://tenapi.cn/bilivideo/", queryParameters: {"url": url}); 17 | var data = jsonDecode(response.toString()); 18 | return data["url"]; 19 | } 20 | -------------------------------------------------------------------------------- /lib/app/widget/login/login_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:pink_acg/app/util/color.dart'; 3 | import 'package:pink_acg/app/util/screenutil.dart'; 4 | 5 | class LoginButton extends StatelessWidget { 6 | final String title; 7 | final bool enable; 8 | final VoidCallback? onPressed; 9 | 10 | const LoginButton(this.title, {Key? key, this.enable = true, this.onPressed}) 11 | : super(key: key); 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return FractionallySizedBox( 16 | widthFactor: 1, 17 | child: MaterialButton( 18 | shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(6)), 19 | height: 45, 20 | onPressed: enable ? onPressed : null, 21 | disabledColor: primary[50], 22 | color: primary, 23 | child: Text( 24 | title, 25 | style: TextStyle(color: Colors.white, fontSize: setSp(50)), 26 | ), 27 | ), 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/app/widget/login/login_effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | ///登录效果 自定义widget 4 | class LoginEffect extends StatelessWidget { 5 | final bool protect; 6 | const LoginEffect({Key? key, required this.protect}) : super(key: key); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | padding: EdgeInsets.only(top: 10), 12 | decoration: BoxDecoration( 13 | color: Colors.grey[100], 14 | border: Border(bottom: BorderSide(color: Colors.grey))), 15 | child: Row( 16 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 17 | children: [ 18 | _image(true), 19 | Image( 20 | height: 90, 21 | width: 90, 22 | image: AssetImage('assets/images/logo.png'), 23 | ), 24 | _image(false), 25 | ], 26 | ), 27 | ); 28 | } 29 | 30 | _image(bool left) { 31 | var headLeft = protect 32 | ? 'assets/images/head_left_protect.png' 33 | : 'assets/images/head_left.png'; 34 | var headRight = protect 35 | ? 'assets/images/head_right_protect.png' 36 | : 'assets/images/head_right.png'; 37 | return Image( 38 | height: 90, 39 | image: AssetImage(left ? headLeft : headRight), 40 | ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /lib/app/widget/not_found.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:get/get.dart'; 3 | import 'package:pink_acg/app/util/screenutil.dart'; 4 | import '../util/view_util.dart'; 5 | 6 | class NotFound extends StatelessWidget { 7 | const NotFound({Key? key}) : super(key: key); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return Container( 12 | alignment: Alignment.center, 13 | margin: EdgeInsets.only(top: 40), 14 | width: Get.width, 15 | height: setHeight(650), 16 | child: Column( 17 | children: [ 18 | Image( 19 | height: 150, 20 | fit: BoxFit.cover, 21 | image: AssetImage('assets/images/404.png'), 22 | ), 23 | hiSpace(height: 20), 24 | Text( 25 | "这里什么都没有······", 26 | style: TextStyle(fontSize: setSp(36), color: Colors.grey), 27 | ) 28 | ], 29 | ), 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /lib/app/widget/update.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class Update extends StatefulWidget { 5 | final String serverAndroidVersion; 6 | final String serverAndroidMsg; 7 | final VoidCallback close; 8 | final VoidCallback update; 9 | const Update( 10 | {Key? key, 11 | required this.serverAndroidVersion, 12 | required this.close, 13 | required this.update, 14 | required this.serverAndroidMsg}) 15 | : super(key: key); 16 | 17 | @override 18 | _UpdateState createState() => _UpdateState(); 19 | } 20 | 21 | class _UpdateState extends State { 22 | @override 23 | Widget build(BuildContext context) { 24 | return Positioned( 25 | child: AlertDialog( 26 | title: Text('检测到新版本:v${widget.serverAndroidVersion}'), 27 | content: Text('${widget.serverAndroidMsg}'), 28 | elevation: 24, 29 | actions: [ 30 | TextButton( 31 | child: Text('下次一定'), 32 | onPressed: widget.close, 33 | ), 34 | TextButton( 35 | child: Text('立即更新'), 36 | onPressed: widget.update, 37 | ), 38 | ], 39 | )); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /lib/pink_constants.dart: -------------------------------------------------------------------------------- 1 | import 'package:pink_acg/app/http/dao/login_dao.dart'; 2 | 3 | /// 全局config配置文件 4 | class PinkConstants { 5 | static String domain = "10.0.2.2"; 6 | // static String domain = "localhost"; 7 | // static String domain = "81.69.27.9"; 8 | static String ossDomain = "https://img.catacg.cn"; 9 | static String port = "8080"; 10 | static String versionPath = "/api/v1"; 11 | static String buglyAndroidId = "de5481f58a"; 12 | static String buglyIosId = "49ff050403"; 13 | static String qq = "3142493883"; 14 | 15 | // 登录token验证 16 | static const authorization = 'authorization'; 17 | 18 | static header() { 19 | Map header = {}; 20 | header[authorization] = LoginDao.getBoardingPass(); 21 | return header; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-14-47-022_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-14-47-022_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-14-51-122_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-14-51-122_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-14-55-429_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-14-55-429_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-14-57-881_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-14-57-881_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-03-883_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-03-883_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-16-766_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-16-766_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-22-130_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-22-130_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-25-046_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-25-046_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-35-090_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-35-090_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-37-651_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-37-651_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-43-388_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-43-388_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-52-607_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-52-607_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-15-58-026_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-15-58-026_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-16-01-595_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-01-595_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-16-07-861_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-07-861_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-16-25-974_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-25-974_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-16-42-516_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-42-516_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-16-58-577_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-16-58-577_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-17-12-053_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-17-12-053_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /md-image/Screenshot_2021-11-12-18-17-16-991_com.pinkacg.pi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/md-image/Screenshot_2021-11-12-18-17-16-991_com.pinkacg.pi.jpg -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/test/widget_test.dart -------------------------------------------------------------------------------- /web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/web/favicon.png -------------------------------------------------------------------------------- /web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/web/icons/Icon-192.png -------------------------------------------------------------------------------- /web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/axelulu/Getx-PinkApp/5181ac3fd1d839f54fc153012a0d98d333cc4f96/web/icons/Icon-512.png -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pink_acg", 3 | "short_name": "pink_acg", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | } 22 | ] 23 | } 24 | --------------------------------------------------------------------------------