123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- import 'dart:convert';
- import 'dart:io';
- import 'package:file_picker/file_picker.dart';
- import 'package:fis_common/index.dart';
- import 'package:get/get.dart';
- import 'package:vitalapp/architecture/defines.dart';
- import 'package:vitalapp/architecture/storage/storage.dart';
- import 'package:vitalapp/architecture/utils/prompt_box.dart';
- import 'package:vitalapp/managers/interfaces/account.dart';
- import 'package:vitalapp/managers/interfaces/doctor.dart';
- import 'package:vitalapp/pages/home/personal_center/state.dart';
- import 'package:vitalapp/rpc.dart';
- import 'package:vitalapp/store/store.dart';
- import 'package:fis_common/helpers/encrypt.dart';
- import 'package:universal_html/html.dart' as html;
- class PersonalCenterController extends FControllerBase {
- final state = PersonalCenterState();
- final _accountManager = Get.find<IAccountManager>();
- @override
- void onReady() {
- super.onReady();
- _loadData();
- _updateSignature(Store.user.signature);
- }
- void _loadData() async {
- var result = await _accountManager.getUserDetailAsync();
- if (result != null) {
- state.updateDto(result);
- }
- }
- /// 重新签名
- Future<void> rewrite() async {
- final result = await Get.toNamed("/contract/signature");
- if (result != null) {
- final saved = await Get.find<IDoctorManager>().setSignature(result);
- if (saved) {
- _updateSignature(result);
- } else {
- PromptBox.toast("设置签名失败");
- }
- }
- }
- void _updateSignature(String value) {
- state.signaturUrl = value;
- }
- Future<bool> updateUserInfo() async {
- state.dto.realName = state.name;
- state.dto.phone = state.phone;
- state.dto.headImageToken = state.headImageToken;
- final result = await _accountManager.updateUserAsync(state.dto);
- return result;
- }
- Future<void> setPassword() async {
- final oldPassword = await _accountManager.getUserPasswordDetailAsync();
- var oldPasswordEncrypt = FEncryptHelper.symmetryEncrypt(state.oldPassword);
- if (state.oldPassword.isEmpty) {
- PromptBox.toast("原密码不能为空!");
- return;
- }
- if (state.newPassword.isEmpty) {
- PromptBox.toast("新密码不能为空!");
- return;
- }
- if (state.confirmPassword.isEmpty) {
- PromptBox.toast("确认密码密码不能为空!");
- return;
- }
- if (oldPassword != oldPasswordEncrypt) {
- PromptBox.toast("原密码输入错误!");
- return;
- }
- if (state.newPassword != state.confirmPassword) {
- PromptBox.toast("密码输入不一致!");
- return;
- }
- var newPassword = FEncryptHelper.symmetryEncrypt(state.newPassword);
- if (oldPasswordEncrypt == newPassword) {
- PromptBox.toast('新密码不能与旧密码相同!');
- return;
- }
- final result = await _accountManager.updateUserPasswordAsync(newPassword);
- if (result) {
- PromptBox.toast("密码更新成功!");
- }
- }
- Future<void> clear() async {
- final saved = await Get.find<IDoctorManager>().setSignature('');
- if (saved) {
- state.signaturUrl = null;
- PromptBox.toast("更新成功!");
- }
- }
- Future<void> chooseImage() async {
- final files = await FilePicker.platform.pickFiles(type: FileType.image);
- if (files != null && files.files.first.bytes != null) {
- // 这里获取到的是一个File对象,你可以根据需要进行处理
- // 例如,将文件路径传递给Image组件进行显示
- var imageBytes = files.files.first.bytes!;
- // 接下来,你可以将imagePath传递给Image组件
- // if (kIsWeb) {
- print(imageBytes);
- String base64String = base64Encode(imageBytes);
- final file = convertBase64ToFile(base64String);
- var result = await rpc.storage.webUpload(file!);
- if (result != null) {
- final saved = await Get.find<IDoctorManager>().setSignature(result);
- if (saved) {
- _updateSignature(result);
- } else {
- PromptBox.toast("设置签名失败");
- }
- }
- // }
- }
- }
- Future<String> imageToBase64(String imagePath) async {
- final file = File(imagePath);
- List<int> imageBytes = await file.readAsBytes();
- String base64String = base64Encode(imageBytes);
- return base64String;
- }
- html.File? convertBase64ToFile(String base64Image) {
- try {
- final bytes = base64Decode(base64Image);
- const mimeType = 'image/jpeg'; // 替换为您的图片类型
- final blob = html.Blob([bytes], mimeType);
- final file = html.File([blob], 'image.jpg'); // 替换为您的文件名
- return file;
- } catch (e) {
- print('Error converting base64 to File: $e');
- return null;
- }
- }
- }
|