@@ -788,7 +788,7 @@ | |||
"languageVersion": "2.1" | |||
} | |||
], | |||
"generated": "2020-09-22T09:35:21.193093Z", | |||
"generated": "2020-09-22T12:40:39.852808Z", | |||
"generator": "pub", | |||
"generatorVersion": "2.7.2" | |||
} |
@@ -1,13 +0,0 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<project version="4"> | |||
<component name="SaveActionSettings"> | |||
<option name="actions"> | |||
<set> | |||
<option value="activate" /> | |||
<option value="organizeImports" /> | |||
<option value="reformat" /> | |||
</set> | |||
</option> | |||
<option name="configurationPath" value="" /> | |||
</component> | |||
</project> |
@@ -17,8 +17,13 @@ | |||
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; | |||
97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; | |||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; | |||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; | |||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; | |||
9FFCE301251ADE0600F4F353 /* yw_1222_baichuan.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 9FFCE2F7251ADE0600F4F353 /* yw_1222_baichuan.jpg */; }; | |||
9FFCE303251ADE0600F4F353 /* 1.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FFCE2FB251ADE0600F4F353 /* 1.png */; }; | |||
9FFCE304251ADE0600F4F353 /* 2.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FFCE2FC251ADE0600F4F353 /* 2.png */; }; | |||
9FFCE305251ADE0600F4F353 /* 3.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FFCE2FD251ADE0600F4F353 /* 3.png */; }; | |||
9FFCE306251ADE0600F4F353 /* 4.png in Resources */ = {isa = PBXBuildFile; fileRef = 9FFCE2FE251ADE0600F4F353 /* 4.png */; }; | |||
9FFCE307251ADE0600F4F353 /* 智莺生活.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9FFCE2FF251ADE0600F4F353 /* 智莺生活.xcassets */; }; | |||
/* End PBXBuildFile section */ | |||
/* Begin PBXCopyFilesBuildPhase section */ | |||
@@ -52,9 +57,14 @@ | |||
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; | |||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; | |||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; | |||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; | |||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | |||
9FFCE2F7251ADE0600F4F353 /* yw_1222_baichuan.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = yw_1222_baichuan.jpg; sourceTree = "<group>"; }; | |||
9FFCE2FB251ADE0600F4F353 /* 1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 1.png; sourceTree = "<group>"; }; | |||
9FFCE2FC251ADE0600F4F353 /* 2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 2.png; sourceTree = "<group>"; }; | |||
9FFCE2FD251ADE0600F4F353 /* 3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3.png; sourceTree = "<group>"; }; | |||
9FFCE2FE251ADE0600F4F353 /* 4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 4.png; sourceTree = "<group>"; }; | |||
9FFCE2FF251ADE0600F4F353 /* 智莺生活.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "智莺生活.xcassets"; sourceTree = "<group>"; }; | |||
A860D105A09AEA74261219D2 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
E03B6CB558D0A26B049E0718 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; }; | |||
/* End PBXFileReference section */ | |||
@@ -118,10 +128,10 @@ | |||
97C146F01CF9000F007C117D /* Runner */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
9FFCE2F3251ADE0600F4F353 /* 项目资源 */, | |||
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, | |||
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, | |||
97C146FA1CF9000F007C117D /* Main.storyboard */, | |||
97C146FD1CF9000F007C117D /* Assets.xcassets */, | |||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, | |||
97C147021CF9000F007C117D /* Info.plist */, | |||
97C146F11CF9000F007C117D /* Supporting Files */, | |||
@@ -139,6 +149,43 @@ | |||
name = "Supporting Files"; | |||
sourceTree = "<group>"; | |||
}; | |||
9FFCE2F3251ADE0600F4F353 /* 项目资源 */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
9FFCE2F4251ADE0600F4F353 /* 智莺生活 */, | |||
); | |||
path = "项目资源"; | |||
sourceTree = "<group>"; | |||
}; | |||
9FFCE2F4251ADE0600F4F353 /* 智莺生活 */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
9FFCE2F5251ADE0600F4F353 /* config */, | |||
9FFCE2FA251ADE0600F4F353 /* image */, | |||
); | |||
path = "智莺生活"; | |||
sourceTree = "<group>"; | |||
}; | |||
9FFCE2F5251ADE0600F4F353 /* config */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
9FFCE2F7251ADE0600F4F353 /* yw_1222_baichuan.jpg */, | |||
); | |||
path = config; | |||
sourceTree = "<group>"; | |||
}; | |||
9FFCE2FA251ADE0600F4F353 /* image */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
9FFCE2FB251ADE0600F4F353 /* 1.png */, | |||
9FFCE2FC251ADE0600F4F353 /* 2.png */, | |||
9FFCE2FD251ADE0600F4F353 /* 3.png */, | |||
9FFCE2FE251ADE0600F4F353 /* 4.png */, | |||
9FFCE2FF251ADE0600F4F353 /* 智莺生活.xcassets */, | |||
); | |||
path = image; | |||
sourceTree = "<group>"; | |||
}; | |||
EE1370F94952C6405CCA440D /* Frameworks */ = { | |||
isa = PBXGroup; | |||
children = ( | |||
@@ -212,9 +259,14 @@ | |||
isa = PBXResourcesBuildPhase; | |||
buildActionMask = 2147483647; | |||
files = ( | |||
9FFCE306251ADE0600F4F353 /* 4.png in Resources */, | |||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, | |||
9FFCE303251ADE0600F4F353 /* 1.png in Resources */, | |||
9FFCE301251ADE0600F4F353 /* yw_1222_baichuan.jpg in Resources */, | |||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, | |||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, | |||
9FFCE305251ADE0600F4F353 /* 3.png in Resources */, | |||
9FFCE307251ADE0600F4F353 /* 智莺生活.xcassets in Resources */, | |||
9FFCE304251ADE0600F4F353 /* 2.png in Resources */, | |||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, | |||
); | |||
runOnlyForDeploymentPostprocessing = 0; | |||
@@ -1,23 +0,0 @@ | |||
{ | |||
"images" : [ | |||
{ | |||
"idiom" : "universal", | |||
"filename" : "LaunchImage.png", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"idiom" : "universal", | |||
"filename" : "LaunchImage@2x.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"idiom" : "universal", | |||
"filename" : "LaunchImage@3x.png", | |||
"scale" : "3x" | |||
} | |||
], | |||
"info" : { | |||
"version" : 1, | |||
"author" : "xcode" | |||
} | |||
} |
@@ -1,5 +0,0 @@ | |||
# Launch Screen Assets | |||
You can customize the launch screen with your own desired assets by replacing the image files in this directory. | |||
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. |
@@ -64,5 +64,153 @@ | |||
<key>NSAllowsArbitraryLoads</key> | |||
<true/> | |||
</dict> | |||
<key>CFBundleURLTypes</key> | |||
<array> | |||
<dict> | |||
<key>CFBundleTypeRole</key> | |||
<string>Editor</string> | |||
<key>CFBundleURLName</key> | |||
<string>WBkey</string> | |||
<key>CFBundleURLSchemes</key> | |||
<array> | |||
<string>wb</string> | |||
</array> | |||
</dict> | |||
<dict> | |||
<key>CFBundleTypeRole</key> | |||
<string>Editor</string> | |||
<key>CFBundleURLName</key> | |||
<string>QQ10JZ</string> | |||
<key>CFBundleURLSchemes</key> | |||
<array> | |||
<string>tencent1111030588</string> | |||
</array> | |||
</dict> | |||
<dict> | |||
<key>CFBundleTypeRole</key> | |||
<string>Editor</string> | |||
<key>CFBundleURLName</key> | |||
<string>WBSecret</string> | |||
<key>CFBundleURLSchemes</key> | |||
<array> | |||
<string>sina.</string> | |||
</array> | |||
</dict> | |||
<dict> | |||
<key>CFBundleTypeRole</key> | |||
<string>Editor</string> | |||
<key>CFBundleURLName</key> | |||
<string>QQ16JZ</string> | |||
<key>CFBundleURLSchemes</key> | |||
<array> | |||
<string>QQ4238fb3c</string> | |||
</array> | |||
</dict> | |||
<dict> | |||
<key>CFBundleTypeRole</key> | |||
<string>Editor</string> | |||
<key>CFBundleURLName</key> | |||
<string>tb</string> | |||
<key>CFBundleURLSchemes</key> | |||
<array> | |||
<string>tbopen31333495</string> | |||
</array> | |||
</dict> | |||
<dict> | |||
<key>CFBundleTypeRole</key> | |||
<string>Editor</string> | |||
<key>CFBundleURLName</key> | |||
<string>weixin</string> | |||
<key>CFBundleURLSchemes</key> | |||
<array> | |||
<string>wx</string> | |||
</array> | |||
</dict> | |||
<dict> | |||
<key>CFBundleTypeRole</key> | |||
<string>Editor</string> | |||
<key>CFBundleURLSchemes</key> | |||
<array> | |||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | |||
</array> | |||
</dict> | |||
<dict> | |||
<key>CFBundleTypeRole</key> | |||
<string>Editor</string> | |||
<key>CFBundleURLName</key> | |||
<string>JD</string> | |||
<key>CFBundleURLSchemes</key> | |||
<array> | |||
<string>sdkback</string> | |||
</array> | |||
</dict> | |||
</array> | |||
<key>LSApplicationQueriesSchemes</key> | |||
<array> | |||
<string>otpauth</string> | |||
<string>iosamap</string> | |||
<string>baidumap</string> | |||
<string>vipshop</string> | |||
<string>jdlogin</string> | |||
<string>openapp</string> | |||
<string>openapp.jdmobile</string> | |||
<string>pinduoduo</string> | |||
<string>wechat</string> | |||
<string>tbopen</string> | |||
<string>tmall</string> | |||
<string>taobao</string> | |||
<string>weixin</string> | |||
<string>weixinULAPI</string> | |||
<string>sinaweibohd</string> | |||
<string>sinaweibo</string> | |||
<string>sinaweibosso</string> | |||
<string>weibosdk</string> | |||
<string>weibosdk2.5</string> | |||
<string>weibosdk2</string> | |||
<string>mqqapi</string> | |||
<string>mqq</string> | |||
<string>mqqOpensdkSSoLogin</string> | |||
<string>mqqconnect</string> | |||
<string>mqqopensdkdataline</string> | |||
<string>mqqopensdkgrouptribeshare</string> | |||
<string>mqqopensdkfriend</string> | |||
<string>mqqopensdkapi</string> | |||
<string>mqqopensdkapiV2</string> | |||
<string>mqqopensdkapiV3</string> | |||
<string>mqzoneopensdk</string> | |||
<string>wtloginmqq</string> | |||
<string>wtloginmqq2</string> | |||
<string>mqqwpa</string> | |||
<string>mqzone</string> | |||
<string>mqzonev2</string> | |||
<string>mqzoneshare</string> | |||
<string>wtloginqzone</string> | |||
<string>mqzonewx</string> | |||
<string>mqzoneopensdkapiV2</string> | |||
<string>mqqopensdkapiV4</string> | |||
<string>mqzoneopensdkapi19</string> | |||
<string>mqzoneopensdkapi</string> | |||
<string>mqqbrowser</string> | |||
<string>mttbrowser</string> | |||
<string>renrenios</string> | |||
<string>renrenapi</string> | |||
<string>renren</string> | |||
<string>renreniphone</string> | |||
<string>laiwangsso</string> | |||
<string>yixin</string> | |||
<string>yixinopenapi</string> | |||
<string>instagram</string> | |||
<string>whatsapp</string> | |||
<string>line</string> | |||
<string>fbapi</string> | |||
<string>fb</string> | |||
<string>fb-messenger-api</string> | |||
<string>fbauth2</string> | |||
<string>fbshareextension</string> | |||
<string>alipays</string> | |||
<string>alitrip</string> | |||
<string>fleamarket</string> | |||
<string>youku</string> | |||
</array> | |||
</dict> | |||
</plist> |
@@ -3,115 +3,115 @@ | |||
{ | |||
"size" : "20x20", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-20x20@2x.png", | |||
"filename" : "icon-20@2x.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "20x20", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-20x20@3x.png", | |||
"filename" : "icon-20@3x.png", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-29x29@1x.png", | |||
"filename" : "icon-29.png", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-29x29@2x.png", | |||
"filename" : "icon-29@2x.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-29x29@3x.png", | |||
"filename" : "icon-29@3x.png", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"size" : "40x40", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-40x40@2x.png", | |||
"filename" : "icon-40@2x.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "40x40", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-40x40@3x.png", | |||
"filename" : "icon-40@3x.png", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"size" : "60x60", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-60x60@2x.png", | |||
"filename" : "icon-60@2x.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "60x60", | |||
"idiom" : "iphone", | |||
"filename" : "Icon-App-60x60@3x.png", | |||
"filename" : "icon-60@3x.png", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"size" : "20x20", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-20x20@1x.png", | |||
"filename" : "icon-20-ipad.png", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "20x20", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-20x20@2x.png", | |||
"filename" : "icon-20@2x-ipad.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-29x29@1x.png", | |||
"filename" : "icon-29-ipad.png", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "29x29", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-29x29@2x.png", | |||
"filename" : "icon-29@2x-ipad.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "40x40", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-40x40@1x.png", | |||
"filename" : "icon-40.png", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "40x40", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-40x40@2x.png", | |||
"filename" : "icon-40@2x.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "76x76", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-76x76@1x.png", | |||
"filename" : "icon-76.png", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"size" : "76x76", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-76x76@2x.png", | |||
"filename" : "icon-76@2x.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "83.5x83.5", | |||
"idiom" : "ipad", | |||
"filename" : "Icon-App-83.5x83.5@2x.png", | |||
"filename" : "icon-83.5@2x.png", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"size" : "1024x1024", | |||
"idiom" : "ios-marketing", | |||
"filename" : "Icon-App-1024x1024@1x.png", | |||
"filename" : "icon-1024.png", | |||
"scale" : "1x" | |||
} | |||
], | |||
@@ -119,4 +119,4 @@ | |||
"version" : 1, | |||
"author" : "xcode" | |||
} | |||
} | |||
} |
@@ -0,0 +1,6 @@ | |||
{ | |||
"info" : { | |||
"version" : 1, | |||
"author" : "xcode" | |||
} | |||
} |
@@ -0,0 +1,71 @@ | |||
{ | |||
"images" : [ | |||
{ | |||
"extent" : "full-screen", | |||
"idiom" : "iphone", | |||
"subtype" : "2436h", | |||
"filename" : "1125x2436.png", | |||
"minimum-system-version" : "11.0", | |||
"orientation" : "portrait", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"extent" : "full-screen", | |||
"idiom" : "iphone", | |||
"subtype" : "736h", | |||
"filename" : "1242x2208.png", | |||
"minimum-system-version" : "8.0", | |||
"orientation" : "portrait", | |||
"scale" : "3x" | |||
}, | |||
{ | |||
"extent" : "full-screen", | |||
"idiom" : "iphone", | |||
"subtype" : "667h", | |||
"filename" : "750x1334.png", | |||
"minimum-system-version" : "8.0", | |||
"orientation" : "portrait", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"orientation" : "portrait", | |||
"idiom" : "iphone", | |||
"filename" : "640x960.png", | |||
"extent" : "full-screen", | |||
"minimum-system-version" : "7.0", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"extent" : "full-screen", | |||
"idiom" : "iphone", | |||
"subtype" : "retina4", | |||
"filename" : "640x1136.png", | |||
"minimum-system-version" : "7.0", | |||
"orientation" : "portrait", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"orientation" : "portrait", | |||
"idiom" : "iphone", | |||
"extent" : "full-screen", | |||
"scale" : "1x" | |||
}, | |||
{ | |||
"orientation" : "portrait", | |||
"idiom" : "iphone", | |||
"extent" : "full-screen", | |||
"scale" : "2x" | |||
}, | |||
{ | |||
"orientation" : "portrait", | |||
"idiom" : "iphone", | |||
"extent" : "full-screen", | |||
"subtype" : "retina4", | |||
"scale" : "2x" | |||
} | |||
], | |||
"info" : { | |||
"version" : 1, | |||
"author" : "xcode" | |||
} | |||
} |
@@ -4,6 +4,7 @@ import 'package:zhiying_base_widget/pages/home_page/home_page.dart'; | |||
import 'package:provider/provider.dart'; | |||
import 'package:zhiying_base_widget/register.dart'; | |||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||
import 'package:flutter_alibc/flutter_alibc.dart'; | |||
void main() { | |||
FlutterError.onError = (FlutterErrorDetails details) { | |||
@@ -25,7 +26,11 @@ class _MyAppState extends State<MyApp> { | |||
child: Text( | |||
"走神了~\n${error.exceptionAsString()}", | |||
style: | |||
Theme.of(context).textTheme.title.copyWith(color: Colors.redAccent), | |||
Theme | |||
.of(context) | |||
.textTheme | |||
.title | |||
.copyWith(color: Colors.redAccent), | |||
), | |||
); | |||
} | |||
@@ -35,6 +40,9 @@ class _MyAppState extends State<MyApp> { | |||
super.initState(); | |||
print('初始化~~~~'); | |||
BaseWidgetRegister.init(); | |||
FlutterAlibc.initAlibc(version: "", appName: "").then((result) { | |||
Logger.debug('${result.errorCode} ${result.errorMessage}'); | |||
}); | |||
} | |||
@override | |||
@@ -1,13 +1,14 @@ | |||
import 'dart:ui'; | |||
import 'package:flutter/material.dart'; | |||
import 'package:flutter_bloc/flutter_bloc.dart'; | |||
import 'package:provider/provider.dart'; | |||
import 'package:pull_to_refresh/pull_to_refresh.dart'; | |||
import 'package:zhiying_base_widget/pages/goods_details_page/bloc/goods_details_page_bloc.dart'; | |||
import 'package:zhiying_base_widget/pages/goods_details_page/bloc/goods_details_page_repository.dart'; | |||
import 'package:zhiying_base_widget/pages/goods_details_page/notifier/goods_details_page_notifier.dart'; | |||
import 'package:zhiying_base_widget/widgets/goods_details/footer/goods_details_footer_widget.dart'; | |||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||
import 'package:provider/provider.dart'; | |||
import 'package:flutter_bloc/flutter_bloc.dart'; | |||
import 'dart:ui'; | |||
class GoodsDetailsPage extends StatefulWidget { | |||
final Map<String, dynamic> data; | |||
@@ -24,19 +25,19 @@ class _GoodsDetailsPageState extends State<GoodsDetailsPage> { | |||
print("parent data = ${widget.data}"); | |||
super.initState(); | |||
} | |||
@override | |||
Widget build(BuildContext context) { | |||
return Scaffold( | |||
backgroundColor: HexColor.fromHex('#FFF1F1F1'), | |||
body: MultiProvider( | |||
providers: [ | |||
/// 滑动通知 | |||
ChangeNotifierProvider.value(value: GoodsDetailsPageNotifier()), | |||
], | |||
child: BlocProvider<GoodsDetailsPageBloc>( | |||
create: (_) => GoodsDetailsPageBloc(repository: GoodsDetailsPageRepository())..add(GoodsDetailsPageInitEvent(model: widget?.data)), | |||
child: GoodsDetailsContainer(widget?.data), | |||
), | |||
return MultiProvider( | |||
providers: [ | |||
/// 滑动通知 | |||
ChangeNotifierProvider.value(value: GoodsDetailsPageNotifier()), | |||
], | |||
child: BlocProvider<GoodsDetailsPageBloc>( | |||
create: (_) => | |||
GoodsDetailsPageBloc(repository: GoodsDetailsPageRepository()) | |||
..add(GoodsDetailsPageInitEvent(model: widget?.data)), | |||
child: GoodsDetailsContainer(widget?.data), | |||
), | |||
); | |||
} | |||
@@ -54,7 +55,8 @@ class GoodsDetailsContainer extends StatefulWidget { | |||
class _GoodsDetailsContainerState extends State<GoodsDetailsContainer> { | |||
bool _isEnded = false; | |||
ScrollController _controller = ScrollController(); | |||
RefreshController _refreshController = RefreshController(initialRefresh: false); | |||
RefreshController _refreshController = | |||
RefreshController(initialRefresh: false); | |||
void _onLoading() async { | |||
// await Future.delayed(Duration(milliseconds: 1000)); | |||
@@ -79,11 +81,14 @@ class _GoodsDetailsContainerState extends State<GoodsDetailsContainer> { | |||
void initState() { | |||
_controller.addListener(() { | |||
// print('${_controller.offset} ${_controller.position.maxScrollExtent}'); | |||
if (_controller.offset >= _controller.position.maxScrollExtent && !_isEnded) { | |||
if (_controller.offset >= _controller.position.maxScrollExtent && | |||
!_isEnded) { | |||
// 滑动到底部 | |||
_isEnded = true; | |||
Provider.of<GoodsDetailsPageNotifier>(context, listen: false).loadMore(); | |||
} else if (_controller.offset < _controller.position.maxScrollExtent && _isEnded) { | |||
Provider.of<GoodsDetailsPageNotifier>(context, listen: false) | |||
.loadMore(); | |||
} else if (_controller.offset < _controller.position.maxScrollExtent && | |||
_isEnded) { | |||
_isEnded = false; | |||
Provider.of<GoodsDetailsPageNotifier>(context, listen: false).reset(); | |||
} | |||
@@ -125,35 +130,30 @@ class _GoodsDetailsContainerState extends State<GoodsDetailsContainer> { | |||
/// 主视图 | |||
Widget _getMainWidget(List<Map<String, dynamic>> datas) { | |||
return Stack( | |||
fit: StackFit.passthrough, | |||
children: <Widget>[ | |||
/// 主体布局 | |||
SmartRefresher( | |||
enablePullDown: true, | |||
enablePullUp: false, | |||
header: WaterDropHeader(), | |||
controller: _refreshController, | |||
onLoading: _onLoading, | |||
child: CustomScrollView( | |||
controller: _controller, | |||
slivers: _createContent(context, datas ?? []), | |||
), | |||
), | |||
/// appBar | |||
Align(alignment: Alignment.topCenter, child: _getAppBarWidget()), | |||
return Scaffold( | |||
backgroundColor: Colors.white, | |||
body: CustomScrollView( | |||
controller: _controller, | |||
slivers: _createContent(context, datas ?? []), | |||
), | |||
/// 底部 | |||
Align(alignment: Alignment.bottomCenter, child: GoodsDetailsFooterWidget(!EmptyUtil.isEmpty(datas) ? datas[ datas.length-1 ] : null)) | |||
], | |||
/// appBar | |||
// Align(alignment: Alignment.topCenter, child: _getAppBarWidget()), | |||
/// 底部 | |||
bottomNavigationBar: GoodsDetailsFooterWidget( | |||
!EmptyUtil.isEmpty(datas) ? datas[datas.length - 1] : null), | |||
); | |||
} | |||
List<Widget> _createContent(BuildContext context, List<Map<String, dynamic>> datas) { | |||
List<Widget> _createContent( | |||
BuildContext context, List<Map<String, dynamic>> datas) { | |||
List<Widget> list = List(); | |||
/// datas.length - 1 为最后一个在底部 | |||
for (int i = 0; i < datas.length - 1; i++) { | |||
WidgetModel item = WidgetModel.fromJson(Map<String, dynamic>.from(datas[i])); | |||
WidgetModel item = | |||
WidgetModel.fromJson(Map<String, dynamic>.from(datas[i])); | |||
print('item.modName ${item.modName}'); | |||
list.addAll(WidgetFactory.create( | |||
@@ -180,7 +180,8 @@ class _GoodsDetailsContainerState extends State<GoodsDetailsContainer> { | |||
return Container( | |||
width: double.infinity, | |||
height: 40, | |||
margin: EdgeInsets.only(top: MediaQueryData.fromWindow(window).padding.top), | |||
margin: | |||
EdgeInsets.only(top: MediaQueryData.fromWindow(window).padding.top), | |||
child: AppBar( | |||
backgroundColor: Colors.transparent, | |||
elevation: 0, | |||
@@ -76,7 +76,7 @@ class _SettingContainerState extends State<_SettingContainer> { | |||
style: BorderStyle.none, | |||
), | |||
), | |||
backgroundColor: HexColor.fromHex(style?.appBarBgColor ?? 'ffffff'), | |||
backgroundColor: HexColor.fromHex(style?.appBarBgColor ?? '#ffffff'), | |||
leading: Navigator.canPop(context) | |||
? GestureDetector( | |||
child: Container( | |||
@@ -97,7 +97,7 @@ class _SettingContainerState extends State<_SettingContainer> { | |||
style?.appBarName ?? '设置', | |||
style: TextStyle( | |||
fontSize: 15, | |||
color: HexColor.fromHex(style?.appBarNameColor ?? '333333'), | |||
color: HexColor.fromHex(style?.appBarNameColor ?? '#333333'), | |||
), | |||
), | |||
); | |||
@@ -128,7 +128,7 @@ class _SettingContainerState extends State<_SettingContainer> { | |||
item.name, | |||
style: TextStyle( | |||
fontSize: 13, | |||
color: HexColor.fromHex(item.nameColor), | |||
color: HexColor.fromHex(item?.nameColor ?? '#333333'), | |||
fontWeight: FontWeight.bold, | |||
), | |||
), | |||
@@ -139,7 +139,7 @@ class _SettingContainerState extends State<_SettingContainer> { | |||
textAlign: TextAlign.right, | |||
style: TextStyle( | |||
fontSize: 13, | |||
color: HexColor.fromHex(item.descColor), | |||
color: HexColor.fromHex(item?.descColor ?? '#333333'), | |||
), | |||
), | |||
), | |||
@@ -1,15 +1,11 @@ | |||
import 'package:flutter/cupertino.dart'; | |||
import 'package:flutter/material.dart'; | |||
import 'package:webview_flutter/webview_flutter.dart'; | |||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||
class BaseWebview extends StatefulWidget { | |||
final Map<String, dynamic> model; | |||
const BaseWebview( | |||
this.model, { | |||
Key key, | |||
}) : super(key: key); | |||
const BaseWebview(this.model, {Key key}) : super(key: key); | |||
@override | |||
_BaseWebviewState createState() => _BaseWebviewState(); | |||
@@ -30,29 +26,28 @@ class _BaseWebviewState extends State<BaseWebview> { | |||
Widget build(BuildContext context) { | |||
return Scaffold( | |||
appBar: _createNav(), | |||
body: Builder(builder: (BuildContext context) { | |||
return WebView( | |||
initialUrl: _url, | |||
javascriptMode: JavascriptMode.unrestricted, | |||
onWebViewCreated: (WebViewController webViewController) { | |||
_webViewController = webViewController; | |||
}, | |||
navigationDelegate: (NavigationRequest request) { | |||
return NavigationDecision.navigate; | |||
}, | |||
onPageStarted: (String url) { | |||
print('Page started loading: $url'); | |||
}, | |||
onPageFinished: (String url) { | |||
print('Page finished loading: $url'); | |||
_webViewController.getTitle().then((title) { | |||
_title = title; | |||
setState(() {}); | |||
}); | |||
}, | |||
gestureNavigationEnabled: true, | |||
); | |||
}), | |||
backgroundColor: Colors.white, | |||
body: WebView( | |||
initialUrl: _url, | |||
javascriptMode: JavascriptMode.unrestricted, | |||
onWebViewCreated: (WebViewController webViewController) { | |||
_webViewController = webViewController; | |||
}, | |||
navigationDelegate: (NavigationRequest request) { | |||
return NavigationDecision.navigate; | |||
}, | |||
onPageStarted: (String url) { | |||
print('Page started loading: $url'); | |||
}, | |||
onPageFinished: (String url) { | |||
print('Page finished loading: $url'); | |||
_webViewController.getTitle().then((title) { | |||
_title = title; | |||
setState(() {}); | |||
}); | |||
}, | |||
gestureNavigationEnabled: true, | |||
), | |||
); | |||
} | |||
@@ -86,7 +81,7 @@ class _BaseWebviewState extends State<BaseWebview> { | |||
_title ?? '', | |||
style: TextStyle( | |||
fontSize: 15, | |||
color: HexColor.fromHex('333333'), | |||
color: Color(0xff333333), | |||
), | |||
), | |||
trailing: GestureDetector( | |||
@@ -1,11 +1,11 @@ | |||
import 'package:cached_network_image/cached_network_image.dart'; | |||
import 'package:flutter/material.dart'; | |||
import 'package:flutter_bloc/flutter_bloc.dart'; | |||
import 'package:zhiying_base_widget/widgets/goods_details/footer/bloc/goods_details_footer_bloc.dart'; | |||
import 'package:zhiying_base_widget/widgets/goods_details/footer/bloc/goods_details_footer_repository.dart'; | |||
import 'package:zhiying_base_widget/widgets/goods_details/footer/goods_details_footer_sk.dart'; | |||
import 'package:zhiying_base_widget/widgets/goods_details/footer/model/goods_details_footer_model.dart'; | |||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||
import 'package:flutter_bloc/flutter_bloc.dart'; | |||
import 'package:cached_network_image/cached_network_image.dart'; | |||
/// | |||
/// 商品详情底部Widget | |||
@@ -21,7 +21,9 @@ class GoodsDetailsFooterWidget extends StatelessWidget { | |||
visible: !EmptyUtil.isEmpty(model), | |||
replacement: GoodsDetailsFooterSkeleton(), | |||
child: BlocProvider<GoodsDetailsFooterBloc>( | |||
create: (_) => GoodsDetailsFooterBloc(repository: GoodsDetailsFooterRepository())..add(GoodsDetailsFooterInitEvent(model: model)), | |||
create: (_) => | |||
GoodsDetailsFooterBloc(repository: GoodsDetailsFooterRepository()) | |||
..add(GoodsDetailsFooterInitEvent(model: model)), | |||
child: GooddsDetailsFooterContainer(), | |||
), | |||
); | |||
@@ -30,10 +32,12 @@ class GoodsDetailsFooterWidget extends StatelessWidget { | |||
class GooddsDetailsFooterContainer extends StatefulWidget { | |||
@override | |||
_GooddsDetailsFooterContainerState createState() => _GooddsDetailsFooterContainerState(); | |||
_GooddsDetailsFooterContainerState createState() => | |||
_GooddsDetailsFooterContainerState(); | |||
} | |||
class _GooddsDetailsFooterContainerState extends State<GooddsDetailsFooterContainer> { | |||
class _GooddsDetailsFooterContainerState | |||
extends State<GooddsDetailsFooterContainer> { | |||
/// 打开首页 | |||
void _openHome() {} | |||
@@ -67,18 +71,21 @@ class _GooddsDetailsFooterContainerState extends State<GooddsDetailsFooterContai | |||
} | |||
Widget _getMainWidget(GoodsDetailsFooterModel model) { | |||
return Container( | |||
height: 70, | |||
width: double.infinity, | |||
padding: const EdgeInsets.only(bottom: 10, top: 12.5, left: 21, right: 12.5), | |||
decoration: BoxDecoration( | |||
// boxShadow: [ | |||
// BoxShadow(color: Colors.grey[300], offset: Offset(0.0, 0.0), blurRadius: 5.0, spreadRadius: 2.0), | |||
// BoxShadow(color: Colors.grey[300], offset: Offset(0.0, 0.0)), | |||
// ], | |||
color: Colors.white, | |||
double height = MediaQuery.of(context).padding.bottom; | |||
return SafeArea( | |||
child: Container( | |||
width: double.infinity, | |||
padding: EdgeInsets.only( | |||
bottom: (height > 10 ? 0 : 10), top: 10, left: 21, right: 12.5), | |||
decoration: BoxDecoration( | |||
// boxShadow: [ | |||
// BoxShadow(color: Colors.grey[300], offset: Offset(0.0, 0.0), blurRadius: 5.0, spreadRadius: 2.0), | |||
// BoxShadow(color: Colors.grey[300], offset: Offset(0.0, 0.0)), | |||
// ], | |||
color: Colors.white, | |||
), | |||
child: Container(height: 44, child: _getMainWidet(model)), | |||
), | |||
child: _getMainWidet(model), | |||
); | |||
} | |||
@@ -108,12 +115,18 @@ class _GooddsDetailsFooterContainerState extends State<GooddsDetailsFooterContai | |||
onTap: () => _openHome(), | |||
child: Padding( | |||
padding: const EdgeInsets.only(right: 35), | |||
child: _getCustomWidget(model?.home ?? '首页', model?.home_color ?? '999999', model?.home_icon ?? ''), | |||
child: _getCustomWidget(model?.home ?? '首页', | |||
model?.home_color ?? '999999', model?.home_icon ?? ''), | |||
)), | |||
GestureDetector( | |||
behavior: HitTestBehavior.opaque, | |||
onTap: () => _collectOnClick(), | |||
child: Padding(padding: const EdgeInsets.only(right: 0), child: _getCustomWidget(model?.collect ?? '收藏', model?.collect_color ?? '999999', model?.collect_icon ?? ''))) | |||
child: Padding( | |||
padding: const EdgeInsets.only(right: 0), | |||
child: _getCustomWidget( | |||
model?.collect ?? '收藏', | |||
model?.collect_color ?? '999999', | |||
model?.collect_icon ?? ''))) | |||
], | |||
); | |||
} | |||
@@ -123,7 +136,10 @@ class _GooddsDetailsFooterContainerState extends State<GooddsDetailsFooterContai | |||
return Row( | |||
mainAxisAlignment: MainAxisAlignment.end, | |||
crossAxisAlignment: CrossAxisAlignment.center, | |||
children: <Widget>[_getFxzButton(model), _getZgsButton(model)], | |||
children: <Widget>[ | |||
_getFxzButton(model), | |||
_getZgsButton(model), | |||
], | |||
); | |||
} | |||
@@ -133,18 +149,44 @@ class _GooddsDetailsFooterContainerState extends State<GooddsDetailsFooterContai | |||
onTap: () => _shareOnClick(), | |||
child: Container( | |||
alignment: Alignment.center, | |||
padding: const EdgeInsets.only(left: 30, right: 30, top: 5, bottom: 5), | |||
height: 44, | |||
width: 110, | |||
// padding: const EdgeInsets.only(left: 30, right: 30, top: 5, bottom: 5), | |||
decoration: BoxDecoration( | |||
gradient: LinearGradient(colors: [HexColor.fromHex(model?.share_earn_bg1_color ?? '#FFCA66'), HexColor.fromHex(model?.share_earn_bg2_color ?? '#FFD961')], begin: Alignment.centerLeft, end: Alignment.centerRight), | |||
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(25), topLeft: Radius.circular(25))), | |||
gradient: LinearGradient(colors: [ | |||
HexColor.fromHex(model?.share_earn_bg1_color ?? '#FFCA66'), | |||
HexColor.fromHex(model?.share_earn_bg2_color ?? '#FFD961') | |||
], begin: Alignment.centerLeft, end: Alignment.centerRight), | |||
borderRadius: BorderRadius.only( | |||
bottomLeft: Radius.circular(25), topLeft: Radius.circular(25))), | |||
child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.center, | |||
mainAxisAlignment: MainAxisAlignment.center, | |||
children: <Widget>[ | |||
RichText( | |||
text: TextSpan(text: '¥ ', style: TextStyle(fontSize: 12, color: HexColor.fromHex(model?.share_earn_val_color ?? 'FFFFFF')), children: [ | |||
TextSpan(text: model?.share_value ?? '0.0', style: TextStyle(fontSize: 15, color: HexColor.fromHex(model?.share_earn_color ?? '#FFFFFF'), fontFamily: 'Din', package: 'zhiying_base_widget')), | |||
]), | |||
text: TextSpan( | |||
text: '¥ ', | |||
style: TextStyle( | |||
fontSize: 12, | |||
color: HexColor.fromHex( | |||
model?.share_earn_val_color ?? 'FFFFFF')), | |||
children: [ | |||
TextSpan( | |||
text: model?.share_value ?? '0.0', | |||
style: TextStyle( | |||
fontSize: 15, | |||
color: HexColor.fromHex( | |||
model?.share_earn_color ?? '#FFFFFF'), | |||
fontFamily: 'Din', | |||
package: 'zhiying_base_widget')), | |||
]), | |||
), | |||
Text( | |||
model?.share_earn ?? '分享赚', | |||
style: TextStyle( | |||
color: HexColor.fromHex(model?.share_earn_color ?? '#FFFFFF'), | |||
fontSize: 12), | |||
), | |||
Text(model?.share_earn ?? '分享赚', style: TextStyle(color: HexColor.fromHex(model?.share_earn_color ?? '#FFFFFF'), fontSize: 15)) | |||
], | |||
), | |||
), | |||
@@ -158,25 +200,45 @@ class _GooddsDetailsFooterContainerState extends State<GooddsDetailsFooterContai | |||
onTap: () => _savemoneyOnClick(), | |||
child: Container( | |||
alignment: Alignment.center, | |||
padding: const EdgeInsets.only(left: 30, right: 30, top: 5, bottom: 5), | |||
// padding: const EdgeInsets.only(left: 30, right: 30, top: 5, bottom: 5), | |||
height: 44, | |||
width: 110, | |||
decoration: BoxDecoration( | |||
gradient: LinearGradient(colors: [HexColor.fromHex(model?.save_earn_bg1_color ?? '#FF6969'), HexColor.fromHex(model?.save_earn_bg2_color ?? '#FF4646')], begin: Alignment.centerLeft, end: Alignment.centerRight), | |||
borderRadius: BorderRadius.only(bottomRight: Radius.circular(25), topRight: Radius.circular(25))), | |||
gradient: LinearGradient(colors: [ | |||
HexColor.fromHex(model?.save_earn_bg1_color ?? '#FF6969'), | |||
HexColor.fromHex(model?.save_earn_bg2_color ?? '#FF4646') | |||
], begin: Alignment.centerLeft, end: Alignment.centerRight), | |||
borderRadius: BorderRadius.only( | |||
bottomRight: Radius.circular(25), | |||
topRight: Radius.circular(25))), | |||
child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.center, | |||
mainAxisAlignment: MainAxisAlignment.center, | |||
children: <Widget>[ | |||
RichText( | |||
text: TextSpan(text: '¥ ', style: TextStyle(fontSize: 12, color: HexColor.fromHex(model?.save_earn_val_color ?? 'FFFFFF')), children: [ | |||
TextSpan( | |||
text: model?.slef_buy_value ??'0.0', | |||
style: TextStyle( | |||
fontSize: 15, | |||
color: HexColor.fromHex(model?.save_earn_val_color ?? '#FFFFFF'), | |||
fontFamily: 'Din', | |||
package: 'zhiying_base_widget', | |||
)), | |||
]), | |||
text: TextSpan( | |||
text: '¥ ', | |||
style: TextStyle( | |||
fontSize: 12, | |||
color: HexColor.fromHex( | |||
model?.save_earn_val_color ?? 'FFFFFF')), | |||
children: [ | |||
TextSpan( | |||
text: model?.slef_buy_value ?? '0.0', | |||
style: TextStyle( | |||
fontSize: 15, | |||
color: HexColor.fromHex( | |||
model?.save_earn_val_color ?? '#FFFFFF'), | |||
fontFamily: 'Din', | |||
package: 'zhiying_base_widget', | |||
)), | |||
]), | |||
), | |||
Text(model?.save_earn ?? '自购省', style: TextStyle(color: HexColor.fromHex(model?.save_earn_color ?? '#FFFFFF'), fontSize: 15)) | |||
Text(model?.save_earn ?? '自购省', | |||
style: TextStyle( | |||
color: | |||
HexColor.fromHex(model?.save_earn_color ?? '#FFFFFF'), | |||
fontSize: 12)) | |||
], | |||
), | |||
), | |||
@@ -197,8 +259,10 @@ class _GooddsDetailsFooterContainerState extends State<GooddsDetailsFooterContai | |||
), | |||
// Container( width: 25, margin: const EdgeInsets.only(bottom: 3), child: CachedNetworkImage(imageUrl: icon, fit: BoxFit.fill, width: 25,),), | |||
const SizedBox(height: 3), | |||
/// 图片 | |||
Text(text, style: TextStyle(color: HexColor.fromHex(textColor), fontSize: 11)) | |||
Text(text, | |||
style: TextStyle(color: HexColor.fromHex(textColor), fontSize: 11)) | |||
], | |||
); | |||
} | |||
@@ -5,6 +5,9 @@ part 'home_goods_style_model.g.dart'; | |||
@JsonSerializable() | |||
class HomeGoodsStyleModel extends Object { | |||
@JsonKey(name: 'list_column') | |||
String column; | |||
@JsonKey(name: 'recommend_list') | |||
List<HomeGoodsHeaderModel> recommendList; | |||
@@ -23,12 +23,13 @@ HomeGoodsStyleModel _$HomeGoodsStyleModelFromJson(Map<String, dynamic> json) { | |||
json['commission_bg_color'] as String, | |||
json['market_price_color'] as String, | |||
json['current_price_color'] as String, | |||
); | |||
)..column = json['list_column'] as String; | |||
} | |||
Map<String, dynamic> _$HomeGoodsStyleModelToJson( | |||
HomeGoodsStyleModel instance) => | |||
<String, dynamic>{ | |||
'list_column': instance.column, | |||
'recommend_list': instance.recommendList, | |||
'provider_name_color': instance.providerNameColor, | |||
'provider_name_background_color': instance.providerNameBackgroundColor, | |||