修改圈子会话官方显示,登录页面调整,我的页面VIP调整
@ -360,6 +360,18 @@
|
||||
DEVELOPMENT_TEAM = C97QBVP4DP;
|
||||
ENABLE_BITCODE = NO;
|
||||
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;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@ -370,7 +382,7 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
@ -495,6 +507,18 @@
|
||||
DEVELOPMENT_TEAM = C97QBVP4DP;
|
||||
ENABLE_BITCODE = NO;
|
||||
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;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@ -505,7 +529,7 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
@ -524,6 +548,18 @@
|
||||
DEVELOPMENT_TEAM = C97QBVP4DP;
|
||||
ENABLE_BITCODE = NO;
|
||||
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;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@ -534,7 +570,7 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
|
||||
@ -2,117 +2,115 @@
|
||||
"images": [
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "iphone",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-20@2x.png",
|
||||
"scale": "2x"
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "iphone",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-20@3x.png",
|
||||
"scale": "3x"
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-29.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-29@2x.png",
|
||||
"scale": "2x"
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"idiom": "universal",
|
||||
"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",
|
||||
"idiom": "iphone",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-40@2x.png",
|
||||
"scale": "2x"
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "iphone",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-40@3x.png",
|
||||
"scale": "3x"
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"idiom": "iphone",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-60@2x.png",
|
||||
"scale": "2x"
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"idiom": "iphone",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-60@3x.png",
|
||||
"scale": "3x"
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-20-ipad.png",
|
||||
"scale": "1x"
|
||||
"size": "64x64",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-64@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-20@2x-ipad.png",
|
||||
"scale": "2x"
|
||||
"size": "64x64",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-64@3x.png",
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-29-ipad.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"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": "68x68",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-68@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-76.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"idiom": "ipad",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-76@2x.png",
|
||||
"scale": "2x"
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "83.5x83.5",
|
||||
"idiom": "ipad",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-83.5@2x.png",
|
||||
"scale": "2x"
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "1024x1024",
|
||||
"idiom": "ios-marketing",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-1024.png",
|
||||
"scale": "1x"
|
||||
"scale": "1x",
|
||||
"platform": "ios"
|
||||
}
|
||||
],
|
||||
"info": {
|
||||
|
||||
|
Before Width: | Height: | Size: 409 KiB After Width: | Height: | Size: 326 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before 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.2 KiB After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 19 KiB |
6
circle_app/ios/Runner/Assets.xcassets/Contents.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
22
circle_app/ios/Runner/Assets.xcassets/desc.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "总有一个小众圈子适合你@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "总有一个小众圈子适合你.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
circle_app/ios/Runner/Assets.xcassets/desc.imageset/总有一个小众圈子适合你.png
vendored
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
circle_app/ios/Runner/Assets.xcassets/desc.imageset/总有一个小众圈子适合你@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
22
circle_app/ios/Runner/Assets.xcassets/splash_bg.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "背景切图@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "背景切图@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
circle_app/ios/Runner/Assets.xcassets/splash_bg.imageset/背景切图@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 638 KiB |
BIN
circle_app/ios/Runner/Assets.xcassets/splash_bg.imageset/背景切图@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
22
circle_app/ios/Runner/Assets.xcassets/splash_icon.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
BIN
circle_app/ios/Runner/Assets.xcassets/splash_icon.imageset/圆角-icon-64@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
circle_app/ios/Runner/Assets.xcassets/splash_icon.imageset/圆角-icon-64@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 30 KiB |
22
circle_app/ios/Runner/Assets.xcassets/title.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
BIN
circle_app/ios/Runner/Assets.xcassets/title.imageset/Group 2036-1.png
vendored
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
circle_app/ios/Runner/Assets.xcassets/title.imageset/Group 2036.png
vendored
Normal file
|
After Width: | Height: | Size: 66 KiB |
@ -1,8 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<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">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
@ -14,24 +16,50 @@
|
||||
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
||||
</layoutGuides>
|
||||
<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"/>
|
||||
<subviews>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="splash_bg" translatesAutoresizingMaskIntoConstraints="NO" id="scI-Fd-nzK">
|
||||
<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>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
|
||||
<constraint firstAttribute="bottom" secondItem="scI-Fd-nzK" secondAttribute="bottom" id="0g0-U6-jBt"/>
|
||||
<constraint firstItem="scI-Fd-nzK" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="5Be-KR-hbG"/>
|
||||
<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>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
<point key="canvasLocation" x="80.916030534351137" y="264.08450704225356"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="LaunchImage" width="168" height="185"/>
|
||||
<image name="desc" width="263" height="23"/>
|
||||
<image name="splash_bg" width="375" height="812"/>
|
||||
<image name="splash_icon" width="64" height="64"/>
|
||||
<image name="title" width="184" height="73"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@ -4,62 +4,13 @@
|
||||
<dict>
|
||||
<key>App Transport Security Settings </key>
|
||||
<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>
|
||||
<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>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<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/>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@ -2,7 +2,7 @@ import 'dart:io';
|
||||
|
||||
import 'package:flutter/cupertino.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:url_launcher/url_launcher.dart';
|
||||
|
||||
@ -208,7 +208,7 @@ class _CustomDialogState extends State<UpdateDialog> {
|
||||
// SmartDialog.dismiss();
|
||||
print(error);
|
||||
});
|
||||
await AppInstaller.installApk(filePath, actionRequired: false);
|
||||
// await AppInstaller.installApk(filePath, actionRequired: false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -14,26 +14,31 @@ import '../../../util/SharedPreferencesHelper.dart';
|
||||
import 'state.dart';
|
||||
|
||||
class LoginLogic extends GetxController {
|
||||
bool check = false;
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
// TODO: implement onReady
|
||||
super.onReady();
|
||||
FlutterNativeSplash.remove();
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() async{
|
||||
void onInit() async {
|
||||
// TODO: implement onInit
|
||||
super.onInit();
|
||||
SharedPreferences sharedPreferences =await SharedPreferences.getInstance();
|
||||
String loginPhone = await sharedPreferences.getString(SharedPreferencesHelper.LOGINPHONE)??"";
|
||||
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
|
||||
String loginPhone =
|
||||
await sharedPreferences.getString(SharedPreferencesHelper.LOGINPHONE) ??
|
||||
"";
|
||||
print(loginPhone);
|
||||
phoneEditingController.text = loginPhone;
|
||||
if (GetUtils.isPhoneNumber(loginPhone)&& loginPhone.length==11) {
|
||||
if (GetUtils.isPhoneNumber(loginPhone) && loginPhone.length == 11) {
|
||||
isPhoto = true;
|
||||
}
|
||||
update();
|
||||
|
||||
}
|
||||
|
||||
bool isPhoto = false;
|
||||
final LoginState state = LoginState();
|
||||
TextEditingController phoneEditingController = TextEditingController();
|
||||
@ -48,18 +53,19 @@ class LoginLogic extends GetxController {
|
||||
if (sendCodeBtn == false && seconds == 60) {
|
||||
isPhoto = true;
|
||||
getCode();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> getCode() async {
|
||||
var data = await DioManager.instance.post(url: Api.sendCode, params: {"phone": phoneEditingController.text});
|
||||
var data = await DioManager.instance.post(
|
||||
url: Api.sendCode, params: {"phone": phoneEditingController.text});
|
||||
var bean = BaseResponse<Data>.fromJson(data, (data) => Data.fromJson(data));
|
||||
showToast(bean.msg);
|
||||
if(bean.code==200){
|
||||
if(kDebugMode){
|
||||
codeEditingController.text = bean.data!.code.toString();
|
||||
update();
|
||||
if (bean.code == 200) {
|
||||
if (kDebugMode) {
|
||||
print("验证码:${bean.data!.code}");
|
||||
// codeEditingController.text = bean.data!.code.toString();
|
||||
// update();
|
||||
}
|
||||
sendCodeBtn = true;
|
||||
t = Timer.periodic(const Duration(milliseconds: 1000), (timer) {
|
||||
@ -72,7 +78,6 @@ class LoginLogic extends GetxController {
|
||||
update();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@override
|
||||
@ -84,36 +89,46 @@ class LoginLogic extends GetxController {
|
||||
void login() async {
|
||||
if (!GetUtils.isPhoneNumber(phoneEditingController.text)) {
|
||||
showToast('请输入正确的手机号');
|
||||
return;
|
||||
}
|
||||
if (codeEditingController.text == '') {
|
||||
showToast('请输入验证码');
|
||||
return;
|
||||
}
|
||||
var data = await DioManager.instance.post(url: Api.login,params: {
|
||||
"phone": phoneEditingController.text,
|
||||
"code": codeEditingController.text
|
||||
|
||||
if (!check) {
|
||||
showToast('请勾选同意用户协议和隐私协议');
|
||||
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.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;
|
||||
}else{
|
||||
showToast(bean.msg.toString());
|
||||
}
|
||||
Get.offNamed(AppRoutes.Complete_materialPage);
|
||||
return;
|
||||
} else {
|
||||
showToast(bean.msg.toString());
|
||||
}
|
||||
|
||||
// try {
|
||||
// var response = await dio.post('user-service/login/smscode', data: {
|
||||
|
||||
@ -49,120 +49,144 @@ class LoginPage extends StatelessWidget {
|
||||
Container(
|
||||
// margin: EdgeInsets.only(
|
||||
// top: MediaQuery.of(context).padding.top + 100.sp),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
Text(
|
||||
' +86',
|
||||
style: TextStyle(
|
||||
color: Colors.white, fontSize: 16.sp),
|
||||
),
|
||||
Stack(
|
||||
Positioned(
|
||||
bottom: 0,
|
||||
|
||||
child: Container(
|
||||
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: [
|
||||
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)),
|
||||
),
|
||||
Text(
|
||||
' +86',
|
||||
style: TextStyle(
|
||||
color: Colors.white, fontSize: 16.sp),
|
||||
),
|
||||
Positioned(
|
||||
bottom: 0,
|
||||
right: 0,
|
||||
child: Container(width: 184.sp,
|
||||
height: 0.5.sp,
|
||||
color: Colors.white60,))
|
||||
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)),
|
||||
),
|
||||
),
|
||||
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
),
|
||||
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
margin: EdgeInsets.only(top: 20.sp),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
child: Stack(
|
||||
alignment: Alignment.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: '请输入验证码',
|
||||
Positioned(
|
||||
bottom: 0,
|
||||
|
||||
hintStyle: TextStyle(
|
||||
color: Colors.white70,
|
||||
fontSize: 16.sp),
|
||||
border: InputBorder.none,
|
||||
counterText: '',
|
||||
contentPadding: EdgeInsets.only(
|
||||
left: 16.sp)),
|
||||
),
|
||||
child: Container(
|
||||
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),
|
||||
),
|
||||
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),),
|
||||
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(
|
||||
bottom: 0,
|
||||
right: 0,
|
||||
child: Container(width: 184.sp,
|
||||
height: 0.5.sp,
|
||||
color: Colors.white60,))
|
||||
),
|
||||
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),),
|
||||
),
|
||||
)),
|
||||
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
),
|
||||
|
||||
],
|
||||
),
|
||||
),
|
||||
@ -195,56 +219,65 @@ class LoginPage extends StatelessWidget {
|
||||
),
|
||||
Positioned(
|
||||
bottom: 17.sp + MediaQuery.of(context).padding.bottom,
|
||||
child: Container(
|
||||
child: Row(
|
||||
children: [
|
||||
Text(
|
||||
'点击登录即表示同意',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 11.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
),
|
||||
SizedBox(
|
||||
width: 2.sp,
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: (){
|
||||
navigateToUserAgreement();
|
||||
},
|
||||
child: Text(
|
||||
'《用户协议》',
|
||||
child: GestureDetector(
|
||||
behavior: HitTestBehavior.opaque,
|
||||
onTap: () {
|
||||
logic.check = !logic.check;
|
||||
logic.update();
|
||||
},
|
||||
child: Container(
|
||||
child: Row(
|
||||
children: [
|
||||
!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,),
|
||||
Text(
|
||||
'同意',
|
||||
style: TextStyle(
|
||||
color: Color(0xff00FFF4),
|
||||
fontSize: 11.sp,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Colors.white,
|
||||
fontSize: 11.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
),
|
||||
SizedBox(
|
||||
width: 2.sp,
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: (){
|
||||
navigateToUserAgreement();
|
||||
},
|
||||
child: Text(
|
||||
'《用户协议》',
|
||||
style: TextStyle(
|
||||
color: Color(0xff00FFF4),
|
||||
fontSize: 11.sp,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Text(
|
||||
'和',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 11.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
),
|
||||
SizedBox(
|
||||
width: 2.sp,
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: (){
|
||||
navigateToPrivacyPolicy();
|
||||
},
|
||||
child: Text(
|
||||
'《隐私协议》',
|
||||
Text(
|
||||
'和',
|
||||
style: TextStyle(
|
||||
color: Color(0xff00FFF4),
|
||||
fontSize: 11.sp,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Colors.white,
|
||||
fontSize: 11.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
),
|
||||
SizedBox(
|
||||
width: 2.sp,
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: (){
|
||||
navigateToPrivacyPolicy();
|
||||
},
|
||||
child: Text(
|
||||
'《隐私协议》',
|
||||
style: TextStyle(
|
||||
color: Color(0xff00FFF4),
|
||||
fontSize: 11.sp,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
))
|
||||
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:circle_app/router/app_routers.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -48,6 +50,7 @@ class MinefragmentPage extends StatelessWidget {
|
||||
children: [
|
||||
_buildAvatarRow(logic),
|
||||
_friendsRow(logic),
|
||||
if (Platform.isAndroid)
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
showRechargeDialog();
|
||||
|
||||
@ -415,6 +415,7 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
|
||||
|
||||
|
||||
V2TimUserFullInfo? userFullInfo;
|
||||
bool isOfficial = false;
|
||||
bool isSameCity = false;
|
||||
if (snapshot.connectionState == ConnectionState.done) {
|
||||
snapshot.data!.forEach((element) {
|
||||
@ -422,7 +423,7 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
|
||||
userFullInfo = element;
|
||||
}
|
||||
});
|
||||
|
||||
//自己的信息
|
||||
V2TimUserFullInfo myuserFullInfo = snapshot.data!.first;
|
||||
|
||||
if (userFullInfo!.customInfo!.containsKey('Label')) {
|
||||
@ -433,6 +434,17 @@ 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -445,6 +457,7 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
|
||||
child: InkWell(
|
||||
child: TIMConversationItem(
|
||||
isSameCity: isSameCity,
|
||||
isOfficial: isOfficial,
|
||||
isCurrent: isCurrent,
|
||||
userInfo: userFullInfo,
|
||||
isShowDraft: widget.isShowDraft,
|
||||
|
||||
@ -32,6 +32,7 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
||||
final V2TimUserStatus? onlineStatus;
|
||||
final int? convType;
|
||||
final bool isCurrent;
|
||||
final bool isOfficial;
|
||||
final bool isSameCity;
|
||||
final V2TimUserFullInfo? userInfo;
|
||||
|
||||
@ -51,6 +52,7 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
||||
this.onlineStatus,
|
||||
required this.isPined,
|
||||
this.isCurrent = false,
|
||||
required this.isOfficial,
|
||||
required this.unreadCount,
|
||||
required this.groupAtInfoList,
|
||||
required this.isDisturb,
|
||||
@ -182,15 +184,15 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
||||
),
|
||||
),
|
||||
if (userInfo != null)
|
||||
Positioned(
|
||||
(userInfo!.role ?? 0) > 0
|
||||
? Positioned(
|
||||
bottom: 0,
|
||||
right: 0,
|
||||
child: (userInfo!.role ?? 0) > 0
|
||||
? Image.asset(
|
||||
child: Image.asset(
|
||||
getMsgImage(getGenderContent(userInfo!.role!)),
|
||||
height: 13.sp,
|
||||
)
|
||||
: Container())
|
||||
) : Container()
|
||||
],
|
||||
),
|
||||
),
|
||||
@ -204,10 +206,9 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
Text(
|
||||
nickName,
|
||||
softWrap: true,
|
||||
textAlign: TextAlign.left,
|
||||
@ -219,7 +220,21 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
|
||||
fontSize: isDesktopScreen ? 14 : 18,
|
||||
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),
|
||||
],
|
||||
),
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
class Api {
|
||||
static const baseUrl = kDebugMode ? 'http://leyuan666.com:2000/' : 'http://192.168.3.55:2000/';
|
||||
static const baseUrl = kDebugMode ? 'http://192.168.3.55:2000/' : 'http://192.168.3.55:2000/';
|
||||
|
||||
// static const baseUrl = 'https://leyuan666.com/zuul-service/';
|
||||
|
||||
// 获取验证码
|
||||
static const sendCode = 'msg-service/sms/code/send';
|
||||
|
||||
@ -270,7 +270,7 @@ Future<String> getLibraryDirectoryPath() async {
|
||||
void navigateToUserAgreement() {
|
||||
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
||||
'title': "用户协议",
|
||||
"url": Platform.isIOS?"https://docs.qq.com/doc/DZVV1SkttZGlPUW1H":"https://iquanpai.com/app-h5/4_163.html"
|
||||
"url":"https://docs.qq.com/doc/DZVV1SkttZGlPUW1H"
|
||||
});
|
||||
}
|
||||
|
||||
@ -278,14 +278,14 @@ void navigateToUserAgreement() {
|
||||
void navigateToPrivacyPolicy() {
|
||||
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
||||
'title': "隐私协议",
|
||||
"url": Platform.isIOS?"https://docs.qq.com/doc/DZXhvcXV6b1RNTUx1":"https://iquanpai.com/app-h5/4_164.html"
|
||||
"url": "https://docs.qq.com/doc/DZXhvcXV6b1RNTUx1"
|
||||
});
|
||||
}
|
||||
//发布内容规范
|
||||
void navigateToContentGuidelines() {
|
||||
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
||||
'title': "发布内容规范",
|
||||
"url": Platform.isIOS?"https://docs.qq.com/doc/DZVhLamZDQnJ0eHds":"https://iquanpai.com/app-h5/4_165.html"
|
||||
"url": "https://docs.qq.com/doc/DZVhLamZDQnJ0eHds"
|
||||
});
|
||||
}
|
||||
|
||||
@ -293,7 +293,7 @@ void navigateToContentGuidelines() {
|
||||
void navigateToPartnerAgreement() {
|
||||
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
|
||||
'title': "合伙人协议",
|
||||
"url": Platform.isIOS?"https://docs.qq.com/doc/DZUpwWFdNcGlsYld4":"https://iquanpai.com/app-h5/4_166.html"
|
||||
"url": "https://docs.qq.com/doc/DZUpwWFdNcGlsYld4"
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -93,7 +93,7 @@ dependencies:
|
||||
#event_bus:
|
||||
event_bus: ^2.0.0
|
||||
#安装apk
|
||||
flutter_install_app: 1.3.0
|
||||
# flutter_install_app: 1.3.0
|
||||
#闪屏页
|
||||
flutter_native_splash: 2.2.16
|
||||
|
||||
|
||||