From 0d0f63cf2864ccab68e5ab996c0451979da33e59 Mon Sep 17 00:00:00 2001 From: Tuan Anh Nguyen <tuanguye@redhat.com> Date: Mon, 22 May 2023 18:25:39 +0200 Subject: [PATCH] feat: add image cropping --- lib/pages/create_front/select_image.dart | 53 ++++++++++++++++-------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/lib/pages/create_front/select_image.dart b/lib/pages/create_front/select_image.dart index 1074e27..e7c0e69 100644 --- a/lib/pages/create_front/select_image.dart +++ b/lib/pages/create_front/select_image.dart @@ -12,10 +12,22 @@ class SelectImage extends StatelessWidget { final createPostcardNotifier = context.watch<CreatePostcardNotifier>(); return PageTemplate( - title: 'Select a Picture', + title: 'Create a Postcard', actions: [ - // TODO: next action - IconButton(onPressed: () {}, icon: Icon(Icons.navigate_next)), + IconButton( + onPressed: () { + Navigator.of(context).push( + MaterialPageRoute( + // TODO: use create postcard back page + builder: (context) => PageTemplate( + title: 'Create a Postcard', + child: Placeholder(), + ), + ), + ); + }, + icon: Icon(Icons.navigate_next), + ), ], child: Align( alignment: Alignment.bottomCenter, @@ -24,30 +36,37 @@ class SelectImage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Spacer(), - createPostcardNotifier.selectedPicture == null + createPostcardNotifier.selectedImage == null ? Text('No Image Selected') : Image.file( - createPostcardNotifier.selectedPicture!, + createPostcardNotifier.selectedImage!, width: double.infinity, ), Spacer(), - ElevatedButton.icon( - onPressed: () => createPostcardNotifier.pickImage( - ImageSource.gallery, - ), - icon: Icon(Icons.photo_library), - label: Text('Pick Image from Gallery'), + _buildPickImageButton( + createPostcardNotifier, + source: ImageSource.gallery, ), - ElevatedButton.icon( - onPressed: () => createPostcardNotifier.pickImage( - ImageSource.camera, - ), - icon: Icon(Icons.camera), - label: Text('Take a Picture'), + _buildPickImageButton( + createPostcardNotifier, + source: ImageSource.camera, ), ], ), ), ); } + + ElevatedButton _buildPickImageButton( + CreatePostcardNotifier createPostcardNotifier, { + required ImageSource source, + }) { + return ElevatedButton.icon( + onPressed: () => createPostcardNotifier.pickImage(source), + icon: Icon(Icons.photo_library), + label: Text(source == ImageSource.gallery + ? 'Pick Image from Gallery' + : 'Take Image from Camera'), + ); + } } -- GitLab