Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
ChatGPT
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
关振斌
ChatGPT
Commits
f0d1c0ef
Commit
f0d1c0ef
authored
Mar 06, 2023
by
关振斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
3699105f
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
717 additions
and
492 deletions
+717
-492
android/app/build.gradle
android/app/build.gradle
+35
-20
android/build.gradle
android/build.gradle
+1
-1
ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
...Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
+3
-3
ios/Runner/Assets.xcassets/LaunchImage.imageset/launchimag.png
...unner/Assets.xcassets/LaunchImage.imageset/launchimag.png
+0
-0
ios/Runner/Assets.xcassets/LaunchImage.imageset/launchimag2x.png
...ner/Assets.xcassets/LaunchImage.imageset/launchimag2x.png
+0
-0
ios/Runner/Assets.xcassets/LaunchImage.imageset/launchimag3x.png
...ner/Assets.xcassets/LaunchImage.imageset/launchimag3x.png
+0
-0
lib/common/store/user.dart
lib/common/store/user.dart
+35
-10
lib/common/values/server.dart
lib/common/values/server.dart
+1
-1
lib/entity/login_entity.dart
lib/entity/login_entity.dart
+19
-3
lib/entity/user_entity.dart
lib/entity/user_entity.dart
+21
-4
lib/pages/frame/pay_list/controller.dart
lib/pages/frame/pay_list/controller.dart
+16
-2
lib/pages/frame/product/view.dart
lib/pages/frame/product/view.dart
+11
-8
lib/pages/frame/sign_in/controller.dart
lib/pages/frame/sign_in/controller.dart
+43
-10
lib/pages/frame/sign_in/view.dart
lib/pages/frame/sign_in/view.dart
+306
-249
lib/pages/main/widgets/swiper.dart
lib/pages/main/widgets/swiper.dart
+118
-117
lib/pages/user/view.dart
lib/pages/user/view.dart
+92
-64
pubspec.lock
pubspec.lock
+14
-0
pubspec.yaml
pubspec.yaml
+2
-0
No files found.
android/app/build.gradle
View file @
f0d1c0ef
def
localProperties
=
new
Properties
()
def
localProperties
=
new
Properties
()
def
localPropertiesFile
=
rootProject
.
file
(
'local.properties'
)
def
localPropertiesFile
=
rootProject
.
file
(
'local.properties'
)
def
keystorePropertiesFile
=
rootProject
.
file
(
"key.properties"
)
def
keystoreProperties
=
new
Properties
()
def
keystoreProperties
=
new
Properties
()
keystoreProperties
.
load
(
new
FileInputStream
(
keystorePropertiesFile
))
def
keystorePropertiesFile
=
rootProject
.
file
(
'key.properties'
)
if
(
keystorePropertiesFile
.
exists
())
{
keystoreProperties
.
load
(
new
FileInputStream
(
keystorePropertiesFile
))
}
if
(
localPropertiesFile
.
exists
())
{
if
(
localPropertiesFile
.
exists
())
{
localPropertiesFile
.
withReader
(
'UTF-8'
)
{
reader
->
localPropertiesFile
.
withReader
(
'UTF-8'
)
{
reader
->
...
@@ -58,25 +60,38 @@ android {
...
@@ -58,25 +60,38 @@ android {
versionName
flutterVersionName
versionName
flutterVersionName
}
}
// signingConfigs {
// release {
// keyAlias keystoreProperties['keyAlias']
// keyPassword keystoreProperties['keyPassword']
// storeFile file(keystoreProperties['storeFile'])
// storePassword keystoreProperties['storePassword']
// }
// }
signingConfigs
{
signingConfigs
{
release
{
release
{
keyAlias
keystoreProperties
[
'keyAlias'
]
keyAlias
keystoreProperties
[
'keyAlias'
]
keyPassword
keystoreProperties
[
'keyPassword'
]
keyPassword
keystoreProperties
[
'keyPassword'
]
storeFile
file
(
keystoreProperties
[
'storeFile'
])
storeFile
keystoreProperties
[
'storeFile'
]
?
file
(
keystoreProperties
[
'storeFile'
])
:
null
storePassword
keystoreProperties
[
'storePassword'
]
storePassword
keystoreProperties
[
'storePassword'
]
}
}
}
}
buildTypes
{
buildTypes
{
release
{
release
{
signingConfig
signingConfigs
.
debug
signingConfig
signingConfigs
.
release
// signingConfig signingConfigs.release //TODO
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
//
}
}
}
}
// buildTypes {
// // release {
// // signingConfig signingConfigs.debug
// // // signingConfig signingConfigs.release //TODO
// // // TODO: Add your own signing config for the release build.
// // // Signing with the debug keys for now, so `flutter run --release` works.
// // //
// // }
// }
}
}
flutter
{
flutter
{
...
...
android/build.gradle
View file @
f0d1c0ef
buildscript
{
buildscript
{
ext
.
kotlin_version
=
'1.6.
1
0'
ext
.
kotlin_version
=
'1.6.
2
0'
repositories
{
repositories
{
google
()
google
()
mavenCentral
()
mavenCentral
()
...
...
ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
View file @
f0d1c0ef
{
{
"images"
:
[
"images"
:
[
{
{
"filename"
:
"l
ogo-removebg-preview (4) 1
.png"
,
"filename"
:
"l
aunchimag
.png"
,
"idiom"
:
"universal"
,
"idiom"
:
"universal"
,
"scale"
:
"1x"
"scale"
:
"1x"
},
},
{
{
"filename"
:
"l
ogo-removebg-preview (4) 2
.png"
,
"filename"
:
"l
aunchimag2x
.png"
,
"idiom"
:
"universal"
,
"idiom"
:
"universal"
,
"scale"
:
"2x"
"scale"
:
"2x"
},
},
{
{
"filename"
:
"l
ogo-removebg-preview (4)
.png"
,
"filename"
:
"l
aunchimag3x
.png"
,
"idiom"
:
"universal"
,
"idiom"
:
"universal"
,
"scale"
:
"3x"
"scale"
:
"3x"
}
}
...
...
ios/Runner/Assets.xcassets/LaunchImage.imageset/l
ogo-removebg-preview (4) 1
.png
→
ios/Runner/Assets.xcassets/LaunchImage.imageset/l
aunchimag
.png
View file @
f0d1c0ef
File moved
ios/Runner/Assets.xcassets/LaunchImage.imageset/l
ogo-removebg-preview (4) 2
.png
→
ios/Runner/Assets.xcassets/LaunchImage.imageset/l
aunchimag2x
.png
View file @
f0d1c0ef
File moved
ios/Runner/Assets.xcassets/LaunchImage.imageset/l
ogo-removebg-preview (4)
.png
→
ios/Runner/Assets.xcassets/LaunchImage.imageset/l
aunchimag3x
.png
View file @
f0d1c0ef
File moved
lib/common/store/user.dart
View file @
f0d1c0ef
...
@@ -21,7 +21,9 @@ class UserStore extends GetxController {
...
@@ -21,7 +21,9 @@ class UserStore extends GetxController {
// 令牌 token
// 令牌 token
String
token
=
''
;
String
token
=
''
;
// 用户 profile
// 用户 profile
final
_profile
=
IntegralEntity
(
id:
''
,
token:
''
,
username:
''
).
obs
;
final
_profile
=
IntegralEntity
(
id:
''
,
token:
''
,
username:
''
,
integral:
0
,
expireTime:
null
)
.
obs
;
bool
get
isLogin
=>
_isLogin
.
value
;
bool
get
isLogin
=>
_isLogin
.
value
;
IntegralEntity
get
profile
=>
_profile
.
value
;
IntegralEntity
get
profile
=>
_profile
.
value
;
...
@@ -34,8 +36,21 @@ class UserStore extends GetxController {
...
@@ -34,8 +36,21 @@ class UserStore extends GetxController {
var
profileOffline
=
StorageService
.
to
.
getString
(
STORAGE_USER_PROFILE_KEY
);
var
profileOffline
=
StorageService
.
to
.
getString
(
STORAGE_USER_PROFILE_KEY
);
if
(
profileOffline
.
isNotEmpty
)
{
if
(
profileOffline
.
isNotEmpty
)
{
var
l
=
jsonDecode
(
profileOffline
);
var
l
=
jsonDecode
(
profileOffline
);
Map
<
String
,
dynamic
>
map
=
json
.
decode
(
l
);
_profile
.
value
=
_profile
(
IntegralEntity
.
fromMap
(
map
));
final
copiedMap
=
Map
.
from
(
l
);
// Map<String, dynamic> map = json.decode(l);
copiedMap
.
update
(
"expireTime"
,
(
value
)
=>
value
==
null
?
null
:
DateTime
?.
parse
(
value
));
// copiedMap
final
value
=
IntegralEntity
(
expireTime:
copiedMap
[
'expireTime'
],
id:
copiedMap
[
'id'
],
token:
copiedMap
[
'token'
],
username:
copiedMap
[
'username'
],
integral:
copiedMap
[
'integral'
]);
_profile
.
value
=
_profile
(
value
);
if
(
profile
.
id
!=
''
)
{
if
(
profile
.
id
!=
''
)
{
_isLogin
.
value
=
true
;
_isLogin
.
value
=
true
;
...
@@ -49,8 +64,13 @@ class UserStore extends GetxController {
...
@@ -49,8 +64,13 @@ class UserStore extends GetxController {
handleLogin
(
IntegralEntity
res
)
async
{
handleLogin
(
IntegralEntity
res
)
async
{
await
setToken
(
res
.
token
);
await
setToken
(
res
.
token
);
// IntegralEntity userInfo = await UserAPI.getUserIntegral();
// IntegralEntity userInfo = await UserAPI.getUserIntegral();
await
getUserInfo
(
await
getUserInfo
(
IntegralEntity
(
IntegralEntity
(
id:
res
.
id
,
username:
res
.
username
,
token:
res
.
token
));
id:
res
.
id
,
username:
res
.
username
,
token:
res
.
token
,
integral:
res
.
integral
,
expireTime:
res
.
expireTime
,
));
_isLogin
.
value
=
true
;
_isLogin
.
value
=
true
;
Get
.
back
();
Get
.
back
();
// Get.put(ApplicationController());
// Get.put(ApplicationController());
...
@@ -59,7 +79,7 @@ class UserStore extends GetxController {
...
@@ -59,7 +79,7 @@ class UserStore extends GetxController {
getUserInfo
(
IntegralEntity
userInfo
)
async
{
getUserInfo
(
IntegralEntity
userInfo
)
async
{
await
setToken
(
userInfo
.
token
);
await
setToken
(
userInfo
.
token
);
_profile
.
value
=
userInfo
;
await
saveProfile
(
userInfo
);
await
saveProfile
(
userInfo
);
// token = StorageService.to.getString(STORAGE_USER_TOKEN_KEY);
// token = StorageService.to.getString(STORAGE_USER_TOKEN_KEY);
...
@@ -95,7 +115,13 @@ class UserStore extends GetxController {
...
@@ -95,7 +115,13 @@ class UserStore extends GetxController {
// 保存 profile
// 保存 profile
Future
<
void
>
saveProfile
(
IntegralEntity
profile
)
async
{
Future
<
void
>
saveProfile
(
IntegralEntity
profile
)
async
{
StorageService
.
to
.
setString
(
STORAGE_USER_PROFILE_KEY
,
jsonEncode
(
profile
));
_profile
.
value
=
profile
;
var
copiedMap
=
Map
.
from
(
profile
.
toMap
());
copiedMap
.
update
(
"expireTime"
,
(
value
)
=>
value
?.
toIso8601String
());
StorageService
.
to
.
setString
(
STORAGE_USER_PROFILE_KEY
,
jsonEncode
(
copiedMap
));
}
}
// // 保存 profile
// // 保存 profile
// Future<void> saveProfile(UserLoginResponseEntity profile) async {
// Future<void> saveProfile(UserLoginResponseEntity profile) async {
...
@@ -109,9 +135,8 @@ class UserStore extends GetxController {
...
@@ -109,9 +135,8 @@ class UserStore extends GetxController {
await
StorageService
.
to
.
remove
(
STORAGE_USER_TOKEN_KEY
);
await
StorageService
.
to
.
remove
(
STORAGE_USER_TOKEN_KEY
);
_isLogin
.
value
=
false
;
_isLogin
.
value
=
false
;
token
=
''
;
token
=
''
;
saveProfile
(
IntegralEntity
(
_profile
.
value
=
IntegralEntity
(
id:
''
,
username:
''
,
token:
''
);
id:
''
,
username:
''
,
token:
''
,
expireTime:
null
,
integral:
0
));
saveProfile
(
IntegralEntity
(
id:
''
,
username:
''
,
token:
''
));
Get
.
toNamed
(
AppRoutes
.
Application
);
Get
.
toNamed
(
AppRoutes
.
Application
);
}
}
}
}
lib/common/values/server.dart
View file @
f0d1c0ef
// baidu yapi
// baidu yapi
// const SERVER_API_URL = 'https://yapi.baidu.com/mock/41008';
// const SERVER_API_URL = 'https://yapi.baidu.com/mock/41008';
// const SERVER_API_URL = 'https://yapi.ducafecat.tech/mock/11';
// const SERVER_API_URL = 'https://yapi.ducafecat.tech/mock/11';
const
SERVER_API_URL
=
'http://101.34.153.228:8083/api'
;
const
SERVER_API_URL
=
'http://101.34.153.228:8083/api'
;
//线上
// const SERVER_API_URL = 'http://192.168.2.178:8083/api';
// const SERVER_API_URL = 'http://192.168.2.178:8083/api';
// const SERVER_API_URL = 'http://192.168.110.57:8083/api';
// const SERVER_API_URL = 'http://192.168.110.57:8083/api';
//
//
...
...
lib/entity/login_entity.dart
View file @
f0d1c0ef
...
@@ -5,26 +5,42 @@
...
@@ -5,26 +5,42 @@
import
'dart:convert'
;
import
'dart:convert'
;
class
LoginEntity
{
class
LoginEntity
{
LoginEntity
({
required
this
.
username
,
required
this
.
id
,
required
this
.
token
});
var
expireTime
;
LoginEntity
(
{
required
this
.
username
,
required
this
.
id
,
required
this
.
integral
,
required
this
.
token
,
this
.
expireTime
});
final
String
username
;
final
String
username
;
final
int
id
;
final
int
id
;
final
String
token
;
final
String
token
;
// final DateTime expireTime;
final
int
integral
;
factory
LoginEntity
.
fromJson
(
String
str
)
=>
factory
LoginEntity
.
fromJson
(
String
str
)
=>
LoginEntity
.
fromMap
(
json
.
decode
(
str
));
LoginEntity
.
fromMap
(
json
.
decode
(
str
));
String
toJson
()
=>
json
.
encode
(
toMap
());
String
toJson
()
=>
json
.
encode
(
toMap
());
// jsonData['uploadedDate'] != null
// ? DateTime.parse(jsonData['uploadedDate'].toString()).toLocal()
// : null,
factory
LoginEntity
.
fromMap
(
Map
<
String
,
dynamic
>
json
)
=>
LoginEntity
(
factory
LoginEntity
.
fromMap
(
Map
<
String
,
dynamic
>
json
)
=>
LoginEntity
(
username:
json
[
"username"
],
username:
json
[
"username"
],
id:
json
[
"id"
],
id:
json
[
"id"
],
token:
json
[
'token'
],
token:
json
[
'token'
],
integral:
json
[
'integral'
],
expireTime:
json
[
'expireTime'
]
!=
null
?
DateTime
.
parse
(
json
[
"expireTime"
])
:
null
,
);
);
Map
<
String
,
dynamic
>
toMap
()
=>
{
Map
<
String
,
dynamic
>
toMap
()
=>
{
"username"
:
username
,
"username"
:
username
,
"id"
:
id
,
"id"
:
id
,
"token"
:
token
,
"token"
:
token
,
"expireTime"
:
expireTime
,
"integral"
:
integral
};
};
}
}
lib/entity/user_entity.dart
View file @
f0d1c0ef
...
@@ -103,11 +103,19 @@ class UserEntity {
...
@@ -103,11 +103,19 @@ class UserEntity {
class
IntegralEntity
{
class
IntegralEntity
{
IntegralEntity
(
IntegralEntity
(
{
required
this
.
id
,
required
this
.
username
,
required
this
.
token
});
{
required
this
.
id
,
required
this
.
username
,
required
this
.
token
,
required
this
.
expireTime
,
required
this
.
integral
});
final
dynamic
id
;
final
dynamic
id
;
final
String
username
;
final
String
username
;
final
String
token
;
final
String
token
;
final
dynamic
expireTime
;
final
int
integral
;
// expireTime: res.expireTime,
// integral: res.integral
factory
IntegralEntity
.
fromJson
(
String
str
)
=>
factory
IntegralEntity
.
fromJson
(
String
str
)
=>
IntegralEntity
.
fromMap
(
json
.
decode
(
str
));
IntegralEntity
.
fromMap
(
json
.
decode
(
str
));
...
@@ -115,10 +123,19 @@ class IntegralEntity {
...
@@ -115,10 +123,19 @@ class IntegralEntity {
String
toJson
()
=>
json
.
encode
(
toMap
());
String
toJson
()
=>
json
.
encode
(
toMap
());
factory
IntegralEntity
.
fromMap
(
Map
<
String
,
dynamic
>
json
)
=>
IntegralEntity
(
factory
IntegralEntity
.
fromMap
(
Map
<
String
,
dynamic
>
json
)
=>
IntegralEntity
(
id:
json
[
"id"
],
username:
json
[
"username"
],
token:
json
[
'token'
]);
id:
json
[
"id"
],
username:
json
[
"username"
],
token:
json
[
'token'
],
integral:
json
[
'integral'
],
expireTime:
DateTime
.
parse
(
json
[
"expireTime"
]));
Map
<
String
,
dynamic
>
toMap
()
=>
Map
<
String
,
dynamic
>
toMap
()
=>
{
{
"id"
:
id
,
"username"
:
username
,
"token"
:
token
};
"id"
:
id
,
"username"
:
username
,
"token"
:
token
,
"integral"
:
integral
,
"expireTime"
:
expireTime
};
}
}
// To parse this JSON data, do
// To parse this JSON data, do
...
...
lib/pages/frame/pay_list/controller.dart
View file @
f0d1c0ef
...
@@ -79,7 +79,6 @@ class PayListController extends GetxController {
...
@@ -79,7 +79,6 @@ class PayListController extends GetxController {
_purchaseUpdatedSubscription
=
_purchaseUpdatedSubscription
=
FlutterInappPurchase
.
purchaseUpdated
.
listen
((
productItem
)
async
{
FlutterInappPurchase
.
purchaseUpdated
.
listen
((
productItem
)
async
{
print
(
"支付1次"
);
ApplePayEntity
?
res
=
await
UserAPI
.
notifyApplePay
({
ApplePayEntity
?
res
=
await
UserAPI
.
notifyApplePay
({
'receipt'
:
productItem
?.
transactionReceipt
,
'receipt'
:
productItem
?.
transactionReceipt
,
'userId'
:
UserStore
.
to
.
profile
.
id
,
'userId'
:
UserStore
.
to
.
profile
.
id
,
...
@@ -91,8 +90,23 @@ class PayListController extends GetxController {
...
@@ -91,8 +90,23 @@ class PayListController extends GetxController {
EasyLoading
.
showSuccess
(
'
${res?.message}
'
);
EasyLoading
.
showSuccess
(
'
${res?.message}
'
);
Vibrate
.
feedback
(
FeedbackType
.
success
);
Vibrate
.
feedback
(
FeedbackType
.
success
);
EasyLoading
.
dismiss
();
EasyLoading
.
dismiss
();
// equired this.id,
// required this.username,
// required this.token,
// required this.expireTime,
// required this.integral
// DateTime.parse(json["expireTime"]))
await
UserStore
.
to
.
saveProfile
(
IntegralEntity
(
expireTime:
res
.
data
[
'expireTime'
]
==
null
?
null
:
DateTime
.
parse
(
res
.
data
[
"expireTime"
]),
username:
res
.
data
[
'username'
],
id:
res
.
data
[
'id'
],
integral:
res
.
data
[
'integral'
],
token:
UserStore
.
to
.
token
));
Get
.
back
();
Get
.
back
();
await
FlutterInappPurchase
.
instance
.
clearTransactionIOS
();
// Get.offAndToNamed(AppRoutes.Application);
// Get.offAndToNamed(AppRoutes.Application);
// Get.put(ApplicationController());
// Get.put(ApplicationController());
}
else
{
}
else
{
...
...
lib/pages/frame/product/view.dart
View file @
f0d1c0ef
...
@@ -10,6 +10,8 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
...
@@ -10,6 +10,8 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import
'package:get/get.dart'
;
import
'package:get/get.dart'
;
import
'package:glassmorphism/glassmorphism.dart'
;
import
'package:glassmorphism/glassmorphism.dart'
;
import
'package:url_launcher/url_launcher.dart'
;
import
'package:url_launcher/url_launcher.dart'
;
import
'package:flutter_markdown/flutter_markdown.dart'
;
// import 'package:markdown_widget/markdown_widget.dart';
import
'index.dart'
;
import
'index.dart'
;
import
'widgets/widgets.dart'
;
import
'widgets/widgets.dart'
;
...
@@ -168,14 +170,15 @@ class ProductPage extends GetView<ProductController> {
...
@@ -168,14 +170,15 @@ class ProductPage extends GetView<ProductController> {
)
)
],
],
)
)
:
Text
(
:
Markdown
(
data:
"
${idx.text}
"
);
"
${idx.text}
"
,
// Text(
style:
TextStyle
(
// "${idx.text}",
fontSize:
18
,
// style: TextStyle(
color:
Colors
.
white
,
// fontSize: 18,
// fontWeight: FontWeight.bold
// color: Colors.white,
),
// // fontWeight: FontWeight.bold
);
// ),
// );
return
text
;
return
text
;
}).
toList
(),
}).
toList
(),
...
...
lib/pages/frame/sign_in/controller.dart
View file @
f0d1c0ef
...
@@ -11,6 +11,7 @@ import 'package:chart/common/widgets/widgets.dart';
...
@@ -11,6 +11,7 @@ import 'package:chart/common/widgets/widgets.dart';
import
'package:flutter_easyloading/flutter_easyloading.dart'
;
import
'package:flutter_easyloading/flutter_easyloading.dart'
;
import
'package:social_login_buttons/social_login_buttons.dart'
;
import
'package:social_login_buttons/social_login_buttons.dart'
;
import
'package:get/get.dart'
;
import
'package:get/get.dart'
;
// import 'package:fluwx/fluwx.dart';
import
'../../../entity/login_entity.dart'
;
import
'../../../entity/login_entity.dart'
;
import
'../../../entity/user_entity.dart'
;
import
'../../../entity/user_entity.dart'
;
...
@@ -46,6 +47,10 @@ class SignInController extends GetxController {
...
@@ -46,6 +47,10 @@ class SignInController extends GetxController {
// 密码的控制器
// 密码的控制器
final
TextEditingController
passController
=
TextEditingController
();
final
TextEditingController
passController
=
TextEditingController
();
// final a = registerWxApi(
// appId: "wxd930ea5d5a228f5f",
// universalLink: "https://your.univerallink.com/link/");
// print("aaaa");
// final MyRepository repository;
// final MyRepository repository;
// SignInController({@required this.repository}) : assert(repository != null);
// SignInController({@required this.repository}) : assert(repository != null);
...
@@ -69,26 +74,50 @@ class SignInController extends GetxController {
...
@@ -69,26 +74,50 @@ class SignInController extends GetxController {
EasyLoading
.
show
(
status:
'登录中...'
);
EasyLoading
.
show
(
status:
'登录中...'
);
// Map<String, dynamic> routeParams =
// Map<String, dynamic> routeParams =
// ModalRoute.of(context)!.settings?.arguments as Map<String, dynamic>;
// ModalRoute.of(context)!.settings?.arguments as Map<String, dynamic>;
// final DateTime expireTime;
// final int integral;
try
{
try
{
LoginEntity
?
res
=
await
UserAPI
.
login
({
LoginEntity
?
res
=
await
UserAPI
.
login
({
"smsCode"
:
codeController
.
text
,
"smsCode"
:
codeController
.
text
,
"phone"
:
mobileMemberController
.
text
,
"phone"
:
mobileMemberController
.
text
,
// "id": UserStore.to.profile.id,
// "id": UserStore.to.profile.id,
});
});
Vibrate
.
feedback
(
FeedbackType
.
success
);
EasyLoading
.
showSuccess
(
"登录成功"
);
if
(
res
?.
token
!=
null
)
{
// UserStore.to.handleLogin(res);
EasyLoading
.
showSuccess
(
"登录成功!"
);
// Navigator.of(context).pushNamed('/');
}
else
{
EasyLoading
.
showError
(
"登录失败"
);
}
EasyLoading
.
dismiss
();
EasyLoading
.
dismiss
();
UserStore
.
to
.
handleLogin
(
IntegralEntity
(
id:
res
.
id
,
username:
res
.
username
,
token:
res
.
token
,
expireTime:
res
.
expireTime
,
integral:
res
.
integral
));
// appLogin
}
catch
(
e
)
{
}
catch
(
e
)
{
Vibrate
.
feedback
(
FeedbackType
.
error
);
EasyLoading
.
showError
(
"登录失败"
);
EasyLoading
.
showError
(
"登录失败"
);
EasyLoading
.
dismiss
();
EasyLoading
.
dismiss
();
}
}
// try {
// LoginEntity? res = await UserAPI.login({
// "smsCode": codeController.text,
// "phone": mobileMemberController.text,
// // "id": UserStore.to.profile.id,
// });
// if (res?.token != null) {
// // UserStore.to.handleLogin(res);
// EasyLoading.showSuccess("登录成功!");
// // Navigator.of(context).pushNamed('/');
// } else {
// EasyLoading.showError("登录失败");
// }
// EasyLoading.dismiss();
// } catch (e) {
// EasyLoading.showError("登录失败");
// EasyLoading.dismiss();
// }
// UserLoginRequestEntity params = UserLoginRequestEntity(
// UserLoginRequestEntity params = UserLoginRequestEntity(
// email: emailController.value.text,
// email: emailController.value.text,
...
@@ -232,8 +261,12 @@ class SignInController extends GetxController {
...
@@ -232,8 +261,12 @@ class SignInController extends GetxController {
EasyLoading
.
showSuccess
(
"登录成功"
);
EasyLoading
.
showSuccess
(
"登录成功"
);
EasyLoading
.
dismiss
();
EasyLoading
.
dismiss
();
UserStore
.
to
.
handleLogin
(
UserStore
.
to
.
handleLogin
(
IntegralEntity
(
IntegralEntity
(
id:
res
.
id
,
username:
res
.
username
,
token:
res
.
token
));
id:
res
.
id
,
username:
res
.
username
,
token:
res
.
token
,
expireTime:
res
.
expireTime
,
integral:
res
.
integral
));
// appLogin
// appLogin
}
catch
(
e
)
{
}
catch
(
e
)
{
...
...
lib/pages/frame/sign_in/view.dart
View file @
f0d1c0ef
import
'dart:io'
;
import
'package:chart/common/routers/routes.dart'
;
import
'package:chart/common/routers/routes.dart'
;
import
'package:chart/pages/application/index.dart'
;
import
'package:chart/pages/application/index.dart'
;
import
'package:flutter/gestures.dart'
;
import
'package:flutter/gestures.dart'
;
...
@@ -8,6 +10,7 @@ import 'package:flutter/services.dart';
...
@@ -8,6 +10,7 @@ import 'package:flutter/services.dart';
// import 'package:flutter_icons/flutter_icons.dart';
// import 'package:flutter_icons/flutter_icons.dart';
import
'package:flutter_screenutil/flutter_screenutil.dart'
;
import
'package:flutter_screenutil/flutter_screenutil.dart'
;
import
'package:get/get.dart'
;
import
'package:get/get.dart'
;
import
'package:glassmorphism/glassmorphism.dart'
;
import
'package:social_login_buttons/social_login_buttons.dart'
;
import
'package:social_login_buttons/social_login_buttons.dart'
;
import
'index.dart'
;
import
'index.dart'
;
...
@@ -96,7 +99,35 @@ class SignInPage extends GetView<SignInController> {
...
@@ -96,7 +99,35 @@ class SignInPage extends GetView<SignInController> {
// 登录表单
// 登录表单
Widget
_buildInputForm
()
{
Widget
_buildInputForm
()
{
return
Container
(
return
GlassmorphicContainer
(
height:
280
,
width:
double
.
infinity
,
// flex: 1,
borderRadius:
16
,
padding:
EdgeInsets
.
only
(
bottom:
16
),
blur:
14
,
alignment:
Alignment
.
bottomCenter
,
border:
2
,
linearGradient:
LinearGradient
(
begin:
Alignment
.
topLeft
,
end:
Alignment
.
bottomRight
,
colors:
[
Color
(
0xFF0FFFF
).
withOpacity
(
0.2
),
Color
(
0xFF0FFFF
).
withOpacity
(
0.2
),
],
),
margin:
EdgeInsets
.
only
(
bottom:
16
.
h
),
borderGradient:
LinearGradient
(
begin:
Alignment
.
topLeft
,
end:
Alignment
.
bottomRight
,
colors:
[
Color
(
0xFF0FFFF
).
withOpacity
(
1
),
Color
(
0xFFFFFFF
),
Color
(
0xFF0FFFF
).
withOpacity
(
1
),
],
),
child:
Container
(
width:
295
.
w
,
width:
295
.
w
,
// height: 204,
// height: 204,
margin:
EdgeInsets
.
only
(
top:
49
.
h
),
margin:
EdgeInsets
.
only
(
top:
49
.
h
),
...
@@ -174,38 +205,39 @@ class SignInPage extends GetView<SignInController> {
...
@@ -174,38 +205,39 @@ class SignInPage extends GetView<SignInController> {
// onPressed: () {},
// onPressed: () {},
// ),
// ),
// 注册、登录 横向布局
// 注册、登录 横向布局
//
Container(
Container
(
//
height: 44.h,
height:
44
.
h
,
//
margin: EdgeInsets.only(top: 15.h),
margin:
EdgeInsets
.
only
(
top:
15
.
h
),
//
child: btnFlatButtonWidget(
child:
btnFlatButtonWidget
(
// onPressed: controller.signInWithApple
,
onPressed:
controller
.
handleSignIn
,
//
// controller.handleSignIn,
// controller.handleSignIn,
//
gbColor: AppColors.primaryElement,
gbColor:
AppColors
.
primaryElement
,
//
title: "登录",
title:
"登录"
,
//
),
),
//
),
),
// Spacer(),
// Spacer(),
// Fogot password
// Fogot password
Padding
(
//
Padding(
padding:
EdgeInsets
.
only
(
top:
8.0
),
//
padding: EdgeInsets.only(top: 8.0),
child:
TextButton
(
//
child: TextButton(
onPressed:
controller
.
handleFogotPassword
,
//
onPressed: controller.handleFogotPassword,
child:
Text
(
//
child: Text(
"忘记密码"
,
//
"忘记密码",
textAlign:
TextAlign
.
center
,
//
textAlign: TextAlign.center,
style:
TextStyle
(
//
style: TextStyle(
color:
AppColors
.
secondaryElementText
,
//
color: AppColors.secondaryElementText,
fontFamily:
"Avenir"
,
//
fontFamily: "Avenir",
fontWeight:
FontWeight
.
w400
,
//
fontWeight: FontWeight.w400,
fontSize:
16
.
sp
,
//
fontSize: 16.sp,
height:
1
,
// 设置下行高,否则字体下沉
//
height: 1, // 设置下行高,否则字体下沉
),
//
),
),
//
),
),
//
),
),
//
),
],
],
),
),
),
);
);
}
}
...
@@ -277,7 +309,8 @@ class SignInPage extends GetView<SignInController> {
...
@@ -277,7 +309,8 @@ class SignInPage extends GetView<SignInController> {
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
return
Scaffold
(
resizeToAvoidBottomInset:
false
,
resizeToAvoidBottomInset:
false
,
body:
Container
(
body:
Platform
.
isIOS
?
Container
(
width:
double
.
infinity
,
width:
double
.
infinity
,
height:
double
.
infinity
,
height:
double
.
infinity
,
// ignore: sort_child_properties_last
// ignore: sort_child_properties_last
...
@@ -323,11 +356,12 @@ class SignInPage extends GetView<SignInController> {
...
@@ -323,11 +356,12 @@ class SignInPage extends GetView<SignInController> {
height:
20
,
height:
20
,
),
),
Padding
(
Padding
(
padding:
padding:
EdgeInsets
.
symmetric
(
EdgeInsets
.
symmetric
(
vertical:
20
),
vertical:
20
),
child:
RichText
(
child:
RichText
(
text:
TextSpan
(
text:
TextSpan
(
style:
DefaultTextStyle
.
of
(
context
)
style:
DefaultTextStyle
.
of
(
context
)
.
style
,
.
style
,
children:
[
children:
[
TextSpan
(
TextSpan
(
...
@@ -348,7 +382,8 @@ class SignInPage extends GetView<SignInController> {
...
@@ -348,7 +382,8 @@ class SignInPage extends GetView<SignInController> {
recognizer:
recognizer:
TapGestureRecognizer
()
TapGestureRecognizer
()
..
onTap
=
()
{
..
onTap
=
()
{
Get
.
toNamed
(
AppRoutes
Get
.
toNamed
(
AppRoutes
.
PRIVACT
);
.
PRIVACT
);
},
},
style:
TextStyle
(
style:
TextStyle
(
...
@@ -370,8 +405,9 @@ class SignInPage extends GetView<SignInController> {
...
@@ -370,8 +405,9 @@ class SignInPage extends GetView<SignInController> {
},
},
width:
294
,
width:
294
,
gbColor:
AppColors
.
primaryElement
,
gbColor:
AppColors
.
primaryElement
,
fontColor:
AppColors
.
primaryBackground
,
fontColor:
title:
"同意并继续"
,
AppColors
.
primaryBackground
,
title:
"同意并登录"
,
fontWeight:
FontWeight
.
w500
,
fontWeight:
FontWeight
.
w500
,
fontSize:
16
,
fontSize:
16
,
)
)
...
@@ -389,12 +425,14 @@ class SignInPage extends GetView<SignInController> {
...
@@ -389,12 +425,14 @@ class SignInPage extends GetView<SignInController> {
// controller.signInWithApple
// controller.signInWithApple
},
},
),
),
SizedBox
(
SizedBox
(
height:
20
,
height:
20
,
),
),
SocialLoginButton
(
SocialLoginButton
(
text:
"不登录使用"
,
text:
"不登录使用"
,
buttonType:
SocialLoginButtonType
.
generalLogin
,
buttonType:
SocialLoginButtonType
.
generalLogin
,
backgroundColor:
AppColors
.
thirdElement
,
backgroundColor:
AppColors
.
thirdElement
,
onPressed:
()
async
{
onPressed:
()
async
{
Get
.
back
();
Get
.
back
();
...
@@ -403,6 +441,17 @@ class SignInPage extends GetView<SignInController> {
...
@@ -403,6 +441,17 @@ class SignInPage extends GetView<SignInController> {
// await Get.offAndToNamed(
// await Get.offAndToNamed(
// AppRoutes.Application);
// AppRoutes.Application);
// }),
// }),
// SizedBox(
// height: 20,
// ),
// SocialLoginButton(
// text: "微信登录",
// buttonType:
// SocialLoginButtonType.generalLogin,
// backgroundColor: AppColors.thirdElement,
// onPressed: () async {
// Get.back();
// }),
],
],
)),
)),
),
),
...
@@ -415,17 +464,25 @@ class SignInPage extends GetView<SignInController> {
...
@@ -415,17 +464,25 @@ class SignInPage extends GetView<SignInController> {
image:
Image
.
asset
(
"assets/images/bg2.png"
).
image
,
image:
Image
.
asset
(
"assets/images/bg2.png"
).
image
,
fit:
BoxFit
.
cover
),
fit:
BoxFit
.
cover
),
))
))
:
Container
(
// child: Column(
padding:
EdgeInsets
.
symmetric
(
horizontal:
16
),
// children: <Widget>[
decoration:
BoxDecoration
(
image:
DecorationImage
(
image:
Image
.
asset
(
"assets/images/bg2.png"
).
image
,
fit:
BoxFit
.
cover
),
),
child:
Center
(
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
_buildInputForm
(),
// _buildLogo(),
// _buildLogo(),
// _buildInputForm(),
// _buildInputForm(),
// Spacer(),
// Spacer(),
// _buildThirdPartyLogin(),
// _buildThirdPartyLogin(),
// // _buildSignupButton(),
// _buildSignupButton(),
// ],
],
// ),
)),
));
);
}
}
}
}
lib/pages/main/widgets/swiper.dart
View file @
f0d1c0ef
...
@@ -89,21 +89,10 @@ class SiperBannerWidget extends GetView<MainController> {
...
@@ -89,21 +89,10 @@ class SiperBannerWidget extends GetView<MainController> {
],
],
),
),
height:
70
,
height:
70
,
width:
double
.
infinity
,
width:
Get
.
mediaQuery
.
size
.
width
,
child:
Padding
(
child:
Container
(
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
14
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
16
),
child:
GestureDetector
(
child:
GestureDetector
(
// onTap: () => {
// // Navigator.of(context).pushNamed("/chat",
// // arguments: {"question": message.question})
// // Navigator.push(context, MaterialPageRoute(builder: (context) {
// // return ChatPage();
// // }))
// // Navigator.of(context).pop({'id': "1"})
// // print("${message.question}")
// },
child:
InkWell
(
onTap:
()
{
onTap:
()
{
Vibrate
.
feedback
(
FeedbackType
.
impact
);
Vibrate
.
feedback
(
FeedbackType
.
impact
);
// message.question
// message.question
...
@@ -122,70 +111,82 @@ class SiperBannerWidget extends GetView<MainController> {
...
@@ -122,70 +111,82 @@ class SiperBannerWidget extends GetView<MainController> {
createdAt:
DateTime
.
now
(),
createdAt:
DateTime
.
now
(),
));
));
},
},
child:
Row
(
// child: Expanded(
children:
[
// child: Row(
Container
(
// mainAxisAlignment: MainAxisAlignment.center,
padding:
const
EdgeInsets
.
all
(
14
),
// children: [
decoration:
BoxDecoration
(
// Container(
gradient:
LinearGradient
(
// padding: const EdgeInsets.all(14),
begin:
Alignment
.
topLeft
,
// margin: const EdgeInsets.only(right: 14),
end:
Alignment
.
bottomRight
,
// decoration: BoxDecoration(
colors:
[
// gradient: LinearGradient(
kCategoriesPrimaryColor
[
index
],
// begin: Alignment.topLeft,
kCategoriesSecondryColor
[
index
],
// end: Alignment.bottomRight,
],
// colors: [
),
// kCategoriesPrimaryColor[index],
borderRadius:
BorderRadius
.
circular
(
16
)),
// kCategoriesSecondryColor[index],
child:
const
Icon
(
// ],
Icons
.
headset_mic
,
// ),
size:
20
,
// borderRadius: BorderRadius.circular(16)),
color:
Colors
.
white
,
// child: const Icon(
),
// Icons.headset_mic,
),
// size: 20,
const
SizedBox
(
width:
11
),
// color: Colors.white,
Column
(
// ),
mainAxisAlignment:
MainAxisAlignment
.
center
,
// ),
crossAxisAlignment:
CrossAxisAlignment
.
start
,
// Expanded(
children:
[
// child: Column(
const
SizedBox
(
height:
15
),
// mainAxisAlignment: MainAxisAlignment.center,
Text
(
// crossAxisAlignment: CrossAxisAlignment.start,
message
.
question
,
// children: [
// ignore: prefer_const_constructors
// SizedBox(
style:
TextStyle
(
// height: 10,
fontSize:
14
,
// ),
fontWeight:
FontWeight
.
bold
,
// Expanded(
color:
Colors
.
white
),
// child: Container(
),
// padding: const EdgeInsets.only(right: 10),
const
SizedBox
(
height:
5
),
// child: Text(
Expanded
(
// message.question,
child:
SizedBox
(
// softWrap: true,
width:
200
,
// textAlign: TextAlign.left,
child:
Text
(
// overflow: TextOverflow.ellipsis,
message
.
resp
,
// // ignore: prefer_const_constructors
maxLines:
1
,
// style: TextStyle(
// ignore: prefer_const_constructors
// fontSize: 14,
style:
TextStyle
(
// fontWeight: FontWeight.bold,
fontSize:
14
,
// color: Colors.white),
decoration:
TextDecoration
.
none
,
// ),
color:
Colors
.
white
,
// )),
),
// Expanded(
// child: SizedBox(
overflow:
TextOverflow
.
ellipsis
,
// child: Text(
// message.resp,
// softWrap: true,
// softWrap: true,
// textAlign: TextAlign.left,
// textAlign: TextAlign.left,
// overflow: TextOverflow.ellipsis,
// overflow: TextOverflow.ellipsis,
// maxLines: 1,
// maxLines: 1,
// // ignore: prefer_const_constructors
// style: TextStyle(
// style: TextStyle(
// color: Colors.black.withOpacity(0.48), fontSize: 12),
// fontSize: 14,
)),
// decoration: TextDecoration.none,
),
// color: Colors.white,
],
// ),
),
// // softWrap: true,
],
// // textAlign: TextAlign.left,
),
// // overflow: TextOverflow.ellipsis,
// // maxLines: 1,
// // style: TextStyle(
// // color: Colors.black.withOpacity(0.48), fontSize: 12),
// )),
// ),
// ],
// ),
// )
// ],
// ),
// ),
),
),
)),
)),
),
);
);
}
}
}
}
...
...
lib/pages/user/view.dart
View file @
f0d1c0ef
...
@@ -101,7 +101,7 @@ class UserDetailPage extends GetView<UserDetailController> {
...
@@ -101,7 +101,7 @@ class UserDetailPage extends GetView<UserDetailController> {
height:
1.5
,
height:
1.5
,
fontWeight:
FontWeight
.
bold
),
fontWeight:
FontWeight
.
bold
),
),
),
margin:
EdgeInsets
.
only
(
right:
16
),
//
margin: EdgeInsets.only(right: 16),
)),
)),
Container
(
Container
(
width:
60
,
width:
60
,
...
@@ -116,69 +116,97 @@ class UserDetailPage extends GetView<UserDetailController> {
...
@@ -116,69 +116,97 @@ class UserDetailPage extends GetView<UserDetailController> {
),
),
)
)
]),
]),
Row
(
children:
[
Row
(
Container
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
Obx
(()
=>
Container
(
// width: 80,
// width: 80,
height:
25
,
//
height: 25,
padding:
EdgeInsets
.
symmetric
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
4
),
horizontal:
10
,
vertical:
4
),
margin:
EdgeInsets
.
only
(
top:
16
),
margin:
EdgeInsets
.
only
(
top:
16
),
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
// rgba(233, 234, 244, 1.00)
// rgba(233, 234, 244, 1.00)
color:
Color
.
fromRGBO
(
255
,
255
,
255
,
.
2
),
color:
Color
.
fromRGBO
(
255
,
255
,
255
,
.
2
),
borderRadius:
BorderRadius
.
circular
(
20
),
borderRadius:
BorderRadius
.
circular
(
20
),
// image: DecorationImage(
// image: DecorationImage(
// image: Image.asset("assets/images/vip6.png")
// image: Image.asset("assets/images/vip6.png")
// .image,
// .image,
// fit: BoxFit.contain),
// fit: BoxFit.contain),
),
),
child:
Row
(
children:
[
child:
c
.
profile
.
expireTime
!=
null
?
Row
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
Image
.
asset
(
Image
.
asset
(
"assets/images/jifen.png"
,
"assets/images/jifen.png"
,
fit:
BoxFit
.
cover
,
fit:
BoxFit
.
cover
,
height:
20
,
),
),
Container
(
Text
(
margin:
EdgeInsets
.
only
(
left:
5
),
"会员日期至:
${c.profile.expireTime.year}
-
${c.profile.expireTime.month}
-
${c.profile.expireTime.day}
"
,
child:
Text
(
"100"
,
style:
TextStyle
(
style:
TextStyle
(
color:
color:
Color
.
fromRGBO
(
Color
.
fromRGBO
(
255
,
255
,
255
,
1
)),
255
,
255
,
255
,
1
)),
),
)
)
]),
],
),
)
Container
(
:
Row
(
// width: 80,
mainAxisAlignment:
height:
25
,
MainAxisAlignment
.
center
,
padding:
EdgeInsets
.
symmetric
(
children:
[
horizontal:
10
,
vertical:
4
),
margin:
EdgeInsets
.
only
(
top:
16
,
left:
16
),
decoration:
BoxDecoration
(
// rgba(233, 234, 244, 1.00)
color:
Color
.
fromRGBO
(
255
,
255
,
255
,
.
2
),
borderRadius:
BorderRadius
.
circular
(
20
),
// image: DecorationImage(
// image: Image.asset("assets/images/vip6.png")
// .image,
// fit: BoxFit.contain),
),
child:
Row
(
children:
[
Image
.
asset
(
Image
.
asset
(
"assets/images/jifen1.png"
,
"assets/images/jifen1.png"
,
fit:
BoxFit
.
cover
,
fit:
BoxFit
.
cover
,
height:
20
,
),
),
Container
(
Text
(
margin:
EdgeInsets
.
only
(
left:
5
),
"积分剩余:"
,
child:
Text
(
"300"
,
style:
TextStyle
(
style:
TextStyle
(
color:
color:
Color
.
fromRGBO
(
Color
.
fromRGBO
(
255
,
255
,
255
,
1
)),
255
,
255
,
255
,
1
)),
),
Text
(
"
${c.profile.integral}
"
,
style:
TextStyle
(
color:
Color
.
fromRGBO
(
255
,
255
,
255
,
1
)),
),
),
)
]),
]),
)
)),
// Container(
// // width: 80,
// height: 25,
// padding: EdgeInsets.symmetric(
// horizontal: 10, vertical: 4),
// margin: EdgeInsets.only(top: 16, left: 16),
// decoration: BoxDecoration(
// // rgba(233, 234, 244, 1.00)
// color: Color.fromRGBO(255, 255, 255, .2),
// borderRadius: BorderRadius.circular(20),
// // image: DecorationImage(
// // image: Image.asset("assets/images/vip6.png")
// // .image,
// // fit: BoxFit.contain),
// ),
// child: Row(children: [
// Image.asset(
// "assets/images/jifen1.png",
// fit: BoxFit.cover,
// ),
// Container(
// margin: EdgeInsets.only(left: 5),
// child: Text(
// "300",
// style: TextStyle(
// color:
// Color.fromRGBO(255, 255, 255, 1)),
// ),
// )
// ]),
// )
])
])
],
],
),
),
...
...
pubspec.lock
View file @
f0d1c0ef
...
@@ -438,6 +438,13 @@ packages:
...
@@ -438,6 +438,13 @@ packages:
url: "https://pub.dartlang.org"
url: "https://pub.dartlang.org"
source: hosted
source: hosted
version: "3.2.0"
version: "3.2.0"
flutter_markdown:
dependency: "direct main"
description:
name: flutter_markdown
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.14"
flutter_parsed_text:
flutter_parsed_text:
dependency: transitive
dependency: transitive
description:
description:
...
@@ -686,6 +693,13 @@ packages:
...
@@ -686,6 +693,13 @@ packages:
url: "https://pub.dartlang.org"
url: "https://pub.dartlang.org"
source: hosted
source: hosted
version: "2.0.1"
version: "2.0.1"
markdown:
dependency: transitive
description:
name: markdown
url: "https://pub.dartlang.org"
source: hosted
version: "7.0.1"
matcher:
matcher:
dependency: transitive
dependency: transitive
description:
description:
...
...
pubspec.yaml
View file @
f0d1c0ef
...
@@ -110,6 +110,8 @@ dependencies:
...
@@ -110,6 +110,8 @@ dependencies:
sign_in_with_apple
:
^4.3.0
sign_in_with_apple
:
^4.3.0
flutter_vibrate
:
^1.3.0
flutter_vibrate
:
^1.3.0
social_login_buttons
:
^1.0.7
social_login_buttons
:
^1.0.7
flutter_markdown
:
^0.6.14
# package:bubble/bubble.dart
# package:bubble/bubble.dart
dev_dependencies
:
dev_dependencies
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment