├── .gitignore
├── .metadata
├── README.md
├── android
├── app
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── example
│ │ │ └── flutterydd
│ │ │ └── MainActivity.java
│ │ └── res
│ │ ├── drawable
│ │ └── launch_background.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ ├── huotu.png
│ │ ├── ic_launcher.png
│ │ └── timg.jpeg
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ └── values
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── images
├── a.png
├── b.jpg
├── c.png
├── d.jpg
├── daizhifu.png
├── dianzhu.png
├── goods.jpg
├── ic_rank0_select.png
├── ic_welfare_goods_left.png
├── ic_welfare_goods_right.png
├── jinru.png
├── news.png
├── rank_top.png
├── t.png
├── tab_icon_home_default.png
├── tab_icon_home_selected.png
├── tab_icon_info_default.png
├── tab_icon_info_selected.png
├── tab_icon_personal_default.png
├── tab_icon_personal_selected.png
├── tab_icon_shop_default.png
├── tab_icon_shop_selected.png
├── tab_icon_sort_default.png
├── tab_icon_sort_selected.png
├── top1.png
├── top2.png
├── top3.png
├── xingxing.png
├── yixingdianzhu.png
└── yixingdianzhu2.png
├── ios
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ └── contents.xcworkspacedata
└── Runner
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── Icon-App-20x20@1x.png
│ │ ├── Icon-App-20x20@2x.png
│ │ ├── Icon-App-20x20@3x.png
│ │ ├── Icon-App-29x29@1x.png
│ │ ├── Icon-App-29x29@2x.png
│ │ ├── Icon-App-29x29@3x.png
│ │ ├── Icon-App-40x40@1x.png
│ │ ├── Icon-App-40x40@2x.png
│ │ ├── Icon-App-40x40@3x.png
│ │ ├── Icon-App-60x60@2x.png
│ │ ├── Icon-App-60x60@3x.png
│ │ ├── Icon-App-76x76@1x.png
│ │ ├── Icon-App-76x76@2x.png
│ │ └── Icon-App-83.5x83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── main.m
├── lib
├── home
│ ├── HomePage.dart
│ └── SwiperPage.dart
├── http
│ └── HttpPage.dart
├── info
│ ├── NewsPage.dart
│ └── SingInfolePage.dart
├── main.dart
├── main
│ └── MainPage.dart
├── module
│ ├── news.dart
│ ├── news.g.dart
│ ├── user_detail.dart
│ └── user_detail.g.dart
├── personal
│ ├── BottomView.dart
│ ├── Money.dart
│ ├── OrderView.dart
│ ├── PersonalPage.dart
│ └── TopView.dart
├── type
│ └── TypePage.dart
└── utils
│ ├── HttpGo.dart
│ ├── Md5.dart
│ └── line.dart
├── pubspec.yaml
└── 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 |
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 |
66 | # Exceptions to above rules.
67 | !**/ios/**/default.mode1v3
68 | !**/ios/**/default.mode2v3
69 | !**/ios/**/default.pbxuser
70 | !**/ios/**/default.perspectivev3
71 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
72 |
--------------------------------------------------------------------------------
/.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: beta
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # 1.1版本
3 | 1.对Dio网络请求进行了封装,网络请求之前对参数的加密,添加统一参数等
4 |
5 | 2.使用sharePreference来进行本地存储
6 | # 1.0版本
7 | 仿App上的首页效果图,基本控件的使用
8 |
9 |
10 | # 效果图
11 |
12 | 
13 |
14 | 
15 |
16 | 
17 |
18 | 
19 | ## Getting Started
20 |
21 | This project is a starting point for a Flutter application.
22 |
23 | A few resources to get you started if this is your first Flutter project:
24 |
25 | - [Lab: Write your first Flutter app](https://flutter.io/docs/get-started/codelab)
26 | - [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook)
27 |
28 | For help getting started with Flutter, view our
29 | [online documentation](https://flutter.io/docs), which offers tutorials,
30 | samples, guidance on mobile development, and a full API reference.
31 |
--------------------------------------------------------------------------------
/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 27
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.flutterydd"
37 | minSdkVersion 16
38 | targetSdkVersion 27
39 | versionCode flutterVersionCode.toInteger()
40 | versionName flutterVersionName
41 | testInstrumentationRunner "android.support.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 'com.android.support.test:runner:1.0.2'
60 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
61 | }
62 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
10 |
15 |
19 |
26 |
30 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/example/flutterydd/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.flutterydd;
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 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/huotu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/android/app/src/main/res/mipmap-xhdpi/huotu.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/timg.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/android/app/src/main/res/mipmap-xhdpi/timg.jpeg
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.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 | org.gradle.jvmargs=-Xmx1536M
2 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/images/a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/a.png
--------------------------------------------------------------------------------
/images/b.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/b.jpg
--------------------------------------------------------------------------------
/images/c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/c.png
--------------------------------------------------------------------------------
/images/d.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/d.jpg
--------------------------------------------------------------------------------
/images/daizhifu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/daizhifu.png
--------------------------------------------------------------------------------
/images/dianzhu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/dianzhu.png
--------------------------------------------------------------------------------
/images/goods.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/goods.jpg
--------------------------------------------------------------------------------
/images/ic_rank0_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/ic_rank0_select.png
--------------------------------------------------------------------------------
/images/ic_welfare_goods_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/ic_welfare_goods_left.png
--------------------------------------------------------------------------------
/images/ic_welfare_goods_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/ic_welfare_goods_right.png
--------------------------------------------------------------------------------
/images/jinru.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/jinru.png
--------------------------------------------------------------------------------
/images/news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/news.png
--------------------------------------------------------------------------------
/images/rank_top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/rank_top.png
--------------------------------------------------------------------------------
/images/t.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/t.png
--------------------------------------------------------------------------------
/images/tab_icon_home_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_home_default.png
--------------------------------------------------------------------------------
/images/tab_icon_home_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_home_selected.png
--------------------------------------------------------------------------------
/images/tab_icon_info_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_info_default.png
--------------------------------------------------------------------------------
/images/tab_icon_info_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_info_selected.png
--------------------------------------------------------------------------------
/images/tab_icon_personal_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_personal_default.png
--------------------------------------------------------------------------------
/images/tab_icon_personal_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_personal_selected.png
--------------------------------------------------------------------------------
/images/tab_icon_shop_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_shop_default.png
--------------------------------------------------------------------------------
/images/tab_icon_shop_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_shop_selected.png
--------------------------------------------------------------------------------
/images/tab_icon_sort_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_sort_default.png
--------------------------------------------------------------------------------
/images/tab_icon_sort_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/tab_icon_sort_selected.png
--------------------------------------------------------------------------------
/images/top1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/top1.png
--------------------------------------------------------------------------------
/images/top2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/top2.png
--------------------------------------------------------------------------------
/images/top3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/top3.png
--------------------------------------------------------------------------------
/images/xingxing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/xingxing.png
--------------------------------------------------------------------------------
/images/yixingdianzhu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/yixingdianzhu.png
--------------------------------------------------------------------------------
/images/yixingdianzhu2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/images/yixingdianzhu2.png
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11 | 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
12 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
13 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
14 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
15 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
16 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
17 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
18 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
19 | 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
20 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
21 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
22 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
23 | /* End PBXBuildFile section */
24 |
25 | /* Begin PBXCopyFilesBuildPhase section */
26 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
27 | isa = PBXCopyFilesBuildPhase;
28 | buildActionMask = 2147483647;
29 | dstPath = "";
30 | dstSubfolderSpec = 10;
31 | files = (
32 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
33 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
34 | );
35 | name = "Embed Frameworks";
36 | runOnlyForDeploymentPostprocessing = 0;
37 | };
38 | /* End PBXCopyFilesBuildPhase section */
39 |
40 | /* Begin PBXFileReference section */
41 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
42 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
43 | 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
44 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
45 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; };
46 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
47 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
48 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
49 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
50 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
51 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; };
52 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
53 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
54 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
55 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
56 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
57 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
58 | /* End PBXFileReference section */
59 |
60 | /* Begin PBXFrameworksBuildPhase section */
61 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
62 | isa = PBXFrameworksBuildPhase;
63 | buildActionMask = 2147483647;
64 | files = (
65 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
66 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
67 | );
68 | runOnlyForDeploymentPostprocessing = 0;
69 | };
70 | /* End PBXFrameworksBuildPhase section */
71 |
72 | /* Begin PBXGroup section */
73 | 9740EEB11CF90186004384FC /* Flutter */ = {
74 | isa = PBXGroup;
75 | children = (
76 | 2D5378251FAA1A9400D5DBA9 /* flutter_assets */,
77 | 3B80C3931E831B6300D905FE /* App.framework */,
78 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
79 | 9740EEBA1CF902C7004384FC /* Flutter.framework */,
80 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
81 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
82 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
83 | );
84 | name = Flutter;
85 | sourceTree = "";
86 | };
87 | 97C146E51CF9000F007C117D = {
88 | isa = PBXGroup;
89 | children = (
90 | 9740EEB11CF90186004384FC /* Flutter */,
91 | 97C146F01CF9000F007C117D /* Runner */,
92 | 97C146EF1CF9000F007C117D /* Products */,
93 | CF3B75C9A7D2FA2A4C99F110 /* Frameworks */,
94 | );
95 | sourceTree = "";
96 | };
97 | 97C146EF1CF9000F007C117D /* Products */ = {
98 | isa = PBXGroup;
99 | children = (
100 | 97C146EE1CF9000F007C117D /* Runner.app */,
101 | );
102 | name = Products;
103 | sourceTree = "";
104 | };
105 | 97C146F01CF9000F007C117D /* Runner */ = {
106 | isa = PBXGroup;
107 | children = (
108 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
109 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
110 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
111 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
112 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
113 | 97C147021CF9000F007C117D /* Info.plist */,
114 | 97C146F11CF9000F007C117D /* Supporting Files */,
115 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
116 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
117 | );
118 | path = Runner;
119 | sourceTree = "";
120 | };
121 | 97C146F11CF9000F007C117D /* Supporting Files */ = {
122 | isa = PBXGroup;
123 | children = (
124 | 97C146F21CF9000F007C117D /* main.m */,
125 | );
126 | name = "Supporting Files";
127 | sourceTree = "";
128 | };
129 | /* End PBXGroup section */
130 |
131 | /* Begin PBXNativeTarget section */
132 | 97C146ED1CF9000F007C117D /* Runner */ = {
133 | isa = PBXNativeTarget;
134 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
135 | buildPhases = (
136 | 9740EEB61CF901F6004384FC /* Run Script */,
137 | 97C146EA1CF9000F007C117D /* Sources */,
138 | 97C146EB1CF9000F007C117D /* Frameworks */,
139 | 97C146EC1CF9000F007C117D /* Resources */,
140 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
141 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
142 | );
143 | buildRules = (
144 | );
145 | dependencies = (
146 | );
147 | name = Runner;
148 | productName = Runner;
149 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
150 | productType = "com.apple.product-type.application";
151 | };
152 | /* End PBXNativeTarget section */
153 |
154 | /* Begin PBXProject section */
155 | 97C146E61CF9000F007C117D /* Project object */ = {
156 | isa = PBXProject;
157 | attributes = {
158 | LastUpgradeCheck = 0910;
159 | ORGANIZATIONNAME = "The Chromium Authors";
160 | TargetAttributes = {
161 | 97C146ED1CF9000F007C117D = {
162 | CreatedOnToolsVersion = 7.3.1;
163 | };
164 | };
165 | };
166 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
167 | compatibilityVersion = "Xcode 3.2";
168 | developmentRegion = English;
169 | hasScannedForEncodings = 0;
170 | knownRegions = (
171 | en,
172 | Base,
173 | );
174 | mainGroup = 97C146E51CF9000F007C117D;
175 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
176 | projectDirPath = "";
177 | projectRoot = "";
178 | targets = (
179 | 97C146ED1CF9000F007C117D /* Runner */,
180 | );
181 | };
182 | /* End PBXProject section */
183 |
184 | /* Begin PBXResourcesBuildPhase section */
185 | 97C146EC1CF9000F007C117D /* Resources */ = {
186 | isa = PBXResourcesBuildPhase;
187 | buildActionMask = 2147483647;
188 | files = (
189 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
190 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
191 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
192 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
193 | 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */,
194 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
195 | );
196 | runOnlyForDeploymentPostprocessing = 0;
197 | };
198 | /* End PBXResourcesBuildPhase section */
199 |
200 | /* Begin PBXShellScriptBuildPhase section */
201 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
202 | isa = PBXShellScriptBuildPhase;
203 | buildActionMask = 2147483647;
204 | files = (
205 | );
206 | inputPaths = (
207 | );
208 | name = "Thin Binary";
209 | outputPaths = (
210 | );
211 | runOnlyForDeploymentPostprocessing = 0;
212 | shellPath = /bin/sh;
213 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
214 | };
215 | 9740EEB61CF901F6004384FC /* Run Script */ = {
216 | isa = PBXShellScriptBuildPhase;
217 | buildActionMask = 2147483647;
218 | files = (
219 | );
220 | inputPaths = (
221 | );
222 | name = "Run Script";
223 | outputPaths = (
224 | );
225 | runOnlyForDeploymentPostprocessing = 0;
226 | shellPath = /bin/sh;
227 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
228 | };
229 | /* End PBXShellScriptBuildPhase section */
230 |
231 | /* Begin PBXSourcesBuildPhase section */
232 | 97C146EA1CF9000F007C117D /* Sources */ = {
233 | isa = PBXSourcesBuildPhase;
234 | buildActionMask = 2147483647;
235 | files = (
236 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
237 | 97C146F31CF9000F007C117D /* main.m in Sources */,
238 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
239 | );
240 | runOnlyForDeploymentPostprocessing = 0;
241 | };
242 | /* End PBXSourcesBuildPhase section */
243 |
244 | /* Begin PBXVariantGroup section */
245 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
246 | isa = PBXVariantGroup;
247 | children = (
248 | 97C146FB1CF9000F007C117D /* Base */,
249 | );
250 | name = Main.storyboard;
251 | sourceTree = "";
252 | };
253 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
254 | isa = PBXVariantGroup;
255 | children = (
256 | 97C147001CF9000F007C117D /* Base */,
257 | );
258 | name = LaunchScreen.storyboard;
259 | sourceTree = "";
260 | };
261 | /* End PBXVariantGroup section */
262 |
263 | /* Begin XCBuildConfiguration section */
264 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
265 | isa = XCBuildConfiguration;
266 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
267 | buildSettings = {
268 | ALWAYS_SEARCH_USER_PATHS = NO;
269 | CLANG_ANALYZER_NONNULL = YES;
270 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
271 | CLANG_CXX_LIBRARY = "libc++";
272 | CLANG_ENABLE_MODULES = YES;
273 | CLANG_ENABLE_OBJC_ARC = YES;
274 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
275 | CLANG_WARN_BOOL_CONVERSION = YES;
276 | CLANG_WARN_COMMA = YES;
277 | CLANG_WARN_CONSTANT_CONVERSION = YES;
278 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
279 | CLANG_WARN_EMPTY_BODY = YES;
280 | CLANG_WARN_ENUM_CONVERSION = YES;
281 | CLANG_WARN_INFINITE_RECURSION = YES;
282 | CLANG_WARN_INT_CONVERSION = YES;
283 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
284 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
285 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
286 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
287 | CLANG_WARN_STRICT_PROTOTYPES = YES;
288 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
289 | CLANG_WARN_UNREACHABLE_CODE = YES;
290 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
291 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
292 | COPY_PHASE_STRIP = NO;
293 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
294 | ENABLE_NS_ASSERTIONS = NO;
295 | ENABLE_STRICT_OBJC_MSGSEND = YES;
296 | GCC_C_LANGUAGE_STANDARD = gnu99;
297 | GCC_NO_COMMON_BLOCKS = YES;
298 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
299 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
300 | GCC_WARN_UNDECLARED_SELECTOR = YES;
301 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
302 | GCC_WARN_UNUSED_FUNCTION = YES;
303 | GCC_WARN_UNUSED_VARIABLE = YES;
304 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
305 | MTL_ENABLE_DEBUG_INFO = NO;
306 | SDKROOT = iphoneos;
307 | TARGETED_DEVICE_FAMILY = "1,2";
308 | VALIDATE_PRODUCT = YES;
309 | };
310 | name = Profile;
311 | };
312 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
313 | isa = XCBuildConfiguration;
314 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
315 | buildSettings = {
316 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
317 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
318 | DEVELOPMENT_TEAM = S8QB4VV633;
319 | ENABLE_BITCODE = NO;
320 | FRAMEWORK_SEARCH_PATHS = (
321 | "$(inherited)",
322 | "$(PROJECT_DIR)/Flutter",
323 | );
324 | INFOPLIST_FILE = Runner/Info.plist;
325 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
326 | LIBRARY_SEARCH_PATHS = (
327 | "$(inherited)",
328 | "$(PROJECT_DIR)/Flutter",
329 | );
330 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterYdd;
331 | PRODUCT_NAME = "$(TARGET_NAME)";
332 | VERSIONING_SYSTEM = "apple-generic";
333 | };
334 | name = Profile;
335 | };
336 | 97C147031CF9000F007C117D /* Debug */ = {
337 | isa = XCBuildConfiguration;
338 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
339 | buildSettings = {
340 | ALWAYS_SEARCH_USER_PATHS = NO;
341 | CLANG_ANALYZER_NONNULL = YES;
342 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
343 | CLANG_CXX_LIBRARY = "libc++";
344 | CLANG_ENABLE_MODULES = YES;
345 | CLANG_ENABLE_OBJC_ARC = YES;
346 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
347 | CLANG_WARN_BOOL_CONVERSION = YES;
348 | CLANG_WARN_COMMA = YES;
349 | CLANG_WARN_CONSTANT_CONVERSION = YES;
350 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
351 | CLANG_WARN_EMPTY_BODY = YES;
352 | CLANG_WARN_ENUM_CONVERSION = YES;
353 | CLANG_WARN_INFINITE_RECURSION = YES;
354 | CLANG_WARN_INT_CONVERSION = YES;
355 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
356 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
357 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
358 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
359 | CLANG_WARN_STRICT_PROTOTYPES = YES;
360 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
361 | CLANG_WARN_UNREACHABLE_CODE = YES;
362 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
363 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
364 | COPY_PHASE_STRIP = NO;
365 | DEBUG_INFORMATION_FORMAT = dwarf;
366 | ENABLE_STRICT_OBJC_MSGSEND = YES;
367 | ENABLE_TESTABILITY = YES;
368 | GCC_C_LANGUAGE_STANDARD = gnu99;
369 | GCC_DYNAMIC_NO_PIC = NO;
370 | GCC_NO_COMMON_BLOCKS = YES;
371 | GCC_OPTIMIZATION_LEVEL = 0;
372 | GCC_PREPROCESSOR_DEFINITIONS = (
373 | "DEBUG=1",
374 | "$(inherited)",
375 | );
376 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
377 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
378 | GCC_WARN_UNDECLARED_SELECTOR = YES;
379 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
380 | GCC_WARN_UNUSED_FUNCTION = YES;
381 | GCC_WARN_UNUSED_VARIABLE = YES;
382 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
383 | MTL_ENABLE_DEBUG_INFO = YES;
384 | ONLY_ACTIVE_ARCH = YES;
385 | SDKROOT = iphoneos;
386 | TARGETED_DEVICE_FAMILY = "1,2";
387 | };
388 | name = Debug;
389 | };
390 | 97C147041CF9000F007C117D /* Release */ = {
391 | isa = XCBuildConfiguration;
392 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
393 | buildSettings = {
394 | ALWAYS_SEARCH_USER_PATHS = NO;
395 | CLANG_ANALYZER_NONNULL = YES;
396 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
397 | CLANG_CXX_LIBRARY = "libc++";
398 | CLANG_ENABLE_MODULES = YES;
399 | CLANG_ENABLE_OBJC_ARC = YES;
400 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
401 | CLANG_WARN_BOOL_CONVERSION = YES;
402 | CLANG_WARN_COMMA = YES;
403 | CLANG_WARN_CONSTANT_CONVERSION = YES;
404 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
405 | CLANG_WARN_EMPTY_BODY = YES;
406 | CLANG_WARN_ENUM_CONVERSION = YES;
407 | CLANG_WARN_INFINITE_RECURSION = YES;
408 | CLANG_WARN_INT_CONVERSION = YES;
409 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
410 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
411 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
412 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
413 | CLANG_WARN_STRICT_PROTOTYPES = YES;
414 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
415 | CLANG_WARN_UNREACHABLE_CODE = YES;
416 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
417 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
418 | COPY_PHASE_STRIP = NO;
419 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
420 | ENABLE_NS_ASSERTIONS = NO;
421 | ENABLE_STRICT_OBJC_MSGSEND = YES;
422 | GCC_C_LANGUAGE_STANDARD = gnu99;
423 | GCC_NO_COMMON_BLOCKS = YES;
424 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
425 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
426 | GCC_WARN_UNDECLARED_SELECTOR = YES;
427 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
428 | GCC_WARN_UNUSED_FUNCTION = YES;
429 | GCC_WARN_UNUSED_VARIABLE = YES;
430 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
431 | MTL_ENABLE_DEBUG_INFO = NO;
432 | SDKROOT = iphoneos;
433 | TARGETED_DEVICE_FAMILY = "1,2";
434 | VALIDATE_PRODUCT = YES;
435 | };
436 | name = Release;
437 | };
438 | 97C147061CF9000F007C117D /* Debug */ = {
439 | isa = XCBuildConfiguration;
440 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
441 | buildSettings = {
442 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
443 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
444 | ENABLE_BITCODE = NO;
445 | FRAMEWORK_SEARCH_PATHS = (
446 | "$(inherited)",
447 | "$(PROJECT_DIR)/Flutter",
448 | );
449 | INFOPLIST_FILE = Runner/Info.plist;
450 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
451 | LIBRARY_SEARCH_PATHS = (
452 | "$(inherited)",
453 | "$(PROJECT_DIR)/Flutter",
454 | );
455 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterYdd;
456 | PRODUCT_NAME = "$(TARGET_NAME)";
457 | VERSIONING_SYSTEM = "apple-generic";
458 | };
459 | name = Debug;
460 | };
461 | 97C147071CF9000F007C117D /* Release */ = {
462 | isa = XCBuildConfiguration;
463 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
464 | buildSettings = {
465 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
466 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
467 | ENABLE_BITCODE = NO;
468 | FRAMEWORK_SEARCH_PATHS = (
469 | "$(inherited)",
470 | "$(PROJECT_DIR)/Flutter",
471 | );
472 | INFOPLIST_FILE = Runner/Info.plist;
473 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
474 | LIBRARY_SEARCH_PATHS = (
475 | "$(inherited)",
476 | "$(PROJECT_DIR)/Flutter",
477 | );
478 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterYdd;
479 | PRODUCT_NAME = "$(TARGET_NAME)";
480 | VERSIONING_SYSTEM = "apple-generic";
481 | };
482 | name = Release;
483 | };
484 | /* End XCBuildConfiguration section */
485 |
486 | /* Begin XCConfigurationList section */
487 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
488 | isa = XCConfigurationList;
489 | buildConfigurations = (
490 | 97C147031CF9000F007C117D /* Debug */,
491 | 97C147041CF9000F007C117D /* Release */,
492 | 249021D3217E4FDB00AE95B9 /* Profile */,
493 | );
494 | defaultConfigurationIsVisible = 0;
495 | defaultConfigurationName = Release;
496 | };
497 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
498 | isa = XCConfigurationList;
499 | buildConfigurations = (
500 | 97C147061CF9000F007C117D /* Debug */,
501 | 97C147071CF9000F007C117D /* Release */,
502 | 249021D4217E4FDB00AE95B9 /* Profile */,
503 | );
504 | defaultConfigurationIsVisible = 0;
505 | defaultConfigurationName = Release;
506 | };
507 | /* End XCConfigurationList section */
508 | };
509 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
510 | }
511 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
33 |
34 |
40 |
41 |
42 |
43 |
44 |
45 |
56 |
58 |
64 |
65 |
66 |
67 |
68 |
69 |
75 |
77 |
83 |
84 |
85 |
86 |
88 |
89 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/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" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/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/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yzxzm/flutter_ydd/7e3bf408aec294b530afd1bf667c1e605d204346/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/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 |
--------------------------------------------------------------------------------
/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/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | flutter_ydd
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/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/home/HomePage.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_ydd/home/SwiperPage.dart';
3 |
4 | var titleList = ['爆款速抢', '福利商品', '积分商城'];
5 | var picPathList = ['images/top1.png', 'images/top2.png', 'images/top3.png'];
6 |
7 | List goodsDetailList;
8 |
9 | //这个界面不使用personalPage的那种引用的方式了,读者可以看看那个更好用,各有各的优点,都可以看看
10 | class HomePage extends StatefulWidget {
11 | State createState() => HomePageState();
12 | }
13 |
14 | class HomePageState extends State {
15 | @override
16 | void initState() {
17 | // TODO: implement initState
18 | super.initState();
19 | goodsDetailList = List();
20 | GoodsDetail goodsDetail = GoodsDetail("测试商品",
21 | "http://image.zhi-you.net/000/82101aa1e3c245c6b07976d32969c9bd");
22 | goodsDetailList
23 | ..add(goodsDetail)
24 | ..add(goodsDetail)
25 | ..add(goodsDetail)
26 | ..add(goodsDetail)
27 | ..add(goodsDetail)
28 | ..add(goodsDetail);
29 | }
30 |
31 | @override
32 | Widget build(BuildContext context) {
33 | return Scaffold(
34 | backgroundColor: Color.fromARGB(255, 241, 244, 243),
35 | body: SingleChildScrollView(
36 | child: Column(
37 | children: [
38 | Container(
39 | margin: EdgeInsets.fromLTRB(0, 0, 0, 10.0),
40 | width: MediaQuery.of(context).size.width,
41 | height: 200.0,
42 | child: bannerView,
43 | ),
44 | getJoinServer(),
45 | _getGoodsList(titleList[0], picPathList[0]),
46 | _getGoodsList(titleList[1], picPathList[1]),
47 | _getGoodsList(titleList[2], picPathList[2]),
48 | ],
49 | ),
50 | ),
51 | );
52 | /*);*/
53 | }
54 | }
55 |
56 | Widget _getGoodsList(String title, String picPath) {
57 | //下面的三个列表
58 | return Container(
59 | //爆款速抢
60 | margin: EdgeInsets.fromLTRB(0.0, 10.0, 0, 0),
61 | padding: EdgeInsets.fromLTRB(14.0, 12.0, 14.0, 12.0),
62 | color: Colors.white,
63 | child: Column(
64 | children: [
65 | Row(
66 | mainAxisAlignment: MainAxisAlignment.center,
67 | crossAxisAlignment: CrossAxisAlignment.center,
68 | children: [
69 | Image.asset(
70 | 'images/ic_welfare_goods_left.png',
71 | height: 25.0,
72 | ),
73 | Padding(
74 | padding: EdgeInsets.fromLTRB(10.0, 0, 10.0, 0),
75 | child: Text(
76 | title,
77 | style:
78 | TextStyle(color: Colors.deepOrangeAccent, fontSize: 17.0),
79 | ),
80 | ),
81 | Padding(
82 | padding: EdgeInsets.fromLTRB(13, 0, 0, 13),
83 | child: Image.asset(
84 | 'images/ic_welfare_goods_right.png',
85 | height: 25.0,
86 | ),
87 | ),
88 | ],
89 | ),
90 | Image.asset(
91 | picPath,
92 | height: 116.0,
93 | ),
94 | _getGridView(),
95 | ],
96 | ));
97 | }
98 |
99 | Widget _getGridView() {
100 | return GridView.count(
101 | physics: NeverScrollableScrollPhysics(),
102 | //解决scollview嵌套 滑动gridview的区域 没反应的问题
103 | crossAxisSpacing: 15.0,
104 | mainAxisSpacing: 10.0,
105 | crossAxisCount: 3,
106 | shrinkWrap: true,
107 | //这个解决colum里面嵌套gridview显示不出来的问题
108 | childAspectRatio: 0.67,
109 | //宽高比 必须设置
110 | children: _singleView(),
111 | );
112 | }
113 |
114 | List _singleView() {
115 | return goodsDetailList.map((GoodsDetail goodDetail) {
116 | return Column(
117 | mainAxisAlignment: MainAxisAlignment.start,
118 | crossAxisAlignment: CrossAxisAlignment.start,
119 | children: [
120 | Image.network(goodDetail.pic),
121 | Container(
122 | margin: EdgeInsets.fromLTRB(0, 10.0, 0, 0),
123 | child: Text(
124 | goodDetail.title,
125 | textAlign: TextAlign.left,
126 | maxLines: 1,
127 | overflow: TextOverflow.ellipsis,
128 | ),
129 | ),
130 | Text(
131 | '¥1000',
132 | style: TextStyle(fontSize: 12.0, color: Colors.red),
133 | ),
134 | ],
135 | );
136 | }).toList();
137 | }
138 |
139 | Widget getJoinServer() {
140 | //加盟服务
141 | return Container(
142 | color: Colors.white,
143 | padding: EdgeInsets.fromLTRB(21.0, 10.0, 20.0, 20.0),
144 | child: Column(
145 | crossAxisAlignment: CrossAxisAlignment.start,
146 | children: [
147 | Text(
148 | '加盟服务',
149 | style: TextStyle(fontSize: 18.0, color: Colors.black),
150 | ),
151 | Container(
152 | height: 12.0,
153 | ),
154 | Row(
155 | children: [
156 | Expanded(
157 | child: Image.asset('images/yixingdianzhu.png', height: 80.0),
158 | flex: 1,
159 | ),
160 | Container(
161 | width: 13.0,
162 | ),
163 | Expanded(
164 | child: Image.asset('images/yixingdianzhu2.png', height: 80.0),
165 | flex: 1,
166 | )
167 | ],
168 | ),
169 | ],
170 | ),
171 | );
172 | }
173 |
174 | class GoodsDetail {
175 | String title;
176 | String pic;
177 |
178 | GoodsDetail(this.title, this.pic);
179 | }
180 |
--------------------------------------------------------------------------------
/lib/home/SwiperPage.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_swiper/flutter_swiper.dart';
3 |
4 | var bannerList = [
5 | 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=500808421,1575925585&fm=200&gp=0.jpg',
6 | 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2373144604,3573823380&fm=27&gp=0.jpg',
7 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=124155087,2314196803&fm=27&gp=0.jpg'
8 | ];
9 | var bannerView = Swiper(
10 | itemBuilder: _swiperBuilder,
11 | itemCount: bannerList.length,
12 | pagination: SwiperPagination(
13 | builder: DotSwiperPaginationBuilder(
14 | color: Colors.white,
15 | activeColor: Colors.grey,
16 | ),
17 | ),
18 | /*control: SwiperControl(),*/
19 | autoplay: true,
20 | onTap: (index) => debugPrint('点击了第$index个'),
21 | );
22 |
23 | Widget _swiperBuilder(BuildContext context, int index) {
24 | return Image.network(
25 | bannerList[index],
26 | fit: BoxFit.fill,
27 | );
28 | }
29 |
--------------------------------------------------------------------------------
/lib/http/HttpPage.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:flutter_ydd/main/MainPage.dart';
4 | import 'package:flutter_ydd/module/news.dart';
5 | import 'package:flutter_ydd/module/user_detail.dart';
6 | import 'package:flutter_ydd/utils/HttpGo.dart';
7 | import 'package:shared_preferences/shared_preferences.dart';
8 |
9 | class HttpPage extends StatefulWidget {
10 | @override
11 | _HttpPageState createState() => _HttpPageState();
12 | }
13 |
14 | class _HttpPageState extends State {
15 | var httpContent = '显示网络数据';
16 |
17 | @override
18 | void initState() {
19 | // TODO: implement initState
20 | getValueForMainPage();
21 | super.initState();
22 | }
23 |
24 | getValueForMainPage() async {
25 | //测试sp的存储
26 | SharedPreferences prefs = await SharedPreferences.getInstance();
27 | String a = await prefs.getString(MainPageState.STRING_KEY);
28 | int b = await prefs.getInt(MainPageState.INT_KEY);
29 | bool c = await prefs.getBool(MainPageState.BOOL_KEY);
30 | double d = await prefs.getDouble(MainPageState.DOUBLE_KEY);
31 | }
32 |
33 | @override
34 | Widget build(BuildContext context) {
35 | return Scaffold(
36 | appBar: AppBar(
37 | title: Text('网络请求'),
38 | ),
39 | body: SingleChildScrollView(
40 | child: Column(
41 | children: [
42 | Row(
43 | children: [
44 | Expanded(
45 | child: RaisedButton(
46 | child: Text('get请求'),
47 | onPressed: () {
48 | setState(() {
49 | httpContent = '';
50 | });
51 | getHttp();
52 | },
53 | ),
54 | ),
55 | Expanded(
56 | child: RaisedButton(
57 | child: Text('post请求'),
58 | onPressed: () {
59 | setState(() {
60 | httpContent = '';
61 | });
62 | postHttp();
63 | },
64 | ),
65 | ),
66 | ],
67 | ),
68 | Text(httpContent),
69 | ],
70 | ),
71 | ),
72 | );
73 | }
74 |
75 | var getUrl = 'http://www.wanandroid.com/article/list/0/json';
76 |
77 | getHttp() {
78 | FormData formData = FormData.from({'cid': 60});
79 | HttpGo.getInstance().get(
80 | getUrl,
81 | (data) {
82 | News news = News.fromJson(data);
83 | setState(() {
84 | httpContent = data.toString();
85 | });
86 | },
87 | params: formData,
88 | );
89 | }
90 |
91 | var postUrl = 'http://www.wanandroid.com/user/login';
92 |
93 | postHttp() {
94 | FormData p =
95 | FormData.from({'username': '15660010019', 'password': '123456'});
96 | HttpGo.getInstance().post(
97 | postUrl,
98 | (data) {
99 | UserDetail userDetail = UserDetail.fromJson(data);
100 | var name = userDetail.username;
101 | setState(() {
102 | httpContent = data.toString();
103 | });
104 | },
105 | params: p,
106 | );
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/lib/info/NewsPage.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_ydd/info/SingInfolePage.dart';
3 |
4 | class NewsPage extends StatelessWidget {
5 | var myTabs = [
6 | new Tab(text: '通知'),
7 | new Tab(text: '公告'),
8 | ];
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | // TODO: implement build
13 | return DefaultTabController(
14 | length: myTabs.length,
15 | child: new Scaffold(
16 | appBar: new AppBar(
17 | elevation: 1,
18 | /* //阴影高度
19 | centerTitle: true,
20 | //居中显示
21 | titleSpacing: NavigationToolbar.kMiddleSpacing,
22 | title: Text(
23 | '消息',
24 | textAlign: TextAlign.center,
25 | ),*/
26 | title: TabBar(
27 | tabs: myTabs,
28 | isScrollable: false,
29 | //是否可滑动
30 | unselectedLabelColor: Colors.black26,
31 | //未选中按钮颜色
32 | labelColor: Colors.red,
33 | //选中按钮颜色
34 | labelStyle: TextStyle(fontSize: 18),
35 | //文字样式
36 | indicatorSize: TabBarIndicatorSize.label,
37 | //滑动的宽度是根据内容来适应,还是与整块那么大(label表示根据内容来适应)
38 | indicatorWeight: 2.0,
39 | //滑块高度
40 | indicatorColor: Colors.red,
41 | //滑动颜色
42 | indicatorPadding: EdgeInsets.only(bottom: 2), //与底部距离为1
43 | ),
44 | ),
45 | //body表示具体展示的内容
46 | body: new TabBarView(
47 | children: [SingleInfoPage(type: 0), SingleInfoPage(type: 1)],
48 | ),
49 | ),
50 | );
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/lib/info/SingInfolePage.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class SingleInfoPage extends StatefulWidget {
4 | int type;
5 |
6 | SingleInfoPage({Key key, @required this.type}) : super(key: key);
7 |
8 | _SingleInfoPage createState() => _SingleInfoPage();
9 | }
10 |
11 | class _SingleInfoPage extends State {
12 | List mList;
13 |
14 | @override
15 | void initState() {
16 | // TODO: implement initState
17 | super.initState();
18 | initDate();
19 | }
20 |
21 | @override
22 | Widget build(BuildContext context) {
23 | // TODO: implement build
24 | return Scaffold(
25 | body: ListView.builder(
26 | itemBuilder: (context, index) {
27 | return _getItem(index);
28 | },
29 | itemCount: mList.length,
30 | ),
31 | );
32 | }
33 |
34 | initDate() {
35 | if (widget.type == 1) {
36 | mList = new List.generate(
37 | 100,
38 | (i) => InfoDetail(
39 | '公告 item $i', '爆款商品-你好牙齿你好牙齿你好牙齿你好牙,点击查看。', '2018-08-28'));
40 | } else {
41 | mList = new List.generate(
42 | 100,
43 | (i) => InfoDetail(
44 | '通知 item $i', '爆款商品-你好牙齿你好牙齿你好牙齿你好牙,点击查看。', '2018-08-28'));
45 | }
46 | }
47 |
48 | Widget _getItem(index) {
49 | return Container(
50 | margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0),
51 | color: Colors.white,
52 | padding: EdgeInsets.fromLTRB(15.0, 10.0, 10.0, 15.0),
53 | child: Column(
54 | children: [
55 | Row(
56 | children: [
57 | Container(
58 | width: 45.0,
59 | height: 18.0,
60 | alignment: Alignment.center,
61 | decoration: BoxDecoration(
62 | color: Colors.red,
63 | borderRadius: BorderRadius.all(Radius.circular(5))),
64 | //padding: EdgeInsets.all(3.0),
65 | child: Text('置顶',
66 | style: TextStyle(fontSize: 12.0, color: Colors.white)),
67 | ),
68 | Expanded(
69 | child: Container(
70 | margin: EdgeInsets.fromLTRB(10.0, 0, 0, 0),
71 | child: Text(
72 | mList[index].title,
73 | style: TextStyle(fontSize: 15.0, color: Colors.black),
74 | ),
75 | ),
76 | flex: 1,
77 | ),
78 | Text(
79 | mList[index].data,
80 | style: TextStyle(fontSize: 13.0, color: Colors.grey),
81 | ),
82 | ],
83 | ),
84 | Container(
85 | color: Color(0xfff8f8f8),
86 | margin: EdgeInsets.fromLTRB(0, 10.0, 0, 0),
87 | child: Row(
88 | children: [
89 | Image.asset(
90 | 'images/news.png',
91 | width: 56.0,
92 | height: 56.0,
93 | fit: BoxFit.fill,
94 | ),
95 | Expanded(
96 | child: Container(
97 | margin: EdgeInsets.fromLTRB(10.0, 0, 0, 0),
98 | child: Text(
99 | mList[index].content,
100 | style:
101 | TextStyle(fontSize: 14.0, color: Color(0xff333333)),
102 | ),
103 | ),
104 | flex: 1,
105 | ),
106 | ],
107 | ),
108 | ),
109 | ],
110 | ),
111 | );
112 | }
113 | }
114 |
115 | class InfoDetail {
116 | String title;
117 | String content;
118 | String data;
119 |
120 | InfoDetail(this.title, this.content, this.data);
121 | }
122 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_ydd/main/MainPage.dart';
3 |
4 | void main() => runApp(MyApp(titles: '我的界面ui'));
5 |
6 | class MyApp extends StatelessWidget {
7 | final titles;
8 |
9 | MyApp({Key key, @required this.titles}) : super(key: key); //构造方法,传递titles
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | // TODO: implement build
14 | return MaterialApp(
15 | title: '$titles',
16 | theme: new ThemeData(
17 | primaryColor: Colors.white,
18 | ),
19 | debugShowCheckedModeBanner: false, //去掉右上角的debug
20 | home: MainPageWidget(),
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/main/MainPage.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_ydd/home/HomePage.dart';
3 | import 'package:flutter_ydd/http/HttpPage.dart';
4 | import 'package:flutter_ydd/info/NewsPage.dart';
5 | import 'package:flutter_ydd/personal/PersonalPage.dart';
6 | import 'package:flutter_ydd/type/TypePage.dart';
7 | import 'package:shared_preferences/shared_preferences.dart';
8 |
9 | class MainPageWidget extends StatefulWidget {
10 | @override
11 | State createState() {
12 | return new MainPageState();
13 | }
14 | }
15 |
16 | class MainPageState extends State {
17 | int _tabIndex = 0;
18 | var tabImages;
19 | var appBarTitles = ['首页', '分类', '消息', '网络', '我的'];
20 |
21 | var _pageList;
22 |
23 | static const STRING_KEY = 'string';
24 | static const BOOL_KEY = 'bool';
25 | static const INT_KEY = 'int';
26 | static const DOUBLE_KEY = 'double';
27 | static const LIST_KEY = 'list';
28 |
29 | Image getTabIcon(int curIndex) {
30 | if (curIndex == _tabIndex) {
31 | return tabImages[curIndex][1];
32 | }
33 | return tabImages[curIndex][0];
34 | }
35 |
36 | Text getTabTitle(int curIndex) {
37 | if (curIndex == _tabIndex) {
38 | return new Text(appBarTitles[curIndex],
39 | style: new TextStyle(fontSize: 14.0, color: Color(0xffED1B24)));
40 | } else {
41 | return new Text(appBarTitles[curIndex],
42 | style: new TextStyle(fontSize: 14.0, color: const Color(0xff333333)));
43 | }
44 | }
45 |
46 | Image getTabImage(path) {
47 | return new Image.asset(path, width: 24.0, height: 24.0);
48 | }
49 |
50 | @override
51 | void initState() {
52 | initData(); //初始化数据
53 | setSp();
54 | super.initState();
55 | }
56 |
57 | setSp() async {
58 | var list = List.generate(5, (i) => 'item$i');
59 | SharedPreferences sp = await SharedPreferences.getInstance();
60 | sp.setString(STRING_KEY, '我是从MainPage存的数据');
61 | sp.setBool(BOOL_KEY, true);
62 | sp.setInt(INT_KEY, 1);
63 | sp.setDouble(DOUBLE_KEY, 231.111);
64 | sp.setStringList(LIST_KEY, list);
65 | }
66 |
67 | void initData() {
68 | tabImages = [
69 | [
70 | getTabImage('images/tab_icon_home_default.png'),
71 | getTabImage('images/tab_icon_home_selected.png')
72 | ],
73 | [
74 | getTabImage('images/tab_icon_sort_default.png'),
75 | getTabImage('images/tab_icon_sort_selected.png')
76 | ],
77 | [
78 | getTabImage('images/tab_icon_info_default.png'),
79 | getTabImage('images/tab_icon_info_selected.png')
80 | ],
81 | [
82 | getTabImage('images/tab_icon_shop_default.png'),
83 | getTabImage('images/tab_icon_shop_selected.png')
84 | ],
85 | [
86 | getTabImage('images/tab_icon_personal_default.png'),
87 | getTabImage('images/tab_icon_personal_selected.png')
88 | ],
89 | ];
90 | _pageList = [
91 | HomePage(),
92 | TypePage(),
93 | NewsPage(),
94 | HttpPage(),
95 | PersonalPage(),
96 | ];
97 | }
98 |
99 | @override
100 | Widget build(BuildContext context) {
101 | return Scaffold(
102 | body: _pageList[_tabIndex],
103 | bottomNavigationBar: BottomNavigationBar(
104 | items: [
105 | BottomNavigationBarItem(icon: getTabIcon(0), title: getTabTitle(0)),
106 | BottomNavigationBarItem(icon: getTabIcon(1), title: getTabTitle(1)),
107 | BottomNavigationBarItem(icon: getTabIcon(2), title: getTabTitle(2)),
108 | BottomNavigationBarItem(icon: getTabIcon(3), title: getTabTitle(3)),
109 | BottomNavigationBarItem(icon: getTabIcon(4), title: getTabTitle(4)),
110 | ],
111 | type: BottomNavigationBarType.fixed,
112 | //默认选中首页
113 | currentIndex: _tabIndex,
114 | iconSize: 24.0,
115 | //点击事件
116 | onTap: (index) {
117 | setState(() {
118 | _tabIndex = index;
119 | });
120 | },
121 | ));
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/lib/module/news.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'news.g.dart';
4 |
5 | @JsonSerializable()
6 | class News extends Object {
7 | @JsonKey(name: 'curPage')
8 | int curPage;
9 |
10 | @JsonKey(name: 'datas')
11 | List datas;
12 |
13 | @JsonKey(name: 'offset')
14 | int offset;
15 |
16 | @JsonKey(name: 'over')
17 | bool over;
18 |
19 | @JsonKey(name: 'pageCount')
20 | int pageCount;
21 |
22 | @JsonKey(name: 'size')
23 | int size;
24 |
25 | @JsonKey(name: 'total')
26 | int total;
27 |
28 | News(
29 | this.curPage,
30 | this.datas,
31 | this.offset,
32 | this.over,
33 | this.pageCount,
34 | this.size,
35 | this.total,
36 | );
37 |
38 | factory News.fromJson(Map srcJson) =>
39 | _$NewsFromJson(srcJson);
40 |
41 | Map toJson() => _$NewsToJson(this);
42 | }
43 |
44 | @JsonSerializable()
45 | class Datas extends Object {
46 | @JsonKey(name: 'apkLink')
47 | String apkLink;
48 |
49 | @JsonKey(name: 'author')
50 | String author;
51 |
52 | @JsonKey(name: 'chapterId')
53 | int chapterId;
54 |
55 | @JsonKey(name: 'chapterName')
56 | String chapterName;
57 |
58 | @JsonKey(name: 'collect')
59 | bool collect;
60 |
61 | @JsonKey(name: 'courseId')
62 | int courseId;
63 |
64 | @JsonKey(name: 'desc')
65 | String desc;
66 |
67 | @JsonKey(name: 'envelopePic')
68 | String envelopePic;
69 |
70 | @JsonKey(name: 'fresh')
71 | bool fresh;
72 |
73 | @JsonKey(name: 'id')
74 | int id;
75 |
76 | @JsonKey(name: 'link')
77 | String link;
78 |
79 | @JsonKey(name: 'niceDate')
80 | String niceDate;
81 |
82 | @JsonKey(name: 'origin')
83 | String origin;
84 |
85 | @JsonKey(name: 'projectLink')
86 | String projectLink;
87 |
88 | @JsonKey(name: 'publishTime')
89 | int publishTime;
90 |
91 | @JsonKey(name: 'superChapterId')
92 | int superChapterId;
93 |
94 | @JsonKey(name: 'superChapterName')
95 | String superChapterName;
96 |
97 | @JsonKey(name: 'tags')
98 | List tags;
99 |
100 | @JsonKey(name: 'title')
101 | String title;
102 |
103 | @JsonKey(name: 'type')
104 | int type;
105 |
106 | @JsonKey(name: 'userId')
107 | int userId;
108 |
109 | @JsonKey(name: 'visible')
110 | int visible;
111 |
112 | @JsonKey(name: 'zan')
113 | int zan;
114 |
115 | Datas(
116 | this.apkLink,
117 | this.author,
118 | this.chapterId,
119 | this.chapterName,
120 | this.collect,
121 | this.courseId,
122 | this.desc,
123 | this.envelopePic,
124 | this.fresh,
125 | this.id,
126 | this.link,
127 | this.niceDate,
128 | this.origin,
129 | this.projectLink,
130 | this.publishTime,
131 | this.superChapterId,
132 | this.superChapterName,
133 | this.tags,
134 | this.title,
135 | this.type,
136 | this.userId,
137 | this.visible,
138 | this.zan,
139 | );
140 |
141 | factory Datas.fromJson(Map srcJson) =>
142 | _$DatasFromJson(srcJson);
143 |
144 | Map toJson() => _$DatasToJson(this);
145 | }
146 |
--------------------------------------------------------------------------------
/lib/module/news.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'news.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | News _$NewsFromJson(Map json) {
10 | return News(
11 | json['curPage'] as int,
12 | (json['datas'] as List)
13 | ?.map((e) =>
14 | e == null ? null : Datas.fromJson(e as Map))
15 | ?.toList(),
16 | json['offset'] as int,
17 | json['over'] as bool,
18 | json['pageCount'] as int,
19 | json['size'] as int,
20 | json['total'] as int);
21 | }
22 |
23 | Map _$NewsToJson(News instance) => {
24 | 'curPage': instance.curPage,
25 | 'datas': instance.datas,
26 | 'offset': instance.offset,
27 | 'over': instance.over,
28 | 'pageCount': instance.pageCount,
29 | 'size': instance.size,
30 | 'total': instance.total
31 | };
32 |
33 | Datas _$DatasFromJson(Map json) {
34 | return Datas(
35 | json['apkLink'] as String,
36 | json['author'] as String,
37 | json['chapterId'] as int,
38 | json['chapterName'] as String,
39 | json['collect'] as bool,
40 | json['courseId'] as int,
41 | json['desc'] as String,
42 | json['envelopePic'] as String,
43 | json['fresh'] as bool,
44 | json['id'] as int,
45 | json['link'] as String,
46 | json['niceDate'] as String,
47 | json['origin'] as String,
48 | json['projectLink'] as String,
49 | json['publishTime'] as int,
50 | json['superChapterId'] as int,
51 | json['superChapterName'] as String,
52 | json['tags'] as List,
53 | json['title'] as String,
54 | json['type'] as int,
55 | json['userId'] as int,
56 | json['visible'] as int,
57 | json['zan'] as int);
58 | }
59 |
60 | Map _$DatasToJson(Datas instance) => {
61 | 'apkLink': instance.apkLink,
62 | 'author': instance.author,
63 | 'chapterId': instance.chapterId,
64 | 'chapterName': instance.chapterName,
65 | 'collect': instance.collect,
66 | 'courseId': instance.courseId,
67 | 'desc': instance.desc,
68 | 'envelopePic': instance.envelopePic,
69 | 'fresh': instance.fresh,
70 | 'id': instance.id,
71 | 'link': instance.link,
72 | 'niceDate': instance.niceDate,
73 | 'origin': instance.origin,
74 | 'projectLink': instance.projectLink,
75 | 'publishTime': instance.publishTime,
76 | 'superChapterId': instance.superChapterId,
77 | 'superChapterName': instance.superChapterName,
78 | 'tags': instance.tags,
79 | 'title': instance.title,
80 | 'type': instance.type,
81 | 'userId': instance.userId,
82 | 'visible': instance.visible,
83 | 'zan': instance.zan
84 | };
85 |
--------------------------------------------------------------------------------
/lib/module/user_detail.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'user_detail.g.dart';
4 |
5 |
6 | @JsonSerializable()
7 | class UserDetail extends Object {
8 |
9 | @JsonKey(name: 'chapterTops')
10 | List chapterTops;
11 |
12 | @JsonKey(name: 'collectIds')
13 | List collectIds;
14 |
15 | @JsonKey(name: 'email')
16 | String email;
17 |
18 | @JsonKey(name: 'icon')
19 | String icon;
20 |
21 | @JsonKey(name: 'id')
22 | int id;
23 |
24 | @JsonKey(name: 'password')
25 | String password;
26 |
27 | @JsonKey(name: 'token')
28 | String token;
29 |
30 | @JsonKey(name: 'type')
31 | int type;
32 |
33 | @JsonKey(name: 'username')
34 | String username;
35 |
36 | UserDetail(this.chapterTops,this.collectIds,this.email,this.icon,this.id,this.password,this.token,this.type,this.username,);
37 |
38 | factory UserDetail.fromJson(Map srcJson) => _$UserDetailFromJson(srcJson);
39 |
40 | Map toJson() => _$UserDetailToJson(this);
41 |
42 | }
43 |
44 |
45 |
--------------------------------------------------------------------------------
/lib/module/user_detail.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'user_detail.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | UserDetail _$UserDetailFromJson(Map json) {
10 | return UserDetail(
11 | json['chapterTops'] as List,
12 | json['collectIds'] as List,
13 | json['email'] as String,
14 | json['icon'] as String,
15 | json['id'] as int,
16 | json['password'] as String,
17 | json['token'] as String,
18 | json['type'] as int,
19 | json['username'] as String);
20 | }
21 |
22 | Map _$UserDetailToJson(UserDetail instance) =>
23 | {
24 | 'chapterTops': instance.chapterTops,
25 | 'collectIds': instance.collectIds,
26 | 'email': instance.email,
27 | 'icon': instance.icon,
28 | 'id': instance.id,
29 | 'password': instance.password,
30 | 'token': instance.token,
31 | 'type': instance.type,
32 | 'username': instance.username
33 | };
34 |
--------------------------------------------------------------------------------
/lib/personal/BottomView.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_ydd/utils/line.dart';
3 |
4 | var bottomView = new Column(
5 | children: [
6 | Container(
7 | padding: EdgeInsets.fromLTRB(13.0, 15.0, 13.0, 15.0),
8 | margin: EdgeInsets.fromLTRB(0, 10.0, 0, 0),
9 | color: Colors.white,
10 | child: Row(
11 | children: [
12 | Image.asset('images/xingxing.png', width: 17.0, height: 17.0),
13 | Expanded(
14 | child: Container(
15 | margin: EdgeInsets.fromLTRB(5, 0, 0, 0),
16 | child: Text(
17 | '我的收藏',
18 | style: TextStyle(fontSize: 13.0),
19 | ),
20 | ),
21 | ),
22 | Image.asset('images/jinru.png', width: 17.0, height: 17.0)
23 | ],
24 | ),
25 | ),
26 | line,
27 | Container(
28 | padding: EdgeInsets.fromLTRB(13.0, 15.0, 13.0, 15.0),
29 | color: Colors.white,
30 | child: Row(
31 | children: [
32 | Image.asset('images/xingxing.png', width: 17.0, height: 17.0),
33 | Expanded(
34 | child: Container(
35 | margin: EdgeInsets.fromLTRB(5, 0, 0, 0),
36 | child: Text(
37 | '收货地址管理',
38 | style: TextStyle(fontSize: 13.0),
39 | ),
40 | ),
41 | ),
42 | Image.asset('images/jinru.png', width: 17.0, height: 17.0)
43 | ],
44 | ),
45 | ),
46 | line,
47 | Container(
48 | padding: EdgeInsets.fromLTRB(13.0, 15.0, 13.0, 15.0),
49 | color: Colors.white,
50 | child: Row(
51 | children: [
52 | Image.asset('images/xingxing.png', width: 17.0, height: 17.0),
53 | Expanded(
54 | child: Container(
55 | margin: EdgeInsets.fromLTRB(5, 0, 0, 0),
56 | child: Text(
57 | '银行卡管理',
58 | style: TextStyle(fontSize: 13.0),
59 | ),
60 | ),
61 | ),
62 | Image.asset('images/jinru.png', width: 17.0, height: 17.0)
63 | ],
64 | ),
65 | ),
66 | line,
67 | Container(
68 | padding: EdgeInsets.fromLTRB(13.0, 15.0, 13.0, 15.0),
69 | color: Colors.white,
70 | child: Row(
71 | children: [
72 | Image.asset('images/xingxing.png', width: 17.0, height: 17.0),
73 | Expanded(
74 | child: Container(
75 | margin: EdgeInsets.fromLTRB(5, 0, 0, 0),
76 | child: Text(
77 | '账号设置',
78 | style: TextStyle(fontSize: 13.0),
79 | ),
80 | ),
81 | ),
82 | Image.asset('images/jinru.png', width: 17.0, height: 17.0)
83 | ],
84 | ),
85 | ),
86 | line,
87 | Container(
88 | padding: EdgeInsets.fromLTRB(13.0, 15.0, 13.0, 15.0),
89 | color: Colors.white,
90 | child: Row(
91 | children: [
92 | Image.asset('images/xingxing.png', width: 17.0, height: 17.0),
93 | Expanded(
94 | child: Container(
95 | margin: EdgeInsets.fromLTRB(5, 0, 0, 0),
96 | child: Text(
97 | '帮助中心',
98 | style: TextStyle(fontSize: 13.0),
99 | ),
100 | ),
101 | ),
102 | Image.asset('images/jinru.png', width: 17.0, height: 17.0)
103 | ],
104 | ),
105 | ),
106 | line,
107 | Container(
108 | padding: EdgeInsets.fromLTRB(13.0, 15.0, 13.0, 15.0),
109 | color: Colors.white,
110 | child: Row(
111 | children: [
112 | Image.asset('images/xingxing.png', width: 17.0, height: 17.0),
113 | Expanded(
114 | child: Container(
115 | margin: EdgeInsets.fromLTRB(5, 0, 0, 0),
116 | child: Text(
117 | '关于火兔',
118 | style: TextStyle(fontSize: 13.0),
119 | ),
120 | ),
121 | ),
122 | Image.asset('images/jinru.png', width: 17.0, height: 17.0)
123 | ],
124 | ),
125 | ),
126 | line,
127 | ],
128 | );
129 |
130 | var clickBottom = new Row(
131 | children: [
132 | Expanded(
133 | child: new Container(
134 | alignment: Alignment.center,
135 | color: Colors.grey,
136 | margin: EdgeInsets.fromLTRB(0, 15.0, 0, 25.0),
137 | padding: EdgeInsets.all(2.0),
138 | child: Text('点此关注公众号,获得更多超值商品!'),
139 | ),
140 | )
141 | ],
142 | );
143 |
--------------------------------------------------------------------------------
/lib/personal/Money.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | var myMoney = new Row(children: [
4 | Expanded(
5 | child: new Container(
6 | padding: EdgeInsets.fromLTRB(13.0, 12.0, 12.0, 12.0),
7 | margin: EdgeInsets.fromLTRB(0, 10.0, 0, 0),
8 | color: Colors.white,
9 | child: Text(
10 | '我的钱包',
11 | style: TextStyle(fontSize: 14.0, color: Colors.grey),
12 | ),
13 | ),
14 | ),
15 | ]);
16 | var moneyRow = new Row(
17 | children: [
18 | Expanded(
19 | child: Column(
20 | children: [
21 | Image.asset('images/dianzhu.png', width: 25.0, height: 25.0),
22 | new Container(
23 | margin: EdgeInsets.fromLTRB(0, 12, 0, 0),
24 | child: Text(
25 | 'U币',
26 | style: TextStyle(fontSize: 12.0),
27 | ),
28 | ),
29 | ],
30 | ),
31 | ),
32 | Expanded(
33 | child: Column(
34 | children: [
35 | Image.asset('images/dianzhu.png', width: 25.0, height: 25.0),
36 | new Container(
37 | margin: EdgeInsets.fromLTRB(0, 12, 0, 0),
38 | child: Text(
39 | '余额',
40 | style: TextStyle(fontSize: 12.0),
41 | ),
42 | ),
43 | ],
44 | ),
45 | ),
46 | Expanded(
47 | child: Column(
48 | children: [
49 | Image.asset('images/dianzhu.png', width: 25.0, height: 25.0),
50 | new Container(
51 | margin: EdgeInsets.fromLTRB(0, 12, 0, 0),
52 | child: Text(
53 | '积分',
54 | style: TextStyle(fontSize: 12.0),
55 | ),
56 | ),
57 | ],
58 | ),
59 | ),
60 | Expanded(
61 | child: Column(
62 | children: [
63 | Image.asset('images/dianzhu.png', width: 25.0, height: 25.0),
64 | new Container(
65 | margin: EdgeInsets.fromLTRB(0, 12, 0, 0),
66 | child: Text(
67 | '优惠卷',
68 | style: TextStyle(fontSize: 12.0),
69 | ),
70 | ),
71 | ],
72 | ),
73 | ),
74 | ],
75 | );
76 |
--------------------------------------------------------------------------------
/lib/personal/OrderView.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | var orderView = Container(
4 | padding: EdgeInsets.fromLTRB(13.0, 13.0, 12.0, 13.0),
5 | color: Colors.white,
6 | child: new Row(
7 | children: [
8 | Expanded(
9 | child: Text(
10 | '我的订单',
11 | style: TextStyle(
12 | fontSize: 14.0,
13 | ),
14 | ),
15 | ),
16 | Text(
17 | '查看全部',
18 | style: TextStyle(
19 | fontSize: 14.0,
20 | ),
21 | ),
22 | Image.asset('images/jinru.png', width: 13.0, height: 7.0),
23 | ],
24 | ),
25 | );
26 |
27 | var statusView = new Row(
28 | children: [
29 | Expanded(
30 | child: Column(
31 | children: [
32 | Image.asset(
33 | 'images/daizhifu.png',
34 | width: 26.0,
35 | height: 26.0,
36 | ),
37 | Text(
38 | '待支付',
39 | style: TextStyle(fontSize: 12.0),
40 | ),
41 | ],
42 | ),
43 | ),
44 | Expanded(
45 | child: Column(
46 | children: [
47 | Image.asset(
48 | 'images/daizhifu.png',
49 | width: 26.0,
50 | height: 26.0,
51 | ),
52 | Text(
53 | '待发货',
54 | style: TextStyle(fontSize: 12.0),
55 | ),
56 | ],
57 | ),
58 | ),
59 | Expanded(
60 | child: Column(
61 | children: [
62 | Image.asset(
63 | 'images/daizhifu.png',
64 | width: 26.0,
65 | height: 26.0,
66 | ),
67 | Text(
68 | '待收货',
69 | style: TextStyle(fontSize: 12.0),
70 | ),
71 | ],
72 | ),
73 | ),
74 | Expanded(
75 | child: Column(
76 | children: [
77 | Image.asset(
78 | 'images/daizhifu.png',
79 | width: 26.0,
80 | height: 26.0,
81 | ),
82 | Text(
83 | '已收货',
84 | style: TextStyle(fontSize: 12.0),
85 | ),
86 | ],
87 | ),
88 | ),
89 | Expanded(
90 | child: Column(
91 | children: [
92 | Image.asset(
93 | 'images/daizhifu.png',
94 | width: 26.0,
95 | height: 26.0,
96 | ),
97 | Text(
98 | '已完成',
99 | style: TextStyle(fontSize: 12.0),
100 | ),
101 | ],
102 | ),
103 | ),
104 | Expanded(
105 | child: Column(
106 | children: [
107 | Image.asset(
108 | 'images/daizhifu.png',
109 | width: 26.0,
110 | height: 26.0,
111 | ),
112 | Text(
113 | '已取消',
114 | style: TextStyle(fontSize: 12.0),
115 | ),
116 | ],
117 | ),
118 | ),
119 | ],
120 | );
121 |
122 | var openMember = new Container(
123 | color: Colors.white,
124 | padding: EdgeInsets.fromLTRB(15.0, 13.0, 15.0, 13.0),
125 | child: Row(
126 | children: [
127 | Expanded(
128 | child: span,
129 | ),
130 | Container(
131 | width: 86.0,
132 | height: 27.0,
133 | decoration: BoxDecoration(
134 | gradient: LinearGradient(
135 | colors: [Colors.yellow, Colors.deepOrangeAccent]),
136 | borderRadius: BorderRadius.all(Radius.circular(20))),
137 | child: Text(
138 | '开通店主',
139 | style: TextStyle(
140 | fontSize: 12.0,
141 | color: Colors.white,
142 | ),
143 | ),
144 | /*color: Colors.yellow,*/
145 | alignment: Alignment.center,
146 | ),
147 | ],
148 | ),
149 | );
150 | var span = new Text.rich(
151 | TextSpan(text: '成为火兔店主,历史订单可省', children: [
152 | new TextSpan(text: '12234元', style: new TextStyle(color: Colors.red)),
153 | ]),
154 | );
155 |
--------------------------------------------------------------------------------
/lib/personal/PersonalPage.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_ydd/personal/BottomView.dart';
3 | import 'package:flutter_ydd/personal/Money.dart';
4 | import 'package:flutter_ydd/personal/OrderView.dart';
5 | import 'package:flutter_ydd/personal/TopView.dart';
6 | import 'package:flutter_ydd/utils/line.dart';
7 |
8 | class PersonalPage extends StatelessWidget {
9 | final titles;
10 |
11 | PersonalPage({Key key, @required this.titles}) : super(key: key);
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | // TODO: implement build
16 | return Scaffold(
17 | /*appBar: AppBar(
18 | title: Text('demo $titles'),
19 | ),*/
20 | backgroundColor: Color.fromARGB(255, 241, 244, 243),
21 | body: SingleChildScrollView(
22 | child: Column(
23 | children: [
24 | /*padding,*/
25 | topView,
26 | orderView,
27 | line,
28 | Container(
29 | color: Colors.white,
30 | padding: EdgeInsets.fromLTRB(17.0, 15.0, 17.0, 15.0),
31 | child: statusView,
32 | ),
33 | line,
34 | openMember,
35 | myMoney,
36 | line,
37 | Container(
38 | color: Colors.white,
39 | padding: EdgeInsets.fromLTRB(17.0, 19.0, 17.0, 19.0),
40 | child: moneyRow,
41 | ),
42 | bottomView,
43 | clickBottom,
44 | ],
45 | ),
46 | ),
47 | );
48 | }
49 | }
50 |
51 | var padding = new Padding(
52 | padding: EdgeInsets.all(8.0),
53 | child: Align(
54 | alignment: Alignment.centerRight,
55 | child: Card(
56 | child: Padding(
57 | padding: EdgeInsets.all(10),
58 | child: Text(
59 | 'hello world',
60 | textAlign: TextAlign.left,
61 | ),
62 | ), /**/
63 | ),
64 | ),
65 | );
66 |
--------------------------------------------------------------------------------
/lib/personal/TopView.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | var topView = new Stack(
4 | children: [
5 | Image.asset(
6 | 'images/rank_top.png',
7 | fit: BoxFit.fill,
8 | height: 155.0,
9 | ),
10 | Row(
11 | children: [
12 | Column(
13 | children: [
14 | Container(
15 | margin: EdgeInsets.fromLTRB(15, 45, 0, 0),
16 | child: CircleAvatar(
17 | backgroundImage: NetworkImage(
18 | 'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1545877912&di=2c4bdfb32ca10e75756580f4635a16e5&src=http://ac-r.static.booking.cn/images/hotel/max1024x768/987/98767654.jpg'),
19 | radius: 30.0,
20 | ),
21 | ),
22 | Container(
23 | width: 66.0,
24 | height: 17.0,
25 | alignment: Alignment.center,
26 | margin: EdgeInsets.fromLTRB(20, 5, 0, 0),
27 | decoration: BoxDecoration(
28 | color: Colors.white,
29 | borderRadius: BorderRadius.all(Radius.circular(25))),
30 | //padding: EdgeInsets.all(3.0),
31 | child: Text('普通会员',
32 | style: TextStyle(fontSize: 12.0, color: Colors.red)),
33 | ),
34 | ],
35 | ),
36 | Container(
37 | /*alignment: Alignment.centerLeft,*/
38 | margin: EdgeInsets.fromLTRB(10.0, 15.0, 0, 0),
39 | child: Column(
40 | crossAxisAlignment: CrossAxisAlignment.start, //默认是横向居中的
41 | children: [
42 | Row(
43 | crossAxisAlignment: CrossAxisAlignment.start,
44 | children: [
45 | Text(
46 | 'my name is ydd',
47 | style: TextStyle(fontSize: 17.0, color: Colors.white),
48 | ),
49 | Image.asset(
50 | 'images/ic_rank0_select.png',
51 | width: 27.0,
52 | height: 27.0,
53 | ),
54 | ],
55 | ),
56 | Text(
57 | '会员号:15660010010',
58 | style: TextStyle(
59 | fontSize: 12.0,
60 | color: Colors.white,
61 | ),
62 | ),
63 | ],
64 | ),
65 | )
66 | ],
67 | ),
68 | ],
69 | );
70 |
--------------------------------------------------------------------------------
/lib/type/TypePage.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | int index = 0;
4 | List typeList;
5 |
6 | class TypePage extends StatefulWidget {
7 | @override
8 | State createState() {
9 | // TODO: implement createState
10 | return new Page();
11 | }
12 | }
13 |
14 | class Page extends State {
15 | @override
16 | void initState() {
17 | // TODO: implement initState
18 | super.initState();
19 | initDate();
20 | }
21 |
22 | @override
23 | Widget build(BuildContext context) {
24 | return Scaffold(
25 | appBar: AppBar(
26 | title: Text('消息界面'),
27 | elevation: 1, //阴影高度
28 | centerTitle: true, //居中显示
29 | titleSpacing: NavigationToolbar.kMiddleSpacing,
30 | ),
31 | body: Row(
32 | mainAxisAlignment: MainAxisAlignment.start,
33 | crossAxisAlignment: CrossAxisAlignment.start,
34 | children: [
35 | Expanded(
36 | child: Container(
37 | color: Color.fromARGB(255, 241, 244, 243),
38 | child: ListView.builder(
39 | itemBuilder: (context, index) {
40 | return buildText(index);
41 | },
42 | itemCount: typeList.length,
43 | ),
44 | ),
45 | flex: 1),
46 | Expanded(
47 | child: SingleChildScrollView(
48 | child: Container(
49 | color: Colors.white,
50 | margin: EdgeInsets.fromLTRB(10.0, 10.0, 0, 0),
51 | child: Column(
52 | crossAxisAlignment: CrossAxisAlignment.start,
53 | children: [
54 | Padding(
55 | padding: EdgeInsets.fromLTRB(6.0, 5.0, 0, 5.0),
56 | child: Text(
57 | '热门精选',
58 | style: TextStyle(fontSize: 18.0, color: Colors.black),
59 | ),
60 | ),
61 | _getGridView(),
62 | ],
63 | ),
64 | ),
65 | ),
66 | flex: 4),
67 | ],
68 | ),
69 | );
70 | }
71 |
72 | Widget buildText(int mIndex) {
73 | if (index == mIndex) {
74 | return Stack(
75 | children: [
76 | Container(
77 | alignment: Alignment.center,
78 | width: 90.0,
79 | height: 51.0,
80 | color: Colors.white,
81 | child: Text(typeList[mIndex].title,
82 | style: TextStyle(color: Colors.red),
83 | textAlign: TextAlign.center),
84 | ),
85 | Container(
86 | color: Colors.red,
87 | width: 4.0,
88 | height: 51.0,
89 | ),
90 | ],
91 | );
92 | }
93 | return GestureDetector(
94 | onTap: () {
95 | setState(() {
96 | index = mIndex;
97 | });
98 | },
99 | child: Container(
100 | alignment: Alignment.center,
101 | width: 90.0,
102 | height: 51.0,
103 | child: Text(
104 | typeList[mIndex].title,
105 | style: TextStyle(color: Colors.black45),
106 | textAlign: TextAlign.center,
107 | ),
108 | ),
109 | );
110 | }
111 | }
112 |
113 | Widget _getGridView() {
114 | return GridView.count(
115 | physics: NeverScrollableScrollPhysics(),
116 | //解决scollview嵌套 滑动gridview的区域 没反应的问题
117 | crossAxisSpacing: 15.0,
118 | mainAxisSpacing: 10.0,
119 | crossAxisCount: 3,
120 | shrinkWrap: true,
121 | //这个解决colum里面嵌套gridview显示不出来的问题
122 | childAspectRatio: 0.7,
123 | //宽高比 必须设置
124 | children: _singleView(),
125 | );
126 | }
127 |
128 | List _singleView() {
129 | return typeList[index].list.map((PicDetail detail) {
130 | return Column(
131 | children: [
132 | Image.network(
133 | detail.pic,
134 | width: 70.0,
135 | height: 70.0,
136 | fit: BoxFit.fill,
137 | ),
138 | Container(
139 | margin: EdgeInsets.fromLTRB(0, 10.0, 0, 0),
140 | child: Text(
141 | detail.title,
142 | maxLines: 1,
143 | overflow: TextOverflow.ellipsis,
144 | ),
145 | ),
146 | ],
147 | );
148 | }).toList();
149 | }
150 |
151 | class TypeDetail {
152 | String title;
153 | List list;
154 |
155 | TypeDetail(this.title, this.list);
156 | }
157 |
158 | class PicDetail {
159 | String title;
160 | String pic;
161 |
162 | PicDetail(this.title, this.pic);
163 | }
164 |
165 | initDate() {
166 | List picList1 = List();
167 | picList1.add(PicDetail('美女1',
168 | 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3781315478,1934124074&fm=27&gp=0.jpg'));
169 | picList1.add(PicDetail('美女2',
170 | 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2908685083,3079518550&fm=27&gp=0.jpg'));
171 | picList1.add(PicDetail('美女3',
172 | 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1570444243,2428502615&fm=27&gp=0.jpg'));
173 | picList1.add(PicDetail('美女4',
174 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3402156445,2973077239&fm=27&gp=0.jpg'));
175 | picList1.add(PicDetail('美女5',
176 | 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1048531140,213711847&fm=27&gp=0.jpg'));
177 | picList1.add(PicDetail('美女6',
178 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1004664987,1272603277&fm=27&gp=0.jpg'));
179 | picList1.add(PicDetail('美女1',
180 | 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3781315478,1934124074&fm=27&gp=0.jpg'));
181 | picList1.add(PicDetail('美女2',
182 | 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2908685083,3079518550&fm=27&gp=0.jpg'));
183 | picList1.add(PicDetail('美女3',
184 | 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1570444243,2428502615&fm=27&gp=0.jpg'));
185 | picList1.add(PicDetail('美女4',
186 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3402156445,2973077239&fm=27&gp=0.jpg'));
187 | picList1.add(PicDetail('美女5',
188 | 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1048531140,213711847&fm=27&gp=0.jpg'));
189 | picList1.add(PicDetail('美女6',
190 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1004664987,1272603277&fm=27&gp=0.jpg'));
191 | picList1.add(PicDetail('美女1',
192 | 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3781315478,1934124074&fm=27&gp=0.jpg'));
193 | picList1.add(PicDetail('美女2',
194 | 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2908685083,3079518550&fm=27&gp=0.jpg'));
195 | picList1.add(PicDetail('美女3',
196 | 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1570444243,2428502615&fm=27&gp=0.jpg'));
197 | picList1.add(PicDetail('美女4',
198 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3402156445,2973077239&fm=27&gp=0.jpg'));
199 | picList1.add(PicDetail('美女5',
200 | 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1048531140,213711847&fm=27&gp=0.jpg'));
201 | picList1.add(PicDetail('美女6',
202 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1004664987,1272603277&fm=27&gp=0.jpg'));
203 |
204 | List picList2 = List();
205 | picList2.add(PicDetail('风景1',
206 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=124155087,2314196803&fm=27&gp=0.jpg'));
207 | picList2.add(PicDetail('风景2',
208 | 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3272199364,3404297250&fm=27&gp=0.jpg'));
209 | picList2.add(PicDetail('风景3',
210 | 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2366882342,2282069833&fm=27&gp=0.jpg'));
211 |
212 | List picList3 = List();
213 | picList3.add(PicDetail('跑车1',
214 | 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1656811409,1242727312&fm=27&gp=0.jpg'));
215 | picList3.add(PicDetail('跑车2',
216 | 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=248774050,4268131522&fm=27&gp=0.jpg'));
217 | picList3.add(PicDetail('跑车3',
218 | 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=240983388,3429403328&fm=27&gp=0.jpg'));
219 | picList3.add(PicDetail('跑车4',
220 | 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2249861203,2254664290&fm=27&gp=0.jpg'));
221 |
222 | typeList = new List();
223 | typeList
224 | ..add(TypeDetail('美女', picList1))
225 | ..add(TypeDetail('风景', picList2))
226 | ..add(TypeDetail('跑车', picList3));
227 | }
228 |
--------------------------------------------------------------------------------
/lib/utils/HttpGo.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:fluttertoast/fluttertoast.dart';
5 |
6 | class HttpGo {
7 | static final String GET = "get";
8 | static final String POST = "post";
9 | static final String DATA = "data";
10 | static final String CODE = "errorCode";
11 |
12 | Dio dio;
13 | static HttpGo _instance;
14 |
15 | static HttpGo getInstance() {
16 | if (_instance == null) {
17 | _instance = HttpGo();
18 | }
19 | return _instance;
20 | }
21 |
22 | HttpGo() {
23 | dio = Dio(Options(
24 | /*baseUrl: "http://192.168.5.6:8085",*/
25 | headers: {'platform': 'android', 'version': 11.0},
26 | connectTimeout: 5000,
27 | receiveTimeout: 100000,
28 | ));
29 | }
30 |
31 | //get请求
32 | get(String url, Function successCallBack,
33 | {params, Function errorCallBack}) async {
34 | _requstHttp(url, successCallBack, GET, params, errorCallBack);
35 | }
36 |
37 | //post请求
38 | post(String url, Function successCallBack,
39 | {params, Function errorCallBack}) async {
40 | _requstHttp(url, successCallBack, POST, params, errorCallBack);
41 | }
42 |
43 | _requstHttp(String url, Function successCallBack,
44 | [String method, FormData params, Function errorCallBack]) async {
45 | String errorMsg = '';
46 | int code;
47 |
48 | try {
49 | Response response;
50 | _addStartHttpInterceptor(dio); //添加请求之前的拦截器
51 | if (method == GET) {
52 | if (params != null && params.isNotEmpty) {
53 | response = await dio.get(url, data: params);
54 | } else {
55 | response = await dio.get(url);
56 | }
57 | } else if (method == POST) {
58 | if (params != null && params.isNotEmpty) {
59 | response = await dio.post(url, data: params);
60 | } else {
61 | response = await dio.post(url);
62 | }
63 | }
64 |
65 | code = response.statusCode;
66 | if (code != 200) {
67 | errorMsg = '错误码:' + code.toString() + ',' + response.data.toString();
68 | _error(errorCallBack, errorMsg);
69 | return;
70 | }
71 |
72 | String dataStr = json.encode(response.data);
73 | Map dataMap = json.decode(dataStr);
74 | if (dataMap != null && dataMap[CODE] != 0) {
75 | errorMsg =
76 | '错误码:' + dataMap[CODE].toString() + ',' + response.data.toString();
77 | _error(errorCallBack, errorMsg);
78 | return;
79 | }
80 |
81 | if (successCallBack != null) {
82 | successCallBack(dataMap[DATA]);
83 | }
84 | } catch (exception) {
85 | _error(errorCallBack, exception.toString());
86 | }
87 | }
88 |
89 | _error(Function errorCallBack, String error) {
90 | Fluttertoast.showToast(
91 | msg: error.toString(),
92 | toastLength: Toast.LENGTH_SHORT,
93 | gravity: ToastGravity.CENTER);
94 | if (errorCallBack != null) {
95 | errorCallBack(error);
96 | }
97 | }
98 |
99 | _addStartHttpInterceptor(Dio dio) {
100 | dio.interceptor.request.onSend = (Options options) {
101 | // 在请求被发送之前做一些事情 比如加密的一些操作 或者添加token等参数 对head 或者请求参数进行加工处理
102 | Map headers = options.headers;
103 | Map body = options.data;
104 | /*request['token'] = '1111111111';
105 | headers['addParam'] = 'aaaaaaaaaaaaaaa';*/
106 | return options;
107 | };
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/lib/utils/Md5.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:convert/convert.dart';
4 | import 'package:crypto/crypto.dart';
5 |
6 | String generateMd5(String data) {
7 | //md5加密
8 | var content = new Utf8Encoder().convert(data);
9 | var digest = md5.convert(content);
10 | // 这里其实就是 digest.toString()
11 | return hex.encode(digest.bytes);
12 | }
13 |
--------------------------------------------------------------------------------
/lib/utils/line.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | var line = new Container(
4 | child: Divider(height: 1.0),
5 | margin: EdgeInsets.fromLTRB(10.0, 0, 10, 0.0),
6 | );
7 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_ydd
2 | description: A new Flutter application.
3 |
4 | # The following defines the version and build number for your application.
5 | # A version number is three numbers separated by dots, like 1.2.43
6 | # followed by an optional build number separated by a +.
7 | # Both the version and the builder number may be overridden in flutter
8 | # build by specifying --build-name and --build-number, respectively.
9 | # Read more about versioning at semver.org.
10 | version: 1.0.0+1
11 |
12 | environment:
13 | sdk: ">=2.0.0-dev.68.0 <3.0.0"
14 |
15 | dependencies:
16 | flutter:
17 | sdk: flutter
18 |
19 | # The following adds the Cupertino Icons font to your application.
20 | # Use with the CupertinoIcons class for iOS style icons.
21 | cupertino_icons: ^0.1.2
22 | flutter_swiper: ^1.0.6 # 轮播图
23 | dio: ^1.0.13
24 | crypto: ^2.0.6 # 加密
25 | fluttertoast: ^2.2.6
26 | json_serializable: ^2.0.0 # 解析
27 | build_runner: ^1.1.2 # 解析
28 | shared_preferences: ^0.4.2
29 |
30 | dev_dependencies:
31 | flutter_test:
32 | sdk: flutter
33 |
34 |
35 | # For information on the generic Dart part of this file, see the
36 | # following page: https://www.dartlang.org/tools/pub/pubspec
37 |
38 | # The following section is specific to Flutter.
39 | flutter:
40 |
41 | # The following line ensures that the Material Icons font is
42 | # included with your application, so that you can use the icons in
43 | # the material Icons class.
44 | uses-material-design: true
45 |
46 | # To add assets to your application, add an assets section, like this:
47 | # assets:
48 | # - images/a_dot_burr.jpeg
49 | # - images/a_dot_ham.jpeg
50 | assets:
51 | - images/rank_top.png
52 | - ic_rank0_select.png
53 | - jinru.png
54 | - daizhifu.png
55 | - dianzhu.png
56 | - xingxing.png
57 | - tab_icon_home_default.png
58 | - tab_icon_home_selected.png
59 | - tab_icon_sort_default.png
60 | - tab_icon_sort_selected.png
61 | - tab_icon_info_default.png
62 | - tab_icon_info_selected.png
63 | - tab_icon_shop_default.png
64 | - tab_icon_shop_selected.png
65 | - tab_icon_personal_default.png
66 | - tab_icon_personal_selected.png
67 | - yixingdianzhu.png
68 | - yixingdianzhu2.png
69 | - ic_welfare_goods_left.png
70 | - ic_welfare_goods_right.png
71 | - top1.png
72 | - top2.png
73 | - top3.png
74 | - goods.jpg
75 | - news.png
76 |
77 |
78 |
79 |
80 |
81 | # An image asset can refer to one or more resolution-specific "variants", see
82 | # https://flutter.io/assets-and-images/#resolution-aware.
83 |
84 | # For details regarding adding assets from package dependencies, see
85 | # https://flutter.io/assets-and-images/#from-packages
86 |
87 | # To add custom fonts to your application, add a fonts section here,
88 | # in this "flutter" section. Each entry in this list should have a
89 | # "family" key with the font family name, and a "fonts" key with a
90 | # list giving the asset and other descriptors for the font. For
91 | # example:
92 | # fonts:
93 | # - family: Schyler
94 | # fonts:
95 | # - asset: fonts/Schyler-Regular.ttf
96 | # - asset: fonts/Schyler-Italic.ttf
97 | # style: italic
98 | # - family: Trajan Pro
99 | # fonts:
100 | # - asset: fonts/TrajanPro.ttf
101 | # - asset: fonts/TrajanPro_Bold.ttf
102 | # weight: 700
103 | #
104 | # For details regarding fonts from package dependencies,
105 | # see https://flutter.io/custom-fonts/#from-packages
106 |
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | // This is a basic Flutter widget test.
2 | //
3 | // To perform an interaction with a widget in your test, use the WidgetTester
4 | // utility that Flutter provides. For example, you can send tap and scroll
5 | // gestures. You can also use WidgetTester to find child widgets in the widget
6 | // tree, read text, and verify that the values of widget properties are correct.
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter_test/flutter_test.dart';
10 |
11 | import 'package:flutter_ydd/main.dart';
12 |
13 | void main() {
14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
15 | // Build our app and trigger a frame.
16 | await tester.pumpWidget(MyApp());
17 |
18 | // Verify that our counter starts at 0.
19 | expect(find.text('0'), findsOneWidget);
20 | expect(find.text('1'), findsNothing);
21 |
22 | // Tap the '+' icon and trigger a frame.
23 | await tester.tap(find.byIcon(Icons.add));
24 | await tester.pump();
25 |
26 | // Verify that our counter has incremented.
27 | expect(find.text('0'), findsNothing);
28 | expect(find.text('1'), findsOneWidget);
29 | });
30 | }
31 |
--------------------------------------------------------------------------------