文件提交

This commit is contained in:
CYH 2023-08-05 18:47:26 +08:00
parent 141ca72d90
commit 8945d7a34a
44 changed files with 509 additions and 321 deletions

View File

@ -360,6 +360,18 @@
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)",
@ -370,7 +382,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 = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
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;
@ -495,6 +507,18 @@
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)",
@ -505,7 +529,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 = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
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;
@ -524,6 +548,18 @@
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)",
@ -534,7 +570,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 = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
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;

View File

@ -2,117 +2,115 @@
"images": [ "images": [
{ {
"size": "20x20", "size": "20x20",
"idiom": "iphone", "idiom": "universal",
"filename": "icon-20@2x.png", "filename": "icon-20@2x.png",
"scale": "2x" "scale": "2x",
"platform": "ios"
}, },
{ {
"size": "20x20", "size": "20x20",
"idiom": "iphone", "idiom": "universal",
"filename": "icon-20@3x.png", "filename": "icon-20@3x.png",
"scale": "3x" "scale": "3x",
"platform": "ios"
}, },
{ {
"size": "29x29", "size": "29x29",
"idiom": "iphone", "idiom": "universal",
"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": "iphone", "idiom": "universal",
"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": "iphone", "idiom": "universal",
"filename": "icon-40@2x.png", "filename": "icon-40@2x.png",
"scale": "2x" "scale": "2x",
"platform": "ios"
}, },
{ {
"size": "40x40", "size": "40x40",
"idiom": "iphone", "idiom": "universal",
"filename": "icon-40@3x.png", "filename": "icon-40@3x.png",
"scale": "3x" "scale": "3x",
"platform": "ios"
}, },
{ {
"size": "60x60", "size": "60x60",
"idiom": "iphone", "idiom": "universal",
"filename": "icon-60@2x.png", "filename": "icon-60@2x.png",
"scale": "2x" "scale": "2x",
"platform": "ios"
}, },
{ {
"size": "60x60", "size": "60x60",
"idiom": "iphone", "idiom": "universal",
"filename": "icon-60@3x.png", "filename": "icon-60@3x.png",
"scale": "3x" "scale": "3x",
"platform": "ios"
}, },
{ {
"size": "20x20", "size": "64x64",
"idiom": "ipad", "idiom": "universal",
"filename": "icon-20-ipad.png", "filename": "icon-64@2x.png",
"scale": "1x" "scale": "2x",
"platform": "ios"
}, },
{ {
"size": "20x20", "size": "64x64",
"idiom": "ipad", "idiom": "universal",
"filename": "icon-20@2x-ipad.png", "filename": "icon-64@3x.png",
"scale": "2x" "scale": "3x",
"platform": "ios"
}, },
{ {
"size": "29x29", "size": "68x68",
"idiom": "ipad", "idiom": "universal",
"filename": "icon-29-ipad.png", "filename": "icon-68@2x.png",
"scale": "1x" "scale": "2x",
}, "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": "ipad", "idiom": "universal",
"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": "ipad", "idiom": "universal",
"filename": "icon-83.5@2x.png", "filename": "icon-83.5@2x.png",
"scale": "2x" "scale": "2x",
"platform": "ios"
}, },
{ {
"size": "1024x1024", "size": "1024x1024",
"idiom": "ios-marketing", "idiom": "universal",
"filename": "icon-1024.png", "filename": "icon-1024.png",
"scale": "1x" "scale": "1x",
"platform": "ios"
} }
], ],
"info": { "info": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 KiB

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8"?>
<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"> <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> <dependencies>
<deployment identifier="iOS"/> <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> </dependencies>
<scenes> <scenes>
<!--View Controller--> <!--View Controller-->
@ -14,24 +16,50 @@
<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 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> </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 firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/> <constraint firstAttribute="bottom" secondItem="scI-Fd-nzK" secondAttribute="bottom" id="0g0-U6-jBt"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/> <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> </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="53" y="375"/> <point key="canvasLocation" x="80.916030534351137" y="264.08450704225356"/>
</scene> </scene>
</scenes> </scenes>
<resources> <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> </resources>
</document> </document>

View File

@ -4,62 +4,13 @@
<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>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> <key>UIViewControllerBasedStatusBarAppearance</key>
<false/> <false/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict> </dict>
</plist> </plist>

View File

@ -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);
} }
} }

View File

@ -14,26 +14,31 @@ 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 = await sharedPreferences.getString(SharedPreferencesHelper.LOGINPHONE)??""; String 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();
@ -48,18 +53,19 @@ 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(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)); 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) {
codeEditingController.text = bean.data!.code.toString(); print("验证码:${bean.data!.code}");
update(); // codeEditingController.text = bean.data!.code.toString();
// update();
} }
sendCodeBtn = true; sendCodeBtn = true;
t = Timer.periodic(const Duration(milliseconds: 1000), (timer) { t = Timer.periodic(const Duration(milliseconds: 1000), (timer) {
@ -72,7 +78,6 @@ class LoginLogic extends GetxController {
update(); update();
}); });
} }
} }
@override @override
@ -84,29 +89,39 @@ 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;
}
if (!check) {
showToast('请勾选同意用户协议和隐私协议');
return;
} }
var data = await DioManager.instance.post(url: Api.login, params: { var data = await DioManager.instance.post(url: Api.login, params: {
"phone": phoneEditingController.text, "phone": phoneEditingController.text,
"code": codeEditingController.text "code": codeEditingController.text
}); });
var bean = BaseResponse<LoginData>.fromJson(data, (data) => LoginData.fromJson(data)); var bean = BaseResponse<LoginData>.fromJson(
data, (data) => LoginData.fromJson(data));
if (bean.code == 200) { if (bean.code == 200) {
SharedPreferencesHelper.getInstance().then((sharedPreferences) { SharedPreferencesHelper.getInstance().then((sharedPreferences) {
sharedPreferences.setString(SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text); sharedPreferences.setString(
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,bean.data!.Authorization.toString()); SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text);
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,
bean.data!.Authorization.toString());
}); });
Get.offNamed(AppRoutes.Home); Get.offNamed(AppRoutes.Home);
return; return;
} else if (bean.code == 30002) { } else if (bean.code == 30002) {
SharedPreferencesHelper.getInstance().then((sharedPreferences) { SharedPreferencesHelper.getInstance().then((sharedPreferences) {
sharedPreferences.setString(SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text); sharedPreferences.setString(
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,bean.data!.Authorization.toString()); SharedPreferencesHelper.LOGINPHONE, phoneEditingController.text);
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,
bean.data!.Authorization.toString());
}); });
Get.offNamed(AppRoutes.Complete_materialPage); Get.offNamed(AppRoutes.Complete_materialPage);

