@ -360,18 +360,6 @@
|
|||||||
DEVELOPMENT_TEAM = C97QBVP4DP;
|
DEVELOPMENT_TEAM = C97QBVP4DP;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "微乐园";
|
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "应用想要访问您的相机,用于设置头像/动态发布";
|
|
||||||
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "应用想要访问您的麦克风,用于发送语音消息";
|
|
||||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "应用想要访问您的相册,用于设置头像/动态发布";
|
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
||||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
|
||||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
|
||||||
INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
|
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@ -382,7 +370,7 @@
|
|||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
@ -507,18 +495,6 @@
|
|||||||
DEVELOPMENT_TEAM = C97QBVP4DP;
|
DEVELOPMENT_TEAM = C97QBVP4DP;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "微乐园";
|
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "应用想要访问您的相机,用于设置头像/动态发布";
|
|
||||||
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "应用想要访问您的麦克风,用于发送语音消息";
|
|
||||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "应用想要访问您的相册,用于设置头像/动态发布";
|
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
||||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
|
||||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
|
||||||
INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
|
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@ -529,7 +505,7 @@
|
|||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
@ -548,18 +524,6 @@
|
|||||||
DEVELOPMENT_TEAM = C97QBVP4DP;
|
DEVELOPMENT_TEAM = C97QBVP4DP;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
INFOPLIST_KEY_CFBundleDisplayName = "微乐园";
|
|
||||||
INFOPLIST_KEY_NSCameraUsageDescription = "应用想要访问您的相机,用于设置头像/动态发布";
|
|
||||||
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
|
||||||
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "应用想要访问您的位置,用于设置个人资料";
|
|
||||||
INFOPLIST_KEY_NSMicrophoneUsageDescription = "应用想要访问您的麦克风,用于发送语音消息";
|
|
||||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "应用想要访问您的相册,用于设置头像/动态发布";
|
|
||||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
||||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
|
||||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
|
||||||
INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
|
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
|
||||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@ -570,7 +534,7 @@
|
|||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
|
|||||||
@ -2,115 +2,117 @@
|
|||||||
"images": [
|
"images": [
|
||||||
{
|
{
|
||||||
"size": "20x20",
|
"size": "20x20",
|
||||||
"idiom": "universal",
|
"idiom": "iphone",
|
||||||
"filename": "icon-20@2x.png",
|
"filename": "icon-20@2x.png",
|
||||||
"scale": "2x",
|
"scale": "2x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "20x20",
|
"size": "20x20",
|
||||||
"idiom": "universal",
|
"idiom": "iphone",
|
||||||
"filename": "icon-20@3x.png",
|
"filename": "icon-20@3x.png",
|
||||||
"scale": "3x",
|
"scale": "3x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "29x29",
|
"size": "29x29",
|
||||||
"idiom": "universal",
|
"idiom": "iphone",
|
||||||
|
"filename": "icon-29.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size": "29x29",
|
||||||
|
"idiom": "iphone",
|
||||||
"filename": "icon-29@2x.png",
|
"filename": "icon-29@2x.png",
|
||||||
"scale": "2x",
|
"scale": "2x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "29x29",
|
"size": "29x29",
|
||||||
"idiom": "universal",
|
"idiom": "iphone",
|
||||||
"filename": "icon-29@3x.png",
|
"filename": "icon-29@3x.png",
|
||||||
"scale": "3x",
|
"scale": "3x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size": "38x38",
|
|
||||||
"idiom": "universal",
|
|
||||||
"filename": "icon-38@2x.png",
|
|
||||||
"scale": "2x",
|
|
||||||
"platform": "ios"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size": "38x38",
|
|
||||||
"idiom": "universal",
|
|
||||||
"filename": "icon-38@3x.png",
|
|
||||||
"scale": "3x",
|
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "40x40",
|
"size": "40x40",
|
||||||
"idiom": "universal",
|
"idiom": "iphone",
|
||||||
"filename": "icon-40@2x.png",
|
"filename": "icon-40@2x.png",
|
||||||
"scale": "2x",
|
"scale": "2x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "40x40",
|
"size": "40x40",
|
||||||
"idiom": "universal",
|
"idiom": "iphone",
|
||||||
"filename": "icon-40@3x.png",
|
"filename": "icon-40@3x.png",
|
||||||
"scale": "3x",
|
"scale": "3x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "60x60",
|
"size": "60x60",
|
||||||
"idiom": "universal",
|
"idiom": "iphone",
|
||||||
"filename": "icon-60@2x.png",
|
"filename": "icon-60@2x.png",
|
||||||
"scale": "2x",
|
"scale": "2x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "60x60",
|
"size": "60x60",
|
||||||
"idiom": "universal",
|
"idiom": "iphone",
|
||||||
"filename": "icon-60@3x.png",
|
"filename": "icon-60@3x.png",
|
||||||
"scale": "3x",
|
"scale": "3x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "64x64",
|
"size": "20x20",
|
||||||
"idiom": "universal",
|
"idiom": "ipad",
|
||||||
"filename": "icon-64@2x.png",
|
"filename": "icon-20-ipad.png",
|
||||||
"scale": "2x",
|
"scale": "1x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "64x64",
|
"size": "20x20",
|
||||||
"idiom": "universal",
|
"idiom": "ipad",
|
||||||
"filename": "icon-64@3x.png",
|
"filename": "icon-20@2x-ipad.png",
|
||||||
"scale": "3x",
|
"scale": "2x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "68x68",
|
"size": "29x29",
|
||||||
"idiom": "universal",
|
"idiom": "ipad",
|
||||||
"filename": "icon-68@2x.png",
|
"filename": "icon-29-ipad.png",
|
||||||
"scale": "2x",
|
"scale": "1x"
|
||||||
"platform": "ios"
|
},
|
||||||
|
{
|
||||||
|
"size": "29x29",
|
||||||
|
"idiom": "ipad",
|
||||||
|
"filename": "icon-29@2x-ipad.png",
|
||||||
|
"scale": "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size": "40x40",
|
||||||
|
"idiom": "ipad",
|
||||||
|
"filename": "icon-40.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size": "40x40",
|
||||||
|
"idiom": "ipad",
|
||||||
|
"filename": "icon-40@2x.png",
|
||||||
|
"scale": "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "76x76",
|
"size": "76x76",
|
||||||
"idiom": "universal",
|
"idiom": "ipad",
|
||||||
|
"filename": "icon-76.png",
|
||||||
|
"scale": "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size": "76x76",
|
||||||
|
"idiom": "ipad",
|
||||||
"filename": "icon-76@2x.png",
|
"filename": "icon-76@2x.png",
|
||||||
"scale": "2x",
|
"scale": "2x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "83.5x83.5",
|
"size": "83.5x83.5",
|
||||||
"idiom": "universal",
|
"idiom": "ipad",
|
||||||
"filename": "icon-83.5@2x.png",
|
"filename": "icon-83.5@2x.png",
|
||||||
"scale": "2x",
|
"scale": "2x"
|
||||||
"platform": "ios"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "1024x1024",
|
"size": "1024x1024",
|
||||||
"idiom": "universal",
|
"idiom": "ios-marketing",
|
||||||
"filename": "icon-1024.png",
|
"filename": "icon-1024.png",
|
||||||
"scale": "1x",
|
"scale": "1x"
|
||||||
"platform": "ios"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"info": {
|
"info": {
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 326 KiB After Width: | Height: | Size: 409 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "总有一个小众圈子适合你@2x.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "总有一个小众圈子适合你.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "背景切图@2x.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "背景切图@3x.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 638 KiB |
|
Before Width: | Height: | Size: 1.5 MiB |
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "圆角-icon-64@2x.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "圆角-icon-64@3x.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 30 KiB |
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "Group 2036-1.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "Group 2036.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 66 KiB |
@ -1,10 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
<!--View Controller-->
|
<!--View Controller-->
|
||||||
@ -16,50 +14,24 @@
|
|||||||
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
||||||
</layoutGuides>
|
</layoutGuides>
|
||||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="splash_bg" translatesAutoresizingMaskIntoConstraints="NO" id="scI-Fd-nzK">
|
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
|
||||||
</imageView>
|
|
||||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="splash_icon" translatesAutoresizingMaskIntoConstraints="NO" id="z2r-hp-Ri7">
|
|
||||||
<rect key="frame" x="65.666666666666671" y="116.66666666666669" width="65.000000000000014" height="65"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="height" constant="65" id="9c8-Pw-17x"/>
|
|
||||||
<constraint firstAttribute="width" constant="65" id="VAd-kg-eQg"/>
|
|
||||||
</constraints>
|
|
||||||
</imageView>
|
|
||||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="title" translatesAutoresizingMaskIntoConstraints="NO" id="Ju9-YS-gg4">
|
|
||||||
<rect key="frame" x="145.66666666666666" y="112.66666666666669" width="183.99999999999997" height="73"/>
|
|
||||||
</imageView>
|
|
||||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="desc" translatesAutoresizingMaskIntoConstraints="NO" id="FkL-oG-K1l">
|
|
||||||
<rect key="frame" x="65" y="779" width="263" height="23"/>
|
|
||||||
</imageView>
|
</imageView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="bottom" secondItem="scI-Fd-nzK" secondAttribute="bottom" id="0g0-U6-jBt"/>
|
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
|
||||||
<constraint firstItem="scI-Fd-nzK" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="5Be-KR-hbG"/>
|
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
|
||||||
<constraint firstItem="FkL-oG-K1l" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="A7l-K7-akl"/>
|
|
||||||
<constraint firstItem="z2r-hp-Ri7" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" multiplier="0.35" id="DHA-O8-biE"/>
|
|
||||||
<constraint firstItem="Ju9-YS-gg4" firstAttribute="centerY" secondItem="z2r-hp-Ri7" secondAttribute="centerY" id="P1u-Jl-Y0N"/>
|
|
||||||
<constraint firstItem="scI-Fd-nzK" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="VWL-uh-DS7"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="scI-Fd-nzK" secondAttribute="trailing" id="feF-GB-vil"/>
|
|
||||||
<constraint firstItem="Ju9-YS-gg4" firstAttribute="leading" secondItem="z2r-hp-Ri7" secondAttribute="trailing" constant="15" id="khw-zh-0eV"/>
|
|
||||||
<constraint firstItem="z2r-hp-Ri7" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" multiplier="0.5" id="se0-P2-YFO"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="FkL-oG-K1l" secondAttribute="bottom" constant="50" id="zv0-dV-h0D"/>
|
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="80.916030534351137" y="264.08450704225356"/>
|
<point key="canvasLocation" x="53" y="375"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="desc" width="263" height="23"/>
|
<image name="LaunchImage" width="168" height="185"/>
|
||||||
<image name="splash_bg" width="375" height="812"/>
|
|
||||||
<image name="splash_icon" width="64" height="64"/>
|
|
||||||
<image name="title" width="184" height="73"/>
|
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@ -4,13 +4,62 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>App Transport Security Settings </key>
|
<key>App Transport Security Settings </key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>NSLocationWhenInUseUsageDescription</key>
|
||||||
|
<string>应用想要访问您的位置,用于设置个人资料</string>
|
||||||
|
<key>NSLocationAlwaysUsageDescription</key>
|
||||||
|
<string>应用想要访问您的位置,用于设置个人资料</string>
|
||||||
|
<key>NSMicrophoneUsageDescription</key>
|
||||||
|
<string>应用想要访问您的麦克风,用于发送语音</string>
|
||||||
|
<key>NSCameraUsageDescription</key>
|
||||||
|
<string>应用想要访问您的相机,用于设置头像/动态发布</string>
|
||||||
|
<key>NSPhotoLibraryUsageDescription</key>
|
||||||
|
<string>应用想要访问您的相册,用于设置头像/动态发布</string>
|
||||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>Circle App</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>circle_app</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>CFBundleVersion</key>
|
||||||
<false/>
|
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||||
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
<true/>
|
||||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>UILaunchStoryboardName</key>
|
||||||
|
<string>LaunchScreen</string>
|
||||||
|
<key>UIMainStoryboardFile</key>
|
||||||
|
<string>Main</string>
|
||||||
|
<key>UIStatusBarStyle</key>
|
||||||
|
<string>UIStatusBarStyleLightContent</string>
|
||||||
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
|
</array>
|
||||||
|
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
|
</array>
|
||||||
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
// import 'package:flutter_install_app/flutter_install_app.dart';
|
import 'package:flutter_install_app/flutter_install_app.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ class _CustomDialogState extends State<UpdateDialog> {
|
|||||||
// SmartDialog.dismiss();
|
// SmartDialog.dismiss();
|
||||||
print(error);
|
print(error);
|
||||||
});
|
});
|
||||||
// await AppInstaller.installApk(filePath, actionRequired: false);
|
await AppInstaller.installApk(filePath, actionRequired: false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -14,31 +14,26 @@ import '../../../util/SharedPreferencesHelper.dart';
|
|||||||
import 'state.dart';
|
import 'state.dart';
|
||||||
|
|
||||||
class LoginLogic extends GetxController {
|
class LoginLogic extends GetxController {
|
||||||
bool check = false;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
// TODO: implement onReady
|
// TODO: implement onReady
|
||||||
super.onReady();
|
super.onReady();
|
||||||
FlutterNativeSplash.remove();
|
FlutterNativeSplash.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() async {
|
void onInit() async{
|
||||||
// TODO: implement onInit
|
// TODO: implement onInit
|
||||||
super.onInit();
|
super.onInit();
|
||||||
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
|
SharedPreferences sharedPreferences =await SharedPreferences.getInstance();
|
||||||
String loginPhone =
|
String loginPhone = await sharedPreferences.getString(SharedPreferencesHelper.LOGINPHONE)??"";
|
||||||
await sharedPreferences.getString(SharedPreferencesHelper.LOGINPHONE) ??
|
|
||||||
"";
|
|
||||||
print(loginPhone);
|
print(loginPhone);
|
||||||
phoneEditingController.text = loginPhone;
|
phoneEditingController.text = loginPhone;
|
||||||
if (GetUtils.isPhoneNumber(loginPhone) && loginPhone.length == 11) {
|
if (GetUtils.isPhoneNumber(loginPhone)&& loginPhone.length==11) {
|
||||||
isPhoto = true;
|
isPhoto = true;
|
||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
bool isPhoto = false;
|
bool isPhoto = false;
|
||||||
final LoginState state = LoginState();
|
final LoginState state = LoginState();
|
||||||
TextEditingController phoneEditingController = TextEditingController();
|
TextEditingController phoneEditingController = TextEditingController();
|
||||||
@ -53,19 +48,18 @@ class LoginLogic extends GetxController {
|
|||||||
if (sendCodeBtn == false && seconds == 60) {
|
if (sendCodeBtn == false && seconds == 60) {
|
||||||
isPhoto = true;
|
isPhoto = true;
|
||||||
getCode();
|
getCode();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> getCode() async {
|
Future<void> getCode() async {
|
||||||
var data = await DioManager.instance.post(
|
var data = await DioManager.instance.post(url: Api.sendCode, params: {"phone": phoneEditingController.text});
|
||||||
url: Api.sendCode, params: {"phone": phoneEditingController.text});
|
|
||||||
var bean = BaseResponse<Data>.fromJson(data, (data) => Data.fromJson(data));
|
var bean = BaseResponse<Data>.fromJson(data, (data) => Data.fromJson(data));
|
||||||
showToast(bean.msg);
|
showToast(bean.msg);
|
||||||
if (bean.code == 200) {
|
if(bean.code==200){
|
||||||
if (kDebugMode) {
|
if(kDebugMode){
|
||||||
print("验证码:${bean.data!.code}");
|
codeEditingController.text = bean.data!.code.toString();
|
||||||
// codeEditingController.text = bean.data!.code.toString();
|
update();
|
||||||
// update();
|
|
||||||
}
|
}
|
||||||
sendCodeBtn = true;
|
sendCodeBtn = true;
|
||||||
t = Timer.periodic(const Duration(milliseconds: 1000), (timer) {
|
t = Timer.periodic(const Duration(milliseconds: 1000), (timer) {
|
||||||
@ -78,6 +72,7 @@ class LoginLogic extends GetxController {
|
|||||||
update();
|
update();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -89,46 +84,36 @@ class LoginLogic extends GetxController {
|
|||||||
void login() async {
|
void login() async {
|
||||||
if (!GetUtils.isPhoneNumber(phoneEditingController.text)) {
|
if (!GetUtils.isPhoneNumber(phoneEditingController.text)) {
|
||||||
showToast('请输入正确的手机号');
|
showToast('请输入正确的手机号');
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (codeEditingController.text == '') {
|
if (codeEditingController.text == '') {
|
||||||
showToast('请输入验证码');
|
showToast('请输入验证码');
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
var data = await DioManager.instance.post(url: Api.login,params: {
|
||||||
if (!check) {
|
"phone": phoneEditingController.text,
|
||||||
showToast('请勾选同意用户协议和隐私协议');
|
"code": codeEditingController.text
|
||||||
return;
|
|
||||||
}
|
|
||||||
var data = await DioManager.instance.post(url: Api.login, params: {
|
|
||||||
"phone": phoneEditingController.text,
|
|
||||||
"code": codeEditingController.text
|
|
||||||
});
|
|
||||||
var bean = BaseResponse<LoginData>.fromJson(
|
|
||||||
data, (data) => LoginData.fromJson(data));
|
|
||||||
if (bean.code == 200) {
|
|
||||||
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
|
|
||||||
sharedPreferences.setString(
|
|
||||||
SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text);
|
|
||||||
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,
|
|
||||||
bean.data!.Authorization.toString());
|
|
||||||
});
|
});
|
||||||
|
var bean = BaseResponse<LoginData>.fromJson(data, (data) => LoginData.fromJson(data));
|
||||||
|
if (bean.code == 200) {
|
||||||
|
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
|
||||||
|
sharedPreferences.setString(SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text);
|
||||||
|
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,bean.data!.Authorization.toString());
|
||||||
|
});
|
||||||
|
|
||||||
Get.offNamed(AppRoutes.Home);
|
|
||||||
return;
|
|
||||||
} else if (bean.code == 30002) {
|
|
||||||
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
|
|
||||||
sharedPreferences.setString(
|
|
||||||
SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text);
|
|
||||||
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,
|
|
||||||
bean.data!.Authorization.toString());
|
|
||||||
});
|
|
||||||
|
|
||||||
Get.offNamed(AppRoutes.Complete_materialPage);
|
|
||||||
return;
|
Get.offNamed(AppRoutes.Home);
|
||||||
} else {
|
return;
|
||||||
showToast(bean.msg.toString());
|
} else if (bean.code == 30002) {
|
||||||
}
|
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
|
||||||
|
sharedPreferences.setString(SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text);
|
||||||
|
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,bean.data!.Authorization.toString());
|
||||||
|
});
|
||||||
|
|
||||||
|
Get.offNamed(AppRoutes.Complete_materialPage);
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
|
showToast(bean.msg.toString());
|
||||||
|
}
|
||||||
|
|
||||||
// try {
|
// try {
|
||||||
// var response = await dio.post('user-service/login/smscode', data: {
|
// var response = await dio.post('user-service/login/smscode', data: {
|
||||||
|
|||||||
@ -49,144 +49,120 @@ class LoginPage extends StatelessWidget {
|
|||||||
Container(
|
Container(
|
||||||
// margin: EdgeInsets.only(
|
// margin: EdgeInsets.only(
|
||||||
// top: MediaQuery.of(context).padding.top + 100.sp),
|
// top: MediaQuery.of(context).padding.top + 100.sp),
|
||||||
child: Stack(
|
child: Row(
|
||||||
alignment: Alignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Positioned(
|
Text(
|
||||||
bottom: 0,
|
' +86',
|
||||||
|
style: TextStyle(
|
||||||
child: Container(
|
color: Colors.white, fontSize: 16.sp),
|
||||||
width: 280.sp,
|
|
||||||
height: 50.sp,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
// color: Colors.white60,
|
|
||||||
borderRadius: BorderRadius.circular(25.sp),
|
|
||||||
border: Border.all(color: Colors.white60,width: 0.5.sp)
|
|
||||||
),)),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
' +86',
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.white, fontSize: 16.sp),
|
|
||||||
),
|
|
||||||
Stack(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
width: 200.sp,
|
|
||||||
child: TextField(
|
|
||||||
onChanged: (msg){
|
|
||||||
if (GetUtils.isPhoneNumber(msg)&& msg.length==11) {
|
|
||||||
logic.isPhoto = true;
|
|
||||||
}else{
|
|
||||||
logic.isPhoto = false;
|
|
||||||
}
|
|
||||||
logic.update();
|
|
||||||
},
|
|
||||||
controller: logic.phoneEditingController,
|
|
||||||
keyboardType: TextInputType.phone,
|
|
||||||
inputFormatters: [
|
|
||||||
FilteringTextInputFormatter.digitsOnly,
|
|
||||||
FilteringTextInputFormatter.deny(RegExp('[^0-9]')),
|
|
||||||
],
|
|
||||||
maxLength: 11,
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.white, fontSize: 16.sp),
|
|
||||||
decoration: InputDecoration(
|
|
||||||
hintText: '请输入手机号',
|
|
||||||
hintStyle: TextStyle(
|
|
||||||
color: Colors.white70,
|
|
||||||
fontSize: 16.sp),
|
|
||||||
border: InputBorder.none,
|
|
||||||
counterText: '',
|
|
||||||
contentPadding: EdgeInsets.only(
|
|
||||||
left: 16.sp)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
|
Stack(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 200.sp,
|
||||||
|
child: TextField(
|
||||||
|
onChanged: (msg){
|
||||||
|
if (GetUtils.isPhoneNumber(msg)&& msg.length==11) {
|
||||||
|
logic.isPhoto = true;
|
||||||
|
}else{
|
||||||
|
logic.isPhoto = false;
|
||||||
|
}
|
||||||
|
logic.update();
|
||||||
|
},
|
||||||
|
controller: logic.phoneEditingController,
|
||||||
|
keyboardType: TextInputType.phone,
|
||||||
|
inputFormatters: [
|
||||||
|
FilteringTextInputFormatter.digitsOnly,
|
||||||
|
FilteringTextInputFormatter.deny(RegExp('[^0-9]')),
|
||||||
|
],
|
||||||
|
maxLength: 11,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white, fontSize: 16.sp),
|
||||||
|
decoration: InputDecoration(
|
||||||
|
hintText: '请输入手机号',
|
||||||
|
hintStyle: TextStyle(
|
||||||
|
color: Colors.white70,
|
||||||
|
fontSize: 16.sp),
|
||||||
|
border: InputBorder.none,
|
||||||
|
counterText: '',
|
||||||
|
contentPadding: EdgeInsets.only(
|
||||||
|
left: 16.sp)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
bottom: 0,
|
||||||
|
right: 0,
|
||||||
|
child: Container(width: 184.sp,
|
||||||
|
height: 0.5.sp,
|
||||||
|
color: Colors.white60,))
|
||||||
|
],
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Container(
|
Container(
|
||||||
margin: EdgeInsets.only(top: 20.sp),
|
margin: EdgeInsets.only(top: 20.sp),
|
||||||
child: Stack(
|
child: Row(
|
||||||
alignment: Alignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Positioned(
|
Text(
|
||||||
bottom: 0,
|
'验证码',
|
||||||
|
style: TextStyle(
|
||||||
child: Container(
|
color: Colors.white, fontSize: 16.sp),
|
||||||
width: 280.sp,
|
|
||||||
height: 50.sp,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
// color: Colors.white60,
|
|
||||||
borderRadius: BorderRadius.circular(25.sp),
|
|
||||||
border: Border.all(color: Colors.white60,width: 0.5.sp)
|
|
||||||
),)),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'验证码',
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.white, fontSize: 16.sp),
|
|
||||||
),
|
|
||||||
Stack(
|
|
||||||
alignment: Alignment.center,
|
|
||||||
children: [
|
|
||||||
SizedBox(
|
|
||||||
width: 200.sp,
|
|
||||||
child: TextField(
|
|
||||||
controller: logic.codeEditingController,
|
|
||||||
keyboardType: TextInputType.phone,
|
|
||||||
maxLength: 8,
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.white, fontSize: 16.sp),
|
|
||||||
decoration: InputDecoration(
|
|
||||||
hintText: '请输入验证码',
|
|
||||||
|
|
||||||
hintStyle: TextStyle(
|
|
||||||
color: Colors.white70,
|
|
||||||
fontSize: 16.sp),
|
|
||||||
border: InputBorder.none,
|
|
||||||
counterText: '',
|
|
||||||
contentPadding: EdgeInsets.only(
|
|
||||||
left: 16.sp)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
right: 0,
|
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
if(logic.isPhoto){
|
|
||||||
logic.starDownTimer();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
alignment: Alignment.center,
|
|
||||||
width: 76.sp,
|
|
||||||
height: 29.sp,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color:logic.isPhoto ? logic.sendCodeBtn? Colors.white30: Colors.transparent : Colors.white30,
|
|
||||||
borderRadius: BorderRadius.circular(
|
|
||||||
29.sp / 2)
|
|
||||||
),
|
|
||||||
child: Text(logic.sendCodeBtn ? '${logic.seconds}s' : '获取验证码', style: TextStyle(
|
|
||||||
color: Colors.white, fontSize: 12.sp),),
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
|
|
||||||
],
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
|
Stack(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
width: 200.sp,
|
||||||
|
child: TextField(
|
||||||
|
controller: logic.codeEditingController,
|
||||||
|
keyboardType: TextInputType.phone,
|
||||||
|
maxLength: 8,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white, fontSize: 16.sp),
|
||||||
|
decoration: InputDecoration(
|
||||||
|
hintText: '请输入验证码',
|
||||||
|
|
||||||
|
hintStyle: TextStyle(
|
||||||
|
color: Colors.white70,
|
||||||
|
fontSize: 16.sp),
|
||||||
|
border: InputBorder.none,
|
||||||
|
counterText: '',
|
||||||
|
contentPadding: EdgeInsets.only(
|
||||||
|
left: 16.sp)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
right: 0,
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
if(logic.isPhoto){
|
||||||
|
logic.starDownTimer();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
width: 76.sp,
|
||||||
|
height: 29.sp,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color:logic.isPhoto ? logic.sendCodeBtn? Colors.white30: const Color(0xFF21BEAB) : Colors.white30,
|
||||||
|
borderRadius: BorderRadius.circular(
|
||||||
|
29.sp / 2)
|
||||||
|
),
|
||||||
|
child: Text(logic.sendCodeBtn ? '${logic.seconds}s' : '获取验证码', style: TextStyle(
|
||||||
|
color: Colors.white, fontSize: 12.sp),),
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
Positioned(
|
||||||
|
bottom: 0,
|
||||||
|
right: 0,
|
||||||
|
child: Container(width: 184.sp,
|
||||||
|
height: 0.5.sp,
|
||||||
|
color: Colors.white60,))
|
||||||
|
],
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -219,65 +195,56 @@ class LoginPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: 17.sp + MediaQuery.of(context).padding.bottom,
|
bottom: 17.sp + MediaQuery.of(context).padding.bottom,
|
||||||
child: GestureDetector(
|
child: Container(
|
||||||
behavior: HitTestBehavior.opaque,
|
child: Row(
|
||||||
onTap: () {
|
children: [
|
||||||
logic.check = !logic.check;
|
Text(
|
||||||
logic.update();
|
'点击登录即表示同意',
|
||||||
},
|
style: TextStyle(
|
||||||
child: Container(
|
color: Colors.white,
|
||||||
child: Row(
|
fontSize: 11.sp,
|
||||||
children: [
|
fontWeight: FontWeight.w600),
|
||||||
!logic.check ? Container(width: 14.sp,height: 14.sp,decoration: BoxDecoration(border: Border.all(color: Colors.white70,width: 1.sp),borderRadius: BorderRadius.circular(10)),): Icon(Icons.check_circle_rounded,size: 15.sp,color: Color(0xff00FFF4),),
|
),
|
||||||
SizedBox(width: 4.sp,),
|
SizedBox(
|
||||||
Text(
|
width: 2.sp,
|
||||||
'同意',
|
),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: (){
|
||||||
|
navigateToUserAgreement();
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
'《用户协议》',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Color(0xff00FFF4),
|
||||||
fontSize: 11.sp,
|
fontSize: 11.sp,
|
||||||
fontWeight: FontWeight.w600),
|
fontWeight: FontWeight.w400,
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 2.sp,
|
|
||||||
),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: (){
|
|
||||||
navigateToUserAgreement();
|
|
||||||
},
|
|
||||||
child: Text(
|
|
||||||
'《用户协议》',
|
|
||||||
style: TextStyle(
|
|
||||||
color: Color(0xff00FFF4),
|
|
||||||
fontSize: 11.sp,
|
|
||||||
fontWeight: FontWeight.w400,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
),
|
||||||
'和',
|
Text(
|
||||||
|
'和',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 11.sp,
|
||||||
|
fontWeight: FontWeight.w600),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 2.sp,
|
||||||
|
),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: (){
|
||||||
|
navigateToPrivacyPolicy();
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
'《隐私协议》',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Color(0xff00FFF4),
|
||||||
fontSize: 11.sp,
|
fontSize: 11.sp,
|
||||||
fontWeight: FontWeight.w600),
|
fontWeight: FontWeight.w400,
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 2.sp,
|
|
||||||
),
|
|
||||||
GestureDetector(
|
|
||||||
onTap: (){
|
|
||||||
navigateToPrivacyPolicy();
|
|
||||||
},
|
|
||||||
child: Text(
|
|
||||||
'《隐私协议》',
|
|
||||||
style: TextStyle(
|
|
||||||
color: Color(0xff00FFF4),
|
|
||||||
fontSize: 11.sp,
|
|
||||||
fontWeight: FontWeight.w400,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
],
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
|
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:circle_app/router/app_routers.dart';
|
import 'package:circle_app/router/app_routers.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -50,7 +48,6 @@ class MinefragmentPage extends StatelessWidget {
|
|||||||
children: [
|
children: [
|
||||||
_buildAvatarRow(logic),
|
_buildAvatarRow(logic),
|
||||||
_friendsRow(logic),
|
_friendsRow(logic),
|
||||||
if (Platform.isAndroid)
|
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showRechargeDialog();
|
showRechargeDialog();
|
||||||
|
|||||||
@ -415,7 +415,6 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
|
|||||||
|
|
||||||
|
|
||||||
V2TimUserFullInfo? userFullInfo;
|
V2TimUserFullInfo? userFullInfo;
|
||||||
bool isOfficial = false;
|
|
||||||
bool isSameCity = false;
|
bool isSameCity = false;
|
||||||
if (snapshot.connectionState == ConnectionState.done) {
|
if (snapshot.connectionState == ConnectionState.done) {
|
||||||
snapshot.data!.forEach((element) {
|
snapshot.data!.forEach((element) {
|
||||||
@ -423,7 +422,7 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
|
|||||||
userFullInfo = element;
|
userFullInfo = element;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//自己的信息
|
|
||||||
V2TimUserFullInfo myuserFullInfo = snapshot.data!.first;
|
V2TimUserFullInfo myuserFullInfo = snapshot.data!.first;
|
||||||
|
|
||||||
if (userFullInfo!.customInfo!.containsKey('Label')) {
|
if (userFullInfo!.customInfo!.containsKey('Label')) {
|
||||||
@ -434,17 +433,6 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userFullInfo != null) {
|
|
||||||
List<String> userIdList = userFullInfo!.userID!.split('_');
|
|
||||||
if (userIdList.length >= 4 ) {
|
|
||||||
if (int.parse(userIdList[2]) == 10) {
|
|
||||||
isOfficial = true;
|
|
||||||
} else {
|
|
||||||
isOfficial = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -457,7 +445,6 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
|
|||||||
child: InkWell(
|
child: InkWell(
|
||||||
child: TIMConversationItem(
|
child: TIMConversationItem(
|
||||||
isSameCity: isSameCity,
|
isSameCity: isSameCity,
|
||||||
isOfficial: isOfficial,
|
|
||||||
isCurrent: isCurrent,
|
isCurrent: isCurrent,
|
||||||
userInfo: userFullInfo,
|
userInfo: userFullInfo,
|
||||||
isShowDraft: widget.isShowDraft,
|
isShowDraft: widget.isShowDraft,
|
||||||
|
|||||||
@ -32,7 +32,6 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
|||||||
final V2TimUserStatus? onlineStatus;
|
final V2TimUserStatus? onlineStatus;
|
||||||
final int? convType;
|
final int? convType;
|
||||||
final bool isCurrent;
|
final bool isCurrent;
|
||||||
final bool isOfficial;
|
|
||||||
final bool isSameCity;
|
final bool isSameCity;
|
||||||
final V2TimUserFullInfo? userInfo;
|
final V2TimUserFullInfo? userInfo;
|
||||||
|
|
||||||
@ -52,7 +51,6 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
|||||||
this.onlineStatus,
|
this.onlineStatus,
|
||||||
required this.isPined,
|
required this.isPined,
|
||||||
this.isCurrent = false,
|
this.isCurrent = false,
|
||||||
required this.isOfficial,
|
|
||||||
required this.unreadCount,
|
required this.unreadCount,
|
||||||
required this.groupAtInfoList,
|
required this.groupAtInfoList,
|
||||||
required this.isDisturb,
|
required this.isDisturb,
|
||||||
@ -184,15 +182,15 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (userInfo != null)
|
if (userInfo != null)
|
||||||
(userInfo!.role ?? 0) > 0
|
Positioned(
|
||||||
? Positioned(
|
|
||||||
bottom: 0,
|
bottom: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
child: Image.asset(
|
child: (userInfo!.role ?? 0) > 0
|
||||||
|
? Image.asset(
|
||||||
getMsgImage(getGenderContent(userInfo!.role!)),
|
getMsgImage(getGenderContent(userInfo!.role!)),
|
||||||
height: 13.sp,
|
height: 13.sp,
|
||||||
)
|
)
|
||||||
) : Container()
|
: Container())
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -206,9 +204,10 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
|||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Expanded(
|
||||||
|
child: Text(
|
||||||
nickName,
|
nickName,
|
||||||
softWrap: true,
|
softWrap: true,
|
||||||
textAlign: TextAlign.left,
|
textAlign: TextAlign.left,
|
||||||
@ -220,21 +219,7 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
|||||||
fontSize: isDesktopScreen ? 14 : 18,
|
fontSize: isDesktopScreen ? 14 : 18,
|
||||||
fontWeight: FontWeight.w400,
|
fontWeight: FontWeight.w400,
|
||||||
),
|
),
|
||||||
),
|
)),
|
||||||
if (isOfficial) Container(
|
|
||||||
margin: EdgeInsets.only(left: 5.sp,bottom: 5.sp),
|
|
||||||
height: 16.sp,
|
|
||||||
width: 32.sp,
|
|
||||||
alignment: Alignment.center,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.circular(8.sp),
|
|
||||||
gradient: LinearGradient(
|
|
||||||
colors: [Color(0xFF08FAFB),Color(0xFFE243FE)]
|
|
||||||
)
|
|
||||||
),
|
|
||||||
child: Text('官方',style: TextStyle(color: Color(0xFFF7FAFA),fontSize: 10.sp,fontWeight: FontWeight.w600),),),
|
|
||||||
Expanded(
|
|
||||||
child:Container()),
|
|
||||||
_getTimeStringForChatWidget(context, theme),
|
_getTimeStringForChatWidget(context, theme),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
class Api {
|
class Api {
|
||||||
static const baseUrl = kDebugMode ? 'http://192.168.3.55:2000/' : 'http://192.168.3.55:2000/';
|
static const baseUrl = kDebugMode ? 'http://leyuan666.com:2000/' : 'http://192.168.3.55:2000/';
|
||||||
|
|
||||||
// static const baseUrl = 'https://leyuan666.com/zuul-service/';
|
|
||||||
|
|
||||||
// 获取验证码
|
// 获取验证码
|
||||||
static const sendCode = 'msg-service/sms/code/send';
|
static const sendCode = 'msg-service/sms/code/send';
|
||||||
|
|||||||
@ -270,7 +270,7 @@ Future<String> getLibraryDirectoryPath() async {
|
|||||||
void navigateToUserAgreement() {
|
void navigateToUserAgreement() {
|
||||||
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
||||||
'title': "用户协议",
|
'title': "用户协议",
|
||||||
"url":"https://docs.qq.com/doc/DZVV1SkttZGlPUW1H"
|
"url": Platform.isIOS?"https://docs.qq.com/doc/DZVV1SkttZGlPUW1H":"https://iquanpai.com/app-h5/4_163.html"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,14 +278,14 @@ void navigateToUserAgreement() {
|
|||||||
void navigateToPrivacyPolicy() {
|
void navigateToPrivacyPolicy() {
|
||||||
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
||||||
'title': "隐私协议",
|
'title': "隐私协议",
|
||||||
"url": "https://docs.qq.com/doc/DZXhvcXV6b1RNTUx1"
|
"url": Platform.isIOS?"https://docs.qq.com/doc/DZXhvcXV6b1RNTUx1":"https://iquanpai.com/app-h5/4_164.html"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//发布内容规范
|
//发布内容规范
|
||||||
void navigateToContentGuidelines() {
|
void navigateToContentGuidelines() {
|
||||||
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
||||||
'title': "发布内容规范",
|
'title': "发布内容规范",
|
||||||
"url": "https://docs.qq.com/doc/DZVhLamZDQnJ0eHds"
|
"url": Platform.isIOS?"https://docs.qq.com/doc/DZVhLamZDQnJ0eHds":"https://iquanpai.com/app-h5/4_165.html"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,7 +293,7 @@ void navigateToContentGuidelines() {
|
|||||||
void navigateToPartnerAgreement() {
|
void navigateToPartnerAgreement() {
|
||||||
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
||||||
'title': "合伙人协议",
|
'title': "合伙人协议",
|
||||||
"url": "https://docs.qq.com/doc/DZUpwWFdNcGlsYld4"
|
"url": Platform.isIOS?"https://docs.qq.com/doc/DZUpwWFdNcGlsYld4":"https://iquanpai.com/app-h5/4_166.html"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -93,7 +93,7 @@ dependencies:
|
|||||||
#event_bus:
|
#event_bus:
|
||||||
event_bus: ^2.0.0
|
event_bus: ^2.0.0
|
||||||
#安装apk
|
#安装apk
|
||||||
# flutter_install_app: 1.3.0
|
flutter_install_app: 1.3.0
|
||||||
#闪屏页
|
#闪屏页
|
||||||
flutter_native_splash: 2.2.16
|
flutter_native_splash: 2.2.16
|
||||||
|
|
||||||
|
|||||||