diff --git a/circle_app/assets/images/home/icon_vip.png b/circle_app/assets/images/home/icon_vip.png
index bb5926a..c4706ea 100644
Binary files a/circle_app/assets/images/home/icon_vip.png and b/circle_app/assets/images/home/icon_vip.png differ
diff --git a/circle_app/ios/Podfile.lock b/circle_app/ios/Podfile.lock
index 5b88e79..1f2940b 100644
--- a/circle_app/ios/Podfile.lock
+++ b/circle_app/ios/Podfile.lock
@@ -49,16 +49,17 @@ PODS:
- DKImagePickerController/PhotoGallery
- Flutter
- Flutter (1.0.0)
+ - flutter_apns_only (0.0.1):
+ - Flutter
- flutter_image_compress (1.0.0):
- Flutter
- Mantle
- SDWebImage
- SDWebImageWebPCoder
+ - flutter_native_splash (0.0.1):
+ - Flutter
- flutter_plugin_record_plus (0.0.1):
- Flutter
- - fluttertoast (0.0.2):
- - Flutter
- - Toast
- fluwx (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (~> 2.0.2)
@@ -72,6 +73,9 @@ PODS:
- Flutter
- image_picker_ios (0.0.1):
- Flutter
+ - in_app_purchase_storekit (0.0.1):
+ - Flutter
+ - FlutterMacOS
- libwebp (1.2.4):
- libwebp/demux (= 1.2.4)
- libwebp/mux (= 1.2.4)
@@ -81,9 +85,32 @@ PODS:
- libwebp/mux (1.2.4):
- libwebp/demux
- libwebp/webp (1.2.4)
+ - local_notifications_for_us (0.0.1):
+ - Flutter
- Mantle (2.2.0):
- Mantle/extobjc (= 2.2.0)
- Mantle/extobjc (2.2.0)
+ - mob_sharesdk (4.4.15):
+ - mob_sharesdk/ShareSDK (= 4.4.15)
+ - MOBFoundation (>= 3.2.9)
+ - mob_sharesdk/ShareSDK (4.4.15):
+ - MOBFoundation (>= 3.2.9)
+ - mob_sharesdk/ShareSDKExtension (4.4.15):
+ - mob_sharesdk/ShareSDK
+ - MOBFoundation (>= 3.2.9)
+ - mob_sharesdk/ShareSDKPlatforms/QQ (4.4.15):
+ - mob_sharesdk/ShareSDK
+ - MOBFoundation (>= 3.2.9)
+ - mob_sharesdk/ShareSDKPlatforms/SinaWeibo (4.4.15):
+ - mob_sharesdk/ShareSDK
+ - MOBFoundation (>= 3.2.9)
+ - mob_sharesdk/ShareSDKPlatforms/WeChat (4.4.15):
+ - mob_sharesdk/ShareSDK
+ - MOBFoundation (>= 3.2.9)
+ - mob_sharesdk/ShareSDKUI (4.4.15):
+ - mob_sharesdk/ShareSDK
+ - MOBFoundation (>= 3.2.9)
+ - MOBFoundation (3.2.49)
- package_info_plus (0.4.5):
- Flutter
- pasteboard (0.0.1):
@@ -96,6 +123,8 @@ PODS:
- photo_manager (2.0.0):
- Flutter
- FlutterMacOS
+ - plain_notification_token_for_us (0.0.1):
+ - Flutter
- Reachability (3.2)
- ReactiveObjC (3.1.1)
- SDWebImage (5.16.0):
@@ -107,10 +136,20 @@ PODS:
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
+ - sharesdk_plugin (1.1.7):
+ - Flutter
+ - mob_sharesdk
+ - mob_sharesdk/ShareSDKExtension
+ - mob_sharesdk/ShareSDKPlatforms/QQ
+ - mob_sharesdk/ShareSDKPlatforms/SinaWeibo
+ - mob_sharesdk/ShareSDKPlatforms/WeChat
+ - mob_sharesdk/ShareSDKUI
- sqflite (0.0.3):
- Flutter
- FMDB (>= 2.7.5)
- SwiftyGif (5.4.4)
+ - tencent_chat_push_for_china (0.0.1):
+ - Flutter
- tencent_cloud_chat_sdk (5.1.2):
- Flutter
- HydraAsync
@@ -120,7 +159,6 @@ PODS:
- TUICore (~> 7.3.4358)
- tencent_open_file (0.0.1):
- Flutter
- - Toast (4.0.0)
- TUICore (7.3.4358):
- ReactiveObjC
- SDWebImage
@@ -159,20 +197,26 @@ DEPENDENCIES:
- fc_native_video_thumbnail_for_us (from `.symlinks/plugins/fc_native_video_thumbnail_for_us/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
+ - flutter_apns_only (from `.symlinks/plugins/flutter_apns_only/ios`)
- flutter_image_compress (from `.symlinks/plugins/flutter_image_compress/ios`)
+ - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- flutter_plugin_record_plus (from `.symlinks/plugins/flutter_plugin_record_plus/ios`)
- - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- fluwx (from `.symlinks/plugins/fluwx/ios`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
+ - in_app_purchase_storekit (from `.symlinks/plugins/in_app_purchase_storekit/ios`)
+ - local_notifications_for_us (from `.symlinks/plugins/local_notifications_for_us/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- pasteboard (from `.symlinks/plugins/pasteboard/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- photo_manager (from `.symlinks/plugins/photo_manager/ios`)
+ - plain_notification_token_for_us (from `.symlinks/plugins/plain_notification_token_for_us/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`)
+ - sharesdk_plugin (from `.symlinks/plugins/sharesdk_plugin/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
+ - tencent_chat_push_for_china (from `.symlinks/plugins/tencent_chat_push_for_china/ios`)
- tencent_cloud_chat_sdk (from `.symlinks/plugins/tencent_cloud_chat_sdk/ios`)
- tencent_cloud_uikit_core (from `.symlinks/plugins/tencent_cloud_uikit_core/ios`)
- tencent_open_file (from `.symlinks/plugins/tencent_open_file/ios`)
@@ -191,12 +235,13 @@ SPEC REPOS:
- HydraAsync
- libwebp
- Mantle
+ - mob_sharesdk
+ - MOBFoundation
- Reachability
- ReactiveObjC
- SDWebImage
- SDWebImageWebPCoder
- SwiftyGif
- - Toast
- TUICore
- TXIMSDK_Plus_iOS
- WechatOpenSDK-XCFramework
@@ -220,12 +265,14 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
:path: Flutter
+ flutter_apns_only:
+ :path: ".symlinks/plugins/flutter_apns_only/ios"
flutter_image_compress:
:path: ".symlinks/plugins/flutter_image_compress/ios"
+ flutter_native_splash:
+ :path: ".symlinks/plugins/flutter_native_splash/ios"
flutter_plugin_record_plus:
:path: ".symlinks/plugins/flutter_plugin_record_plus/ios"
- fluttertoast:
- :path: ".symlinks/plugins/fluttertoast/ios"
fluwx:
:path: ".symlinks/plugins/fluwx/ios"
geolocator_apple:
@@ -234,6 +281,10 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/image_gallery_saver/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
+ in_app_purchase_storekit:
+ :path: ".symlinks/plugins/in_app_purchase_storekit/ios"
+ local_notifications_for_us:
+ :path: ".symlinks/plugins/local_notifications_for_us/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
pasteboard:
@@ -244,10 +295,16 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/permission_handler_apple/ios"
photo_manager:
:path: ".symlinks/plugins/photo_manager/ios"
+ plain_notification_token_for_us:
+ :path: ".symlinks/plugins/plain_notification_token_for_us/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/ios"
+ sharesdk_plugin:
+ :path: ".symlinks/plugins/sharesdk_plugin/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
+ tencent_chat_push_for_china:
+ :path: ".symlinks/plugins/tencent_chat_push_for_china/ios"
tencent_cloud_chat_sdk:
:path: ".symlinks/plugins/tencent_cloud_chat_sdk/ios"
tencent_cloud_uikit_core:
@@ -279,33 +336,40 @@ SPEC CHECKSUMS:
fc_native_video_thumbnail_for_us: 69559e6500bff0f6340f044ec0847366fa6f6233
file_picker: ce3938a0df3cc1ef404671531facef740d03f920
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
+ flutter_apns_only: 3d91c0ca9dbef4439874858590909a19f8ed06a4
flutter_image_compress: 5a5e9aee05b6553048b8df1c3bc456d0afaac433
+ flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
flutter_plugin_record_plus: 79b8e13ee7ed9a94f6c067018653599528cee1fc
- fluttertoast: fafc4fa4d01a6a9e4f772ecd190ffa525e9e2d9c
fluwx: e9e728cfdb80e82dac5f4ff974b1901a7939dcd0
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401
HydraAsync: 8d589bd725b0224f899afafc9a396327405f8063
image_gallery_saver: 259eab68fb271cfd57d599904f7acdc7832e7ef2
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
+ in_app_purchase_storekit: 4fb7ee9e824b1f09107fbfbbce8c4b276366dc43
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
+ local_notifications_for_us: d4bb63b93eb429c4697edd0ee66bbe8bade29633
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
+ mob_sharesdk: 0698d60b3c1549a5b0bcfdec6f407439dd2960c0
+ MOBFoundation: 6df2684b4db4f0f5bd71b0623f82e11271bf7ac8
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
pasteboard: 982969ebaa7c78af3e6cc7761e8f5e77565d9ce0
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604
+ plain_notification_token_for_us: c804c7a9f79af55980cec08457cb8cdf73200db7
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
SDWebImageWebPCoder: f0f287cee4cd96a59937fbf3c77a8cfda9ba67b0
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
+ sharesdk_plugin: 70d952ac2e1b6290170370c6b493a57e19fe5db4
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
+ tencent_chat_push_for_china: aa983a4716949ae4062c106204e2dc07d34d9f3b
tencent_cloud_chat_sdk: 8a2bceccaf81e7f922e7b6509ab93c39c3884dda
tencent_cloud_uikit_core: c8f580dffd1be47b5e5514b1dd8ba35506c4a560
tencent_open_file: 1261db508715b8f43ef3b7e31c90824838038165
- Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
TUICore: b0e525287eb03f95fe648a696c9ffb253fc87098
TXIMSDK_Plus_iOS: bc72c7cec1b5e975c3cc6629692c849513a932f5
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
diff --git a/circle_app/ios/Runner.xcodeproj/project.pbxproj b/circle_app/ios/Runner.xcodeproj/project.pbxproj
index 862a80d..6f3ed21 100644
--- a/circle_app/ios/Runner.xcodeproj/project.pbxproj
+++ b/circle_app/ios/Runner.xcodeproj/project.pbxproj
@@ -141,6 +141,7 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
596550B3B6FD4574F751EEF4 /* [CP] Embed Pods Frameworks */,
+ 043A78F4D9CB2782E40309BF /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -199,6 +200,23 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
+ 043A78F4D9CB2782E40309BF /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -380,7 +398,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 1.0.0;
+ MARKETING_VERSION = 1.1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.circleApp123;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -528,7 +546,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 1.0.0;
+ MARKETING_VERSION = 1.1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.circleApp123;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -570,7 +588,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 1.0.0;
+ MARKETING_VERSION = 1.1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.circleApp123;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
diff --git a/circle_app/ios/Runner/Info.plist b/circle_app/ios/Runner/Info.plist
index 7f79e79..3f0d656 100644
--- a/circle_app/ios/Runner/Info.plist
+++ b/circle_app/ios/Runner/Info.plist
@@ -2,15 +2,65 @@
+ LSApplicationQueriesSchemes
+
+ weixinULAPI
+ weixin
+ wechat
+ mqqapi
+ mqq
+ mqqOpensdkSSoLogin
+ mqqconnect
+ mqqopensdkdataline
+ mqqopensdkgrouptribeshare
+ mqqopensdkfriend
+ mqqopensdkapi
+ mqqopensdkapiV2
+ mqqopensdkapiV3
+ mqzoneopensdk
+ wtloginmqq
+ wtloginmqq2
+ mqqwpa
+ mqzone
+ mqzonev2
+ mqzoneshare
+ wtloginqzone
+ mqzonewx
+ mqzoneopensdkapiV2
+ mqzoneopensdkapi19
+ mqzoneopensdkapi
+ mqqbrowser
+ mttbrowser
+ baidumap
+ iosamap
+ weibosdk
+ sinaweibo
+ sinaweibohd
+
App Transport Security Settings
CADisableMinimumFrameDurationOnPhone
CFBundleSignature
????
+ CFBundleURLTypes
+
+
+ CFBundleTypeRole
+ Editor
+ CFBundleURLName
+ weixin
+ CFBundleURLSchemes
+
+ wxab2387c2198f01e1
+
+
+
+ MOBAppKey
+ 3872b1e955498
+ MOBAppSecret
+ 30dc517b609c8aefe297b9ac3eb8dbde
UIViewControllerBasedStatusBarAppearance
- UIApplicationSupportsIndirectInputEvents
-
diff --git a/circle_app/lib/app/invite/binding.dart b/circle_app/lib/app/invite/binding.dart
new file mode 100644
index 0000000..9c37d2e
--- /dev/null
+++ b/circle_app/lib/app/invite/binding.dart
@@ -0,0 +1,10 @@
+import 'package:get/get.dart';
+
+import 'logic.dart';
+
+class InviteBinding extends Bindings {
+ @override
+ void dependencies() {
+ Get.lazyPut(() => InviteLogic());
+ }
+}
diff --git a/circle_app/lib/app/invite/logic.dart b/circle_app/lib/app/invite/logic.dart
new file mode 100644
index 0000000..d986c1f
--- /dev/null
+++ b/circle_app/lib/app/invite/logic.dart
@@ -0,0 +1,9 @@
+import 'package:flutter/cupertino.dart';
+import 'package:get/get.dart';
+
+import 'state.dart';
+
+class InviteLogic extends GetxController {
+ final InviteState state = InviteState();
+ TextEditingController codeEditingController = TextEditingController();
+}
diff --git a/circle_app/lib/app/invite/state.dart b/circle_app/lib/app/invite/state.dart
new file mode 100644
index 0000000..fb5b659
--- /dev/null
+++ b/circle_app/lib/app/invite/state.dart
@@ -0,0 +1,5 @@
+class InviteState {
+ InviteState() {
+ ///Initialize variables
+ }
+}
diff --git a/circle_app/lib/app/invite/view.dart b/circle_app/lib/app/invite/view.dart
new file mode 100644
index 0000000..81caff8
--- /dev/null
+++ b/circle_app/lib/app/invite/view.dart
@@ -0,0 +1,506 @@
+import 'package:circle_app/app/swiper/view.dart';
+import 'package:circle_app/common/Widgets/rich_text.dart';
+import 'package:circle_app/components/my_app_bar.dart';
+import 'package:circle_app/util/util.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:flutter_swiper/flutter_swiper.dart';
+import 'package:get/get.dart';
+
+import 'logic.dart';
+
+class InvitePage extends StatelessWidget {
+ InvitePage({Key? key}) : super(key: key);
+
+ final logic = Get.find();
+ final state = Get.find().state;
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ decoration: BoxDecoration(
+ image: DecorationImage(
+ image: AssetImage(getBaseImage("home_back")),
+ fit: BoxFit.cover,
+ ),
+ ),
+ child: Scaffold(
+ backgroundColor: Colors.transparent,
+ appBar: MyAppBar(
+ centerTitle: "邀请有奖",
+ actionWdiget: Container(
+ alignment: Alignment.center,
+ height: 22.sp,
+ width: 62.sp,
+ decoration: BoxDecoration(
+ color: Color(0xffD739EA),
+ borderRadius: BorderRadius.circular(31.sp)),
+ child: Text(
+ '邀请攻略',
+ style: TextStyle(color: Colors.white, fontSize: 11.sp),
+ ),
+ ),
+ ),
+ body: SingleChildScrollView(
+ child: Column(children: [
+ Container(
+ height: 203.sp,
+ margin: EdgeInsets.only(
+ left: 20.sp,
+ right: 20.sp,
+ ),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(10.sp),
+ color: Color(0x1AFFFFFF),
+ ),
+ child: Column(
+ children: [
+ Container(
+ padding: EdgeInsets.only(
+ left: 14.sp, right: 14.sp, top: 24.sp),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ '我的专属邀请码',
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 16.sp,
+ fontWeight: FontWeight.w500),
+ ),
+ GestureDetector(
+ behavior: HitTestBehavior.opaque,
+ onTap: () {
+ showCodePicker(logic);
+ },
+ child: Container(
+ alignment: Alignment.center,
+ height: 29.sp,
+ width: 76.sp,
+ decoration: BoxDecoration(
+ border: Border.all(
+ color: Color(0xffD739EA), width: 1.sp),
+ borderRadius: BorderRadius.circular(14.5.sp)),
+ child: Text(
+ '填码对接',
+ style: TextStyle(
+ color: Color(0xffD739EA), fontSize: 12.sp),
+ ),
+ ),
+ )
+ ],
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.only(top: 40.sp),
+ child: Row(
+ children: [
+ Expanded(child: Container()),
+ Semantics(
+ namesRoute: true,
+ header: true,
+ child: ShaderMask(
+ shaderCallback: (Rect bounds) {
+ return const LinearGradient(
+ begin: Alignment(0.0, -1.0),
+ end: Alignment.bottomCenter,
+ colors: [
+ Color(0xff71F3F2),
+ Color(0xffF657FF)
+ ],
+ ).createShader(Offset.zero & bounds.size);
+ },
+ child: Text(
+ 'F2324424',
+ style: TextStyle(
+ fontSize: 30.sp,
+ fontWeight: FontWeight.w600,
+ color: Colors.white,
+ shadows: [
+ Shadow(
+ color: Color(0xffF657FF),
+ offset: Offset(0.0, -1))
+ ]),
+ ),
+ )),
+ SizedBox(
+ width: 4.sp,
+ ),
+ GestureDetector(
+ onTap: () {
+ Clipboard.setData(
+ ClipboardData(text: '复制到剪切板'));
+ showOKToast('复制成功');
+ },
+ child: Text(
+ '复制',
+ style: TextStyle(
+ color: Color(0xB3FFFFFF), fontSize: 14.sp),
+ )),
+ Expanded(child: Container())
+ ],
+ ),
+ ),
+ Container(
+ width: 224.sp,
+ height: 42.sp,
+ margin: EdgeInsets.only(top: 15.sp),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(21.sp),
+ gradient: const LinearGradient(
+ colors: [
+ Color(0xFF06F9FA),
+ Color(0xFFDC5BFD),
+ ],
+ )),
+ alignment: Alignment.center,
+ child: Text(
+ '立即邀请',
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 16,
+ fontWeight: FontWeight.w600),
+ ),
+ ),
+ ],
+ ),
+ ),
+ Container(
+ height: 40.sp,
+ margin: EdgeInsets.only(left: 20.sp, right: 20.sp, top: 30.sp),
+ decoration: BoxDecoration(
+ color: Color(0x1AFFFFFF),
+ borderRadius: BorderRadius.circular(10.sp)),
+ child: Swiper(
+ physics: NeverScrollableScrollPhysics(),
+ autoplay: true,
+ // controller: 5,
+ index: 0,
+ itemBuilder: (BuildContext context, int index) {
+ return Container(
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Text(
+ '哟刚说A',
+ style: TextStyle(
+ color: Color(0xFFDC5BFD),
+ fontSize: 14.sp,
+ fontWeight: FontWeight.w500),
+ ),
+ Container(
+ margin: EdgeInsets.only(left: 5.sp, right: 5.sp),
+ child: Text(
+ '邀请',
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 14.sp,
+ fontWeight: FontWeight.w500),
+ )),
+ Text(
+ '扥扥',
+ style: TextStyle(
+ color: Color(0xFFDC5BFD),
+ fontSize: 14.sp,
+ fontWeight: FontWeight.w500),
+ ),
+ Container(
+ margin: EdgeInsets.only(left: 5.sp),
+ child: Text(
+ '加入微乐园',
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 14.sp,
+ fontWeight: FontWeight.w500),
+ )),
+ ],
+ ),
+ );
+ },
+ itemCount: 5,
+ ),
+ ),
+ Container(
+ height: 203.sp,
+ margin:
+ EdgeInsets.only(left: 20.sp, right: 20.sp, top: 20.sp),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(10.sp),
+ color: Color(0x1AFFFFFF),
+ ),
+ child: Column(
+ children: [
+ Container(
+ height: 80.sp,
+ margin: EdgeInsets.only(left: 15.sp, right: 15.sp),
+ child: Row(
+ children: [
+ Text(
+ '邀请人数',
+ style: TextStyle(
+ color: Color(0xFFDC5BFD),
+ fontSize: 14.sp,
+ fontWeight: FontWeight.w500),
+ ),
+ Expanded(
+ child: Stack(
+ // fit: StackFit.expand,
+ alignment: Alignment.center,
+ children: [
+ Container(
+ margin: EdgeInsets.only(
+ left: 61.sp, right: 46.sp),
+ height: 2.sp,
+ color: Color(0xFFDC5BFD).withOpacity(0.4),
+ ),
+ Container(
+ margin: EdgeInsets.only(left: 15.sp),
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
+ children: [
+ peopleCountWidget('20', true),
+ peopleCountWidget('50', true),
+ peopleCountWidget('100', true),
+ peopleCountWidget('500', true),
+ ],
+ ),
+ )
+ ],
+ ))
+ ],
+ )),
+ Container(
+ height: 80.sp,
+ margin: EdgeInsets.only(left: 15.sp, right: 15.sp),
+ child: Row(
+ children: [
+ Text(
+ '会员时长',
+ style: TextStyle(
+ color: Color(0xFFDC5BFD),
+ fontSize: 14.sp,
+ fontWeight: FontWeight.w500),
+ ),
+ Expanded(
+ child: Stack(
+ // fit: StackFit.expand,
+ alignment: Alignment.center,
+ children: [
+ Container(
+ margin: EdgeInsets.only(
+ left: 20.sp, right: 10.sp),
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
+ children: [
+ timeWidget(
+ '+30天',
+ ),
+ timeWidget(
+ '+100天',
+ ),
+ timeWidget(
+ '+365天',
+ ),
+ timeWidget(
+ '+3年',
+ ),
+ ],
+ ),
+ )
+ ],
+ )),
+ ],
+ )),
+ Container(
+ margin: EdgeInsets.only(left: 15.sp, right: 15.sp),
+ child: RichText(
+ text: TextSpan(
+ children: getTextSpanList(
+ 'Tip:您已成功邀请 19位同好,免费获得会员120天, 再邀请1位同友可领取更多奖励~',
+ Color(0xFFDC5BFD),
+ 14.sp,
+ searchContent: 'Tip:'),
+ )))
+ ],
+ )),
+ // Container(
+ // height: 203.sp,
+ // margin:
+ // EdgeInsets.only(left: 20.sp, right: 20.sp, top: 20.sp),
+ // decoration: BoxDecoration(
+ // borderRadius: BorderRadius.circular(10.sp),
+ // color: Color(0x1AFFFFFF),
+ // ),
+ // child: Column(children: [
+ // Expanded(
+ // child: ListView.builder(
+ // itemBuilder: (BuildContext context, int index) {
+ // return Container(
+ // margin: EdgeInsets.only(top: 10.sp),
+ // padding: EdgeInsets.only(left: 15.sp, right: 15.sp),
+ // child: Row(
+ // children: [
+ // ClipOval(
+ // child: Image.network(
+ // 'https://p26-passport.byteacctimg.com/img/user-avatar/b0541a2a377dd239a22eea2934709967~100x100.awebp',
+ // width: 40.sp,
+ // height: 40.sp,
+ // ),
+ // ),
+ // SizedBox(
+ // width: 4.sp,
+ // ),
+ // Column(
+ // children: [
+ // Text(
+ // '2222',
+ // style: TextStyle(
+ // color: Colors.white, fontSize: 14.sp),
+ // ),
+ // ],
+ // )
+ // ],
+ // ),
+ // );
+ // },
+ // itemCount: 5,
+ // ))
+ // ])),
+ ]))));
+ }
+
+ peopleCountWidget(String count, bool isCheck) {
+ return Container(
+ width: 46.sp,
+ height: 46.sp,
+ alignment: Alignment.center,
+ decoration:
+ BoxDecoration(color: Color(0xFFDC5BFD), shape: BoxShape.circle),
+ child: Text(
+ '$count人',
+ style: TextStyle(color: Colors.white, fontSize: 12.sp),
+ ),
+ );
+ }
+
+ timeWidget(String time) {
+ return Text(
+ time,
+ style: TextStyle(color: Colors.white, fontSize: 12.sp),
+ );
+ }
+}
+
+void showCodePicker(InviteLogic logic) {
+ Get.bottomSheet(
+ GestureDetector(
+ onTap: () {
+ FocusManager.instance.primaryFocus?.unfocus();
+ },
+ child: Scaffold(
+ backgroundColor: Colors.transparent,
+ resizeToAvoidBottomInset: false,
+ body: Center(
+ child: Container(
+ height: 240.sp,
+ decoration: BoxDecoration(
+ color: Color(0xFF292247),
+ borderRadius: BorderRadius.circular(6.sp)),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Container(
+ margin: EdgeInsets.only(top: 20.sp, left: 20.sp),
+ child: Text(
+ '请输入邀请您加入APP的同好的邀请码',
+ style: TextStyle(color: Colors.white, fontSize: 14.sp),
+ ),
+ ),
+ Container(
+ margin: EdgeInsets.only(left: 20, right: 20.sp,top: 30.sp),
+ decoration: BoxDecoration(
+ color: Color(0x1AFFFFFF),
+ borderRadius: BorderRadius.circular(6.sp)),
+ alignment: Alignment.center,
+ child: TextField(
+ controller: logic.codeEditingController,
+ keyboardType: TextInputType.phone,
+ maxLength: 8,
+ textAlign: TextAlign.center,
+ 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: 15.sp),
+ alignment: Alignment.center,
+ child: Text(
+ '为防止作弊,进入APP后请在1小时填写TA的邀请码',
+ style: TextStyle(color: Colors.white, fontSize: 12.sp),
+ ),
+ ),
+ Expanded(child: Container()),
+ Container(
+ margin: EdgeInsets.only(left: 40.sp,right: 40.sp,bottom: 20.sp),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ GestureDetector(
+ onTap: () {
+ Get.back();
+ },
+ child: Container(
+ alignment: Alignment.center,
+ width: 114.sp,
+ height: 38.sp,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(19.sp),
+ color: Color(0x1AFFFFFF)),
+ child: const Text(
+ '放弃对接',
+ style: TextStyle(color: Colors.white, fontSize: 16),
+ ),
+ ),
+ ),
+ GestureDetector(
+ onTap: () {},
+ child: Container(
+ alignment: Alignment.center,
+ width: 114.sp,
+ height: 38.sp,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(19.sp),
+ gradient: const LinearGradient(
+ colors: [
+ Color(0xFF06F9FA),
+ Color(0xFFDC5BFD),
+ ],
+ )),
+ child: const Text(
+ '确认对接',
+ style: TextStyle(
+ color: Colors.white, fontSize: 16),
+ ),
+ ),
+ )
+ ],
+ ),
+ )
+ ],
+ ),
+ ),
+ ),
+ ),
+ ),
+ isScrollControlled: true,
+ enableDrag: false);
+}
diff --git a/circle_app/lib/app/minefragment/view.dart b/circle_app/lib/app/minefragment/view.dart
index 9e03cf2..53ce097 100644
--- a/circle_app/lib/app/minefragment/view.dart
+++ b/circle_app/lib/app/minefragment/view.dart
@@ -80,7 +80,7 @@ class MinefragmentPage extends StatelessWidget {
Widget _circleLiveView(MinefragmentLogic logic) {
return Column(
- children: [_circleItemView(logic), _helpItemView(), _setUpItemView()],
+ children: [_circleItemView(logic), _helpItemView(), _invienItemView(), _setUpItemView()],
);
}
@@ -173,6 +173,53 @@ class MinefragmentPage extends StatelessWidget {
);
}
+ Widget _invienItemView() {
+ return GestureDetector(
+ behavior: HitTestBehavior.opaque,
+ onTap: () {
+ Get.toNamed(AppRoutes.Invite);
+ // controller.state.hearUrl
+ },
+ child: Container(
+ margin: EdgeInsets.only(top: 18.sp),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Row(
+ children: [
+ Image(
+ image: AssetImage(getHomeImage("mine_help")),
+ width: 24.sp,
+ height: 24.sp,
+ ),
+ SizedBox(width: 10.sp),
+ const Text(
+ "邀请得会员",
+ style: TextStyle(color: Colors.white),
+ ),
+
+ ],
+ ),
+ Row(
+ children: [
+ const Text(
+ "免费领领会员",
+ style: TextStyle(color: Colors.white60),
+ ),
+ Image(
+ image: AssetImage(getHomeImage("icon_in")),
+ width: 24.sp,
+ height: 24.sp,
+ ),
+ ],
+ )
+
+ ],
+ ),
+ ),
+ );
+ }
+
Widget _circleItemView(MinefragmentLogic logic) {
return GestureDetector(
behavior: HitTestBehavior.opaque,
diff --git a/circle_app/lib/app/my_circle/view.dart b/circle_app/lib/app/my_circle/view.dart
index 123b8f6..3951160 100644
--- a/circle_app/lib/app/my_circle/view.dart
+++ b/circle_app/lib/app/my_circle/view.dart
@@ -52,39 +52,41 @@ class _My_circlePageState extends State
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
- child: Column(children: [
- backNavigatorItem(),
- // Text(controller.state.msg),
- //组件使用
- Expanded(
- child: logic.circle.lists.isEmpty ? !logic.isMore ? noResultWidget() : loaddingWidget(logic.isMore) : Swiper(
- itemBuilder: (BuildContext context, int index) {
- var bean = logic.circle.lists[index];
- // final GlobalKey infoListViewKey = GlobalKey();
- // MyinfoListViewKey = infoListViewKey;
- return InfoListView(
- index,
- bean,
- controller
- );
- },
- index: controller.state.index,
- itemCount: logic.circle.lists.length,
- viewportFraction: 0.93,
- // scale: 0.9,
- loop: false,
- onIndexChanged: (index) {
- controller.state.index = index;
- if (index == logic.circle.lists.length - 1 && controller.isMore) {
+ child: Container(
+ child: Column(children: [
+ backNavigatorItem(),
+ // Text(controller.state.msg),
+ //组件使用
+ Expanded(
+ child: logic.circle.lists.isEmpty ? !logic.isMore ? noResultWidget() : loaddingWidget(logic.isMore) : Swiper(
+ itemBuilder: (BuildContext context, int index) {
+ var bean = logic.circle.lists[index];
+ // final GlobalKey infoListViewKey = GlobalKey();
+ // MyinfoListViewKey = infoListViewKey;
+ return InfoListView(
+ index,
+ bean,
+ controller
+ );
+ },
+ index: controller.state.index,
+ itemCount: logic.circle.lists.length,
+ viewportFraction: 0.93,
+ // scale: 0.9,
+ loop: false,
+ onIndexChanged: (index) {
+ controller.state.index = index;
+ if (index == logic.circle.lists.length - 1 && controller.isMore) {
- logic.loadMore();
- }
+ logic.loadMore();
+ }
- },
- // pagination: new SwiperPagination(),//如果不填则不显示指示点
- // control: new SwiperControl(),//如果不填则不显示左右按钮
- ))
- ]),
+ },
+ // pagination: new SwiperPagination(),//如果不填则不显示指示点
+ // control: new SwiperControl(),//如果不填则不显示左右按钮
+ ))
+ ]),
+ ),
),
],
);
diff --git a/circle_app/lib/common/Widgets/rich_text.dart b/circle_app/lib/common/Widgets/rich_text.dart
new file mode 100644
index 0000000..fee61f2
--- /dev/null
+++ b/circle_app/lib/common/Widgets/rich_text.dart
@@ -0,0 +1,71 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+///searchContent 输入的搜索内容
+///textContent 需要显示的文字内容
+///frontContent 需要另外添加在最前面的文字
+///fontSize 需要显示的字体大小
+///fontColor 需要显示的正常字体颜色
+///selectFontColor 需要显示的搜索字体颜色
+List getTextSpanList(String textContent,Color selectFontColor,fontSize,
+ {String searchContent = '',
+ String frontContent = '',
+ Color fontColor = Colors.white,
+ }) {
+ List textSpanList = [];
+
+ if (frontContent.isEmpty == false) {
+ textSpanList.add(TextSpan(
+ text: frontContent,
+ style: TextStyle(fontSize: fontSize, color: fontColor)));
+ }
+
+ ///搜索内容不为空并且 显示内容中存在与搜索内容相同的文字
+ if (searchContent != null &&
+ searchContent.isEmpty == false &&
+ textContent.contains(searchContent)) {
+ List