image cropper added

This commit is contained in:
MohammadTaha Basiri 2022-01-29 14:04:30 +03:30
parent 4fedb89cc0
commit 7d2ee16c42
1 changed files with 23 additions and 14 deletions

View File

@ -1,11 +1,10 @@
import 'dart:io';
import 'package:didvan/config/theme_data.dart'; import 'package:didvan/config/theme_data.dart';
import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/constants/app_icons.dart';
import 'package:didvan/models/enums.dart'; import 'package:didvan/models/enums.dart';
import 'package:didvan/models/view/alert_data.dart'; import 'package:didvan/models/view/alert_data.dart';
import 'package:didvan/pages/home/settings/widgets/menu_item.dart'; import 'package:didvan/pages/home/widgets/menu_item.dart';
import 'package:didvan/providers/user_provider.dart'; import 'package:didvan/providers/user_provider.dart';
import 'package:didvan/routes/routes.dart';
import 'package:didvan/services/media/media.dart'; import 'package:didvan/services/media/media.dart';
import 'package:didvan/utils/action_sheet.dart'; import 'package:didvan/utils/action_sheet.dart';
import 'package:didvan/widgets/didvan/card.dart'; import 'package:didvan/widgets/didvan/card.dart';
@ -24,8 +23,6 @@ class ProfilePhoto extends StatefulWidget {
} }
class _ProfilePhotoState extends State<ProfilePhoto> { class _ProfilePhotoState extends State<ProfilePhoto> {
File? profileImage;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final userProvider = context.watch<UserProvider>(); final userProvider = context.watch<UserProvider>();
@ -50,6 +47,7 @@ class _ProfilePhotoState extends State<ProfilePhoto> {
), ),
if (userProvider.user.photo != null) if (userProvider.user.photo != null)
SkeletonImage( SkeletonImage(
key: GlobalKey(debugLabel: userProvider.user.photo),
imageUrl: userProvider.user.photo!, imageUrl: userProvider.user.photo!,
width: 96, width: 96,
height: 96, height: 96,
@ -113,15 +111,26 @@ class _ProfilePhotoState extends State<ProfilePhoto> {
ActionSheetUtils.pop(); ActionSheetUtils.pop();
final pickedFile = await MediaService.pickImage(source: source); final pickedFile = await MediaService.pickImage(source: source);
if (pickedFile != null) { if (pickedFile != null) {
final state = context.read<UserProvider>(); ActionSheetUtils.showLogoLoadingIndicator();
final result = await state.setProfilePhoto(pickedFile); final bytes = await pickedFile.readAsBytes();
ActionSheetUtils.showAlert( ActionSheetUtils.pop();
AlertData( Navigator.of(context).pushNamed(
message: result Routes.imageCropper,
? 'تصویر پروفایل بارگذاری شد.' arguments: {
: 'بارگذاری تصویر موفقیت آمیز نبود.', 'bytes': bytes,
aLertType: result ? ALertType.success : ALertType.error, 'onCropped': () async {
), final state = context.read<UserProvider>();
final result = await state.setProfilePhoto(pickedFile);
ActionSheetUtils.showAlert(
AlertData(
message: result
? 'تصویر پروفایل بارگذاری شد.'
: 'بارگذاری تصویر موفقیت آمیز نبود.',
aLertType: result ? ALertType.success : ALertType.error,
),
);
}
},
); );
} }
} }