View File

@ -49,7 +49,21 @@ 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: Row( child: Stack(
alignment: Alignment.center,
children: [
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, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Text( Text(
@ -90,20 +104,32 @@ class LoginPage extends StatelessWidget {
left: 16.sp)), 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: Row( child: Stack(
alignment: Alignment.center,
children: [
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, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Text( Text(
@ -147,7 +173,7 @@ class LoginPage extends StatelessWidget {
width: 76.sp, width: 76.sp,
height: 29.sp, height: 29.sp,
decoration: BoxDecoration( decoration: BoxDecoration(
color:logic.isPhoto ? logic.sendCodeBtn? Colors.white30: const Color(0xFF21BEAB) : Colors.white30, color:logic.isPhoto ? logic.sendCodeBtn? Colors.white30: Colors.transparent : Colors.white30,
borderRadius: BorderRadius.circular( borderRadius: BorderRadius.circular(
29.sp / 2) 29.sp / 2)
), ),
@ -155,16 +181,14 @@ class LoginPage extends StatelessWidget {
color: Colors.white, fontSize: 12.sp),), color: Colors.white, fontSize: 12.sp),),
), ),
)), )),
Positioned(
bottom: 0,
right: 0,
child: Container(width: 184.sp,
height: 0.5.sp,
color: Colors.white60,))
], ],
) )
], ],
), ),
],
),
), ),
], ],
@ -195,11 +219,19 @@ class LoginPage extends StatelessWidget {
), ),
Positioned( Positioned(
bottom: 17.sp + MediaQuery.of(context).padding.bottom, bottom: 17.sp + MediaQuery.of(context).padding.bottom,
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
logic.check = !logic.check;
logic.update();
},
child: Container( child: Container(
child: Row( child: Row(
children: [ 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( Text(
'点击登录即表示同意', '同意',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 11.sp, fontSize: 11.sp,
@ -246,6 +278,7 @@ class LoginPage extends StatelessWidget {
), ),
], ],
), ),
),
)) ))
], ],

View File

@ -1,4 +1,6 @@
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';
@ -48,6 +50,7 @@ class MinefragmentPage extends StatelessWidget {
children: [ children: [
_buildAvatarRow(logic), _buildAvatarRow(logic),
_friendsRow(logic), _friendsRow(logic),
if (Platform.isAndroid)
GestureDetector( GestureDetector(
onTap: () { onTap: () {
showRechargeDialog(); showRechargeDialog();

View File

@ -415,6 +415,7 @@ 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) {
@ -422,7 +423,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')) {
@ -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: 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,

View File

@ -32,6 +32,7 @@ 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;
@ -51,6 +52,7 @@ 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,
@ -182,15 +184,15 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
), ),
), ),
if (userInfo != null) if (userInfo != null)
Positioned( (userInfo!.role ?? 0) > 0
? Positioned(
bottom: 0, bottom: 0,
right: 0, right: 0,
child: (userInfo!.role ?? 0) > 0 child: Image.asset(
? Image.asset(
getMsgImage(getGenderContent(userInfo!.role!)), getMsgImage(getGenderContent(userInfo!.role!)),
height: 13.sp, height: 13.sp,
) )
: Container()) ) : Container()
], ],
), ),
), ),
@ -204,10 +206,9 @@ class TIMConversationItem extends TIMUIKitStatelessWidget {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Expanded( Text(
child: Text(
nickName, nickName,
softWrap: true, softWrap: true,
textAlign: TextAlign.left, textAlign: TextAlign.left,
@ -219,7 +220,21 @@ 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),
], ],
), ),

View File

@ -1,7 +1,9 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
class Api { 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'; static const sendCode = 'msg-service/sms/code/send';

View File

@ -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": 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() { void navigateToPrivacyPolicy() {
Get.toNamed(AppRoutes.WebViewActivity, arguments: { Get.toNamed(AppRoutes.WebViewActivity, arguments: {
'title': "隐私协议", '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() { void navigateToContentGuidelines() {
Get.toNamed(AppRoutes.WebViewActivity, arguments: { Get.toNamed(AppRoutes.WebViewActivity, arguments: {
'title': "发布内容规范", '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() { void navigateToPartnerAgreement() {
Get.toNamed(AppRoutes.WebViewActivity, arguments: { Get.toNamed(AppRoutes.WebViewActivity, arguments: {
'title': "合伙人协议", '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"
}); });
} }