├── .gitignore
├── .metadata
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── c001apk
│ │ │ │ └── flutter
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-mdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-hdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-mdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-night-xhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-xxhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-xxxhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-xxhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable
│ │ │ ├── background.png
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── values-night-v31
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ ├── values-v31
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ └── network_security_config.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── emojis
│ ├── c_coolb.png
│ ├── c_fived.png
│ ├── c_fivef.png
│ ├── c_fivem.png
│ ├── c_fiveo.png
│ ├── c_fivey.png
│ ├── c_fy.png
│ ├── c_oned.png
│ ├── c_onef.png
│ ├── c_onem.png
│ ├── c_oneo.png
│ ├── c_oney.png
│ ├── c_oy.png
│ ├── c_teny.png
│ ├── c_twod.png
│ ├── c_twof.png
│ ├── c_twom.png
│ ├── c_twoo.png
│ ├── c_twoy.png
│ ├── c_ty.png
│ ├── coolapk_emotion_100_qqdoge.png
│ ├── coolapk_emotion_1010.png
│ ├── coolapk_emotion_1011.png
│ ├── coolapk_emotion_1012.png
│ ├── coolapk_emotion_1013.png
│ ├── coolapk_emotion_1014.png
│ ├── coolapk_emotion_1015.png
│ ├── coolapk_emotion_1016.png
│ ├── coolapk_emotion_1017.png
│ ├── coolapk_emotion_1018.png
│ ├── coolapk_emotion_1019.png
│ ├── coolapk_emotion_101_pyjiaoyi.png
│ ├── coolapk_emotion_1020.png
│ ├── coolapk_emotion_1021.png
│ ├── coolapk_emotion_1022_zhenbuchuo.png
│ ├── coolapk_emotion_1023_liewenhuke.png
│ ├── coolapk_emotion_1024.png
│ ├── coolapk_emotion_1025.png
│ ├── coolapk_emotion_1026.png
│ ├── coolapk_emotion_1027.png
│ ├── coolapk_emotion_1028.png
│ ├── coolapk_emotion_1029.png
│ ├── coolapk_emotion_102_fadai.png
│ ├── coolapk_emotion_1030.png
│ ├── coolapk_emotion_1031.png
│ ├── coolapk_emotion_103_nb.png
│ ├── coolapk_emotion_104.png
│ ├── coolapk_emotion_105.png
│ ├── coolapk_emotion_106.png
│ ├── coolapk_emotion_107.png
│ ├── coolapk_emotion_108.png
│ ├── coolapk_emotion_109.png
│ ├── coolapk_emotion_10_aoman.png
│ ├── coolapk_emotion_11_yiwen.png
│ ├── coolapk_emotion_12_wuyu.png
│ ├── coolapk_emotion_13_huaixiao.png
│ ├── coolapk_emotion_14_bishi.png
│ ├── coolapk_emotion_15_fanu.png
│ ├── coolapk_emotion_16_tuosai.png
│ ├── coolapk_emotion_17_tushe.png
│ ├── coolapk_emotion_18_han.png
│ ├── coolapk_emotion_19_koubi.png
│ ├── coolapk_emotion_1_hahaha.png
│ ├── coolapk_emotion_20_qinqin.png
│ ├── coolapk_emotion_21_penxue.png
│ ├── coolapk_emotion_22_xiaoyan.png
│ ├── coolapk_emotion_23_shui.png
│ ├── coolapk_emotion_24_wuzuixiao.png
│ ├── coolapk_emotion_25_zaijian.png
│ ├── coolapk_emotion_26_kelian.png
│ ├── coolapk_emotion_27_qiang.png
│ ├── coolapk_emotion_28_ruo.png
│ ├── coolapk_emotion_29_baoquan.png
│ ├── coolapk_emotion_2_jingya.png
│ ├── coolapk_emotion_30_ok.png
│ ├── coolapk_emotion_31_xiaoku.png
│ ├── coolapk_emotion_32_heiha.png
│ ├── coolapk_emotion_33_wulian.png
│ ├── coolapk_emotion_34_jizhi.png
│ ├── coolapk_emotion_35_ye.png
│ ├── coolapk_emotion_36_ku.png
│ ├── coolapk_emotion_37_doge.png
│ ├── coolapk_emotion_38_wozuimei.png
│ ├── coolapk_emotion_39_caidao.png
│ ├── coolapk_emotion_3_ciya.png
│ ├── coolapk_emotion_40_aixin.png
│ ├── coolapk_emotion_41_meigui.png
│ ├── coolapk_emotion_42_diaoxie.png
│ ├── coolapk_emotion_43_heixian.png
│ ├── coolapk_emotion_44_pen.png
│ ├── coolapk_emotion_45_yinxian.png
│ ├── coolapk_emotion_46_nanguo.png
│ ├── coolapk_emotion_47_weiqu.png
│ ├── coolapk_emotion_48_weiweiyixiao.png
│ ├── coolapk_emotion_49_huanhu.png
│ ├── coolapk_emotion_4_liulei.png
│ ├── coolapk_emotion_50_xinsui.png
│ ├── coolapk_emotion_51_chigua.png
│ ├── coolapk_emotion_52_hejiu.png
│ ├── coolapk_emotion_53_pu.png
│ ├── coolapk_emotion_54_hongyaowan.png
│ ├── coolapk_emotion_55_lvyaowan.png
│ ├── coolapk_emotion_56_dogexiaoku.png
│ ├── coolapk_emotion_57_dogehechi.png
│ ├── coolapk_emotion_58_dogeyuanliangta.png
│ ├── coolapk_emotion_59_erha.png
│ ├── coolapk_emotion_5_keai.png
│ ├── coolapk_emotion_60_kuan.png
│ ├── coolapk_emotion_61_lvmao.png
│ ├── coolapk_emotion_62_huaji.png
│ ├── coolapk_emotion_63_liuhanhuaji.png
│ ├── coolapk_emotion_64_shounuehuaji.png
│ ├── coolapk_emotion_65_coshuaji.png
│ ├── coolapk_emotion_66_doujiyanhuaji.png
│ ├── coolapk_emotion_67_mojinghuaji.png
│ ├── coolapk_emotion_68.png
│ ├── coolapk_emotion_69.png
│ ├── coolapk_emotion_6_weixiao.png
│ ├── coolapk_emotion_70.png
│ ├── coolapk_emotion_71.png
│ ├── coolapk_emotion_72.png
│ ├── coolapk_emotion_73.png
│ ├── coolapk_emotion_74.png
│ ├── coolapk_emotion_75.png
│ ├── coolapk_emotion_76.png
│ ├── coolapk_emotion_77.png
│ ├── coolapk_emotion_78.png
│ ├── coolapk_emotion_79.png
│ ├── coolapk_emotion_7_hehe.png
│ ├── coolapk_emotion_80.png
│ ├── coolapk_emotion_81_naikezui.png
│ ├── coolapk_emotion_82_miaomiao.png
│ ├── coolapk_emotion_83_huoba.png
│ ├── coolapk_emotion_84_baiyan.png
│ ├── coolapk_emotion_85.png
│ ├── coolapk_emotion_86.png
│ ├── coolapk_emotion_87.png
│ ├── coolapk_emotion_88.png
│ ├── coolapk_emotion_89.png
│ ├── coolapk_emotion_8_piezui.png
│ ├── coolapk_emotion_90.png
│ ├── coolapk_emotion_91.png
│ ├── coolapk_emotion_92.png
│ ├── coolapk_emotion_93.png
│ ├── coolapk_emotion_94.png
│ ├── coolapk_emotion_95_erhading.png
│ ├── coolapk_emotion_96_kuanlvmao.png
│ ├── coolapk_emotion_97_haixiu.png
│ ├── coolapk_emotion_98_wunai.png
│ ├── coolapk_emotion_99_zhoumei.png
│ └── coolapk_emotion_9_se.png
└── icon
│ ├── icon-splash.png
│ └── icon.png
├── 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-50x50@1x.png
│ │ │ ├── Icon-App-50x50@2x.png
│ │ │ ├── Icon-App-57x57@1x.png
│ │ │ ├── Icon-App-57x57@2x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-72x72@1x.png
│ │ │ ├── Icon-App-72x72@2x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ ├── LaunchBackground.imageset
│ │ │ ├── Contents.json
│ │ │ ├── background.png
│ │ │ └── darkbackground.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ ├── LaunchImageDark.png
│ │ │ ├── LaunchImageDark@2x.png
│ │ │ ├── LaunchImageDark@3x.png
│ │ │ └── README.md
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
└── RunnerTests
│ └── RunnerTests.swift
├── lib
├── components
│ ├── cards
│ │ ├── app_card.dart
│ │ ├── app_info_card.dart
│ │ ├── app_update_card.dart
│ │ ├── carousel_card.dart
│ │ ├── chat_card.dart
│ │ ├── chat_time_card.dart
│ │ ├── collection_card.dart
│ │ ├── feed_card.dart
│ │ ├── feed_reply_card.dart
│ │ ├── icon_link_grid_card.dart
│ │ ├── icon_mini_grid_card.dart
│ │ ├── icon_mini_scroll_card.dart
│ │ ├── icon_scroll_card.dart
│ │ ├── image_square_scroll_card.dart
│ │ ├── image_text_scroll_card.dart
│ │ ├── like_card.dart
│ │ ├── message_card.dart
│ │ ├── message_first_card.dart
│ │ ├── message_header_card.dart
│ │ ├── message_second_card.dart
│ │ ├── message_third_card.dart
│ │ ├── notification_card.dart
│ │ ├── search_history_card.dart
│ │ ├── text_card.dart
│ │ ├── title_card.dart
│ │ └── user_info_card.dart
│ ├── common_body.dart
│ ├── custom_toast.dart
│ ├── dialog.dart
│ ├── feed_article_body.dart
│ ├── footer.dart
│ ├── html_text.dart
│ ├── icon_text.dart
│ ├── imageview.dart
│ ├── index_switcher.dart
│ ├── item_card.dart
│ ├── like_button.dart
│ ├── nested_tab_bar_view.dart
│ ├── network_image.dart
│ ├── nine_grid_view.dart
│ ├── no_splash_factory.dart
│ ├── self_sized_horizontal_list.dart
│ ├── settings
│ │ ├── drop_down_menu_item.dart
│ │ ├── edittext_item.dart
│ │ ├── item_title.dart
│ │ └── switch_item.dart
│ ├── silver_sticky_header.dart
│ ├── single_line_fitted_box.dart
│ ├── sliver_pinned_box_adapter.dart
│ └── sticky_sliver_to_box_adapter.dart
├── constants
│ └── constants.dart
├── logic
│ ├── model
│ │ ├── app_info
│ │ │ └── app_info.dart
│ │ ├── check_count
│ │ │ ├── check_count.dart
│ │ │ └── datum.dart
│ │ ├── check_info
│ │ │ ├── check.dart
│ │ │ ├── check.g.dart
│ │ │ ├── data.dart
│ │ │ ├── data.g.dart
│ │ │ ├── notify_count.dart
│ │ │ ├── notify_count.g.dart
│ │ │ ├── system_config.dart
│ │ │ └── system_config.g.dart
│ │ ├── check_update
│ │ │ ├── check_update.dart
│ │ │ ├── check_update.g.dart
│ │ │ ├── datum.dart
│ │ │ └── datum.g.dart
│ │ ├── fav_history
│ │ │ ├── fav_history.dart
│ │ │ └── fav_history.g.dart
│ │ ├── feed
│ │ │ ├── data_list_model.dart
│ │ │ ├── data_list_model.g.dart
│ │ │ ├── data_model.dart
│ │ │ ├── data_model.g.dart
│ │ │ ├── datum.dart
│ │ │ ├── datum.g.dart
│ │ │ ├── entity.dart
│ │ │ ├── entity.g.dart
│ │ │ ├── extra_data_arr.dart
│ │ │ ├── extra_data_arr.g.dart
│ │ │ ├── relation_row.dart
│ │ │ ├── relation_row.g.dart
│ │ │ ├── reply_row.dart
│ │ │ ├── reply_row.g.dart
│ │ │ ├── tab_list.dart
│ │ │ ├── tab_list.g.dart
│ │ │ ├── target_row.dart
│ │ │ ├── target_row.g.dart
│ │ │ ├── user_action.dart
│ │ │ ├── user_action.g.dart
│ │ │ ├── user_info.dart
│ │ │ └── user_info.g.dart
│ │ ├── feed_article
│ │ │ └── feed_article.dart
│ │ ├── login
│ │ │ └── login_response.dart
│ │ └── oss_upload
│ │ │ ├── datum.dart
│ │ │ ├── file_info.dart
│ │ │ ├── oss_upload_model.dart
│ │ │ ├── oss_upload_response.dart
│ │ │ └── upload_prepare_info.dart
│ ├── network
│ │ ├── api.dart
│ │ ├── interceptor.dart
│ │ ├── network_repo.dart
│ │ └── request.dart
│ └── state
│ │ └── loading_state.dart
├── main.dart
├── pages
│ ├── app
│ │ ├── app_content.dart
│ │ ├── app_content_controller.dart
│ │ ├── app_controller.dart
│ │ └── app_page.dart
│ ├── blacklist
│ │ ├── black_list_controller.dart
│ │ └── black_list_page.dart
│ ├── carousel
│ │ ├── carousel_controller.dart
│ │ └── carousel_page.dart
│ ├── chat
│ │ ├── chat_controller.dart
│ │ └── chat_page.dart
│ ├── common
│ │ └── common_controller.dart
│ ├── coolpic
│ │ ├── coolpic_content.dart
│ │ ├── coolpic_controller.dart
│ │ └── coolpic_page.dart
│ ├── dyh
│ │ ├── dyh_content.dart
│ │ ├── dyh_controller.dart
│ │ └── dyh_page.dart
│ ├── feed
│ │ ├── feed_controller.dart
│ │ ├── feed_page.dart
│ │ ├── reply
│ │ │ ├── emoji_panel.dart
│ │ │ ├── reply_dialog.dart
│ │ │ ├── reply_page.dart
│ │ │ └── toolbar_icon_button.dart
│ │ └── reply2reply
│ │ │ ├── reply_2_reply_controller.dart
│ │ │ └── reply_2_reply_page.dart
│ ├── ffflist
│ │ ├── ffflist_content.dart
│ │ ├── ffflist_controller.dart
│ │ └── ffflist_page.dart
│ ├── history
│ │ ├── history_controller.dart
│ │ └── history_page.dart
│ ├── home
│ │ ├── app
│ │ │ ├── app_list_controller.dart
│ │ │ ├── app_list_page.dart
│ │ │ └── update
│ │ │ │ └── app_update_page.dart
│ │ ├── feed
│ │ │ ├── home_feed_controller.dart
│ │ │ └── home_feed_page.dart
│ │ ├── home_page.dart
│ │ ├── return_top_controller.dart
│ │ └── topic
│ │ │ ├── controller.dart
│ │ │ └── home_topic_page.dart
│ ├── login
│ │ └── login_page.dart
│ ├── main
│ │ ├── main_controller.dart
│ │ └── main_page.dart
│ ├── message
│ │ ├── message_controller.dart
│ │ └── message_page.dart
│ ├── noitfication
│ │ ├── notification_controller.dart
│ │ └── notification_page.dart
│ ├── others
│ │ ├── copy_page.dart
│ │ └── imageview_page.dart
│ ├── search
│ │ ├── search_controller.dart
│ │ ├── search_order_controller.dart
│ │ ├── search_page.dart
│ │ ├── search_page_controller.dart
│ │ ├── search_result_content.dart
│ │ └── search_result_page.dart
│ ├── settings
│ │ ├── about_page.dart
│ │ ├── params_page.dart
│ │ └── settings_page.dart
│ ├── topic
│ │ ├── topic_content.dart
│ │ ├── topic_content_controller.dart
│ │ ├── topic_controller.dart
│ │ ├── topic_order_controller.dart
│ │ └── topic_page.dart
│ ├── user
│ │ ├── user_controller.dart
│ │ └── user_page.dart
│ └── webview
│ │ └── webview_page.dart
├── router
│ └── app_pages.dart
└── utils
│ ├── cache_util.dart
│ ├── date_util.dart
│ ├── device_util.dart
│ ├── download_util.dart
│ ├── emoji_util.dart
│ ├── extensions.dart
│ ├── global_data.dart
│ ├── oss
│ ├── aliyunoss_client.dart
│ ├── aliyunoss_config.dart
│ ├── aliyunoss_http.dart
│ └── aliyunoss_utils.dart
│ ├── oss_util.dart
│ ├── storage_util.dart
│ ├── token_util.dart
│ └── utils.dart
├── linux
├── .gitignore
├── CMakeLists.txt
├── flutter
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
├── main.cc
├── my_application.cc
└── my_application.h
├── macos
├── .gitignore
├── Flutter
│ ├── Flutter-Debug.xcconfig
│ ├── Flutter-Release.xcconfig
│ └── GeneratedPluginRegistrant.swift
├── 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
└── RunnerTests
│ └── RunnerTests.swift
├── pubspec.lock
├── pubspec.yaml
├── web
├── favicon.png
├── icons
│ ├── Icon-192.png
│ ├── Icon-512.png
│ ├── Icon-maskable-192.png
│ └── Icon-maskable-512.png
├── index.html
├── manifest.json
└── splash
│ └── img
│ ├── dark-1x.png
│ ├── dark-2x.png
│ ├── dark-3x.png
│ ├── dark-4x.png
│ ├── light-1x.png
│ ├── light-2x.png
│ ├── light-3x.png
│ └── light-4x.png
└── windows
├── .gitignore
├── CMakeLists.txt
├── flutter
├── CMakeLists.txt
├── generated_plugin_registrant.cc
├── generated_plugin_registrant.h
└── generated_plugins.cmake
└── runner
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── resources
└── app_icon.ico
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | **/doc/api/
26 | **/ios/Flutter/.last_build_id
27 | .dart_tool/
28 | .flutter-plugins
29 | .flutter-plugins-dependencies
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Symbolication related
35 | app.*.symbols
36 |
37 | # Obfuscation related
38 | app.*.map.json
39 |
40 | # Android Studio will place build artifacts here
41 | /android/app/debug
42 | /android/app/profile
43 | /android/app/release
44 |
--------------------------------------------------------------------------------
/.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: "9ab8b6e15043de9627941e186d58711312dbd256"
8 | channel: "master"
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: 9ab8b6e15043de9627941e186d58711312dbd256
17 | base_revision: 9ab8b6e15043de9627941e186d58711312dbd256
18 | - platform: android
19 | create_revision: 9ab8b6e15043de9627941e186d58711312dbd256
20 | base_revision: 9ab8b6e15043de9627941e186d58711312dbd256
21 | - platform: ios
22 | create_revision: 9ab8b6e15043de9627941e186d58711312dbd256
23 | base_revision: 9ab8b6e15043de9627941e186d58711312dbd256
24 | - platform: linux
25 | create_revision: 9ab8b6e15043de9627941e186d58711312dbd256
26 | base_revision: 9ab8b6e15043de9627941e186d58711312dbd256
27 | - platform: macos
28 | create_revision: 9ab8b6e15043de9627941e186d58711312dbd256
29 | base_revision: 9ab8b6e15043de9627941e186d58711312dbd256
30 | - platform: web
31 | create_revision: 9ab8b6e15043de9627941e186d58711312dbd256
32 | base_revision: 9ab8b6e15043de9627941e186d58711312dbd256
33 | - platform: windows
34 | create_revision: 9ab8b6e15043de9627941e186d58711312dbd256
35 | base_revision: 9ab8b6e15043de9627941e186d58711312dbd256
36 |
37 | # User provided section
38 |
39 | # List of Local paths (relative to this file) that should be
40 | # ignored by the migrate tool.
41 | #
42 | # Files that are not part of the templates will be ignored by default.
43 | unmanaged_files:
44 | - 'lib/main.dart'
45 | - 'ios/Runner.xcodeproj/project.pbxproj'
46 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # c001apk-flutter
2 |
3 | A new Flutter project.
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://docs.flutter.dev/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
13 |
14 | For help getting started with Flutter development, view the
15 | [online documentation](https://docs.flutter.dev/), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
18 | ## Credits:
19 | - [pilipala](https://github.com/guozhigq/pilipala)
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at https://dart.dev/lints.
17 | #
18 | # Instead of disabling a lint rule for the entire project in the
19 | # section below, it can also be suppressed for a single line of code
20 | # or a specific dart file by using the `// ignore: name_of_lint` and
21 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
22 | # producing the lint.
23 | rules:
24 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
25 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
26 |
27 | # Additional information about this file can be found at
28 | # https://dart.dev/guides/language/analysis-options
29 |
--------------------------------------------------------------------------------
/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/to/reference-keystore
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-night-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-night-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-night-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-night-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-night-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-night-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-night/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
12 |
15 |
16 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night-v31/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @android:color/system_accent1_800
4 | @android:color/system_accent1_200
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
19 |
22 |
23 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-v31/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @android:color/system_accent1_0
4 | @android:color/system_accent1_600
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #607D8B
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
19 |
22 |
23 |
--------------------------------------------------------------------------------
/android/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | maven { url 'https://jitpack.io' }
6 | }
7 | }
8 |
9 | rootProject.buildDir = "../build"
10 | subprojects {
11 | project.buildDir = "${rootProject.buildDir}/${project.name}"
12 | }
13 | subprojects {
14 | project.evaluationDependsOn(":app")
15 | }
16 |
17 | tasks.register("clean", Delete) {
18 | delete rootProject.buildDir
19 | }
20 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
6 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | def flutterSdkPath = {
3 | def properties = new Properties()
4 | file("local.properties").withInputStream { properties.load(it) }
5 | def flutterSdkPath = properties.getProperty("flutter.sdk")
6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7 | return flutterSdkPath
8 | }()
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21 | id "com.android.application" version "7.3.0" apply false
22 | id "org.jetbrains.kotlin.android" version "1.7.10" apply false
23 | }
24 |
25 | include ":app"
26 |
--------------------------------------------------------------------------------
/assets/emojis/c_coolb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_coolb.png
--------------------------------------------------------------------------------
/assets/emojis/c_fived.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_fived.png
--------------------------------------------------------------------------------
/assets/emojis/c_fivef.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_fivef.png
--------------------------------------------------------------------------------
/assets/emojis/c_fivem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_fivem.png
--------------------------------------------------------------------------------
/assets/emojis/c_fiveo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_fiveo.png
--------------------------------------------------------------------------------
/assets/emojis/c_fivey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_fivey.png
--------------------------------------------------------------------------------
/assets/emojis/c_fy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_fy.png
--------------------------------------------------------------------------------
/assets/emojis/c_oned.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_oned.png
--------------------------------------------------------------------------------
/assets/emojis/c_onef.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_onef.png
--------------------------------------------------------------------------------
/assets/emojis/c_onem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_onem.png
--------------------------------------------------------------------------------
/assets/emojis/c_oneo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_oneo.png
--------------------------------------------------------------------------------
/assets/emojis/c_oney.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_oney.png
--------------------------------------------------------------------------------
/assets/emojis/c_oy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_oy.png
--------------------------------------------------------------------------------
/assets/emojis/c_teny.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_teny.png
--------------------------------------------------------------------------------
/assets/emojis/c_twod.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_twod.png
--------------------------------------------------------------------------------
/assets/emojis/c_twof.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_twof.png
--------------------------------------------------------------------------------
/assets/emojis/c_twom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_twom.png
--------------------------------------------------------------------------------
/assets/emojis/c_twoo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_twoo.png
--------------------------------------------------------------------------------
/assets/emojis/c_twoy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_twoy.png
--------------------------------------------------------------------------------
/assets/emojis/c_ty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/c_ty.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_100_qqdoge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_100_qqdoge.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1010.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1010.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1011.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1011.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1012.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1012.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1013.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1013.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1014.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1015.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1016.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1017.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1017.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1018.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1019.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1019.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_101_pyjiaoyi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_101_pyjiaoyi.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1020.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1021.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1021.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1022_zhenbuchuo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1022_zhenbuchuo.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1023_liewenhuke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1023_liewenhuke.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1024.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1025.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1025.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1026.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1026.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1027.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1027.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1028.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1028.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1029.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1029.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_102_fadai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_102_fadai.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1030.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1030.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1031.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1031.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_103_nb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_103_nb.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_104.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_104.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_105.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_105.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_106.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_106.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_107.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_107.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_108.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_108.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_109.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_109.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_10_aoman.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_10_aoman.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_11_yiwen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_11_yiwen.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_12_wuyu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_12_wuyu.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_13_huaixiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_13_huaixiao.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_14_bishi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_14_bishi.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_15_fanu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_15_fanu.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_16_tuosai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_16_tuosai.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_17_tushe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_17_tushe.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_18_han.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_18_han.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_19_koubi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_19_koubi.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_1_hahaha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_1_hahaha.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_20_qinqin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_20_qinqin.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_21_penxue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_21_penxue.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_22_xiaoyan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_22_xiaoyan.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_23_shui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_23_shui.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_24_wuzuixiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_24_wuzuixiao.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_25_zaijian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_25_zaijian.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_26_kelian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_26_kelian.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_27_qiang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_27_qiang.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_28_ruo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_28_ruo.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_29_baoquan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_29_baoquan.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_2_jingya.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_2_jingya.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_30_ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_30_ok.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_31_xiaoku.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_31_xiaoku.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_32_heiha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_32_heiha.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_33_wulian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_33_wulian.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_34_jizhi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_34_jizhi.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_35_ye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_35_ye.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_36_ku.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_36_ku.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_37_doge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_37_doge.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_38_wozuimei.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_38_wozuimei.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_39_caidao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_39_caidao.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_3_ciya.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_3_ciya.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_40_aixin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_40_aixin.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_41_meigui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_41_meigui.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_42_diaoxie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_42_diaoxie.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_43_heixian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_43_heixian.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_44_pen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_44_pen.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_45_yinxian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_45_yinxian.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_46_nanguo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_46_nanguo.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_47_weiqu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_47_weiqu.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_48_weiweiyixiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_48_weiweiyixiao.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_49_huanhu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_49_huanhu.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_4_liulei.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_4_liulei.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_50_xinsui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_50_xinsui.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_51_chigua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_51_chigua.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_52_hejiu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_52_hejiu.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_53_pu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_53_pu.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_54_hongyaowan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_54_hongyaowan.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_55_lvyaowan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_55_lvyaowan.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_56_dogexiaoku.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_56_dogexiaoku.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_57_dogehechi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_57_dogehechi.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_58_dogeyuanliangta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_58_dogeyuanliangta.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_59_erha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_59_erha.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_5_keai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_5_keai.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_60_kuan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_60_kuan.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_61_lvmao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_61_lvmao.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_62_huaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_62_huaji.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_63_liuhanhuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_63_liuhanhuaji.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_64_shounuehuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_64_shounuehuaji.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_65_coshuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_65_coshuaji.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_66_doujiyanhuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_66_doujiyanhuaji.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_67_mojinghuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_67_mojinghuaji.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_68.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_68.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_69.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_69.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_6_weixiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_6_weixiao.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_70.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_71.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_71.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_72.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_73.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_73.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_74.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_74.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_75.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_75.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_76.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_77.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_77.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_78.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_78.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_79.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_79.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_7_hehe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_7_hehe.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_80.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_81_naikezui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_81_naikezui.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_82_miaomiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_82_miaomiao.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_83_huoba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_83_huoba.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_84_baiyan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_84_baiyan.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_85.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_85.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_86.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_86.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_87.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_88.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_89.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_89.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_8_piezui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_8_piezui.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_90.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_91.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_91.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_92.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_92.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_93.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_93.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_94.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_94.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_95_erhading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_95_erhading.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_96_kuanlvmao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_96_kuanlvmao.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_97_haixiu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_97_haixiu.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_98_wunai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_98_wunai.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_99_zhoumei.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_99_zhoumei.png
--------------------------------------------------------------------------------
/assets/emojis/coolapk_emotion_9_se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/emojis/coolapk_emotion_9_se.png
--------------------------------------------------------------------------------
/assets/icon/icon-splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/icon/icon-splash.png
--------------------------------------------------------------------------------
/assets/icon/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/assets/icon/icon.png
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/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 | 12.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 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/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 Flutter
2 | import UIKit
3 |
4 | @main
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 | application.applicationSupportsShakeToEdit = false
12 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/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/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "background.png",
5 | "idiom" : "universal"
6 | },
7 | {
8 | "appearances" : [
9 | {
10 | "appearance" : "luminosity",
11 | "value" : "dark"
12 | }
13 | ],
14 | "filename" : "darkbackground.png",
15 | "idiom" : "universal"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "LaunchImage.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "LaunchImageDark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "LaunchImage@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "LaunchImageDark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "LaunchImage@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "LaunchImageDark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@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/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/lib/components/cards/chat_time_card.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ChatTimeCard extends StatelessWidget {
4 | const ChatTimeCard({super.key, required this.text});
5 |
6 | final String text;
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return Padding(
11 | padding: const EdgeInsets.all(12),
12 | child: Text(
13 | text,
14 | style: TextStyle(
15 | fontSize: 13,
16 | color: Theme.of(context).colorScheme.outline,
17 | ),
18 | textAlign: TextAlign.center,
19 | ),
20 | );
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/lib/components/cards/message_third_card.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | Widget messageThirdCard(
4 | BuildContext context,
5 | int backgroundColor,
6 | IconData icon,
7 | String title,
8 | int? badge,
9 | Function() onTap,
10 | ) {
11 | return Material(
12 | clipBehavior: Clip.hardEdge,
13 | borderRadius: const BorderRadius.all(Radius.circular(12)),
14 | color: Theme.of(context).colorScheme.onInverseSurface,
15 | child: InkWell(
16 | onTap: onTap,
17 | child: Padding(
18 | padding: const EdgeInsets.all(10),
19 | child: Stack(
20 | alignment: Alignment.center,
21 | children: [
22 | Row(
23 | children: [
24 | Container(
25 | width: 40,
26 | height: 40,
27 | alignment: Alignment.center,
28 | decoration: BoxDecoration(
29 | color: Color(backgroundColor),
30 | shape: BoxShape.circle,
31 | ),
32 | child: Icon(
33 | icon,
34 | color: Colors.white,
35 | ),
36 | ),
37 | const SizedBox(width: 10),
38 | Expanded(
39 | flex: 1,
40 | child: Text(
41 | title,
42 | maxLines: 1,
43 | overflow: TextOverflow.ellipsis,
44 | )),
45 | Icon(
46 | Icons.keyboard_arrow_right,
47 | color: Theme.of(context).colorScheme.outline,
48 | ),
49 | ],
50 | ),
51 | if (badge != null && badge > 0) Badge.count(count: badge)
52 | ],
53 | ),
54 | ),
55 | ),
56 | );
57 | }
58 |
--------------------------------------------------------------------------------
/lib/components/cards/search_history_card.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class SearchHistoryCard extends StatelessWidget {
4 | const SearchHistoryCard({
5 | super.key,
6 | required this.text,
7 | required this.onTap,
8 | required this.onLongPress,
9 | });
10 |
11 | final String text;
12 | final Function() onTap;
13 | final Function() onLongPress;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return InkWell(
18 | onTap: onTap,
19 | onLongPress: onLongPress,
20 | borderRadius: BorderRadius.circular(20),
21 | child: Ink(
22 | decoration: BoxDecoration(
23 | color: Theme.of(context).colorScheme.onInverseSurface,
24 | borderRadius: BorderRadius.circular(20),
25 | ),
26 | padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6),
27 | child: Text(
28 | text,
29 | maxLines: 1,
30 | overflow: TextOverflow.ellipsis,
31 | style: const TextStyle(height: 1),
32 | strutStyle: const StrutStyle(leading: 0, height: 1),
33 | ),
34 | ),
35 | );
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/lib/components/cards/text_card.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class TextCard extends StatelessWidget {
4 | const TextCard({
5 | super.key,
6 | required this.text,
7 | this.isMessage = false,
8 | this.isEndCard = false,
9 | this.isRefreshCard = false,
10 | });
11 |
12 | final String text;
13 | final bool isMessage;
14 | final bool isEndCard;
15 | final bool isRefreshCard;
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | return Container(
20 | width: double.infinity,
21 | height: isEndCard ? 80 : null,
22 | alignment: isEndCard ? Alignment.center : null,
23 | padding: const EdgeInsets.all(10),
24 | decoration: BoxDecoration(
25 | color: isMessage
26 | ? Theme.of(context).colorScheme.secondaryContainer
27 | : Theme.of(context).colorScheme.onInverseSurface,
28 | borderRadius: BorderRadius.circular(12),
29 | ),
30 | child: Text(
31 | text,
32 | textAlign: isRefreshCard || isEndCard ? TextAlign.center : null,
33 | style: TextStyle(
34 | color: isMessage
35 | ? Theme.of(context).colorScheme.onSecondaryContainer
36 | : Theme.of(context).colorScheme.outline,
37 | ),
38 | ),
39 | );
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/components/cards/title_card.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import '../../utils/utils.dart';
4 |
5 | class TitleCard extends StatelessWidget {
6 | const TitleCard({
7 | super.key,
8 | required this.title,
9 | required this.url,
10 | this.bottomPadding = 0,
11 | });
12 |
13 | final String title;
14 | final String url;
15 | final double bottomPadding;
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | return Padding(
20 | padding: EdgeInsets.only(left: 10, right: 10, bottom: bottomPadding),
21 | child: GestureDetector(
22 | onTap: () {
23 | if (url.isNotEmpty) {
24 | Utils.onOpenLink(url, title);
25 | }
26 | },
27 | child: Row(
28 | children: [
29 | Expanded(
30 | flex: 1,
31 | child: Text(
32 | title,
33 | style: const TextStyle(
34 | fontSize: 16,
35 | fontWeight: FontWeight.bold,
36 | ),
37 | ),
38 | ),
39 | if (url.isNotEmpty)
40 | Icon(
41 | Icons.keyboard_arrow_right_outlined,
42 | color: Theme.of(context).colorScheme.outline,
43 | ),
44 | ],
45 | ),
46 | ),
47 | );
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/lib/components/custom_toast.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class CustomToast extends StatelessWidget {
4 | const CustomToast({super.key, required this.msg});
5 |
6 | final String msg;
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return Container(
11 | margin:
12 | EdgeInsets.only(bottom: MediaQuery.of(context).padding.bottom + 30),
13 | padding: const EdgeInsets.symmetric(horizontal: 17, vertical: 10),
14 | decoration: BoxDecoration(
15 | color: Theme.of(context).colorScheme.primaryContainer,
16 | borderRadius: BorderRadius.circular(20),
17 | ),
18 | child: Text(
19 | msg,
20 | style: TextStyle(
21 | fontSize: 13,
22 | color: Theme.of(context).colorScheme.primary,
23 | ),
24 | ),
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/components/footer.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import '../logic/state/loading_state.dart';
4 |
5 | Widget footerWidget(LoadingState footerState, Function() onReload) {
6 | switch (footerState) {
7 | case Empty():
8 | return Container(
9 | height: 80,
10 | alignment: Alignment.center,
11 | padding: const EdgeInsets.all(10.0),
12 | child: const Text('END'),
13 | );
14 | case Error():
15 | return GestureDetector(
16 | onTap: onReload,
17 | child: Container(
18 | height: 80,
19 | alignment: Alignment.center,
20 | padding: const EdgeInsets.all(10.0),
21 | child: Text(footerState.errMsg),
22 | ),
23 | );
24 | default:
25 | return Container(
26 | height: 80,
27 | alignment: Alignment.center,
28 | padding: const EdgeInsets.all(10.0),
29 | child: const CircularProgressIndicator(),
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/components/icon_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class IconText extends StatelessWidget {
4 | const IconText({super.key, required this.icon, required this.text});
5 |
6 | final IconData icon;
7 | final String text;
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return Row(
12 | mainAxisSize: MainAxisSize.min,
13 | crossAxisAlignment: CrossAxisAlignment.center,
14 | children: [
15 | Icon(
16 | icon,
17 | size: MediaQuery.textScalerOf(context).scale(13),
18 | color: Theme.of(context).colorScheme.outline,
19 | ),
20 | Flexible(
21 | flex: 1,
22 | child: Text(
23 | text,
24 | maxLines: 1,
25 | overflow: TextOverflow.ellipsis,
26 | style: TextStyle(
27 | fontSize: 14,
28 | color: Theme.of(context).colorScheme.outline,
29 | ),
30 | ),
31 | ),
32 | ],
33 | );
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/components/like_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class LikeButton extends StatelessWidget {
4 | const LikeButton({
5 | super.key,
6 | required this.value,
7 | required this.icon,
8 | this.isLike = false,
9 | this.onClick,
10 | });
11 |
12 | final dynamic value;
13 | final IconData icon;
14 | final bool isLike;
15 | final Function()? onClick;
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | return TextButton(
20 | onPressed: onClick,
21 | style: TextButton.styleFrom(
22 | minimumSize: Size.zero,
23 | tapTargetSize: MaterialTapTargetSize.shrinkWrap,
24 | padding: const EdgeInsets.symmetric(horizontal: 12),
25 | visualDensity: const VisualDensity(
26 | horizontal: -4,
27 | vertical: -4,
28 | ),
29 | ),
30 | child: Row(
31 | mainAxisSize: MainAxisSize.min,
32 | children: [
33 | Icon(
34 | icon,
35 | color: isLike
36 | ? Theme.of(context).colorScheme.primary
37 | : Theme.of(context).colorScheme.outline,
38 | size: MediaQuery.textScalerOf(context).scale(14),
39 | ),
40 | const SizedBox(width: 2),
41 | Text(
42 | value.toString(),
43 | style: TextStyle(
44 | fontSize: 14,
45 | fontWeight: FontWeight.normal,
46 | color: isLike
47 | ? Theme.of(context).colorScheme.primary
48 | : Theme.of(context).colorScheme.outline,
49 | ),
50 | ),
51 | ],
52 | ),
53 | );
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/components/no_splash_factory.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class NoSplashFactory extends InteractiveInkFeatureFactory {
4 | @override
5 | InteractiveInkFeature create(
6 | {required MaterialInkController controller,
7 | required RenderBox referenceBox,
8 | required Offset position,
9 | required Color color,
10 | required TextDirection textDirection,
11 | bool containedInkWell = false,
12 | RectCallback? rectCallback,
13 | BorderRadius? borderRadius,
14 | ShapeBorder? customBorder,
15 | double? radius,
16 | VoidCallback? onRemoved}) {
17 | return _NoInteractiveInkFeature(
18 | controller: controller,
19 | referenceBox: referenceBox,
20 | color: color,
21 | onRemoved: onRemoved);
22 | }
23 | }
24 |
25 | class _NoInteractiveInkFeature extends InteractiveInkFeature {
26 | @override
27 | void paintFeature(Canvas canvas, Matrix4 transform) {}
28 | _NoInteractiveInkFeature({
29 | required super.controller,
30 | required super.referenceBox,
31 | required super.color,
32 | super.onRemoved,
33 | });
34 | }
35 |
--------------------------------------------------------------------------------
/lib/components/settings/drop_down_menu_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:get/get.dart';
3 |
4 | import '../../utils/storage_util.dart';
5 |
6 | class DropDownMenuItem extends StatefulWidget {
7 | const DropDownMenuItem({
8 | super.key,
9 | required this.icon,
10 | required this.title,
11 | required this.boxKey,
12 | required this.items,
13 | this.forceAppUpdate = false,
14 | });
15 |
16 | final IconData icon;
17 | final String title;
18 | final String boxKey;
19 | final List> items;
20 | final bool forceAppUpdate;
21 |
22 | @override
23 | State createState() => _DropDownMenuItemState();
24 | }
25 |
26 | class _DropDownMenuItemState extends State {
27 | late int value;
28 |
29 | @override
30 | void initState() {
31 | super.initState();
32 | value = GStorage.settings.get(widget.boxKey, defaultValue: 0);
33 | }
34 |
35 | @override
36 | Widget build(BuildContext context) {
37 | return ListTile(
38 | leading: Icon(widget.icon),
39 | title: Text(widget.title),
40 | trailing: DropdownButton(
41 | value: value,
42 | onChanged: (int? newValue) {
43 | if (newValue != null) {
44 | GStorage.settings.put(widget.boxKey, newValue);
45 | setState(() => value = newValue);
46 | if (widget.forceAppUpdate) {
47 | Get.forceAppUpdate();
48 | }
49 | }
50 | },
51 | items: widget.items,
52 | ),
53 | );
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/components/settings/item_title.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ItemTitle extends StatelessWidget {
4 | const ItemTitle({super.key, required this.title});
5 |
6 | final String title;
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return ListTile(
11 | title: Text(
12 | title,
13 | style: TextStyle(
14 | color: Theme.of(context).colorScheme.primary,
15 | ),
16 | ),
17 | );
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/components/settings/switch_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:get/get.dart';
3 |
4 | import '../../utils/storage_util.dart';
5 |
6 | class SwitchItem extends StatefulWidget {
7 | const SwitchItem({
8 | super.key,
9 | required this.icon,
10 | required this.title,
11 | required this.boxKey,
12 | required this.defaultValue,
13 | this.forceAppUpdate = false,
14 | });
15 |
16 | final IconData icon;
17 | final String title;
18 | final String boxKey;
19 | final bool defaultValue;
20 | final bool forceAppUpdate;
21 |
22 | @override
23 | State createState() => _SwitchItemState();
24 | }
25 |
26 | class _SwitchItemState extends State {
27 | late bool value;
28 |
29 | @override
30 | void initState() {
31 | super.initState();
32 | value =
33 | GStorage.settings.get(widget.boxKey, defaultValue: widget.defaultValue);
34 | }
35 |
36 | void onChanged(bool value) async {
37 | await GStorage.settings.put(widget.boxKey, value);
38 | if (widget.forceAppUpdate) {
39 | Get.forceAppUpdate();
40 | }
41 | setState(() => this.value = value);
42 | }
43 |
44 | @override
45 | Widget build(BuildContext context) {
46 | return ListTile(
47 | leading: Icon(widget.icon),
48 | title: Text(widget.title),
49 | trailing: Switch(
50 | value: value,
51 | onChanged: onChanged,
52 | ),
53 | onTap: () => onChanged(!value),
54 | );
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/lib/components/single_line_fitted_box.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class SingleLineFittedBox extends StatelessWidget {
4 | const SingleLineFittedBox({super.key, this.child});
5 | final Widget? child;
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | return LayoutBuilder(
10 | builder: (_, constraints) {
11 | return FittedBox(
12 | child: ConstrainedBox(
13 | constraints: constraints.copyWith(
14 | minWidth: constraints.maxWidth,
15 | maxWidth: double.infinity,
16 | //maxWidth: constraints.maxWidth
17 | ),
18 | child: child,
19 | ),
20 | );
21 | },
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/components/sliver_pinned_box_adapter.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/rendering.dart';
3 |
4 | class SliverPinnedBoxAdapter extends SingleChildRenderObjectWidget {
5 | const SliverPinnedBoxAdapter({
6 | super.key,
7 | required super.child,
8 | });
9 |
10 | @override
11 | RenderObject createRenderObject(BuildContext context) {
12 | return _RenderSliverPinnedBoxAdapter();
13 | }
14 | }
15 |
16 | class _RenderSliverPinnedBoxAdapter extends RenderSliverSingleBoxAdapter {
17 | _RenderSliverPinnedBoxAdapter();
18 | @override
19 | void performLayout() {
20 | if (child == null) {
21 | geometry = SliverGeometry.zero;
22 | return;
23 | }
24 |
25 | child?.layout(constraints.asBoxConstraints(), parentUsesSize: true);
26 | double childExtent;
27 | switch (constraints.axis) {
28 | case Axis.horizontal:
29 | childExtent = child?.size.width ?? 0;
30 | break;
31 | case Axis.vertical:
32 | childExtent = child?.size.height ?? 0;
33 | break;
34 | }
35 |
36 | final double paintedChildSize =
37 | calculatePaintOffset(constraints, from: 0.0, to: childExtent);
38 | final double cacheExtent =
39 | calculateCacheOffset(constraints, from: 0.0, to: childExtent);
40 |
41 | assert(paintedChildSize.isFinite);
42 | assert(paintedChildSize >= 0.0);
43 |
44 | geometry = SliverGeometry(
45 | scrollExtent: childExtent,
46 | paintExtent: paintedChildSize,
47 | cacheExtent: cacheExtent,
48 | maxPaintExtent: childExtent,
49 | hitTestExtent: childExtent,
50 | hasVisualOverflow: childExtent > constraints.remainingPaintExtent ||
51 | constraints.scrollOffset > 0.0,
52 | paintOrigin: constraints.overlap,
53 | visible: true,
54 | );
55 | }
56 |
57 | @override
58 | double childMainAxisPosition(RenderBox child) => constraints.overlap;
59 | }
60 |
--------------------------------------------------------------------------------
/lib/logic/model/app_info/app_info.dart:
--------------------------------------------------------------------------------
1 | import 'dart:typed_data';
2 |
3 | class AppInfo {
4 | Uint8List? icon;
5 | String appName;
6 | String packageName;
7 | String versionName;
8 | String versionCode;
9 | String lastUpdateTime;
10 |
11 | AppInfo({
12 | required this.icon,
13 | required this.appName,
14 | required this.packageName,
15 | required this.versionName,
16 | required this.versionCode,
17 | required this.lastUpdateTime,
18 | });
19 |
20 | factory AppInfo.create(dynamic data) {
21 | return AppInfo(
22 | icon: data['icon'],
23 | appName: data['appName'] ?? '',
24 | packageName: data['packageName'] ?? '',
25 | versionName: data['versionName'] ?? '0',
26 | versionCode: data['versionCode'] ?? '0',
27 | lastUpdateTime: data['lastUpdateTime'] ?? '0',
28 | );
29 | }
30 |
31 | static List parseList(dynamic apps) {
32 | if (apps == null || apps is! List || apps.isEmpty) return [];
33 | final List appInfoList =
34 | apps.map((app) => AppInfo.create(app)).toList();
35 | appInfoList.sort((a, b) => a.lastUpdateTime.compareTo(b.lastUpdateTime));
36 | return appInfoList.reversed.toList();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/logic/model/check_count/check_count.dart:
--------------------------------------------------------------------------------
1 | import 'datum.dart';
2 |
3 | class CheckCount {
4 | String? message;
5 | Datum? data;
6 |
7 | CheckCount({
8 | this.message,
9 | this.data,
10 | });
11 |
12 | factory CheckCount.fromJson(Map json) {
13 | return CheckCount(
14 | message: json['message'] as String?,
15 | data: json['data'] == null
16 | ? null
17 | : Datum.fromJson(json['data'] as Map),
18 | );
19 | }
20 |
21 | Map toJson() {
22 | return {
23 | 'message': message,
24 | 'data': data,
25 | };
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/logic/model/check_count/datum.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | class Datum {
4 | int? notification;
5 | @JsonKey(name: 'contacts_follow')
6 | int? contactsFollow;
7 | int? message;
8 | int? atme;
9 | int? atcommentme;
10 | int? commentme;
11 | int? feedlike;
12 | int? badge;
13 |
14 | Datum({
15 | this.notification,
16 | this.contactsFollow,
17 | this.message,
18 | this.atme,
19 | this.atcommentme,
20 | this.commentme,
21 | this.feedlike,
22 | this.badge,
23 | });
24 |
25 | factory Datum.fromJson(Map json) {
26 | return Datum(
27 | notification: (json['notification'] as num?)?.toInt(),
28 | contactsFollow: (json['contacts_follow'] as num?)?.toInt(),
29 | message: (json['message'] as num?)?.toInt(),
30 | atme: (json['atme'] as num?)?.toInt(),
31 | atcommentme: (json['atcommentme'] as num?)?.toInt(),
32 | commentme: (json['commentme'] as num?)?.toInt(),
33 | feedlike: (json['feedlike'] as num?)?.toInt(),
34 | badge: (json['badge'] as num?)?.toInt(),
35 | );
36 | }
37 |
38 | Map toJson() {
39 | return {
40 | 'notification': notification,
41 | 'contacts_follow': contactsFollow,
42 | 'message': message,
43 | 'atme': atme,
44 | 'atcommentme': atcommentme,
45 | 'commentme': commentme,
46 | 'feedlike': feedlike,
47 | 'badge': badge,
48 | };
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/logic/model/check_info/check.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | import 'data.dart';
4 |
5 | part 'check.g.dart';
6 |
7 | @JsonSerializable()
8 | class CheckInfo {
9 | String? message;
10 | Data? data;
11 |
12 | CheckInfo({
13 | this.message,
14 | this.data,
15 | });
16 |
17 | factory CheckInfo.fromJson(Map json) =>
18 | _$CheckInfoFromJson(json);
19 |
20 | Map toJson() => _$CheckInfoToJson(this);
21 | }
22 |
--------------------------------------------------------------------------------
/lib/logic/model/check_info/check.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'check.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | CheckInfo _$CheckInfoFromJson(Map json) => CheckInfo(
10 | message: json['message'] as String?,
11 | data: json['data'] == null
12 | ? null
13 | : Data.fromJson(json['data'] as Map),
14 | );
15 |
16 | Map _$CheckInfoToJson(CheckInfo instance) => {
17 | 'message': instance.message,
18 | 'data': instance.data,
19 | };
20 |
--------------------------------------------------------------------------------
/lib/logic/model/check_info/data.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | import 'notify_count.dart';
4 |
5 | part 'data.g.dart';
6 |
7 | @JsonSerializable()
8 | class Data {
9 | String? uid;
10 | String? username;
11 | String? token;
12 | // String? refreshToken;
13 | // int? level;
14 | // @JsonKey(name: 'user_type')
15 | // int? userType;
16 | // int? adminType;
17 | // int? subAdmin;
18 | // String? userAvatar;
19 | NotifyCount? notifyCount;
20 | // String? pushId;
21 | // SystemConfig? systemConfig;
22 |
23 | Data({
24 | this.uid,
25 | this.username,
26 | this.token,
27 | // this.refreshToken,
28 | // this.level,
29 | // this.userType,
30 | // this.adminType,
31 | // this.subAdmin,
32 | // this.userAvatar,
33 | this.notifyCount,
34 | // this.pushId,
35 | // this.systemConfig,
36 | });
37 |
38 | factory Data.fromJson(Map json) => _$DataFromJson(json);
39 |
40 | Map toJson() => _$DataToJson(this);
41 | }
42 |
--------------------------------------------------------------------------------
/lib/logic/model/check_info/data.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'data.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | Data _$DataFromJson(Map json) => Data(
10 | uid: json['uid'] as String?,
11 | username: json['username'] as String?,
12 | token: json['token'] as String?,
13 | // refreshToken: json['refreshToken'] as String?,
14 | // level: (json['level'] as num?)?.toInt(),
15 | // userType: (json['user_type'] as num?)?.toInt(),
16 | // adminType: (json['adminType'] as num?)?.toInt(),
17 | // subAdmin: (json['subAdmin'] as num?)?.toInt(),
18 | // userAvatar: json['userAvatar'] as String?,
19 | notifyCount: json['notifyCount'] == null
20 | ? null
21 | : NotifyCount.fromJson(json['notifyCount'] as Map),
22 | // pushId: json['pushId'] as String?,
23 | // systemConfig: json['systemConfig'] == null
24 | // ? null
25 | // : SystemConfig.fromJson(json['systemConfig'] as Map),
26 | );
27 |
28 | Map _$DataToJson(Data instance) => {
29 | 'uid': instance.uid,
30 | 'username': instance.username,
31 | 'token': instance.token,
32 | // 'refreshToken': instance.refreshToken,
33 | // 'level': instance.level,
34 | // 'user_type': instance.userType,
35 | // 'adminType': instance.adminType,
36 | // 'subAdmin': instance.subAdmin,
37 | // 'userAvatar': instance.userAvatar,
38 | 'notifyCount': instance.notifyCount,
39 | // 'pushId': instance.pushId,
40 | // 'systemConfig': instance.systemConfig,
41 | };
42 |
--------------------------------------------------------------------------------
/lib/logic/model/check_info/notify_count.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'notify_count.g.dart';
4 |
5 | @JsonSerializable()
6 | class NotifyCount {
7 | // int? cloudInstall;
8 | int? notification;
9 | @JsonKey(name: 'contacts_follow')
10 | int? contactsFollow;
11 | int? message;
12 | int? atme;
13 | int? atcommentme;
14 | int? commentme;
15 | int? feedlike;
16 | int? badge;
17 | // int? dateline;
18 |
19 | NotifyCount({
20 | // this.cloudInstall,
21 | this.notification,
22 | this.contactsFollow,
23 | this.message,
24 | this.atme,
25 | this.atcommentme,
26 | this.commentme,
27 | this.feedlike,
28 | this.badge,
29 | // this.dateline,
30 | });
31 |
32 | factory NotifyCount.fromJson(Map json) {
33 | return _$NotifyCountFromJson(json);
34 | }
35 |
36 | Map toJson() => _$NotifyCountToJson(this);
37 | }
38 |
--------------------------------------------------------------------------------
/lib/logic/model/check_info/notify_count.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'notify_count.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | NotifyCount _$NotifyCountFromJson(Map json) => NotifyCount(
10 | // cloudInstall: (json['cloudInstall'] as num?)?.toInt(),
11 | notification: (json['notification'] as num?)?.toInt(),
12 | contactsFollow: (json['contacts_follow'] as num?)?.toInt(),
13 | message: (json['message'] as num?)?.toInt(),
14 | atme: (json['atme'] as num?)?.toInt(),
15 | atcommentme: (json['atcommentme'] as num?)?.toInt(),
16 | commentme: (json['commentme'] as num?)?.toInt(),
17 | feedlike: (json['feedlike'] as num?)?.toInt(),
18 | badge: (json['badge'] as num?)?.toInt(),
19 | // dateline: (json['dateline'] as num?)?.toInt(),
20 | );
21 |
22 | Map _$NotifyCountToJson(NotifyCount instance) =>
23 | {
24 | // 'cloudInstall': instance.cloudInstall,
25 | 'notification': instance.notification,
26 | 'contacts_follow': instance.contactsFollow,
27 | 'message': instance.message,
28 | 'atme': instance.atme,
29 | 'atcommentme': instance.atcommentme,
30 | 'commentme': instance.commentme,
31 | 'feedlike': instance.feedlike,
32 | 'badge': instance.badge,
33 | // 'dateline': instance.dateline,
34 | };
35 |
--------------------------------------------------------------------------------
/lib/logic/model/check_info/system_config.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'system_config.g.dart';
4 |
5 | @JsonSerializable()
6 | class SystemConfig {
7 | @JsonKey(name: 'system_config')
8 | String? systemConfig;
9 | @JsonKey(name: 'spam_word_config')
10 | String? spamWordConfig;
11 |
12 | SystemConfig({this.systemConfig, this.spamWordConfig});
13 |
14 | factory SystemConfig.fromJson(Map json) {
15 | return _$SystemConfigFromJson(json);
16 | }
17 |
18 | Map toJson() => _$SystemConfigToJson(this);
19 | }
20 |
--------------------------------------------------------------------------------
/lib/logic/model/check_info/system_config.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'system_config.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | SystemConfig _$SystemConfigFromJson(Map json) => SystemConfig(
10 | systemConfig: json['system_config'] as String?,
11 | spamWordConfig: json['spam_word_config'] as String?,
12 | );
13 |
14 | Map _$SystemConfigToJson(SystemConfig instance) =>
15 | {
16 | 'system_config': instance.systemConfig,
17 | 'spam_word_config': instance.spamWordConfig,
18 | };
19 |
--------------------------------------------------------------------------------
/lib/logic/model/check_update/check_update.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | import 'datum.dart';
4 |
5 | part 'check_update.g.dart';
6 |
7 | @JsonSerializable()
8 | class CheckUpdate {
9 | String? message;
10 | List? data;
11 |
12 | CheckUpdate({
13 | this.message,
14 | this.data,
15 | });
16 |
17 | factory CheckUpdate.fromJson(Map json) {
18 | return _$CheckUpdateFromJson(json);
19 | }
20 |
21 | Map toJson() => _$CheckUpdateToJson(this);
22 | }
23 |
--------------------------------------------------------------------------------
/lib/logic/model/check_update/check_update.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'check_update.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | CheckUpdate _$CheckUpdateFromJson(Map json) => CheckUpdate(
10 | message: json['message'] as String?,
11 | data: (json['data'] as List?)
12 | ?.map((e) => Datum.fromJson(e as Map))
13 | .toList(),
14 | );
15 |
16 | Map _$CheckUpdateToJson(CheckUpdate instance) =>
17 | {
18 | 'message': instance.message,
19 | 'data': instance.data,
20 | };
21 |
--------------------------------------------------------------------------------
/lib/logic/model/fav_history/fav_history.dart:
--------------------------------------------------------------------------------
1 | import 'package:hive/hive.dart';
2 |
3 | part 'fav_history.g.dart';
4 |
5 | @HiveType(typeId: 0)
6 | class FavHistoryItem {
7 | FavHistoryItem({
8 | this.id,
9 | this.uid,
10 | this.username,
11 | this.userAvatar,
12 | this.message,
13 | this.device,
14 | this.dateline,
15 | this.time,
16 | });
17 |
18 | @HiveField(0)
19 | String? id;
20 | @HiveField(1)
21 | String? uid;
22 | @HiveField(2)
23 | String? username;
24 | @HiveField(3)
25 | String? userAvatar;
26 | @HiveField(4)
27 | String? message;
28 | @HiveField(5)
29 | String? device;
30 | @HiveField(6)
31 | String? dateline;
32 | @HiveField(7)
33 | int? time;
34 |
35 | FavHistoryItem.fromJson(Map json) {
36 | id = json['id'];
37 | uid = json['uid'];
38 | username = json['username'];
39 | userAvatar = json['userAvatar'];
40 | message = json['message'];
41 | device = json['device'];
42 | dateline = json['dateline'];
43 | time = json['time'];
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/logic/model/fav_history/fav_history.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'fav_history.dart';
4 |
5 | // **************************************************************************
6 | // TypeAdapterGenerator
7 | // **************************************************************************
8 |
9 | class FavHistoryItemAdapter extends TypeAdapter {
10 | @override
11 | final int typeId = 0;
12 |
13 | @override
14 | FavHistoryItem read(BinaryReader reader) {
15 | final numOfFields = reader.readByte();
16 | final fields = {
17 | for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
18 | };
19 | return FavHistoryItem(
20 | id: fields[0] as String?,
21 | uid: fields[1] as String?,
22 | username: fields[2] as String?,
23 | userAvatar: fields[3] as String?,
24 | message: fields[4] as String?,
25 | device: fields[5] as String?,
26 | dateline: fields[6] as String?,
27 | time: (fields[7] as num?)?.toInt(),
28 | );
29 | }
30 |
31 | @override
32 | void write(BinaryWriter writer, FavHistoryItem obj) {
33 | writer
34 | ..writeByte(8)
35 | ..writeByte(0)
36 | ..write(obj.id)
37 | ..writeByte(1)
38 | ..write(obj.uid)
39 | ..writeByte(2)
40 | ..write(obj.username)
41 | ..writeByte(3)
42 | ..write(obj.userAvatar)
43 | ..writeByte(4)
44 | ..write(obj.message)
45 | ..writeByte(5)
46 | ..write(obj.device)
47 | ..writeByte(6)
48 | ..write(obj.dateline)
49 | ..writeByte(7)
50 | ..write(obj.time);
51 | }
52 |
53 | @override
54 | int get hashCode => typeId.hashCode;
55 |
56 | @override
57 | bool operator ==(Object other) =>
58 | identical(this, other) ||
59 | other is FavHistoryItemAdapter &&
60 | runtimeType == other.runtimeType &&
61 | typeId == other.typeId;
62 | }
63 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/data_list_model.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | import 'datum.dart';
4 |
5 | part 'data_list_model.g.dart';
6 |
7 | @JsonSerializable()
8 | class DataListModel {
9 | String? message;
10 | List? data;
11 |
12 | DataListModel({
13 | this.message,
14 | this.data,
15 | });
16 |
17 | factory DataListModel.fromJson(Map json) =>
18 | _$DataListModelFromJson(json);
19 |
20 | Map toJson() => _$DataListModelToJson(this);
21 | }
22 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/data_list_model.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'data_list_model.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | DataListModel _$DataListModelFromJson(Map json) =>
10 | DataListModel(
11 | message: json['message'] as String?,
12 | data: (json['data'] as List?)
13 | ?.map((e) => Datum.fromJson(e as Map))
14 | .toList(),
15 | );
16 |
17 | Map _$DataListModelToJson(DataListModel instance) =>
18 | {
19 | 'message': instance.message,
20 | 'data': instance.data,
21 | };
22 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/data_model.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | import 'datum.dart';
4 |
5 | part 'data_model.g.dart';
6 |
7 | @JsonSerializable()
8 | class DataModel {
9 | String? message;
10 | dynamic messageStatus;
11 | Datum? data;
12 |
13 | DataModel({
14 | this.message,
15 | this.messageStatus,
16 | this.data,
17 | });
18 |
19 | factory DataModel.fromJson(Map json) =>
20 | _$DataModelFromJson(json);
21 |
22 | Map toJson() => _$DataModelToJson(this);
23 | }
24 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/data_model.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'data_model.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | DataModel _$DataModelFromJson(Map json) => DataModel(
10 | message: json['message'] as String?,
11 | messageStatus: json['messageStatus'],
12 | data: json['data'] == null
13 | ? null
14 | : Datum.fromJson(json['data'] as Map),
15 | );
16 |
17 | Map _$DataModelToJson(DataModel instance) => {
18 | 'message': instance.message,
19 | 'messageStatus': instance.messageStatus,
20 | 'data': instance.data,
21 | };
22 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/entity.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'entity.g.dart';
4 |
5 | @JsonSerializable()
6 | class Entity {
7 | String? entityType;
8 | String? title;
9 | String? url;
10 | String? pic;
11 | String? logo;
12 | String? userAvatar;
13 | String? username;
14 |
15 | Entity({
16 | this.entityType,
17 | this.title,
18 | this.url,
19 | this.pic,
20 | this.logo,
21 | this.userAvatar,
22 | this.username,
23 | });
24 |
25 | factory Entity.fromJson(Map json) {
26 | return _$EntityFromJson(json);
27 | }
28 |
29 | Map toJson() => _$EntityToJson(this);
30 | }
31 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/entity.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'entity.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | Entity _$EntityFromJson(Map json) => Entity(
10 | entityType: json['entityType'] as String?,
11 | title: json['title']?.toString(),
12 | url: json['url'] as String?,
13 | pic: json['pic'] as String?,
14 | logo: json['logo'] as String?,
15 | userAvatar: json['userAvatar'] as String?,
16 | username: json['username'] as String?,
17 | );
18 |
19 | Map _$EntityToJson(Entity instance) => {
20 | 'entityType': instance.entityType,
21 | 'title': instance.title,
22 | 'url': instance.url,
23 | 'pic': instance.pic,
24 | 'logo': instance.logo,
25 | 'userAvatar': instance.userAvatar,
26 | 'username': instance.username,
27 | };
28 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/extra_data_arr.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'extra_data_arr.g.dart';
4 |
5 | @JsonSerializable()
6 | class ExtraDataArr {
7 | // @JsonKey(name: 'cardDividerTopVX')
8 | // String? cardDividerTopVx;
9 | // @JsonKey(name: 'cardDividerBottomVX')
10 | // String? cardDividerBottomVx;
11 | // String? viewBackgroundStyle;
12 | // String? info;
13 | // int? cardId;
14 | String? pageTitle;
15 | String? cardPageName;
16 | // int? cardDividerBottom;
17 |
18 | ExtraDataArr({
19 | // this.cardDividerTopVx,
20 | // this.cardDividerBottomVx,
21 | // this.viewBackgroundStyle,
22 | // this.info,
23 | // this.cardId,
24 | this.pageTitle,
25 | this.cardPageName,
26 | // this.cardDividerBottom,
27 | });
28 |
29 | factory ExtraDataArr.fromJson(Map json) {
30 | return _$ExtraDataArrFromJson(json);
31 | }
32 |
33 | Map toJson() => _$ExtraDataArrToJson(this);
34 | }
35 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/extra_data_arr.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'extra_data_arr.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | ExtraDataArr _$ExtraDataArrFromJson(Map json) => ExtraDataArr(
10 | // cardDividerTopVx: json['cardDividerTopVX'] as String?,
11 | // cardDividerBottomVx: json['cardDividerBottomVX'] as String?,
12 | // viewBackgroundStyle: json['viewBackgroundStyle'] as String?,
13 | // info: json['info'] as String?,
14 | // cardId: (json['cardId'] as num?)?.toInt(),
15 | pageTitle: json['pageTitle'] as String?,
16 | cardPageName: json['cardPageName'] as String?,
17 | // cardDividerBottom: (json['cardDividerBottom'] as num?)?.toInt(),
18 | );
19 |
20 | Map _$ExtraDataArrToJson(ExtraDataArr instance) =>
21 | {
22 | // 'cardDividerTopVX': instance.cardDividerTopVx,
23 | // 'cardDividerBottomVX': instance.cardDividerBottomVx,
24 | // 'viewBackgroundStyle': instance.viewBackgroundStyle,
25 | // 'info': instance.info,
26 | // 'cardId': instance.cardId,
27 | 'pageTitle': instance.pageTitle,
28 | 'cardPageName': instance.cardPageName,
29 | // 'cardDividerBottom': instance.cardDividerBottom,
30 | };
31 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/relation_row.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'relation_row.g.dart';
4 |
5 | @JsonSerializable()
6 | class RelationRow {
7 | dynamic id;
8 | String? logo;
9 | String? title;
10 | String? url;
11 | String? entityType;
12 | // @JsonKey(name: 'relation_addition_logo')
13 | // String? relationAdditionLogo;
14 | // @JsonKey(name: 'relation_addition_title')
15 | // String? relationAdditionTitle;
16 |
17 | RelationRow({
18 | this.id,
19 | this.logo,
20 | this.title,
21 | this.url,
22 | this.entityType,
23 | // this.relationAdditionLogo,
24 | // this.relationAdditionTitle,
25 | });
26 |
27 | factory RelationRow.fromJson(Map json) {
28 | return _$RelationRowFromJson(json);
29 | }
30 |
31 | Map toJson() => _$RelationRowToJson(this);
32 | }
33 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/relation_row.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'relation_row.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | RelationRow _$RelationRowFromJson(Map json) => RelationRow(
10 | id: json['id'],
11 | logo: json['logo'] as String?,
12 | title: json['title'] as String?,
13 | url: json['url'] as String?,
14 | entityType: json['entityType'] as String?,
15 | );
16 |
17 | Map _$RelationRowToJson(RelationRow instance) =>
18 | {
19 | 'id': instance.id,
20 | 'logo': instance.logo,
21 | 'title': instance.title,
22 | 'url': instance.url,
23 | 'entityType': instance.entityType,
24 | };
25 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/tab_list.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'tab_list.g.dart';
4 |
5 | @JsonSerializable()
6 | class TabList {
7 | String? title;
8 | String? url;
9 | @JsonKey(name: 'page_name')
10 | String? pageName;
11 |
12 | TabList({
13 | this.title,
14 | this.url,
15 | this.pageName,
16 | });
17 |
18 | factory TabList.fromJson(Map json) {
19 | return _$TabListFromJson(json);
20 | }
21 |
22 | Map toJson() => _$TabListToJson(this);
23 | }
24 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/tab_list.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'tab_list.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | TabList _$TabListFromJson(Map json) => TabList(
10 | title: json['title'] as String?,
11 | url: json['url'] as String?,
12 | pageName: json['page_name'] as String?,
13 | );
14 |
15 | Map _$TabListToJson(TabList instance) => {
16 | 'title': instance.title,
17 | 'url': instance.url,
18 | 'page_name': instance.pageName,
19 | };
20 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/target_row.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'target_row.g.dart';
4 |
5 | @JsonSerializable()
6 | class TargetRow {
7 | dynamic id;
8 | String? logo;
9 | String? title;
10 | String? url;
11 | String? entityType;
12 | // @JsonKey(name: 'star_total_count')
13 | // int? starTotalCount;
14 | // @JsonKey(name: 'star_average_score')
15 | // int? starAverageScore;
16 | // int? isFollow;
17 | String? targetType;
18 | // @JsonKey(name: 'relation_addition_logo')
19 | // String? relationAdditionLogo;
20 | // @JsonKey(name: 'relation_addition_title')
21 | // String? relationAdditionTitle;
22 | // String? subTitle;
23 |
24 | TargetRow({
25 | this.id,
26 | this.logo,
27 | this.title,
28 | this.url,
29 | this.entityType,
30 | // this.starTotalCount,
31 | // this.starAverageScore,
32 | // this.isFollow,
33 | this.targetType,
34 | // this.relationAdditionLogo,
35 | // this.relationAdditionTitle,
36 | // this.subTitle,
37 | });
38 |
39 | factory TargetRow.fromJson(Map json) {
40 | return _$TargetRowFromJson(json);
41 | }
42 |
43 | Map toJson() => _$TargetRowToJson(this);
44 | }
45 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/target_row.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'target_row.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | TargetRow _$TargetRowFromJson(Map json) => TargetRow(
10 | id: json['id'],
11 | logo: json['logo'] as String?,
12 | title: json['title'] as String?,
13 | url: json['url'] as String?,
14 | entityType: json['entityType'] as String?,
15 | targetType: json['targetType'] as String?,
16 | );
17 |
18 | Map _$TargetRowToJson(TargetRow instance) => {
19 | 'id': instance.id,
20 | 'logo': instance.logo,
21 | 'title': instance.title,
22 | 'url': instance.url,
23 | 'entityType': instance.entityType,
24 | 'targetType': instance.targetType,
25 | };
26 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/user_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'user_action.g.dart';
4 |
5 | @JsonSerializable()
6 | class UserAction {
7 | int? like;
8 | int? follow;
9 |
10 | UserAction({
11 | this.like,
12 | this.follow,
13 | });
14 |
15 | factory UserAction.fromJson(Map json) {
16 | return _$UserActionFromJson(json);
17 | }
18 |
19 | Map toJson() => _$UserActionToJson(this);
20 | }
21 |
--------------------------------------------------------------------------------
/lib/logic/model/feed/user_action.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'user_action.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | UserAction _$UserActionFromJson(Map json) => UserAction(
10 | like: (json['like'] as num?)?.toInt(),
11 | follow: (json['follow'] as num?)?.toInt(),
12 | );
13 |
14 | Map _$UserActionToJson(UserAction instance) =>
15 | {
16 | 'like': instance.like,
17 | 'follow': instance.follow,
18 | };
19 |
--------------------------------------------------------------------------------
/lib/logic/model/feed_article/feed_article.dart:
--------------------------------------------------------------------------------
1 | class FeedArticle {
2 | String? type;
3 | String? message;
4 | String? url;
5 | String? description;
6 | String? title;
7 | String? subTitle;
8 | String? logo;
9 |
10 | FeedArticle({
11 | this.type,
12 | this.message,
13 | this.url,
14 | this.description,
15 | this.title,
16 | this.subTitle,
17 | this.logo,
18 | });
19 |
20 | factory FeedArticle.fromJson(Map json) {
21 | return FeedArticle(
22 | type: json['type'] as String?,
23 | message: json['message'] as String?,
24 | url: json['url'] as String?,
25 | description: json['description'] as String?,
26 | title: json['title'] as String?,
27 | subTitle: json['subTitle'] as String?,
28 | logo: json['logo'] as String?,
29 | );
30 | }
31 |
32 | Map toJson() {
33 | return {
34 | 'type': type,
35 | 'message': message,
36 | 'url': url,
37 | 'description': description,
38 | 'title': title,
39 | 'subTitle': subTitle,
40 | 'logo': logo,
41 | };
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/logic/model/login/login_response.dart:
--------------------------------------------------------------------------------
1 | class LoginResponse {
2 | int? status;
3 | String? message;
4 | dynamic messageStatus;
5 | int? uid;
6 | String? username;
7 | String? token;
8 | dynamic data;
9 |
10 | LoginResponse({
11 | this.status,
12 | this.message,
13 | this.messageStatus,
14 | this.uid,
15 | this.username,
16 | this.token,
17 | this.data,
18 | });
19 |
20 | factory LoginResponse.fromJson(Map json) {
21 | return LoginResponse(
22 | status: (json['status'] as num?)?.toInt(),
23 | message: json['message'] as String?,
24 | messageStatus: json['messageStatus'],
25 | uid: (json['uid'] as num?)?.toInt(),
26 | username: json['username'] as String?,
27 | token: json['token'] as String?,
28 | data: json['data'],
29 | );
30 | }
31 |
32 | Map toJson() {
33 | return {
34 | 'status': status,
35 | 'message': message,
36 | 'messageStatus': messageStatus,
37 | 'uid': uid,
38 | 'username': username,
39 | 'token': token,
40 | 'data': data,
41 | };
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/logic/model/oss_upload/datum.dart:
--------------------------------------------------------------------------------
1 | import 'file_info.dart';
2 | import 'upload_prepare_info.dart';
3 |
4 | class OssDatum {
5 | List? fileInfo;
6 | UploadPrepareInfo? uploadPrepareInfo;
7 |
8 | OssDatum({
9 | this.fileInfo,
10 | this.uploadPrepareInfo,
11 | });
12 |
13 | factory OssDatum.fromJson(Map json) {
14 | return OssDatum(
15 | fileInfo: (json['fileInfo'] as List?)
16 | ?.map((e) => FileInfo.fromJson(e as Map))
17 | .toList(),
18 | uploadPrepareInfo: json['uploadPrepareInfo'] == null
19 | ? null
20 | : UploadPrepareInfo.fromJson(
21 | json['uploadPrepareInfo'] as Map),
22 | );
23 | }
24 |
25 | Map toJson() {
26 | return {
27 | 'fileInfo': fileInfo,
28 | 'uploadPrepareInfo': uploadPrepareInfo,
29 | };
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/logic/model/oss_upload/file_info.dart:
--------------------------------------------------------------------------------
1 | class FileInfo {
2 | String? name;
3 | String? resolution;
4 | String? md5;
5 | String? url;
6 | String? uploadFileName;
7 |
8 | FileInfo({
9 | this.name,
10 | this.resolution,
11 | this.md5,
12 | this.url,
13 | this.uploadFileName,
14 | });
15 |
16 | factory FileInfo.fromJson(Map json) {
17 | return FileInfo(
18 | name: json['name'] as String?,
19 | resolution: json['resolution'] as String?,
20 | md5: json['md5'] as String?,
21 | url: json['url'] as String?,
22 | uploadFileName: json['uploadFileName'] as String?,
23 | );
24 | }
25 |
26 | Map toJson() {
27 | return {
28 | 'name': name,
29 | 'resolution': resolution,
30 | 'md5': md5,
31 | 'url': url,
32 | 'uploadFileName': uploadFileName,
33 | };
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/logic/model/oss_upload/oss_upload_model.dart:
--------------------------------------------------------------------------------
1 | class OssUploadModel {
2 | String name;
3 | String resolution;
4 | String md5;
5 |
6 | OssUploadModel({
7 | required this.name,
8 | required this.resolution,
9 | required this.md5,
10 | });
11 |
12 | factory OssUploadModel.fromJson(Map json) {
13 | return OssUploadModel(
14 | name: json['name'] as String,
15 | resolution: json['resolution'] as String,
16 | md5: json['md5'] as String,
17 | );
18 | }
19 |
20 | Map toJson() {
21 | return {
22 | 'name': name,
23 | 'resolution': resolution,
24 | 'md5': md5,
25 | };
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/logic/model/oss_upload/oss_upload_response.dart:
--------------------------------------------------------------------------------
1 | import 'datum.dart';
2 |
3 | class OssUploadResponse {
4 | String? message;
5 | OssDatum? data;
6 |
7 | OssUploadResponse({
8 | this.message,
9 | this.data,
10 | });
11 |
12 | factory OssUploadResponse.fromJson(Map json) {
13 | return OssUploadResponse(
14 | message: json['message'] as String?,
15 | data: json['data'] == null
16 | ? null
17 | : OssDatum.fromJson(json['data'] as Map),
18 | );
19 | }
20 |
21 | Map toJson() {
22 | return {
23 | 'message': message,
24 | 'data': data,
25 | };
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/logic/model/oss_upload/upload_prepare_info.dart:
--------------------------------------------------------------------------------
1 | class UploadPrepareInfo {
2 | String? accessKeySecret;
3 | String? accessKeyId;
4 | String? securityToken;
5 | String? expiration;
6 | String? uploadImagePrefix;
7 | String? endPoint;
8 | String? bucket;
9 | String? callbackUrl;
10 |
11 | UploadPrepareInfo({
12 | this.accessKeySecret,
13 | this.accessKeyId,
14 | this.securityToken,
15 | this.expiration,
16 | this.uploadImagePrefix,
17 | this.endPoint,
18 | this.bucket,
19 | this.callbackUrl,
20 | });
21 |
22 | factory UploadPrepareInfo.fromJson(Map json) {
23 | return UploadPrepareInfo(
24 | accessKeySecret: json['accessKeySecret'] as String?,
25 | accessKeyId: json['accessKeyId'] as String?,
26 | securityToken: json['securityToken'] as String?,
27 | expiration: json['expiration'] as String?,
28 | uploadImagePrefix: json['uploadImagePrefix'] as String?,
29 | endPoint: json['endPoint'] as String?,
30 | bucket: json['bucket'] as String?,
31 | callbackUrl: json['callbackUrl'] as String?,
32 | );
33 | }
34 |
35 | Map toJson() {
36 | return {
37 | 'accessKeySecret': accessKeySecret,
38 | 'accessKeyId': accessKeyId,
39 | 'securityToken': securityToken,
40 | 'expiration': expiration,
41 | 'uploadImagePrefix': uploadImagePrefix,
42 | 'endPoint': endPoint,
43 | 'bucket': bucket,
44 | 'callbackUrl': callbackUrl,
45 | };
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/lib/logic/network/request.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'package:dio/dio.dart';
3 |
4 | import '../../logic/network/interceptor.dart';
5 |
6 | class Request {
7 | static final Request _instance = Request._internal();
8 | static late final Dio dio;
9 | factory Request() => _instance;
10 |
11 | Request._internal() {
12 | dio = Dio()
13 | ..options.connectTimeout = const Duration(milliseconds: 5000)
14 | ..options.receiveTimeout = const Duration(milliseconds: 5000)
15 | ..interceptors.add(ApiInterceptor());
16 | }
17 |
18 | Future> get(
19 | url, {
20 | Map? queryParameters,
21 | Options? options,
22 | CancelToken? cancelToken,
23 | extra,
24 | }) async {
25 | return await dio.get(
26 | url,
27 | queryParameters: queryParameters,
28 | options: options,
29 | cancelToken: cancelToken,
30 | );
31 | }
32 |
33 | Future> post(
34 | url, {
35 | Object? data,
36 | Map? queryParameters,
37 | Options? options,
38 | CancelToken? cancelToken,
39 | extra,
40 | }) async {
41 | return await dio.post(
42 | url,
43 | data: data,
44 | queryParameters: queryParameters,
45 | options: options,
46 | cancelToken: cancelToken,
47 | );
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/lib/logic/state/loading_state.dart:
--------------------------------------------------------------------------------
1 | abstract class LoadingState {
2 | const LoadingState();
3 |
4 | factory LoadingState.loading() = Loading;
5 | factory LoadingState.empty() = Empty;
6 | factory LoadingState.success(T response) = Success;
7 | factory LoadingState.error(String errMsg) = Error;
8 | }
9 |
10 | class Loading extends LoadingState {
11 | const Loading();
12 | }
13 |
14 | class Empty extends LoadingState {
15 | const Empty();
16 | }
17 |
18 | class Success extends LoadingState {
19 | final T response;
20 | const Success(this.response);
21 | }
22 |
23 | class Error extends LoadingState {
24 | final String errMsg;
25 | const Error(this.errMsg);
26 | }
27 |
--------------------------------------------------------------------------------
/lib/pages/app/app_content_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../logic/network/network_repo.dart';
2 | import '../../logic/state/loading_state.dart';
3 | import '../../pages/app/app_page.dart' show AppType;
4 | import '../../pages/common/common_controller.dart';
5 |
6 | class AppContentController extends CommonController {
7 | AppContentController({
8 | required this.appType,
9 | required this.packageName,
10 | required this.url,
11 | required this.title,
12 | });
13 |
14 | final AppType appType;
15 | final String packageName;
16 | final String url;
17 | final String title;
18 |
19 | @override
20 | Future customGetData() {
21 | return NetworkRepo.getDataList(
22 | url: url,
23 | title: title,
24 | subTitle: '',
25 | firstItem: firstItem,
26 | lastItem: lastItem,
27 | page: page,
28 | );
29 | }
30 |
31 | @override
32 | void onInit() {
33 | super.onInit();
34 | onGetData();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/pages/blacklist/black_list_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
2 | import 'package:get/get.dart';
3 | import 'package:hive/hive.dart';
4 |
5 | import '../../pages/blacklist/black_list_page.dart' show BlackListType;
6 | import '../../utils/extensions.dart';
7 | import '../../utils/storage_util.dart';
8 |
9 | class BlackListController extends GetxController {
10 | BlackListController({required this.type});
11 | final BlackListType type;
12 |
13 | late final String key = type == BlackListType.user
14 | ? BlackListBoxKey.userBlackList
15 | : BlackListBoxKey.topicBlackList;
16 | late final Box blackList = GStorage.blackList;
17 | RxList dataList = [].obs;
18 |
19 | @override
20 | void onInit() {
21 | super.onInit();
22 | _getData();
23 | }
24 |
25 | Future _getData() async {
26 | dataList.value = blackList.get(key, defaultValue: []);
27 | }
28 |
29 | void handleData(String value, [bool isDelete = false]) {
30 | if (!isDelete && dataList.contains(value)) {
31 | SmartDialog.showToast('已存在');
32 | return;
33 | }
34 | if (isDelete) {
35 | dataList.value = dataList.where((data) => data != value).toList();
36 | } else {
37 | dataList.value = [value] + dataList;
38 | }
39 | blackList.put(key, dataList);
40 | }
41 |
42 | void clearAll() {
43 | dataList.value = [];
44 | blackList.put(key, []);
45 | }
46 |
47 | Future onImport(List dataList) async {
48 | List filterList = (dataList + this.dataList).unique();
49 | this.dataList.value = filterList;
50 | await blackList.put(key, filterList);
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/lib/pages/carousel/carousel_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../../logic/model/feed/datum.dart';
4 | import '../../logic/network/network_repo.dart';
5 | import '../../logic/state/loading_state.dart';
6 | import '../../pages/common/common_controller.dart';
7 |
8 | class CarouselController extends CommonController {
9 | CarouselController({
10 | required this.isInit,
11 | required this.url,
12 | required this.title,
13 | });
14 | final bool isInit;
15 | final String url;
16 | final String title;
17 |
18 | RxInt tabSize = 0.obs;
19 | Datum? iconTabLinkGridCard;
20 | String? pageTitle;
21 | bool _isChecked = false;
22 |
23 | @override
24 | List? handleResponse(List dataList) {
25 | if (isInit && !_isChecked) {
26 | _isChecked = true;
27 | iconTabLinkGridCard = dataList.firstWhereOrNull(
28 | (item) => item.entityTemplate == 'iconTabLinkGridCard');
29 | if (iconTabLinkGridCard != null) {
30 | tabSize.value = iconTabLinkGridCard!.entities!.length;
31 | }
32 | pageTitle = dataList.lastOrNull?.extraDataArr?.pageTitle;
33 | }
34 | return null;
35 | }
36 |
37 | @override
38 | Future customGetData() {
39 | return NetworkRepo.getDataList(
40 | url: url,
41 | title: title,
42 | subTitle: '',
43 | firstItem: firstItem,
44 | lastItem: lastItem,
45 | page: page,
46 | inCluldeConfigCard: isInit,
47 | );
48 | }
49 |
50 | @override
51 | void onInit() {
52 | super.onInit();
53 | onGetData();
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/pages/coolpic/coolpic_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../logic/network/network_repo.dart';
2 | import '../../logic/state/loading_state.dart';
3 | import '../../pages/common/common_controller.dart';
4 |
5 | class CoolpicController extends CommonController {
6 | CoolpicController({
7 | required this.type,
8 | required this.title,
9 | });
10 |
11 | final String type;
12 | final String title;
13 |
14 | @override
15 | Future customGetData() {
16 | return NetworkRepo.getCoolPic(
17 | tag: title,
18 | type: type,
19 | page: page,
20 | firstItem: firstItem,
21 | lastItem: lastItem,
22 | );
23 | }
24 |
25 | @override
26 | void onInit() {
27 | super.onInit();
28 | onGetData();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/pages/dyh/dyh_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../logic/network/network_repo.dart';
2 | import '../../logic/state/loading_state.dart';
3 | import '../../pages/common/common_controller.dart';
4 |
5 | class DyhController extends CommonController {
6 | DyhController({
7 | required this.type,
8 | required this.id,
9 | });
10 |
11 | final String type;
12 | final String id;
13 |
14 | @override
15 | Future customGetData() {
16 | return NetworkRepo.getDyhDetail(
17 | dyhId: id,
18 | type: type,
19 | page: page,
20 | firstItem: firstItem,
21 | lastItem: lastItem,
22 | );
23 | }
24 |
25 | @override
26 | void onInit() {
27 | super.onInit();
28 | onGetData();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/pages/feed/reply/emoji_panel.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import '../../../utils/emoji_util.dart';
4 |
5 | class EmotePanel extends StatelessWidget {
6 | const EmotePanel({
7 | super.key,
8 | required this.index,
9 | required this.onClick,
10 | });
11 | final int index;
12 | final Function(String emoji) onClick;
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return GridView.count(
17 | padding: const EdgeInsets.only(left: 10, right: 10),
18 | mainAxisSpacing: 10,
19 | crossAxisSpacing: 10,
20 | crossAxisCount: 7,
21 | childAspectRatio: 1.0,
22 | children: (EmojiUtil.emojiMap.keys.toList()..removeRange(0, 4))
23 | .map(
24 | (emoji) => Material(
25 | color: Colors.transparent,
26 | child: InkWell(
27 | onTap: () => onClick(emoji),
28 | borderRadius: BorderRadius.circular(8),
29 | child: Padding(
30 | padding: const EdgeInsets.all(8),
31 | child:
32 | Image.asset('assets/emojis/${EmojiUtil.emojiMap[emoji]}'),
33 | ),
34 | ),
35 | ),
36 | )
37 | .toList(),
38 | );
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/pages/feed/reply/toolbar_icon_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ToolbarIconButton extends StatelessWidget {
4 | final VoidCallback onPressed;
5 | final Icon icon;
6 | final bool selected;
7 |
8 | const ToolbarIconButton({
9 | super.key,
10 | required this.onPressed,
11 | required this.icon,
12 | required this.selected,
13 | });
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return SizedBox(
18 | width: 36,
19 | height: 36,
20 | child: IconButton(
21 | onPressed: onPressed,
22 | icon: icon,
23 | highlightColor: Theme.of(context).colorScheme.secondaryContainer,
24 | color: selected
25 | ? Theme.of(context).colorScheme.onSecondaryContainer
26 | : Theme.of(context).colorScheme.outline,
27 | style: ButtonStyle(
28 | padding: WidgetStateProperty.all(EdgeInsets.zero),
29 | backgroundColor: WidgetStateProperty.resolveWith((states) {
30 | return selected
31 | ? Theme.of(context).colorScheme.secondaryContainer
32 | : null;
33 | }),
34 | ),
35 | ),
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/pages/feed/reply2reply/reply_2_reply_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../../logic/model/feed/datum.dart';
2 | import '../../../logic/network/network_repo.dart';
3 | import '../../../logic/state/loading_state.dart';
4 | import '../../../pages/common/common_controller.dart';
5 |
6 | class Reply2ReplyController extends CommonController {
7 | Reply2ReplyController({
8 | required this.originReply,
9 | required this.id,
10 | });
11 |
12 | final Datum originReply;
13 | final String id;
14 |
15 | @override
16 | LoadingState? handleExtraResponse() {
17 | if (page == 1) {
18 | footerState.value = LoadingState.empty();
19 | return LoadingState.success([originReply]);
20 | }
21 | return null;
22 | }
23 |
24 | @override
25 | List? handleResponse(List dataList) {
26 | return page == 1 ? [originReply] + dataList : null;
27 | }
28 |
29 | @override
30 | Future customGetData() {
31 | return NetworkRepo.getReply2Reply(
32 | id: id,
33 | page: page,
34 | firstItem: firstItem,
35 | lastItem: lastItem,
36 | );
37 | }
38 |
39 | @override
40 | void onInit() {
41 | super.onInit();
42 | onGetData();
43 | }
44 |
45 | void updateReply(Datum data, dynamic id) {
46 | List replyList = loadingState.value is Success
47 | ? (loadingState.value as Success).response
48 | : [];
49 | int index = replyList.indexWhere((reply) => reply.id == id);
50 | replyList.insert(index + 1, data);
51 | loadingState.value = LoadingState.success(replyList);
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/lib/pages/ffflist/ffflist_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../logic/model/feed/datum.dart';
2 | import '../../logic/network/network_repo.dart';
3 | import '../../logic/state/loading_state.dart';
4 | import '../../pages/common/common_controller.dart';
5 | import '../../pages/ffflist/ffflist_page.dart' show FFFListType;
6 |
7 | class FFFListController extends CommonController {
8 | FFFListController({
9 | required this.type,
10 | required this.url,
11 | this.uid,
12 | this.id,
13 | this.showDefault,
14 | });
15 |
16 | final FFFListType type;
17 | final String url;
18 | final String? uid;
19 | final String? id;
20 | final int? showDefault;
21 |
22 | @override
23 | Future customGetData() {
24 | return NetworkRepo.getDataListFromUrl(
25 | url: url,
26 | data: {
27 | if (uid != null) 'uid': uid,
28 | if (id != null) 'id': id,
29 | if (showDefault != null) 'showDefault': showDefault,
30 | 'page': page,
31 | if (firstItem != null) 'firstItem': firstItem,
32 | if (lastItem != null) 'lastItem': lastItem,
33 | },
34 | );
35 | }
36 |
37 | @override
38 | void onInit() {
39 | super.onInit();
40 | onGetData();
41 | }
42 |
43 | @override
44 | List? handleUnique(List dataList) {
45 | return [FFFListType.FOLLOW, FFFListType.FAN, FFFListType.USER_FOLLOW]
46 | .contains(type)
47 | ? null
48 | : super.handleUnique(dataList);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/pages/home/app/app_list_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/services.dart';
2 | import 'package:get/get.dart';
3 |
4 | import '../../../logic/model/app_info/app_info.dart';
5 |
6 | class AppListController extends GetxController with StateMixin> {
7 | static const platform = MethodChannel('samples.flutter.dev/channel');
8 |
9 | Future onReload([bool isRefresh = false]) async {
10 | if (!isRefresh) {
11 | change(null, status: RxStatus.loading());
12 | }
13 | await _getInstalledApps();
14 | }
15 |
16 | Future _getInstalledApps() async {
17 | try {
18 | List installedApps =
19 | await platform.invokeMethod('getInstalledApps');
20 | List parseList = AppInfo.parseList(installedApps);
21 | if (parseList.isNotEmpty) {
22 | change(parseList, status: RxStatus.success());
23 | } else {
24 | change(null, status: RxStatus.empty());
25 | }
26 | } on PlatformException catch (e) {
27 | change(null, status: RxStatus.error(e.message));
28 | return;
29 | }
30 | }
31 |
32 | @override
33 | void onInit() async {
34 | super.onInit();
35 | await Future.delayed(const Duration(milliseconds: 500));
36 | _getInstalledApps();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/pages/home/feed/home_feed_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../../logic/network/network_repo.dart';
2 | import '../../../logic/state/loading_state.dart';
3 | import '../../../pages/common/common_controller.dart';
4 | import '../../../pages/home/home_page.dart' show TabType;
5 | import '../../../utils/storage_util.dart';
6 | import '../../../utils/utils.dart';
7 |
8 | class HomeFeedController extends CommonController {
9 | HomeFeedController({
10 | required this.tabType,
11 | required this.installTime,
12 | this.url,
13 | this.title,
14 | this.followType,
15 | });
16 |
17 | final TabType tabType;
18 | final String installTime;
19 | int firstLaunch = 1;
20 | String? url;
21 | String? title;
22 | int? followType;
23 |
24 | @override
25 | void onReset() {
26 | super.onReset();
27 | if (tabType == TabType.FOLLOW) {
28 | int followType = GStorage.followType;
29 | if (this.followType != followType) {
30 | this.followType = followType;
31 | url = Utils.getFollowUrl(followType);
32 | title = Utils.getFollowTitle(followType);
33 | }
34 | }
35 | }
36 |
37 | @override
38 | Future customGetData() {
39 | return tabType == TabType.FEED
40 | ? NetworkRepo.getHomeFeed(
41 | page: page,
42 | firstLaunch: firstLaunch,
43 | installTime: installTime,
44 | firstItem: firstItem,
45 | lastItem: lastItem,
46 | )
47 | : NetworkRepo.getDataList(
48 | url: url!,
49 | title: title!,
50 | subTitle: '',
51 | firstItem: firstItem,
52 | lastItem: lastItem,
53 | page: page,
54 | );
55 | }
56 |
57 | @override
58 | void onInit() {
59 | super.onInit();
60 | onGetData();
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/lib/pages/home/return_top_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | class ReturnTopController extends GetxController {
4 | RxInt index = 999.obs;
5 |
6 | void setIndex(int index) {
7 | this.index.value = index;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/lib/pages/home/topic/controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../../../logic/network/network_repo.dart';
4 | import '../../../logic/model/feed/datum.dart';
5 | import '../../../logic/state/loading_state.dart';
6 | import '../../../pages/home/home_page.dart' show TabType;
7 |
8 | class HomeTopicController extends GetxController with StateMixin> {
9 | HomeTopicController({
10 | required this.tabType,
11 | });
12 | final TabType tabType;
13 |
14 | late RxInt currentIndex = (tabType == TabType.TOPIC ? 1 : 0).obs;
15 |
16 | void onReload() {
17 | change(null, status: RxStatus.loading());
18 | getData();
19 | }
20 |
21 | Future getData() async {
22 | LoadingState response = await NetworkRepo.getDataListFromUrl(
23 | url: tabType == TabType.TOPIC
24 | ? '/v6/page/dataList?url=V11_VERTICAL_TOPIC&title=话题&page=1'
25 | : '/v6/product/categoryList');
26 | switch (response) {
27 | case Empty():
28 | change(null, status: RxStatus.empty());
29 | case Error():
30 | change(null, status: RxStatus.error(response.errMsg));
31 | case Success():
32 | change(response.response, status: RxStatus.success());
33 | }
34 | }
35 |
36 | @override
37 | void onInit() {
38 | super.onInit();
39 | getData();
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/pages/noitfication/notification_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../logic/model/feed/datum.dart';
2 | import '../../logic/network/network_repo.dart';
3 | import '../../logic/state/loading_state.dart';
4 | import '../../pages/common/common_controller.dart';
5 |
6 | class NotificationController extends CommonController {
7 | NotificationController({
8 | required this.url,
9 | });
10 |
11 | final String url;
12 |
13 | @override
14 | List? handleUnique(List dataList) {
15 | return null;
16 | }
17 |
18 | @override
19 | Future customGetData() {
20 | return NetworkRepo.getDataListFromUrl(
21 | url: url,
22 | data: {
23 | 'page': page,
24 | if (firstItem != null) 'firstItem': firstItem,
25 | if (lastItem != null) 'lastItem': lastItem,
26 | },
27 | );
28 | }
29 |
30 | @override
31 | void onInit() {
32 | super.onInit();
33 | onGetData();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/pages/others/copy_page.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:get/get.dart';
5 |
6 | import '../../utils/extensions.dart';
7 | import '../../utils/utils.dart';
8 |
9 | extension StringExtensions on String {
10 | String get getAllLinkAndText {
11 | if (isEmpty) return '';
12 | final regExp =
13 | RegExp(r'\"]*)"[^<]*[^>]*>');
14 | return replaceAllMapped(regExp, (match) => ' ${match.group(1)} ');
15 | }
16 | }
17 |
18 | class CopyPage extends StatelessWidget {
19 | const CopyPage({super.key});
20 |
21 | @override
22 | Widget build(BuildContext context) {
23 | final String text = Get.parameters['text'].orEmpty;
24 | return Container(
25 | color: Theme.of(context).colorScheme.surface,
26 | child: SafeArea(
27 | child: Stack(
28 | children: [
29 | if (!Platform.isAndroid && !Platform.isIOS) const BackButton(),
30 | Container(
31 | alignment: Alignment.center,
32 | padding: const EdgeInsets.symmetric(horizontal: 20),
33 | child: SelectableText(
34 | scrollPhysics: const BouncingScrollPhysics(),
35 | Utils.parseHtmlString(
36 | '\n$text\n'.getAllLinkAndText.replaceAll("\n", "
")),
37 | style: const TextStyle(
38 | fontSize: 22,
39 | height: 1.5,
40 | ),
41 | ),
42 | ),
43 | ],
44 | ),
45 | ),
46 | );
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/lib/pages/search/search_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../logic/network/network_repo.dart';
2 | import '../../logic/state/loading_state.dart';
3 | import '../../pages/common/common_controller.dart';
4 |
5 | class SearchController extends CommonController {
6 | SearchController({
7 | required this.type,
8 | required this.keyword,
9 | required this.pageType,
10 | required this.pageParam,
11 | });
12 |
13 | final String type;
14 | String feedType = 'all';
15 | String sort = 'default';
16 | final String keyword;
17 | int isStrict = 0;
18 | final String? pageType;
19 | final String? pageParam;
20 |
21 | @override
22 | Future customGetData() {
23 | return NetworkRepo.getSearch(
24 | type: type,
25 | feedType: feedType,
26 | sort: sort,
27 | searchValue: keyword,
28 | isStrict: isStrict,
29 | pageType: pageType,
30 | pageParam: pageParam,
31 | page: page,
32 | firstItem: firstItem,
33 | lastItem: lastItem,
34 | );
35 | }
36 |
37 | @override
38 | void onInit() {
39 | super.onInit();
40 | onGetData();
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/pages/search/search_order_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../../pages/search/search_result_page.dart'
4 | show SearchType, SearchSortType;
5 |
6 | class SearchOrderController extends GetxController {
7 | Rx searchType = SearchType.ALL.obs;
8 | Rx searchSortType = SearchSortType.DATELINE.obs;
9 |
10 | void setSearchType(SearchType searchType) {
11 | this.searchType.value = searchType;
12 | }
13 |
14 | void setSearchSortType(SearchSortType searchSortType) {
15 | this.searchSortType.value = searchSortType;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/pages/search/search_page_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 | import 'package:hive/hive.dart';
3 |
4 | import '../../utils/storage_util.dart';
5 |
6 | class SearchPageController extends GetxController {
7 | Box searchHistory = GStorage.searchHistory;
8 | RxList historyList = [].obs;
9 |
10 | @override
11 | void onInit() {
12 | super.onInit();
13 | _getData();
14 | }
15 |
16 | Future _getData() async {
17 | historyList.value = searchHistory.get('searchHistory') ?? [];
18 | }
19 |
20 | void handleSearch(String value, [bool isDelete = false]) {
21 | List list = historyList.where((data) => data != value).toList();
22 | if (!isDelete) {
23 | list.insert(0, value);
24 | }
25 | historyList.value = list;
26 | searchHistory.put('searchHistory', list);
27 | }
28 |
29 | void clearAll() {
30 | historyList.value = [];
31 | searchHistory.put('searchHistory', []);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/lib/pages/topic/topic_content_controller.dart:
--------------------------------------------------------------------------------
1 | import '../../logic/network/network_repo.dart';
2 | import '../../logic/state/loading_state.dart';
3 | import '../../pages/common/common_controller.dart';
4 |
5 | class TopicContentController extends CommonController {
6 | TopicContentController({
7 | required this.url,
8 | required this.title,
9 | });
10 |
11 | late String url;
12 | late String title;
13 |
14 | @override
15 | Future customGetData() {
16 | return NetworkRepo.getDataList(
17 | url: url,
18 | title: title,
19 | subTitle: '',
20 | firstItem: firstItem,
21 | lastItem: lastItem,
22 | page: page,
23 | );
24 | }
25 |
26 | @override
27 | void onInit() {
28 | super.onInit();
29 | onGetData();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/pages/topic/topic_order_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:get/get.dart';
2 |
3 | import '../../pages/topic/topic_page.dart' show TopicSortType;
4 |
5 | class TopicOrderController extends GetxController {
6 | Rx topicSortType = TopicSortType.DEFAULT.obs;
7 |
8 | void setTopicSortType(TopicSortType topicSortType) {
9 | this.topicSortType.value = topicSortType;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/utils/date_util.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: constant_identifier_names
2 |
3 | import 'package:intl/intl.dart';
4 |
5 | class DateUtil {
6 | static const int ONE_MINUTE = 60;
7 | static const int ONE_HOUR = 3600;
8 | static const int ONE_DAY = 86400;
9 | static const int ONE_MONTH = 2592000;
10 | static const int ONE_YEAR = 31104000;
11 |
12 | static String fromToday(dynamic rawTime) {
13 | if (rawTime == null) {
14 | return '';
15 | }
16 |
17 | int time = rawTime is int ? rawTime : int.parse(rawTime);
18 |
19 | final int now = DateTime.now().millisecondsSinceEpoch ~/ 1000;
20 | final int ago = now - time;
21 |
22 | if (ago == 0) {
23 | return "刚刚";
24 | } else if (ago < 60) {
25 | return "$ago秒前";
26 | } else if (ago <= ONE_HOUR) {
27 | return "${ago ~/ ONE_MINUTE}分钟前";
28 | } else if (ago <= ONE_DAY) {
29 | return "${ago ~/ ONE_HOUR}小时前";
30 | } else if (ago <= ONE_DAY * 2) {
31 | return "1天前";
32 | } else if (ago <= ONE_DAY * 3) {
33 | return "2天前";
34 | } else if (ago <= ONE_MONTH) {
35 | final int day = ago ~/ ONE_DAY;
36 | return "$day天前";
37 | } else {
38 | final date = DateTime.fromMillisecondsSinceEpoch(time * 1000);
39 | final DateFormat sdf = date.year == DateTime.now().year
40 | ? DateFormat('MM月dd日')
41 | : DateFormat('yyyy年MM月dd日');
42 | return sdf.format(date);
43 | }
44 | }
45 |
46 | static String format(int time, {String pattern = 'yyyy-MM-dd_HH.mm.ss'}) {
47 | final date = DateTime.fromMillisecondsSinceEpoch(time);
48 | final DateFormat sdf = DateFormat(pattern);
49 | return sdf.format(date);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/lib/utils/global_data.dart:
--------------------------------------------------------------------------------
1 | class GlobalData {
2 | // 私有构造函数
3 | GlobalData._();
4 |
5 | // 单例实例
6 | static final GlobalData _instance = GlobalData._();
7 |
8 | // 获取全局实例
9 | factory GlobalData() => _instance;
10 |
11 | // ignore: non_constant_identifier_names
12 | String SESSID = '';
13 | bool isLogin = false;
14 | String uid = '';
15 | String username = '';
16 | String token = '';
17 | }
18 |
--------------------------------------------------------------------------------
/lib/utils/oss/aliyunoss_config.dart:
--------------------------------------------------------------------------------
1 | /// 上传配置信息AliyunOssInfo
2 | ///
3 | /// bucket: 阿里云Bucket,鉴权后获取相应的值
4 | /// endpoint: 阿里云Endpoint,鉴权后获取相应的值
5 | /// accessKeyId: 阿里云AccessKeyId,鉴权后获取相应的值
6 | /// accessKeySecret 阿里云AccessKeySecret,鉴权后获取相应的值
7 | /// securityToken 阿里云SecurityToken,鉴权后获取相应的值
8 | /// domain: 访问文件时的域名。如果不填写默认为 https://$bucket.$endpoint
9 | /// directory: 上传文件的目录,如果不填写默认为根目录
10 | /// objectPath: 阿里云服务器文件路径 domain(https://$bucket.$endpoint) + directory + ossFileName
11 | /// contentType: 文件类型. 常见的有: image/png image/jpeg audio/mp3 video/mp4 阿里云支持的上传文件类型 https://help.aliyun.com/document_detail/39522.html
12 | class AliyunOssConfig {
13 | late String bucket;
14 | late String endpoint;
15 | late String directory;
16 | String? domain;
17 |
18 | AliyunOssConfig({
19 | required String? endpoint,
20 | required String? bucket,
21 | required String? directory,
22 | String? domain,
23 | }) {
24 | assert(endpoint != null && bucket != null && directory != null);
25 |
26 | String ossEndpoint = endpoint?.replaceFirst("https://", "") ?? "";
27 | ossEndpoint = ossEndpoint.replaceFirst("http://", "");
28 | this.endpoint = ossEndpoint;
29 | this.bucket = bucket ?? "";
30 | this.domain = domain ?? "https://$bucket.$ossEndpoint";
31 | this.directory = directory ?? "";
32 | }
33 | }
34 |
35 | enum AliyunOssResultState { none, success, fail, uploading }
36 |
37 | class AliyunOssResult {
38 | String id;
39 | AliyunOssResultState state;
40 | String? url;
41 | String? msg;
42 | int? count;
43 | int? total;
44 | AliyunOssResult({
45 | required this.id,
46 | this.state = AliyunOssResultState.none,
47 | this.url,
48 | this.msg,
49 | this.count,
50 | this.total,
51 | });
52 | @override
53 | String toString() {
54 | return 'AliyunOssResult{id: $id, state: $state, url: $url, msg: $msg, count: $count, total: $total}';
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/lib/utils/oss/aliyunoss_http.dart:
--------------------------------------------------------------------------------
1 |
2 | class AliyunOssHttp {
3 | static int connectTimeout = 5000;
4 | static int receiveTimeout = 1000 * 60 ;
5 | static int sendTimeout = 1000 * 60 * 5;
6 | }
--------------------------------------------------------------------------------
/lib/utils/oss_util.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
5 |
6 | import '../logic/model/oss_upload/datum.dart';
7 | import '../logic/model/oss_upload/oss_upload_model.dart';
8 | import '../logic/model/oss_upload/oss_upload_response.dart';
9 | import '../logic/network/network_repo.dart';
10 | import '../utils/extensions.dart';
11 |
12 | class OssUtil {
13 | static Future onPostOSSUploadPrepare(
14 | String uploadBucket,
15 | String uploadDir,
16 | List dataList, {
17 | String? uid,
18 | }) async {
19 | try {
20 | SmartDialog.showLoading(msg: '准备上传图片');
21 | Response response = await NetworkRepo.postOSSUploadPrepare(
22 | data: FormData.fromMap(
23 | {
24 | 'uploadBucket': uploadBucket,
25 | 'uploadDir': uploadDir,
26 | 'is_anonymous': '0',
27 | 'uploadFileList': dataList
28 | .map((data) => jsonEncode(data.toJson()))
29 | .toList()
30 | .toString(),
31 | 'toUid': uid,
32 | },
33 | ),
34 | );
35 | OssUploadResponse data = OssUploadResponse.fromJson(response.data);
36 | if (!data.message.isNullOrEmpty) {
37 | SmartDialog.dismiss();
38 | SmartDialog.showToast(data.message!);
39 | return null;
40 | } else if (data.data != null) {
41 | // SmartDialog.dismiss();
42 | return data.data!;
43 | }
44 | return null;
45 | } catch (e) {
46 | SmartDialog.dismiss();
47 | SmartDialog.showToast(e.toString());
48 | return null;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/linux/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/ephemeral
2 |
--------------------------------------------------------------------------------
/linux/flutter/generated_plugin_registrant.cc:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #include "generated_plugin_registrant.h"
8 |
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 |
15 | void fl_register_plugins(FlPluginRegistry* registry) {
16 | g_autoptr(FlPluginRegistrar) dynamic_color_registrar =
17 | fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin");
18 | dynamic_color_plugin_register_with_registrar(dynamic_color_registrar);
19 | g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
20 | fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
21 | file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
22 | g_autoptr(FlPluginRegistrar) screen_retriever_registrar =
23 | fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin");
24 | screen_retriever_plugin_register_with_registrar(screen_retriever_registrar);
25 | g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
26 | fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
27 | url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
28 | g_autoptr(FlPluginRegistrar) window_manager_registrar =
29 | fl_plugin_registry_get_registrar_for_plugin(registry, "WindowManagerPlugin");
30 | window_manager_plugin_register_with_registrar(window_manager_registrar);
31 | }
32 |
--------------------------------------------------------------------------------
/linux/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void fl_register_plugins(FlPluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/linux/flutter/generated_plugins.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Generated file, do not edit.
3 | #
4 |
5 | list(APPEND FLUTTER_PLUGIN_LIST
6 | dynamic_color
7 | file_selector_linux
8 | screen_retriever
9 | url_launcher_linux
10 | window_manager
11 | )
12 |
13 | list(APPEND FLUTTER_FFI_PLUGIN_LIST
14 | )
15 |
16 | set(PLUGIN_BUNDLED_LIBRARIES)
17 |
18 | foreach(plugin ${FLUTTER_PLUGIN_LIST})
19 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
20 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
21 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
23 | endforeach(plugin)
24 |
25 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
26 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
27 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
28 | endforeach(ffi_plugin)
29 |
--------------------------------------------------------------------------------
/linux/main.cc:
--------------------------------------------------------------------------------
1 | #include "my_application.h"
2 |
3 | int main(int argc, char** argv) {
4 | g_autoptr(MyApplication) app = my_application_new();
5 | return g_application_run(G_APPLICATION(app), argc, argv);
6 | }
7 |
--------------------------------------------------------------------------------
/linux/my_application.h:
--------------------------------------------------------------------------------
1 | #ifndef FLUTTER_MY_APPLICATION_H_
2 | #define FLUTTER_MY_APPLICATION_H_
3 |
4 | #include
5 |
6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
7 | GtkApplication)
8 |
9 | /**
10 | * my_application_new:
11 | *
12 | * Creates a new Flutter-based application.
13 | *
14 | * Returns: a new #MyApplication.
15 | */
16 | MyApplication* my_application_new();
17 |
18 | #endif // FLUTTER_MY_APPLICATION_H_
19 |
--------------------------------------------------------------------------------
/macos/.gitignore:
--------------------------------------------------------------------------------
1 | # Flutter-related
2 | **/Flutter/ephemeral/
3 | **/Pods/
4 |
5 | # Xcode-related
6 | **/dgph
7 | **/xcuserdata/
8 |
--------------------------------------------------------------------------------
/macos/Flutter/Flutter-Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "ephemeral/Flutter-Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/macos/Flutter/Flutter-Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "ephemeral/Flutter-Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/macos/Flutter/GeneratedPluginRegistrant.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | import FlutterMacOS
6 | import Foundation
7 |
8 | import connectivity_plus
9 | import device_info_plus
10 | import dynamic_color
11 | import file_selector_macos
12 | import flutter_inappwebview_macos
13 | import package_info_plus
14 | import path_provider_foundation
15 | import screen_retriever
16 | import share_plus
17 | import shared_preferences_foundation
18 | import sqflite
19 | import url_launcher_macos
20 | import window_manager
21 |
22 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
23 | ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin"))
24 | DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
25 | DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin"))
26 | FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
27 | InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin"))
28 | FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
29 | PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
30 | ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
31 | SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
32 | SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
33 | SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
34 | UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
35 | WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin"))
36 | }
37 |
--------------------------------------------------------------------------------
/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/macos/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/macos/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | @main
5 | class AppDelegate: FlutterAppDelegate {
6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
7 | return true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info": {
3 | "version": 1,
4 | "author": "xcode"
5 | },
6 | "images": [
7 | {
8 | "size": "16x16",
9 | "idiom": "mac",
10 | "filename": "app_icon_16.png",
11 | "scale": "1x"
12 | },
13 | {
14 | "size": "16x16",
15 | "idiom": "mac",
16 | "filename": "app_icon_32.png",
17 | "scale": "2x"
18 | },
19 | {
20 | "size": "32x32",
21 | "idiom": "mac",
22 | "filename": "app_icon_32.png",
23 | "scale": "1x"
24 | },
25 | {
26 | "size": "32x32",
27 | "idiom": "mac",
28 | "filename": "app_icon_64.png",
29 | "scale": "2x"
30 | },
31 | {
32 | "size": "128x128",
33 | "idiom": "mac",
34 | "filename": "app_icon_128.png",
35 | "scale": "1x"
36 | },
37 | {
38 | "size": "128x128",
39 | "idiom": "mac",
40 | "filename": "app_icon_256.png",
41 | "scale": "2x"
42 | },
43 | {
44 | "size": "256x256",
45 | "idiom": "mac",
46 | "filename": "app_icon_256.png",
47 | "scale": "1x"
48 | },
49 | {
50 | "size": "256x256",
51 | "idiom": "mac",
52 | "filename": "app_icon_512.png",
53 | "scale": "2x"
54 | },
55 | {
56 | "size": "512x512",
57 | "idiom": "mac",
58 | "filename": "app_icon_512.png",
59 | "scale": "1x"
60 | },
61 | {
62 | "size": "512x512",
63 | "idiom": "mac",
64 | "filename": "app_icon_1024.png",
65 | "scale": "2x"
66 | }
67 | ]
68 | }
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
--------------------------------------------------------------------------------
/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 = c001apk-flutter
9 |
10 | // The application's bundle identifier
11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.c001apk.flutter
12 |
13 | // The copyright displayed in application information
14 | PRODUCT_COPYRIGHT = Copyright © 2024 bggRGjQaUbCoE All rights reserved.
15 |
--------------------------------------------------------------------------------
/macos/Runner/Configs/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Debug.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/macos/Runner/Configs/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Release.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/macos/Runner/MainFlutterWindow.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | class MainFlutterWindow: NSWindow {
5 | override func awakeFromNib() {
6 | let flutterViewController = FlutterViewController()
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 |
--------------------------------------------------------------------------------
/macos/Runner/Release.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/macos/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/favicon.png
--------------------------------------------------------------------------------
/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/web/icons/Icon-maskable-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/icons/Icon-maskable-192.png
--------------------------------------------------------------------------------
/web/icons/Icon-maskable-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/icons/Icon-maskable-512.png
--------------------------------------------------------------------------------
/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "c001apk-flutter",
3 | "short_name": "c001apk-flutter",
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 | "src": "icons/Icon-maskable-192.png",
24 | "sizes": "192x192",
25 | "type": "image/png",
26 | "purpose": "maskable"
27 | },
28 | {
29 | "src": "icons/Icon-maskable-512.png",
30 | "sizes": "512x512",
31 | "type": "image/png",
32 | "purpose": "maskable"
33 | }
34 | ]
35 | }
--------------------------------------------------------------------------------
/web/splash/img/dark-1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/splash/img/dark-1x.png
--------------------------------------------------------------------------------
/web/splash/img/dark-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/splash/img/dark-2x.png
--------------------------------------------------------------------------------
/web/splash/img/dark-3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/splash/img/dark-3x.png
--------------------------------------------------------------------------------
/web/splash/img/dark-4x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/splash/img/dark-4x.png
--------------------------------------------------------------------------------
/web/splash/img/light-1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/splash/img/light-1x.png
--------------------------------------------------------------------------------
/web/splash/img/light-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/splash/img/light-2x.png
--------------------------------------------------------------------------------
/web/splash/img/light-3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/splash/img/light-3x.png
--------------------------------------------------------------------------------
/web/splash/img/light-4x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/web/splash/img/light-4x.png
--------------------------------------------------------------------------------
/windows/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/ephemeral/
2 |
3 | # Visual Studio user-specific files.
4 | *.suo
5 | *.user
6 | *.userosscache
7 | *.sln.docstates
8 |
9 | # Visual Studio build-related files.
10 | x64/
11 | x86/
12 |
13 | # Visual Studio cache files
14 | # files ending in .cache can be ignored
15 | *.[Cc]ache
16 | # but keep track of directories ending in .cache
17 | !*.[Cc]ache/
18 |
--------------------------------------------------------------------------------
/windows/flutter/generated_plugin_registrant.cc:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #include "generated_plugin_registrant.h"
8 |
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 | #include
17 |
18 | void RegisterPlugins(flutter::PluginRegistry* registry) {
19 | ConnectivityPlusWindowsPluginRegisterWithRegistrar(
20 | registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin"));
21 | DynamicColorPluginCApiRegisterWithRegistrar(
22 | registry->GetRegistrarForPlugin("DynamicColorPluginCApi"));
23 | FileSelectorWindowsRegisterWithRegistrar(
24 | registry->GetRegistrarForPlugin("FileSelectorWindows"));
25 | PermissionHandlerWindowsPluginRegisterWithRegistrar(
26 | registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
27 | ScreenRetrieverPluginRegisterWithRegistrar(
28 | registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
29 | SharePlusWindowsPluginCApiRegisterWithRegistrar(
30 | registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
31 | UrlLauncherWindowsRegisterWithRegistrar(
32 | registry->GetRegistrarForPlugin("UrlLauncherWindows"));
33 | WindowManagerPluginRegisterWithRegistrar(
34 | registry->GetRegistrarForPlugin("WindowManagerPlugin"));
35 | }
36 |
--------------------------------------------------------------------------------
/windows/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void RegisterPlugins(flutter::PluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/windows/flutter/generated_plugins.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Generated file, do not edit.
3 | #
4 |
5 | list(APPEND FLUTTER_PLUGIN_LIST
6 | connectivity_plus
7 | dynamic_color
8 | file_selector_windows
9 | permission_handler_windows
10 | screen_retriever
11 | share_plus
12 | url_launcher_windows
13 | window_manager
14 | )
15 |
16 | list(APPEND FLUTTER_FFI_PLUGIN_LIST
17 | )
18 |
19 | set(PLUGIN_BUNDLED_LIBRARIES)
20 |
21 | foreach(plugin ${FLUTTER_PLUGIN_LIST})
22 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin})
23 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
24 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
25 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
26 | endforeach(plugin)
27 |
28 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
29 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
30 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
31 | endforeach(ffi_plugin)
32 |
--------------------------------------------------------------------------------
/windows/runner/flutter_window.h:
--------------------------------------------------------------------------------
1 | #ifndef RUNNER_FLUTTER_WINDOW_H_
2 | #define RUNNER_FLUTTER_WINDOW_H_
3 |
4 | #include
5 | #include
6 |
7 | #include
8 |
9 | #include "win32_window.h"
10 |
11 | // A window that does nothing but host a Flutter view.
12 | class FlutterWindow : public Win32Window {
13 | public:
14 | // Creates a new FlutterWindow hosting a Flutter view running |project|.
15 | explicit FlutterWindow(const flutter::DartProject& project);
16 | virtual ~FlutterWindow();
17 |
18 | protected:
19 | // Win32Window:
20 | bool OnCreate() override;
21 | void OnDestroy() override;
22 | LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam,
23 | LPARAM const lparam) noexcept override;
24 |
25 | private:
26 | // The project to run.
27 | flutter::DartProject project_;
28 |
29 | // The Flutter instance hosted by this window.
30 | std::unique_ptr flutter_controller_;
31 | };
32 |
33 | #endif // RUNNER_FLUTTER_WINDOW_H_
34 |
--------------------------------------------------------------------------------
/windows/runner/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 |
5 | #include "flutter_window.h"
6 | #include "utils.h"
7 |
8 | int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
9 | _In_ wchar_t *command_line, _In_ int show_command) {
10 | // Attach to console when present (e.g., 'flutter run') or create a
11 | // new console when running with a debugger.
12 | if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) {
13 | CreateAndAttachConsole();
14 | }
15 |
16 | // Initialize COM, so that it is available for use in the library and/or
17 | // plugins.
18 | ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
19 |
20 | flutter::DartProject project(L"data");
21 |
22 | std::vector command_line_arguments =
23 | GetCommandLineArguments();
24 |
25 | project.set_dart_entrypoint_arguments(std::move(command_line_arguments));
26 |
27 | FlutterWindow window(project);
28 | Win32Window::Point origin(10, 10);
29 | Win32Window::Size size(1280, 720);
30 | if (!window.Create(L"c001apk-flutter", origin, size)) {
31 | return EXIT_FAILURE;
32 | }
33 | window.SetQuitOnClose(true);
34 |
35 | ::MSG msg;
36 | while (::GetMessage(&msg, nullptr, 0, 0)) {
37 | ::TranslateMessage(&msg);
38 | ::DispatchMessage(&msg);
39 | }
40 |
41 | ::CoUninitialize();
42 | return EXIT_SUCCESS;
43 | }
44 |
--------------------------------------------------------------------------------
/windows/runner/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by Runner.rc
4 | //
5 | #define IDI_APP_ICON 101
6 |
7 | // Next default values for new objects
8 | //
9 | #ifdef APSTUDIO_INVOKED
10 | #ifndef APSTUDIO_READONLY_SYMBOLS
11 | #define _APS_NEXT_RESOURCE_VALUE 102
12 | #define _APS_NEXT_COMMAND_VALUE 40001
13 | #define _APS_NEXT_CONTROL_VALUE 1001
14 | #define _APS_NEXT_SYMED_VALUE 101
15 | #endif
16 | #endif
17 |
--------------------------------------------------------------------------------
/windows/runner/resources/app_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bggRGjQaUbCoE/c001apk-flutter/72f4cf2494db6c8834c4136de70109bc95ed9374/windows/runner/resources/app_icon.ico
--------------------------------------------------------------------------------
/windows/runner/runner.exe.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PerMonitorV2
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/windows/runner/utils.h:
--------------------------------------------------------------------------------
1 | #ifndef RUNNER_UTILS_H_
2 | #define RUNNER_UTILS_H_
3 |
4 | #include
5 | #include
6 |
7 | // Creates a console for the process, and redirects stdout and stderr to
8 | // it for both the runner and the Flutter library.
9 | void CreateAndAttachConsole();
10 |
11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string
12 | // encoded in UTF-8. Returns an empty std::string on failure.
13 | std::string Utf8FromUtf16(const wchar_t* utf16_string);
14 |
15 | // Gets the command line arguments passed in as a std::vector,
16 | // encoded in UTF-8. Returns an empty std::vector on failure.
17 | std::vector GetCommandLineArguments();
18 |
19 | #endif // RUNNER_UTILS_H_
20 |
--------------------------------------------------------------------------------