├── .gitignore
├── .metadata
├── LICENSE
├── README.md
├── android
├── app
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── example
│ │ │ └── itresourceexchangeapp
│ │ │ └── MainActivity.java
│ │ └── res
│ │ ├── drawable
│ │ └── launch_background.xml
│ │ ├── mipmap-hdpi
│ │ ├── app_icon.png
│ │ └── launch_image.png
│ │ ├── mipmap-mdpi
│ │ ├── app_icon.png
│ │ └── launch_image.png
│ │ ├── mipmap-xhdpi
│ │ ├── app_icon.png
│ │ └── launch_image.png
│ │ ├── mipmap-xxhdpi
│ │ ├── app_icon.png
│ │ └── launch_image.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── app_icon.png
│ │ └── launch_image.png
│ │ └── values
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── fonts
│ └── iconfont.ttf
└── imgs
│ ├── app_icon.png
│ ├── ic_cards_wallet.png
│ ├── ic_collections.png
│ ├── ic_comment.png
│ ├── ic_settings.png
│ └── img_default.png
├── ios
├── ExportOptions.plist
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── flutter_export_environment.sh
├── Podfile
├── Runner-Bridging-Header.h
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── app_icon.png
│ │ ├── app_iconiPadApp_76pt.png
│ │ ├── app_iconiPadApp_76pt@2x.png
│ │ ├── app_iconiPadNotifications_20pt.png
│ │ ├── app_iconiPadNotifications_20pt@2x.png
│ │ ├── app_iconiPadProApp_83.5pt@2x.png
│ │ ├── app_iconiPadSpootlight5_29pt.png
│ │ ├── app_iconiPadSpootlight5_29pt@2x.png
│ │ ├── app_iconiPadSpootlight7_40pt.png
│ │ ├── app_iconiPadSpootlight7_40pt@2x.png
│ │ ├── app_iconiPhoneApp_60pt@2x.png
│ │ ├── app_iconiPhoneApp_60pt@3x.png
│ │ ├── app_iconiPhoneNotification_20pt@2x.png
│ │ ├── app_iconiPhoneNotification_20pt@3x.png
│ │ ├── app_iconiPhoneSpootlight5_29pt@2x.png
│ │ ├── app_iconiPhoneSpootlight5_29pt@3x.png
│ │ ├── app_iconiPhoneSpootlight7_40pt@2x.png
│ │ └── app_iconiPhoneSpootlight7_40pt@3x.png
│ ├── Contents.json
│ └── LaunchImage.launchimage
│ │ ├── Contents.json
│ │ ├── launchimage-1125*2436@2x.png
│ │ ├── launchimage-1242*2208@2x.png
│ │ ├── launchimage-1242*2688@2x.png
│ │ ├── launchimage-1536*2048@2x.png
│ │ ├── launchimage-640*1136@2x.png
│ │ ├── launchimage-640*960@2x.png
│ │ ├── launchimage-750*1334@2x.png
│ │ ├── launchimage-768*1024@2x.png
│ │ └── launchimage-828*1792@2x.png
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── main.m
├── lib
├── common
│ └── constant.dart
├── main.dart
├── model
│ ├── base_result.dart
│ ├── base_result.g.dart
│ ├── cate_info.dart
│ ├── cate_info.g.dart
│ ├── collect_product_info.dart
│ ├── collect_product_info.g.dart
│ ├── comment_model.dart
│ ├── comment_model.g.dart
│ ├── home_info.dart
│ ├── home_info.g.dart
│ ├── movie_info.dart
│ ├── movie_info.g.dart
│ ├── page_result.dart
│ ├── page_result.g.dart
│ ├── product_detail.dart
│ ├── product_detail.g.dart
│ ├── upload_info.dart
│ ├── upload_info.g.dart
│ ├── user_info.dart
│ └── user_info.g.dart
├── net
│ ├── code.dart
│ ├── http_manager.dart
│ ├── interceptors
│ │ ├── error_interceptor.dart
│ │ ├── logs_interceptor.dart
│ │ └── response_Interceptor.dart
│ └── network_utils.dart
├── pages
│ ├── application_page.dart
│ ├── classify
│ │ ├── classify_item_view.dart
│ │ ├── classify_list_view.dart
│ │ └── classify_page.dart
│ ├── collection
│ │ ├── my_collection_item_view.dart
│ │ └── my_collection_list_page.dart
│ ├── create
│ │ ├── new_goods_page.dart
│ │ ├── new_goods_preview_widget.dart
│ │ └── new_goods_text_field.dart
│ ├── detail
│ │ ├── comment_view
│ │ │ ├── goods_comment_content_view.dart
│ │ │ ├── goods_comment_header_view.dart
│ │ │ ├── goods_comment_item_view.dart
│ │ │ └── goods_comment_reply_view.dart
│ │ ├── goods_detail_bottom_bar.dart
│ │ ├── goods_detail_content_view.dart
│ │ ├── goods_detail_page.dart
│ │ └── input_dialog
│ │ │ ├── bottom_input_dialog.dart
│ │ │ └── pop_bottom_input_dialog_route.dart
│ ├── home
│ │ ├── goods_item_view.dart
│ │ └── home_page.dart
│ ├── login
│ │ ├── login_page.dart
│ │ ├── perfect_info_page.dart
│ │ ├── register_page.dart
│ │ ├── reset_password_page.dart
│ │ └── user_verify_code_page.dart
│ ├── movie
│ │ ├── movie_cate_list_page.dart
│ │ ├── movie_cate_list_view.dart
│ │ ├── movie_item_view.dart
│ │ ├── movie_list_item_view.dart
│ │ ├── movie_search_page.dart
│ │ └── rating_bar.dart
│ ├── my_product_list
│ │ ├── my_product_item_view.dart
│ │ └── my_product_list_page.dart
│ ├── player
│ │ ├── video_player_page.dart
│ │ └── video_player_widget.dart
│ ├── profile
│ │ ├── full_width_button.dart
│ │ ├── profile_header_info.dart
│ │ └── profile_page.dart
│ └── web
│ │ └── webview_page.dart
├── routes
│ ├── it_router.dart
│ ├── route_handlers.dart
│ └── routes.dart
├── utils
│ ├── local_storage_utils.dart
│ ├── regex_utils.dart
│ └── user_utils.dart
├── vo
│ ├── comment_vo.dart
│ └── new_product_vo.dart
└── widgets
│ ├── choose_img_modal_sheet.dart
│ ├── custom_alert_dialog.dart
│ ├── indicator_factory.dart
│ ├── load_state_layout_widget.dart
│ └── loading_dialog.dart
├── pubspec.yaml
├── screenshots
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.png
└── apk_download.png
└── test
└── widget_test.dart
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.lock
4 | *.log
5 | *.pyc
6 | *.swp
7 | .DS_Store
8 | .atom/
9 | .buildlog/
10 | .history
11 | .svn/
12 | release.sh
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # Visual Studio Code related
20 | .vscode/
21 |
22 | # Flutter/Dart/Pub related
23 | **/doc/api/
24 | .dart_tool/
25 | .flutter-plugins
26 | .packages
27 | .pub-cache/
28 | .pub/
29 | build/
30 |
31 | # Android related
32 | **/android/**/gradle-wrapper.jar
33 | **/android/.gradle
34 | **/android/captures/
35 | **/android/gradlew
36 | **/android/gradlew.bat
37 | **/android/local.properties
38 | **/android/**/GeneratedPluginRegistrant.java
39 |
40 | # iOS/XCode related
41 | **/ios/**/*.mode1v3
42 | **/ios/**/*.mode2v3
43 | **/ios/**/*.moved-aside
44 | **/ios/**/*.pbxuser
45 | **/ios/**/*.perspectivev3
46 | **/ios/**/*sync/
47 | **/ios/**/.sconsign.dblite
48 | **/ios/**/.tags*
49 | **/ios/**/.vagrant/
50 | **/ios/**/DerivedData/
51 | **/ios/**/Icon?
52 | **/ios/**/Pods/
53 | **/ios/**/.symlinks/
54 | **/ios/**/profile
55 | **/ios/**/xcuserdata
56 | **/ios/.generated/
57 | **/ios/Flutter/App.framework
58 | **/ios/Flutter/Flutter.framework
59 | **/ios/Flutter/Generated.xcconfig
60 | **/ios/Flutter/app.flx
61 | **/ios/Flutter/app.zip
62 | **/ios/Flutter/flutter_assets/
63 | **/ios/ServiceDefinitions.json
64 | **/ios/Runner/GeneratedPluginRegistrant.*
65 | **/ios/IPADir/
66 |
67 | # Exceptions to above rules.
68 | !**/ios/**/default.mode1v3
69 | !**/ios/**/default.mode2v3
70 | !**/ios/**/default.pbxuser
71 | !**/ios/**/default.perspectivev3
72 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
73 |
--------------------------------------------------------------------------------
/.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: 5391447fae6209bb21a89e6a5a6583cac1af9b4b
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD License
2 |
3 | Copyright (c) 2019-present, IT Resource Exchange Group Holding Limited. All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without modification,
6 | are permitted provided that the following conditions are met:
7 |
8 | * Redistributions of source code must retain the above copyright notice, this
9 | list of conditions and the following disclaimer.
10 |
11 | * Redistributions in binary form must reproduce the above copyright notice,
12 | this list of conditions and the following disclaimer in the documentation
13 | and/or other materials provided with the distribution.
14 |
15 | * Neither the name of the copyright holder nor the names of its contributors may be used to
16 | endorse or promote products derived from this software without specific
17 | prior written permission.
18 |
19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 《IT换换》基于Flutter开发,是一款完全开源、跨平台的一个资源共享社区APP,目前项目还是初期阶段,项目搜集全网的精品资源教程,进行筛选分类,让用户可以快速找到自己中意的资源(可以快速导出android版本、iOS版本),如果你喜欢或项目对你有帮助,欢迎给个star鼓励一波~~~
2 |
3 | ## 下载
4 | 
5 |
6 | * 因为苹果审核不可抗力的原因,暂不上线
7 |
8 | ## 版本更新记录
9 | **1.** [注册增加验证码和忘记密码流程](https://www.jianshu.com/p/84393a45935f)
10 |
11 | **2.** [新增收藏和评论功能](https://www.jianshu.com/p/d2768f0d20b8)
12 |
13 | ## 先上图
14 | 
15 |
16 | 
17 |
18 | 
19 |
20 | ## 项目结构
21 | ```
22 | ├── common - 一些通用的常量定义
23 | ├── model - 项目中使用的后台返回的数据模型
24 | ├── net - 基于dio的网络请求封装
25 | │ └── interceptors - 网络请求的拦截器
26 | ├── pages - 页面
27 | │ ├── classify - 分类页面
28 | │ ├── create - 资源创建编辑页面
29 | │ ├── detail - 资源详情页面
30 | │ ├── home - 首页
31 | │ ├── login - 登录注册页面
32 | │ ├── my_product_list - 我发布资源列表页面
33 | │ ├── profile - 个人中心页面
34 | │ └── web - web页面
35 | ├── route - 基于fluro的路由
36 | ├── utils - 项目中使用的工具类
37 | ├── vo - 前端页面组合的VO
38 | └── widgets - 一些通用Widget
39 | ```
40 |
41 | ## JSON 数据解析
42 | 项目开发过程中,使用json_serializable,但在编写模型的时候依然较为繁琐,索性在之前[JSONConverter](https://github.com/iosyaowei/JSONConverter)添加了对Flutter的支持。
43 | JSONConverter 是MAC上iOS开发的辅助小工具,可以快速的把JSON数据转换生成对应的模型类属性,目前支持Objective-C、Swift、Flutter以及目前流行的Swift第三方库: [SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON)、[HandyJSON](https://github.com/alibaba/HandyJSON),[ObjectMapper](https://github.com/Hearst-DD/ObjectMapper),可以灵活选择构建class/struct,并支持配置类名前缀等,省去手敲模型的麻烦,借此提高我们的开发效率。
44 |
45 | 
46 |
47 | ## 待完成事项
48 | 1. 注册邮箱验证码功能 (已完成)
49 | 2. 资源评论功能(已完成)
50 | 3. 基于微信的资源详情H5分享
51 | 4. 收藏功能(已完成)
52 | 5. 搜索功能
53 | 6. 。。。
54 |
55 | ## 第三方声明
56 | * cached_network_image: ^1.1.0
57 | * pull_to_refresh: ^1.3.3
58 | * dio: ^2.1.1
59 | * shared_preferences: ^0.4.2
60 | * connectivity: ^0.4.3+6
61 | * event_bus: ^1.1.0
62 | * json_annotation: ^2.0.0
63 | * intl: ^0.15.8
64 | * flutter_spinkit: "^3.1.0"
65 | * oktoast: ^2.1.9
66 | * image_picker: ^0.6.0+10
67 | * multi_image_picker: ^4.5.1
68 | * flutter_webview_plugin: ^0.3.5
69 | * flutter_swiper : ^1.1.6
70 | * fluro: "^1.5.1"
71 |
72 | ## 注意
73 | * 源码仅作学习,接口进行次数限制.
74 |
75 | ## 开源协议
76 | ```
77 | BSD License
78 |
79 | Copyright (c) 2019-present, IT Resource Exchange Group Holding Limited. All rights reserved.
80 |
81 | Redistribution and use in source and binary forms, with or without modification,
82 | are permitted provided that the following conditions are met:
83 |
84 | * Redistributions of source code must retain the above copyright notice, this
85 | list of conditions and the following disclaimer.
86 |
87 | * Redistributions in binary form must reproduce the above copyright notice,
88 | this list of conditions and the following disclaimer in the documentation
89 | and/or other materials provided with the distribution.
90 |
91 | * Neither the name of the copyright holder nor the names of its contributors may be used to
92 | endorse or promote products derived from this software without specific
93 | prior written permission.
94 |
95 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
96 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
97 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
98 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
99 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
100 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
101 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
102 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
103 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
104 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
105 | ```
106 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
26 |
27 | android {
28 | compileSdkVersion 28
29 |
30 | lintOptions {
31 | disable 'InvalidPackage'
32 | }
33 |
34 | defaultConfig {
35 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
36 | applicationId "com.example.itresourceexchangeapp"
37 | minSdkVersion 19
38 | targetSdkVersion 28
39 | versionCode flutterVersionCode.toInteger()
40 | versionName flutterVersionName
41 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
42 | }
43 |
44 | buildTypes {
45 | release {
46 | // TODO: Add your own signing config for the release build.
47 | // Signing with the debug keys for now, so `flutter run --release` works.
48 | signingConfig signingConfigs.debug
49 | }
50 | }
51 | }
52 |
53 | flutter {
54 | source '../..'
55 | }
56 |
57 | dependencies {
58 | testImplementation 'junit:junit:4.12'
59 | androidTestImplementation 'androidx.test:runner:1.3.0-alpha02'
60 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha02'
61 | }
62 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
17 |
21 |
28 |
32 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/example/itresourceexchangeapp/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.itresourceexchangeapp;
2 |
3 | import android.os.Bundle;
4 | import io.flutter.app.FlutterActivity;
5 | import io.flutter.plugins.GeneratedPluginRegistrant;
6 |
7 | public class MainActivity extends FlutterActivity {
8 | @Override
9 | protected void onCreate(Bundle savedInstanceState) {
10 | super.onCreate(savedInstanceState);
11 | GeneratedPluginRegistrant.registerWith(this);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | -
8 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-hdpi/app_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-hdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-mdpi/app_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-mdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-xhdpi/app_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-xhdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-xxhdpi/app_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-xxhdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-xxxhdpi/app_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/android/app/src/main/res/mipmap-xxxhdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | jcenter()
5 | }
6 |
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:3.2.1'
9 | }
10 | }
11 |
12 | allprojects {
13 | repositories {
14 | google()
15 | jcenter()
16 | }
17 | }
18 |
19 | rootProject.buildDir = '../build'
20 | subprojects {
21 | project.buildDir = "${rootProject.buildDir}/${project.name}"
22 | }
23 | subprojects {
24 | project.evaluationDependsOn(':app')
25 | }
26 |
27 | task clean(type: Delete) {
28 | delete rootProject.buildDir
29 | }
30 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | android.enableJetifier=true
2 | android.useAndroidX=true
3 | org.gradle.jvmargs=-Xmx1536M
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/assets/fonts/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/assets/fonts/iconfont.ttf
--------------------------------------------------------------------------------
/assets/imgs/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/assets/imgs/app_icon.png
--------------------------------------------------------------------------------
/assets/imgs/ic_cards_wallet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/assets/imgs/ic_cards_wallet.png
--------------------------------------------------------------------------------
/assets/imgs/ic_collections.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/assets/imgs/ic_collections.png
--------------------------------------------------------------------------------
/assets/imgs/ic_comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/assets/imgs/ic_comment.png
--------------------------------------------------------------------------------
/assets/imgs/ic_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/assets/imgs/ic_settings.png
--------------------------------------------------------------------------------
/assets/imgs/img_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/assets/imgs/img_default.png
--------------------------------------------------------------------------------
/ios/ExportOptions.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | destination
6 | export
7 | method
8 | app-store
9 | provisioningProfiles
10 |
11 | com.devyao.itresourceexchange
12 | it_resource_exchange_appstore_profile
13 |
14 | signingCertificate
15 | iPhone Distribution
16 | signingStyle
17 | manual
18 | stripSwiftSymbols
19 |
20 | teamID
21 | 7DDW7FQJ8R
22 | uploadSymbols
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/flutter_export_environment.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # This is a generated file; do not edit or check into version control.
3 | export "FLUTTER_ROOT=/Users/yaowei/Documents/flutter"
4 | export "FLUTTER_APPLICATION_PATH=/Users/yaowei/Documents/GitPro/it_resource_exchange_app"
5 | export "FLUTTER_TARGET=/Users/yaowei/Documents/GitPro/it_resource_exchange_app/lib/main.dart"
6 | export "FLUTTER_BUILD_DIR=build"
7 | export "SYMROOT=${SOURCE_ROOT}/../build/ios"
8 | export "FLUTTER_FRAMEWORK_DIR=/Users/yaowei/Documents/flutter/bin/cache/artifacts/engine/ios"
9 | export "FLUTTER_BUILD_NAME=1.2.0"
10 | export "FLUTTER_BUILD_NUMBER=0"
11 | export "TRACK_WIDGET_CREATION=true"
12 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '9.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def parse_KV_file(file, separator='=')
14 | file_abs_path = File.expand_path(file)
15 | if !File.exists? file_abs_path
16 | return [];
17 | end
18 | pods_ary = []
19 | skip_line_start_symbols = ["#", "/"]
20 | File.foreach(file_abs_path) { |line|
21 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
22 | plugin = line.split(pattern=separator)
23 | if plugin.length == 2
24 | podname = plugin[0].strip()
25 | path = plugin[1].strip()
26 | podpath = File.expand_path("#{path}", file_abs_path)
27 | pods_ary.push({:name => podname, :path => podpath});
28 | else
29 | puts "Invalid plugin specification: #{line}"
30 | end
31 | }
32 | return pods_ary
33 | end
34 |
35 | target 'Runner' do
36 | use_frameworks!
37 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
38 | # referring to absolute paths on developers' machines.
39 | system('rm -rf .symlinks')
40 | system('mkdir -p .symlinks/plugins')
41 |
42 | # Flutter Pods
43 | generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
44 | if generated_xcode_build_settings.empty?
45 | puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
46 | end
47 | generated_xcode_build_settings.map { |p|
48 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
49 | symlink = File.join('.symlinks', 'flutter')
50 | File.symlink(File.dirname(p[:path]), symlink)
51 | pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
52 | end
53 | }
54 |
55 | # Plugin Pods
56 | plugin_pods = parse_KV_file('../.flutter-plugins')
57 | plugin_pods.map { |p|
58 | symlink = File.join('.symlinks', 'plugins', p[:name])
59 | File.symlink(p[:path], symlink)
60 | pod p[:name], :path => File.join(symlink, 'ios')
61 | }
62 | end
63 |
64 | post_install do |installer|
65 | installer.pods_project.targets.each do |target|
66 | target.build_configurations.each do |config|
67 | config.build_settings['ENABLE_BITCODE'] = 'NO'
68 | end
69 | end
70 | end
71 |
--------------------------------------------------------------------------------
/ios/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | #import
6 |
--------------------------------------------------------------------------------
/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/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/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 | BuildSystemType
6 | Original
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface AppDelegate : FlutterAppDelegate
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.m:
--------------------------------------------------------------------------------
1 | #include "AppDelegate.h"
2 | #include "GeneratedPluginRegistrant.h"
3 |
4 | @implementation AppDelegate
5 |
6 | - (BOOL)application:(UIApplication *)application
7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
8 | [GeneratedPluginRegistrant registerWithRegistry:self];
9 | // Override point for customization after application launch.
10 | return [super application:application didFinishLaunchingWithOptions:launchOptions];
11 | }
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "app_iconiPhoneNotification_20pt@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "app_iconiPhoneNotification_20pt@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "app_iconiPhoneSpootlight5_29pt@2x.png",
19 | "scale" : "2x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "app_iconiPhoneSpootlight5_29pt@3x.png",
25 | "scale" : "3x"
26 | },
27 | {
28 | "size" : "40x40",
29 | "idiom" : "iphone",
30 | "filename" : "app_iconiPhoneSpootlight7_40pt@2x.png",
31 | "scale" : "2x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "app_iconiPhoneSpootlight7_40pt@3x.png",
37 | "scale" : "3x"
38 | },
39 | {
40 | "size" : "60x60",
41 | "idiom" : "iphone",
42 | "filename" : "app_iconiPhoneApp_60pt@2x.png",
43 | "scale" : "2x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "app_iconiPhoneApp_60pt@3x.png",
49 | "scale" : "3x"
50 | },
51 | {
52 | "size" : "20x20",
53 | "idiom" : "ipad",
54 | "filename" : "app_iconiPadNotifications_20pt.png",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "app_iconiPadNotifications_20pt@2x.png",
61 | "scale" : "2x"
62 | },
63 | {
64 | "size" : "29x29",
65 | "idiom" : "ipad",
66 | "filename" : "app_iconiPadSpootlight5_29pt.png",
67 | "scale" : "1x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "app_iconiPadSpootlight5_29pt@2x.png",
73 | "scale" : "2x"
74 | },
75 | {
76 | "size" : "40x40",
77 | "idiom" : "ipad",
78 | "filename" : "app_iconiPadSpootlight7_40pt.png",
79 | "scale" : "1x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "app_iconiPadSpootlight7_40pt@2x.png",
85 | "scale" : "2x"
86 | },
87 | {
88 | "size" : "76x76",
89 | "idiom" : "ipad",
90 | "filename" : "app_iconiPadApp_76pt.png",
91 | "scale" : "1x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "app_iconiPadApp_76pt@2x.png",
97 | "scale" : "2x"
98 | },
99 | {
100 | "size" : "83.5x83.5",
101 | "idiom" : "ipad",
102 | "filename" : "app_iconiPadProApp_83.5pt@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "1024x1024",
107 | "idiom" : "ios-marketing",
108 | "filename" : "app_icon.png",
109 | "scale" : "1x"
110 | }
111 | ],
112 | "info" : {
113 | "version" : 1,
114 | "author" : "xcode"
115 | }
116 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadApp_76pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadApp_76pt.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadApp_76pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadApp_76pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadNotifications_20pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadNotifications_20pt.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadNotifications_20pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadNotifications_20pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadProApp_83.5pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadProApp_83.5pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadSpootlight5_29pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadSpootlight5_29pt.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadSpootlight5_29pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadSpootlight5_29pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadSpootlight7_40pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadSpootlight7_40pt.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadSpootlight7_40pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPadSpootlight7_40pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneApp_60pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneApp_60pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneApp_60pt@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneApp_60pt@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneNotification_20pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneNotification_20pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneNotification_20pt@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneNotification_20pt@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneSpootlight5_29pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneSpootlight5_29pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneSpootlight5_29pt@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneSpootlight5_29pt@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneSpootlight7_40pt@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneSpootlight7_40pt@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneSpootlight7_40pt@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/AppIcon.appiconset/app_iconiPhoneSpootlight7_40pt@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "extent" : "full-screen",
5 | "idiom" : "iphone",
6 | "subtype" : "2688h",
7 | "filename" : "launchimage-1242*2688@2x.png",
8 | "minimum-system-version" : "12.0",
9 | "orientation" : "portrait",
10 | "scale" : "3x"
11 | },
12 | {
13 | "extent" : "full-screen",
14 | "idiom" : "iphone",
15 | "subtype" : "1792h",
16 | "filename" : "launchimage-828*1792@2x.png",
17 | "minimum-system-version" : "12.0",
18 | "orientation" : "portrait",
19 | "scale" : "2x"
20 | },
21 | {
22 | "extent" : "full-screen",
23 | "idiom" : "iphone",
24 | "subtype" : "2436h",
25 | "filename" : "launchimage-1125*2436@2x.png",
26 | "minimum-system-version" : "11.0",
27 | "orientation" : "portrait",
28 | "scale" : "3x"
29 | },
30 | {
31 | "extent" : "full-screen",
32 | "idiom" : "iphone",
33 | "subtype" : "736h",
34 | "filename" : "launchimage-1242*2208@2x.png",
35 | "minimum-system-version" : "8.0",
36 | "orientation" : "portrait",
37 | "scale" : "3x"
38 | },
39 | {
40 | "extent" : "full-screen",
41 | "idiom" : "iphone",
42 | "subtype" : "667h",
43 | "filename" : "launchimage-750*1334@2x.png",
44 | "minimum-system-version" : "8.0",
45 | "orientation" : "portrait",
46 | "scale" : "2x"
47 | },
48 | {
49 | "orientation" : "portrait",
50 | "idiom" : "iphone",
51 | "filename" : "launchimage-640*960@2x.png",
52 | "extent" : "full-screen",
53 | "minimum-system-version" : "7.0",
54 | "scale" : "2x"
55 | },
56 | {
57 | "extent" : "full-screen",
58 | "idiom" : "iphone",
59 | "subtype" : "retina4",
60 | "filename" : "launchimage-640*1136@2x.png",
61 | "minimum-system-version" : "7.0",
62 | "orientation" : "portrait",
63 | "scale" : "2x"
64 | },
65 | {
66 | "orientation" : "portrait",
67 | "idiom" : "ipad",
68 | "filename" : "launchimage-768*1024@2x.png",
69 | "extent" : "full-screen",
70 | "minimum-system-version" : "7.0",
71 | "scale" : "1x"
72 | },
73 | {
74 | "orientation" : "portrait",
75 | "idiom" : "ipad",
76 | "filename" : "launchimage-1536*2048@2x.png",
77 | "extent" : "full-screen",
78 | "minimum-system-version" : "7.0",
79 | "scale" : "2x"
80 | }
81 | ],
82 | "info" : {
83 | "version" : 1,
84 | "author" : "xcode"
85 | }
86 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-1125*2436@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-1125*2436@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-1242*2208@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-1242*2208@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-1242*2688@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-1242*2688@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-1536*2048@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-1536*2048@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-640*1136@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-640*1136@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-640*960@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-640*960@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-750*1334@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-750*1334@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-768*1024@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-768*1024@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-828*1792@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvkeep/it_resource_exchange_app/ba8f0ff8c7f7eb8fec3ae2fac00bddd182d579d9/ios/Runner/Assets.xcassets/LaunchImage.launchimage/launchimage-828*1792@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.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 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/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 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ITSAppUsesNonExemptEncryption
6 |
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleDisplayName
10 | IT换换
11 | CFBundleExecutable
12 | $(EXECUTABLE_NAME)
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | it_resource_exchange_app
19 | CFBundlePackageType
20 | APPL
21 | CFBundleShortVersionString
22 | $(FLUTTER_BUILD_NAME)
23 | CFBundleSignature
24 | ????
25 | CFBundleVersion
26 | $(FLUTTER_BUILD_NUMBER)
27 | LSRequiresIPhoneOS
28 |
29 | NSAppTransportSecurity
30 |
31 | NSAllowsArbitraryLoadsInWebContent
32 |
33 | NSAllowsArbitraryLoads
34 |
35 |
36 | NSCameraUsageDescription
37 | 创建新产品的时候需要使用相机拍摄封面和预览图
38 | NSMicrophoneUsageDescription
39 | 创建新产品的时候需要使用相机拍摄封面和预览图
40 | NSPhotoLibraryUsageDescription
41 | 创建新产品的时候需要从相册选择封面和预览图
42 | UIMainStoryboardFile
43 | Main
44 | UIStatusBarStyle
45 | UIStatusBarStyleLightContent
46 | UIRequiresFullScreen
47 |
48 | UISupportedInterfaceOrientations
49 |
50 | UIInterfaceOrientationPortrait
51 | UIInterfaceOrientationLandscapeLeft
52 | UIInterfaceOrientationLandscapeRight
53 |
54 | UISupportedInterfaceOrientations~ipad
55 |
56 | UIInterfaceOrientationPortrait
57 | UIInterfaceOrientationPortraitUpsideDown
58 | UIInterfaceOrientationLandscapeLeft
59 | UIInterfaceOrientationLandscapeRight
60 |
61 | UIViewControllerBasedStatusBarAppearance
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/ios/Runner/main.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import "AppDelegate.h"
4 |
5 | int main(int argc, char* argv[]) {
6 | @autoreleasepool {
7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/lib/common/constant.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:it_resource_exchange_app/model/cate_info.dart';
3 | import 'dart:math';
4 |
5 | /// 颜色
6 | class AppColors {
7 | static const PrimaryColor = Color(0xff2944CC);
8 | static const DividerColor = Color(0xffd9d9d9);
9 | static const ArrowNormalColor = Color(0xff999999);
10 | static const BackgroundColor = Color(0xffebebeb);
11 | static const DarkTextColor = Color(0xFF333333);
12 | static const MidTextColor = Color(0xFF666666);
13 | static const LightTextColor = Color(0xFF999999);
14 | static const DisableTextColor = Color(0xFFDCDCDC);
15 | static randomColor() {
16 | return Color.fromARGB(255, Random.secure().nextInt(255),
17 | Random.secure().nextInt(255), Random.secure().nextInt(255));
18 | }
19 | }
20 |
21 | class AppSize {
22 | static const DividerWidth = 0.5;
23 | }
24 |
25 | class Constant {
26 | static const IconFontFamily = "appIconFont";
27 | static final movieCateInfoList = [
28 | CateInfo(1, 0, '动作', 0),
29 | CateInfo(2, 0, '喜剧', 0),
30 | CateInfo(3, 0, '爱情', 0),
31 | CateInfo(4, 0, '科幻', 0),
32 | CateInfo(5, 0, '恐怖', 0),
33 | CateInfo(6, 0, '剧情', 0),
34 | CateInfo(7, 0, '战争', 0),
35 | CateInfo(8, 0, '伦理', 0),
36 | CateInfo(9, 0, '奇幻', 0)
37 | ];
38 | }
39 |
40 | class APPConfig {
41 | static const DEBUG = false;
42 | static const Server = "http://47.107.231.54:8090";
43 | // static const Server = "http://localhost:8090";
44 | }
45 |
46 | class APPIcons {
47 | static const PlaceHolderAvatar = Icon(
48 | IconData(
49 | 0xe642,
50 | fontFamily: Constant.IconFontFamily,
51 | ),
52 | size: 60.0,
53 | color: AppColors.ArrowNormalColor,
54 | );
55 |
56 | static const AvatarData = IconData(
57 | 0xe642,
58 | fontFamily: Constant.IconFontFamily,
59 | );
60 |
61 | static const AddImgData = IconData(
62 | 0xe70a,
63 | fontFamily: Constant.IconFontFamily,
64 | );
65 |
66 | static const ProfileListImgData = IconData(
67 | 0xe64d,
68 | fontFamily: Constant.IconFontFamily,
69 | );
70 |
71 | static const ProfileAddImgData = IconData(
72 | 0xe60c,
73 | fontFamily: Constant.IconFontFamily,
74 | );
75 |
76 | static const ProfileSettingImgData = IconData(
77 | 0xe615,
78 | fontFamily: Constant.IconFontFamily,
79 | );
80 |
81 | static const EmptyData = IconData(
82 | 0xe643,
83 | fontFamily: Constant.IconFontFamily,
84 | );
85 |
86 | static const NetworkErrorData = IconData(
87 | 0xe86e,
88 | fontFamily: Constant.IconFontFamily,
89 | );
90 |
91 | static const CollectionData = IconData(
92 | 0xe616,
93 | fontFamily: Constant.IconFontFamily,
94 | );
95 |
96 | static const CollectSelectData = IconData(
97 | 0xe600,
98 | fontFamily: Constant.IconFontFamily,
99 | );
100 |
101 | static const VideoData = IconData(
102 | 0xe60d,
103 | fontFamily: Constant.IconFontFamily,
104 | );
105 | }
106 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:it_resource_exchange_app/common/constant.dart' show AppColors;
3 | import 'package:it_resource_exchange_app/routes/it_router.dart';
4 | import './utils/local_storage_utils.dart';
5 | import 'package:oktoast/oktoast.dart';
6 | import 'package:flutter/services.dart';
7 | import 'package:fluro/fluro.dart';
8 | import './routes/routes.dart';
9 |
10 | void main() async {
11 | await LocalStorage.getInstance();
12 | runApp(MyApp());
13 | }
14 |
15 | class MyApp extends StatelessWidget {
16 | MyApp() {
17 | SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
18 | final router = new Router();
19 | Routes.configureRoutes(router);
20 | ITRouter.initWithRouter(router);
21 | }
22 |
23 | @override
24 | Widget build(BuildContext context) {
25 | return OKToast(
26 | textStyle: TextStyle(fontSize: 16.0, color: Colors.white),
27 | backgroundColor: Colors.black87,
28 | radius: 6.0,
29 | child: MaterialApp(
30 | title: '换换',
31 | theme: ThemeData(
32 | primaryColor: AppColors.PrimaryColor,
33 | backgroundColor: Colors.white),
34 | onGenerateRoute: ITRouter.router().generator,
35 | ),
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/model/base_result.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 | part 'base_result.g.dart';
3 |
4 | @JsonSerializable()
5 | class BaseResult {
6 | var data;
7 | int status;
8 | String message;
9 |
10 | BaseResult(this.data, this.status, this.message);
11 |
12 | factory BaseResult.fromJson(Map json) => _$BaseResultFromJson(json);
13 | Map toJson() => _$BaseResultToJson(this);
14 | }
--------------------------------------------------------------------------------
/lib/model/base_result.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'base_result.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | BaseResult _$BaseResultFromJson(Map json) {
10 | return BaseResult(
11 | json['data'], json['status'] as int, json['message'] as String);
12 | }
13 |
14 | Map _$BaseResultToJson(BaseResult instance) =>
15 | {
16 | 'data': instance.data,
17 | 'status': instance.status,
18 | 'message': instance.message
19 | };
20 |
--------------------------------------------------------------------------------
/lib/model/cate_info.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'cate_info.g.dart';
4 |
5 |
6 | @JsonSerializable()
7 | class CateInfo extends Object {
8 |
9 | @JsonKey(name: 'cateId')
10 | int cateId;
11 |
12 | @JsonKey(name: 'orderIndex')
13 | int orderIndex;
14 |
15 | @JsonKey(name: 'cateTitle')
16 | String cateTitle;
17 |
18 | @JsonKey(name: 'cateStatus')
19 | int cateStatus;
20 |
21 |
22 | CateInfo(this.cateId,this.orderIndex,this.cateTitle,this.cateStatus,);
23 |
24 | factory CateInfo.fromJson(Map srcJson) => _$CateInfoFromJson(srcJson);
25 |
26 | Map toJson() => _$CateInfoToJson(this);
27 |
28 | }
--------------------------------------------------------------------------------
/lib/model/cate_info.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'cate_info.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | CateInfo _$CateInfoFromJson(Map json) {
10 | return CateInfo(json['cateId'] as int, json['orderIndex'] as int,
11 | json['cateTitle'] as String, json['cateStatus'] as int);
12 | }
13 |
14 | Map _$CateInfoToJson(CateInfo instance) => {
15 | 'cateId': instance.cateId,
16 | 'orderIndex': instance.orderIndex,
17 | 'cateTitle': instance.cateTitle,
18 | 'cateStatus': instance.cateStatus
19 | };
20 |
--------------------------------------------------------------------------------
/lib/model/collect_product_info.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'collect_product_info.g.dart';
4 |
5 | @JsonSerializable()
6 | class CollectProductInfo extends Object {
7 |
8 | @JsonKey(name: 'price')
9 | double price;
10 |
11 | @JsonKey(name: 'cateId')
12 | String cateId;
13 |
14 | @JsonKey(name: 'coverUrl')
15 | String coverUrl;
16 |
17 | @JsonKey(name: 'updateTime')
18 | int updateTime;
19 |
20 | @JsonKey(name: 'productId')
21 | int productId;
22 |
23 | @JsonKey(name: 'productStatus')
24 | int productStatus;
25 |
26 | @JsonKey(name: 'collectId')
27 | int collectId;
28 |
29 | @JsonKey(name: 'createdBy')
30 | String createdBy;
31 |
32 | @JsonKey(name: 'productTitle')
33 | String productTitle;
34 |
35 | @JsonKey(name: 'imgUrls')
36 | String imgUrls;
37 |
38 | @JsonKey(name: 'productAddressUrl')
39 | String productAddressUrl;
40 |
41 | @JsonKey(name: 'keywords')
42 | String keywords;
43 |
44 | @JsonKey(name: 'createdTime')
45 | int createdTime;
46 |
47 | @JsonKey(name: 'productDesc')
48 | String productDesc;
49 |
50 | @JsonKey(name: 'tradeCount')
51 | int tradeCount;
52 |
53 | @JsonKey(name: 'isDelete')
54 | bool isDelete;
55 |
56 | @JsonKey(name: 'cateTitle')
57 | String cateTitle;
58 |
59 | CollectProductInfo(this.price,this.cateId,this.coverUrl,this.updateTime,this.productId,this.productStatus,this.collectId,this.createdBy,this.productTitle,this.imgUrls,this.productAddressUrl,this.keywords,this.createdTime,this.productDesc,this.tradeCount,this.isDelete,this.cateTitle,);
60 |
61 | factory CollectProductInfo.fromJson(Map srcJson) => _$CollectProductInfoFromJson(srcJson);
62 |
63 | Map toJson() => _$CollectProductInfoToJson(this);
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/lib/model/collect_product_info.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'collect_product_info.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | CollectProductInfo _$CollectProductInfoFromJson(Map json) {
10 | return CollectProductInfo(
11 | (json['price'] as num)?.toDouble(),
12 | json['cateId'] as String,
13 | json['coverUrl'] as String,
14 | json['updateTime'] as int,
15 | json['productId'] as int,
16 | json['productStatus'] as int,
17 | json['collectId'] as int,
18 | json['createdBy'] as String,
19 | json['productTitle'] as String,
20 | json['imgUrls'] as String,
21 | json['productAddressUrl'] as String,
22 | json['keywords'] as String,
23 | json['createdTime'] as int,
24 | json['productDesc'] as String,
25 | json['tradeCount'] as int,
26 | json['isDelete'] as bool,
27 | json['cateTitle'] as String);
28 | }
29 |
30 | Map _$CollectProductInfoToJson(CollectProductInfo instance) =>
31 | {
32 | 'price': instance.price,
33 | 'cateId': instance.cateId,
34 | 'coverUrl': instance.coverUrl,
35 | 'updateTime': instance.updateTime,
36 | 'productId': instance.productId,
37 | 'productStatus': instance.productStatus,
38 | 'collectId': instance.collectId,
39 | 'createdBy': instance.createdBy,
40 | 'productTitle': instance.productTitle,
41 | 'imgUrls': instance.imgUrls,
42 | 'productAddressUrl': instance.productAddressUrl,
43 | 'keywords': instance.keywords,
44 | 'createdTime': instance.createdTime,
45 | 'productDesc': instance.productDesc,
46 | 'tradeCount': instance.tradeCount,
47 | 'isDelete': instance.isDelete,
48 | 'cateTitle': instance.cateTitle
49 | };
50 |
--------------------------------------------------------------------------------
/lib/model/comment_model.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'comment_model.g.dart';
4 |
5 | @JsonSerializable()
6 | class CommentModel extends Object {
7 |
8 | @JsonKey(name: 'content')
9 | String content;
10 |
11 | @JsonKey(name: 'createdTime')
12 | int createdTime;
13 |
14 | @JsonKey(name: 'createUserId')
15 | int createUserId;
16 |
17 | @JsonKey(name: 'createUserName')
18 | String createUserName;
19 |
20 | @JsonKey(name: 'createUserAvatar')
21 | String createUserAvatar;
22 |
23 | @JsonKey(name: 'parentUserId')
24 | int parentUserId;
25 |
26 | @JsonKey(name: 'parentUserName')
27 | String parentUserName;
28 |
29 | @JsonKey(name: 'parentUserAvatar')
30 | String parentUserAvatar;
31 |
32 | @JsonKey(name: 'productId')
33 | int productId;
34 |
35 | @JsonKey(name: 'commentList')
36 | List commentList;
37 |
38 | @JsonKey(name: 'commentId')
39 | int commentId;
40 |
41 | @JsonKey(name: 'parentCommentId')
42 | int parentCommentId;
43 |
44 | CommentModel(this.content,this.createdTime,this.createUserId,this.createUserName,this.createUserAvatar,this.parentUserId,this.parentUserName,this.parentUserAvatar,this.productId,this.commentList,this.commentId,this.parentCommentId,);
45 |
46 | factory CommentModel.fromJson(Map srcJson) => _$CommentModelFromJson(srcJson);
47 |
48 | Map toJson() => _$CommentModelToJson(this);
49 |
50 | }
--------------------------------------------------------------------------------
/lib/model/comment_model.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'comment_model.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | CommentModel _$CommentModelFromJson(Map json) {
10 | return CommentModel(
11 | json['content'] as String,
12 | json['createdTime'] as int,
13 | json['createUserId'] as int,
14 | json['createUserName'] as String,
15 | json['createUserAvatar'] as String,
16 | json['parentUserId'] as int,
17 | json['parentUserName'] as String,
18 | json['parentUserAvatar'] as String,
19 | json['productId'] as int,
20 | (json['commentList'] as List)
21 | ?.map((e) => e == null
22 | ? null
23 | : CommentModel.fromJson(e as Map))
24 | ?.toList(),
25 | json['commentId'] as int,
26 | json['parentCommentId'] as int);
27 | }
28 |
29 | Map _$CommentModelToJson(CommentModel instance) =>
30 | {
31 | 'content': instance.content,
32 | 'createdTime': instance.createdTime,
33 | 'createUserId': instance.createUserId,
34 | 'createUserName': instance.createUserName,
35 | 'createUserAvatar': instance.createUserAvatar,
36 | 'parentUserId': instance.parentUserId,
37 | 'parentUserName': instance.parentUserName,
38 | 'parentUserAvatar': instance.parentUserAvatar,
39 | 'productId': instance.productId,
40 | 'commentList': instance.commentList,
41 | 'commentId': instance.commentId,
42 | 'parentCommentId': instance.parentCommentId
43 | };
44 |
--------------------------------------------------------------------------------
/lib/model/home_info.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'home_info.g.dart';
4 |
5 | @JsonSerializable()
6 | class HomeInfo extends Object {
7 |
8 | @JsonKey(name: 'advertiseList')
9 | List advertiseList;
10 |
11 | @JsonKey(name: 'recommendProductList')
12 | List recommendProductList;
13 |
14 | HomeInfo(this.advertiseList,this.recommendProductList,);
15 |
16 | factory HomeInfo.fromJson(Map srcJson) => _$HomeInfoFromJson(srcJson);
17 |
18 | Map toJson() => _$HomeInfoToJson(this);
19 |
20 | }
21 |
22 | @JsonSerializable()
23 | class AdvertiseList extends Object {
24 |
25 | @JsonKey(name: 'adId')
26 | int adId;
27 |
28 | @JsonKey(name: 'adTitle')
29 | String adTitle;
30 |
31 | @JsonKey(name: 'adDetailUrl')
32 | String adDetailUrl;
33 |
34 | @JsonKey(name: 'adProductId')
35 | String adProductId;
36 |
37 | @JsonKey(name: 'adType')
38 | int adType;
39 |
40 | @JsonKey(name: 'adCoverUrl')
41 | String adCoverUrl;
42 |
43 | AdvertiseList(this.adId,this.adTitle,this.adDetailUrl,this.adProductId,this.adType,this.adCoverUrl,);
44 |
45 | factory AdvertiseList.fromJson(Map srcJson) => _$AdvertiseListFromJson(srcJson);
46 |
47 | Map toJson() => _$AdvertiseListToJson(this);
48 |
49 | }
50 |
51 | @JsonSerializable()
52 | class RecommendProductList extends Object {
53 |
54 | @JsonKey(name: 'coverUrl')
55 | String coverUrl;
56 |
57 | @JsonKey(name: 'cateId')
58 | String cateId;
59 |
60 | @JsonKey(name: 'productAddressPassword')
61 | String productAddressPassword;
62 |
63 | @JsonKey(name: 'imgUrls')
64 | String imgUrls;
65 |
66 | @JsonKey(name: 'keywords')
67 | String keywords;
68 |
69 | @JsonKey(name: 'price')
70 | double price;
71 |
72 | @JsonKey(name: 'productTitle')
73 | String productTitle;
74 |
75 | @JsonKey(name: 'revision')
76 | String revision;
77 |
78 | @JsonKey(name: 'productStatus')
79 | int productStatus;
80 |
81 | @JsonKey(name: 'productDesc')
82 | String productDesc;
83 |
84 | @JsonKey(name: 'recommendId')
85 | int recommendId;
86 |
87 | @JsonKey(name: 'cateTitle')
88 | String cateTitle;
89 |
90 | @JsonKey(name: 'isDelete')
91 | bool isDelete;
92 |
93 | @JsonKey(name: 'productId')
94 | int productId;
95 |
96 | @JsonKey(name: 'productAddressUrl')
97 | String productAddressUrl;
98 |
99 | @JsonKey(name: 'updateBy')
100 | String updateBy;
101 |
102 | @JsonKey(name: 'updateTime')
103 | int updateTime;
104 |
105 | @JsonKey(name: 'tradeCount')
106 | int tradeCount;
107 |
108 | @JsonKey(name: 'createdBy')
109 | String createdBy;
110 |
111 | @JsonKey(name: 'createdTime')
112 | int createdTime;
113 |
114 | RecommendProductList(this.coverUrl,this.cateId,this.productAddressPassword,this.imgUrls,this.keywords,this.price,this.productTitle,this.revision,this.productStatus,this.productDesc,this.recommendId,this.cateTitle,this.isDelete,this.productId,this.productAddressUrl,this.updateBy,this.updateTime,this.tradeCount,this.createdBy,this.createdTime,);
115 |
116 | factory RecommendProductList.fromJson(Map srcJson) => _$RecommendProductListFromJson(srcJson);
117 |
118 | Map toJson() => _$RecommendProductListToJson(this);
119 |
120 | }
121 |
--------------------------------------------------------------------------------
/lib/model/home_info.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'home_info.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | HomeInfo _$HomeInfoFromJson(Map json) {
10 | return HomeInfo(
11 | (json['advertiseList'] as List)
12 | ?.map((e) => e == null
13 | ? null
14 | : AdvertiseList.fromJson(e as Map))
15 | ?.toList(),
16 | (json['recommendProductList'] as List)
17 | ?.map((e) => e == null
18 | ? null
19 | : RecommendProductList.fromJson(e as Map))
20 | ?.toList());
21 | }
22 |
23 | Map _$HomeInfoToJson(HomeInfo instance) => {
24 | 'advertiseList': instance.advertiseList,
25 | 'recommendProductList': instance.recommendProductList
26 | };
27 |
28 | AdvertiseList _$AdvertiseListFromJson(Map json) {
29 | return AdvertiseList(
30 | json['adId'] as int,
31 | json['adTitle'] as String,
32 | json['adDetailUrl'] as String,
33 | json['adProductId'] as String,
34 | json['adType'] as int,
35 | json['adCoverUrl'] as String);
36 | }
37 |
38 | Map _$AdvertiseListToJson(AdvertiseList instance) =>
39 | {
40 | 'adId': instance.adId,
41 | 'adTitle': instance.adTitle,
42 | 'adDetailUrl': instance.adDetailUrl,
43 | 'adProductId': instance.adProductId,
44 | 'adType': instance.adType,
45 | 'adCoverUrl': instance.adCoverUrl
46 | };
47 |
48 | RecommendProductList _$RecommendProductListFromJson(Map json) {
49 | return RecommendProductList(
50 | json['coverUrl'] as String,
51 | json['cateId'] as String,
52 | json['productAddressPassword'] as String,
53 | json['imgUrls'] as String,
54 | json['keywords'] as String,
55 | (json['price'] as num)?.toDouble(),
56 | json['productTitle'] as String,
57 | json['revision'] as String,
58 | json['productStatus'] as int,
59 | json['productDesc'] as String,
60 | json['recommendId'] as int,
61 | json['cateTitle'] as String,
62 | json['isDelete'] as bool,
63 | json['productId'] as int,
64 | json['productAddressUrl'] as String,
65 | json['updateBy'] as String,
66 | json['updateTime'] as int,
67 | json['tradeCount'] as int,
68 | json['createdBy'] as String,
69 | json['createdTime'] as int);
70 | }
71 |
72 | Map _$RecommendProductListToJson(
73 | RecommendProductList instance) =>
74 | {
75 | 'coverUrl': instance.coverUrl,
76 | 'cateId': instance.cateId,
77 | 'productAddressPassword': instance.productAddressPassword,
78 | 'imgUrls': instance.imgUrls,
79 | 'keywords': instance.keywords,
80 | 'price': instance.price,
81 | 'productTitle': instance.productTitle,
82 | 'revision': instance.revision,
83 | 'productStatus': instance.productStatus,
84 | 'productDesc': instance.productDesc,
85 | 'recommendId': instance.recommendId,
86 | 'cateTitle': instance.cateTitle,
87 | 'isDelete': instance.isDelete,
88 | 'productId': instance.productId,
89 | 'productAddressUrl': instance.productAddressUrl,
90 | 'updateBy': instance.updateBy,
91 | 'updateTime': instance.updateTime,
92 | 'tradeCount': instance.tradeCount,
93 | 'createdBy': instance.createdBy,
94 | 'createdTime': instance.createdTime
95 | };
96 |
--------------------------------------------------------------------------------
/lib/model/movie_info.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'movie_info.g.dart';
4 |
5 | @JsonSerializable()
6 | class MovieInfo extends Object {
7 |
8 | @JsonKey(name: 'director')
9 | String director;
10 |
11 | @JsonKey(name: 'movieId')
12 | int movieId;
13 |
14 | @JsonKey(name: 'movieArea')
15 | int movieArea;
16 |
17 | @JsonKey(name: 'score')
18 | int score;
19 |
20 | @JsonKey(name: 'status')
21 | int status;
22 |
23 | @JsonKey(name: 'tradeCount')
24 | int tradeCount;
25 |
26 | @JsonKey(name: 'movieName')
27 | String movieName;
28 |
29 | @JsonKey(name: 'language')
30 | int language;
31 |
32 | @JsonKey(name: 'quality')
33 | int quality;
34 |
35 | @JsonKey(name: 'coverUrl')
36 | String coverUrl;
37 |
38 | @JsonKey(name: 'isDelete')
39 | bool isDelete;
40 |
41 | @JsonKey(name: 'desc')
42 | String desc;
43 |
44 | @JsonKey(name: 'rolesNames')
45 | String rolesNames;
46 |
47 | @JsonKey(name: 'releaseYear')
48 | String releaseYear;
49 |
50 | @JsonKey(name: 'playUrl')
51 | String playUrl;
52 |
53 | @JsonKey(name: 'cateId')
54 | String cateId;
55 |
56 | @JsonKey(name: 'price')
57 | double price;
58 |
59 | MovieInfo(this.director,this.movieId,this.movieArea,this.score,this.status,this.tradeCount,this.movieName,this.language,this.quality,this.coverUrl,this.isDelete,this.desc,this.rolesNames,this.releaseYear,this.playUrl,this.cateId,this.price,);
60 |
61 | factory MovieInfo.fromJson(Map srcJson) => _$MovieInfoFromJson(srcJson);
62 |
63 | Map toJson() => _$MovieInfoToJson(this);
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/lib/model/movie_info.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'movie_info.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | MovieInfo _$MovieInfoFromJson(Map json) {
10 | return MovieInfo(
11 | json['director'] as String,
12 | json['movieId'] as int,
13 | json['movieArea'] as int,
14 | json['score'] as int,
15 | json['status'] as int,
16 | json['tradeCount'] as int,
17 | json['movieName'] as String,
18 | json['language'] as int,
19 | json['quality'] as int,
20 | json['coverUrl'] as String,
21 | json['isDelete'] as bool,
22 | json['desc'] as String,
23 | json['rolesNames'] as String,
24 | json['releaseYear'] as String,
25 | json['playUrl'] as String,
26 | json['cateId'] as String,
27 | json['price'] as double);
28 | }
29 |
30 | Map _$MovieInfoToJson(MovieInfo instance) => {
31 | 'director': instance.director,
32 | 'movieId': instance.movieId,
33 | 'movieArea': instance.movieArea,
34 | 'score': instance.score,
35 | 'status': instance.status,
36 | 'tradeCount': instance.tradeCount,
37 | 'movieName': instance.movieName,
38 | 'language': instance.language,
39 | 'quality': instance.quality,
40 | 'coverUrl': instance.coverUrl,
41 | 'isDelete': instance.isDelete,
42 | 'desc': instance.desc,
43 | 'rolesNames': instance.rolesNames,
44 | 'releaseYear': instance.releaseYear,
45 | 'playUrl': instance.playUrl,
46 | 'cateId': instance.cateId,
47 | 'price': instance.price
48 | };
49 |
--------------------------------------------------------------------------------
/lib/model/page_result.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'page_result.g.dart';
4 |
5 | @JsonSerializable()
6 | class PageResult extends Object {
7 |
8 | @JsonKey(name: 'currentPage')
9 | int currentPage;
10 |
11 | @JsonKey(name: 'pageSize')
12 | int pageSize;
13 |
14 | @JsonKey(name: 'totalNum')
15 | int totalNum;
16 |
17 | @JsonKey(name: 'isMore')
18 | int isMore;
19 |
20 | @JsonKey(name: 'totalPage')
21 | int totalPage;
22 |
23 | @JsonKey(name: 'startIndex')
24 | int startIndex;
25 |
26 | @JsonKey(name: 'items')
27 | List