Commit 6cfc527e by tanghuan

账号与安全中增加学生信息

1 parent c3934af4
...@@ -244,6 +244,9 @@ class LoginMainCubit extends Cubit<LoginMainState> { ...@@ -244,6 +244,9 @@ class LoginMainCubit extends Cubit<LoginMainState> {
var classCode = ''; var classCode = '';
var userType = 0; var userType = 0;
var stuId = ''; var stuId = '';
var className = '';
var stuName = '';
var relation = '';
var sharedPreferences = getIt.get<SharedPreferences>(); var sharedPreferences = getIt.get<SharedPreferences>();
...@@ -252,6 +255,9 @@ class LoginMainCubit extends Cubit<LoginMainState> { ...@@ -252,6 +255,9 @@ class LoginMainCubit extends Cubit<LoginMainState> {
classCode = role['classCode']; classCode = role['classCode'];
userType = role['userType']; userType = role['userType'];
stuId = role['stuId']; stuId = role['stuId'];
className = role['className'];
stuName = role['stuName'];
relation = role['relation'] ?? '';
List<String> classIdList = []; List<String> classIdList = [];
for (var role in roles) { for (var role in roles) {
...@@ -295,6 +301,9 @@ class LoginMainCubit extends Cubit<LoginMainState> { ...@@ -295,6 +301,9 @@ class LoginMainCubit extends Cubit<LoginMainState> {
sharedPreferences.setString('auth_classCode', classCode); sharedPreferences.setString('auth_classCode', classCode);
sharedPreferences.setInt('auth_userType', userType); sharedPreferences.setInt('auth_userType', userType);
sharedPreferences.setString('auth_stuId', stuId); sharedPreferences.setString('auth_stuId', stuId);
sharedPreferences.setString('auth_className', className);
sharedPreferences.setString('auth_stuName', stuName);
sharedPreferences.setString('auth_relation', relation);
debugPrint('loginType: ${state.loginType} appleUid: ${state.appleUserIdentifier}'); debugPrint('loginType: ${state.loginType} appleUid: ${state.appleUserIdentifier}');
// 针对 Apple 登录 // 针对 Apple 登录
......
...@@ -157,6 +157,9 @@ class LoginPhoneCubit extends Cubit<LoginPhoneState> { ...@@ -157,6 +157,9 @@ class LoginPhoneCubit extends Cubit<LoginPhoneState> {
var classCode = ''; var classCode = '';
var userType = 0; var userType = 0;
var stuId = ''; var stuId = '';
var className = '';
var stuName = '';
var relation = '';
var sharedPreferences = getIt.get<SharedPreferences>(); var sharedPreferences = getIt.get<SharedPreferences>();
...@@ -165,6 +168,9 @@ class LoginPhoneCubit extends Cubit<LoginPhoneState> { ...@@ -165,6 +168,9 @@ class LoginPhoneCubit extends Cubit<LoginPhoneState> {
classCode = role['classCode']; classCode = role['classCode'];
userType = role['userType']; userType = role['userType'];
stuId = role['stuId']; stuId = role['stuId'];
className = role['className'];
stuName = role['stuName'];
relation = role['relation'] ?? '';
// 将角色中的班级数据处理后,进行缓存 // 将角色中的班级数据处理后,进行缓存
List<String> classIdList = []; List<String> classIdList = [];
...@@ -211,6 +217,9 @@ class LoginPhoneCubit extends Cubit<LoginPhoneState> { ...@@ -211,6 +217,9 @@ class LoginPhoneCubit extends Cubit<LoginPhoneState> {
sharedPreferences.setString('auth_classCode', classCode); sharedPreferences.setString('auth_classCode', classCode);
sharedPreferences.setInt('auth_userType', userType); sharedPreferences.setInt('auth_userType', userType);
sharedPreferences.setString('auth_stuId', stuId); sharedPreferences.setString('auth_stuId', stuId);
sharedPreferences.setString('auth_className', className);
sharedPreferences.setString('auth_stuName', stuName);
sharedPreferences.setString('auth_relation', relation);
router.go( router.go(
'/web', '/web',
......
...@@ -150,15 +150,26 @@ class LoginQrCubit extends Cubit<LoginQrState> { ...@@ -150,15 +150,26 @@ class LoginQrCubit extends Cubit<LoginQrState> {
} }
var data = resultData['data'] as Map<String, dynamic>; var data = resultData['data'] as Map<String, dynamic>;
_handleLoginSuccess(data);
}
void _handleLoginSuccess(Map<String, dynamic> data) {
var roles = data['roles']; var roles = data['roles'];
// 过滤出家长角色的数据 // 过滤出家长角色的数据
if (roles?.isNotEmpty ?? false) {
roles.removeWhere((element) => element['userType'] != 2); roles.removeWhere((element) => element['userType'] != 2);
} else {
roles = [];
}
var sessionCode = data['sessionCode']; var sessionCode = data['sessionCode'];
var userCode = data['userCode']; var userCode = data['userCode'];
var classCode = ''; var classCode = '';
var userType = 0; var userType = 0;
var stuId = ''; var stuId = '';
var className = '';
var stuName = '';
var relation = '';
var sharedPreferences = getIt.get<SharedPreferences>(); var sharedPreferences = getIt.get<SharedPreferences>();
...@@ -167,6 +178,9 @@ class LoginQrCubit extends Cubit<LoginQrState> { ...@@ -167,6 +178,9 @@ class LoginQrCubit extends Cubit<LoginQrState> {
classCode = role['classCode']; classCode = role['classCode'];
userType = role['userType']; userType = role['userType'];
stuId = role['stuId']; stuId = role['stuId'];
className = role['className'];
stuName = role['stuName'];
relation = role['relation'];
// 将角色中的班级数据处理后,进行缓存 // 将角色中的班级数据处理后,进行缓存
List<String> classIdList = []; List<String> classIdList = [];
...@@ -213,6 +227,9 @@ class LoginQrCubit extends Cubit<LoginQrState> { ...@@ -213,6 +227,9 @@ class LoginQrCubit extends Cubit<LoginQrState> {
sharedPreferences.setString('auth_classCode', classCode); sharedPreferences.setString('auth_classCode', classCode);
sharedPreferences.setInt('auth_userType', userType); sharedPreferences.setInt('auth_userType', userType);
sharedPreferences.setString('auth_stuId', stuId); sharedPreferences.setString('auth_stuId', stuId);
sharedPreferences.setString('auth_className', className);
sharedPreferences.setString('auth_stuName', stuName);
sharedPreferences.setString('auth_relation', relation);
router.go( router.go(
'/web', '/web',
......
...@@ -12,12 +12,18 @@ class AccountState extends Equatable { ...@@ -12,12 +12,18 @@ class AccountState extends Equatable {
final String nickname; final String nickname;
final String imgIcon; final String imgIcon;
final String className;
final String stuName;
const AccountState({ const AccountState({
this.loaded = false, this.loaded = false,
this.name = '', this.name = '',
this.phone = '', this.phone = '',
this.nickname = '', this.nickname = '',
this.imgIcon = '', this.imgIcon = '',
this.className = '',
this.stuName = '',
}); });
AccountState copyWith({ AccountState copyWith({
...@@ -26,6 +32,8 @@ class AccountState extends Equatable { ...@@ -26,6 +32,8 @@ class AccountState extends Equatable {
String? phone, String? phone,
String? nickname, String? nickname,
String? imgIcon, String? imgIcon,
String? className,
String? stuName,
}) { }) {
return AccountState( return AccountState(
loaded: loaded ?? this.loaded, loaded: loaded ?? this.loaded,
...@@ -33,6 +41,8 @@ class AccountState extends Equatable { ...@@ -33,6 +41,8 @@ class AccountState extends Equatable {
phone: phone ?? this.phone, phone: phone ?? this.phone,
nickname: nickname ?? this.nickname, nickname: nickname ?? this.nickname,
imgIcon: imgIcon ?? this.imgIcon, imgIcon: imgIcon ?? this.imgIcon,
className: className ?? this.className,
stuName: stuName ?? this.stuName,
); );
} }
...@@ -43,6 +53,8 @@ class AccountState extends Equatable { ...@@ -43,6 +53,8 @@ class AccountState extends Equatable {
phone, phone,
nickname, nickname,
imgIcon, imgIcon,
className,
stuName,
]; ];
} }
...@@ -57,6 +69,8 @@ class AccountCubit extends Cubit<AccountState> { ...@@ -57,6 +69,8 @@ class AccountCubit extends Cubit<AccountState> {
Future<void> init() async { Future<void> init() async {
var sharedPreferences = getIt.get<SharedPreferences>(); var sharedPreferences = getIt.get<SharedPreferences>();
var userCode = sharedPreferences.getString('auth_userCode') ?? ''; var userCode = sharedPreferences.getString('auth_userCode') ?? '';
var className = sharedPreferences.getString('auth_className') ?? '';
var stuName = sharedPreferences.getString('auth_stuName') ?? '';
try { try {
var result = await _phoneAuthRepository.bindCheck(userCode); var result = await _phoneAuthRepository.bindCheck(userCode);
var code = result['code']; var code = result['code'];
...@@ -72,6 +86,8 @@ class AccountCubit extends Cubit<AccountState> { ...@@ -72,6 +86,8 @@ class AccountCubit extends Cubit<AccountState> {
phone: data['phone'], phone: data['phone'],
nickname: data['nickname'], nickname: data['nickname'],
imgIcon: data['imgIcon'], imgIcon: data['imgIcon'],
className: className,
stuName: stuName,
), ),
); );
} catch (e) { } catch (e) {
......
...@@ -13,12 +13,18 @@ class RoleInfoHandler extends MessageHandler { ...@@ -13,12 +13,18 @@ class RoleInfoHandler extends MessageHandler {
final String classCode = params['classCode'] as String; final String classCode = params['classCode'] as String;
final int userType = params['userType'] as int; final int userType = params['userType'] as int;
final String stuId = params['stuId'] as String ?? ''; final String stuId = params['stuId'] as String ?? '';
final String className = params['className'] as String ?? '';
final String stuName = params['stuName'] as String ?? '';
final String relation = params['relation'] as String ?? '';
var sharedPreferences = getIt.get<SharedPreferences>(); var sharedPreferences = getIt.get<SharedPreferences>();
sharedPreferences.setString('auth_userCode', userId); sharedPreferences.setString('auth_userCode', userId);
sharedPreferences.setString('auth_classCode', classCode); sharedPreferences.setString('auth_classCode', classCode);
sharedPreferences.setInt('auth_userType', userType); sharedPreferences.setInt('auth_userType', userType);
sharedPreferences.setString('auth_stuId', stuId); sharedPreferences.setString('auth_stuId', stuId);
sharedPreferences.setString('auth_className', className);
sharedPreferences.setString('auth_stuName', stuName);
sharedPreferences.setString('auth_relation', relation);
sharedPreferences.setString('pre_userCode', userId); sharedPreferences.setString('pre_userCode', userId);
sharedPreferences.setString('pre_classCode', classCode); sharedPreferences.setString('pre_classCode', classCode);
......
...@@ -11,6 +11,41 @@ class AccountPage extends StatelessWidget { ...@@ -11,6 +11,41 @@ class AccountPage extends StatelessWidget {
create: (context) => AccountCubit(AccountState()), create: (context) => AccountCubit(AccountState()),
child: BlocConsumer<AccountCubit, AccountState>( child: BlocConsumer<AccountCubit, AccountState>(
builder: (context, state) { builder: (context, state) {
var childInfoTable = (state.className.isNotEmpty && state.stuName.isNotEmpty)
? [
SizedBox(height: 24.0),
Align(
alignment: Alignment.centerLeft,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 4.0),
child: Text(
'孩子信息',
style: TextStyle(
fontSize: 12.0,
color: Colors.black87,
),
),
),
),
SizedBox(height: 8.0),
Container(
margin: EdgeInsets.symmetric(horizontal: 4.0),
decoration: BoxDecoration(
color: Color(0xFFF7F9FF),
borderRadius: BorderRadius.circular(8.0),
border: Border.all(color: Color(0xFFE0E6F7), width: 1),
),
child: Column(
children: [
_buildInfoRow('班级', state.className, Icons.school),
Divider(height: 1, color: Color(0xFFE0E6F7)),
_buildInfoRow('学生', state.stuName, Icons.person),
],
),
),
]
: [];
return Scaffold( return Scaffold(
backgroundColor: Colors.white, backgroundColor: Colors.white,
appBar: AppBar( appBar: AppBar(
...@@ -45,6 +80,7 @@ class AccountPage extends StatelessWidget { ...@@ -45,6 +80,7 @@ class AccountPage extends StatelessWidget {
state.nickname, state.nickname,
style: TextStyle(fontSize: 12.0), style: TextStyle(fontSize: 12.0),
), ),
...childInfoTable,
], ],
), ),
), ),
...@@ -189,4 +225,40 @@ class AccountPage extends StatelessWidget { ...@@ -189,4 +225,40 @@ class AccountPage extends StatelessWidget {
), ),
); );
} }
Widget _buildInfoRow(String label, String value, IconData icon) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 12.0),
child: Row(
children: [
Icon(
icon,
size: 18.0,
color: Color(0xFF7691FA),
),
SizedBox(width: 8.0),
SizedBox(
width: 60,
child: Text(
label,
style: TextStyle(
fontSize: 14.0,
color: Colors.grey[600],
fontWeight: FontWeight.w500,
),
),
),
Expanded(
child: Text(
value,
style: TextStyle(
fontSize: 14.0,
color: Colors.black87,
),
),
),
],
),
);
}
} }
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!