Skip to content

Commit

Permalink
Merge branch 'dev' into feat/cached-network-image
Browse files Browse the repository at this point in the history
  • Loading branch information
hoogom88 authored May 21, 2024
2 parents e6922e6 + 7b4c3ca commit 0371550
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 160 deletions.
10 changes: 0 additions & 10 deletions lib/core/go_router/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import 'package:weaco/presentation/my_page/screen/my_page_screen.dart';
import 'package:weaco/presentation/my_page/view_model/my_page_view_model.dart';
import 'package:weaco/presentation/ootd_feed/screen/ootd_feed_screen.dart';
import 'package:weaco/presentation/ootd_feed/view_model/ootd_feed_view_model.dart';
import 'package:weaco/presentation/ootd_post/screen/camera_screen.dart';
import 'package:weaco/presentation/ootd_post/view_model/ootd_post_view_model.dart';
import 'package:weaco/presentation/ootd_post/view_model/picutre_crop_view_model.dart';
import 'package:weaco/presentation/home/screen/home_screen.dart';
Expand Down Expand Up @@ -140,15 +139,6 @@ final router = GoRouter(
);
},
),
GoRoute(
path: RouterPath.camera.path,
builder: (context, state) {
return ChangeNotifierProvider(
create: (_) => CameraViewModel(),
child: const CameraScreen(),
);
},
),
GoRoute(
path: RouterPath.pictureCrop.path,
builder: (context, state) {
Expand Down
22 changes: 13 additions & 9 deletions lib/presentation/main/screen/main_screen.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'dart:io';

import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart';
Expand Down Expand Up @@ -232,13 +232,18 @@ class _MainScreenState extends State<MainScreen> with TickerProviderStateMixin {
required CameraViewModel viewModel,
required ImageSource imageSource,
required BuildContext context,
}) {
viewModel.pickImage(
imageSource: imageSource,
callback: (result) {
if (result) {
}) async {
await viewModel.pickImage(imageSource: imageSource);
switch (viewModel.status) {
case CameraImageStatus.idle:
log('이미지 선택 없음', name: 'MainScreen._onPressedButton()');
case CameraImageStatus.success:
if (context.mounted) {
RouterStatic.goToPictureCrop(context, viewModel.imageFile!.path);
} else {
}

case CameraImageStatus.error:
if (context.mounted) {
showDialog(
context: context,
builder: (context) {
Expand All @@ -263,8 +268,7 @@ class _MainScreenState extends State<MainScreen> with TickerProviderStateMixin {
},
);
}
},
);
}
}

void _toggleFloatingActionButton() {
Expand Down
111 changes: 0 additions & 111 deletions lib/presentation/ootd_post/screen/camera_screen.dart

This file was deleted.

52 changes: 29 additions & 23 deletions lib/presentation/ootd_post/screen/ootd_post_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -216,30 +216,36 @@ class _OotdPostScreenState extends State<OotdPostScreen> {
),
actions: [
TextButton(
onPressed: () async {
if (widget.feed != null) {
await viewModel.editFeed(
widget.feed!, _contentTextController.text);
} else {
await viewModel.saveFeed(_email, _contentTextController.text);
}
onPressed: viewModel.showSpinner
? null
: () async {
if (widget.feed != null) {
await viewModel.editFeed(
widget.feed!, _contentTextController.text);
} else {
await viewModel.saveFeed(
_email, _contentTextController.text);
}

if (mounted) {
if (viewModel.saveStatus) {
RouterStatic.goToDefault(context);
} else {
AlertUtil.showAlert(
context: context,
exceptionAlert: ExceptionAlert.snackBar,
message: '다시 시도해 주세요.',
);
}
}
},
child: Text(
widget.feed != null ? '수정' : '저장',
style: const TextStyle(color: Color(0xFFFC8800), fontSize: 18),
),
if (mounted) {
if (viewModel.saveStatus) {
RouterStatic.goToDefault(context);
} else {
AlertUtil.showAlert(
context: context,
exceptionAlert: ExceptionAlert.snackBar,
message: '다시 시도해 주세요.',
);
}
}
},
child: viewModel.showSpinner
? const Center(child: CircularProgressIndicator())
: Text(
widget.feed != null ? '수정' : '저장',
style:
const TextStyle(color: Color(0xFFFC8800), fontSize: 18),
),
),
],
);
Expand Down
25 changes: 18 additions & 7 deletions lib/presentation/ootd_post/view_model/camera_view_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,29 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:image_picker/image_picker.dart';

enum CameraImageStatus {
idle,
success,
error;

bool get isIdle => this == CameraImageStatus.idle;

bool get isSuccess => this == CameraImageStatus.success;

bool get isError => this == CameraImageStatus.error;
}

class CameraViewModel with ChangeNotifier {
XFile? _imageFile;
CameraImageStatus _status = CameraImageStatus.idle;

XFile? get imageFile => _imageFile;

CameraImageStatus get status => _status;

/// 카메라 또는 사진첩에서 이미지 선택
void pickImage({
Future<void> pickImage({
required ImageSource imageSource,
required Function(bool) callback,
}) async {
final ImagePicker picker = ImagePicker();

Expand All @@ -19,14 +33,11 @@ class CameraViewModel with ChangeNotifier {

if (pickedFile != null) {
_imageFile = pickedFile;
} else {
debugPrint('이미지 선택 안 함');
_status = CameraImageStatus.success;
}
callback(true);
} on PlatformException {
callback(false);
_status = CameraImageStatus.error;
}

notifyListeners();
}
}
12 changes: 12 additions & 0 deletions lib/presentation/ootd_post/view_model/ootd_post_view_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ class OotdPostViewModel with ChangeNotifier {
}

Future<void> saveFeed(String email, String description) async {
_showSpinner = true;
notifyListeners();

final now = DateTime.now();
final Feed feed = Feed(
id: null,
Expand All @@ -76,9 +79,15 @@ class OotdPostViewModel with ChangeNotifier {
);

_saveStatus = await _saveEditFeedUseCase.execute(feed: feed);

_showSpinner = false;
notifyListeners();
}

Future<void> editFeed(Feed feed, String description) async {
_showSpinner = true;
notifyListeners();

final editedFeed = Feed(
id: feed.id,
imagePath: feed.imagePath,
Expand All @@ -91,6 +100,9 @@ class OotdPostViewModel with ChangeNotifier {
);

_saveStatus = await _saveEditFeedUseCase.execute(feed: editedFeed);

_showSpinner = false;
notifyListeners();
}

Future<void> getOriginImage() async {
Expand Down

0 comments on commit 0371550

Please sign in to comment.