Skip to content

Commit

Permalink
카메라 구조 변경 한번 더 했음 (#74)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlphanoJack authored Aug 17, 2024
2 parents 3eddbe4 + d481ee9 commit e0eaf99
Show file tree
Hide file tree
Showing 20 changed files with 453 additions and 477 deletions.
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import 'dart:io';
import 'package:blueberry_flutter_template/feature/camera/ProfilePreviewScreen.dart';
import 'package:blueberry_flutter_template/utils/AppStrings.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:photo_manager/photo_manager.dart';

import 'MyPageProfileImagePreview.dart';

class ProfileGalleryPage extends ConsumerStatefulWidget {
const ProfileGalleryPage({super.key});
class CameraGalleryScreen extends StatefulWidget {
static const String name = 'CameraGalleryScreen';
const CameraGalleryScreen({super.key});

@override
_ImageGalleryState createState() => _ImageGalleryState();
State<CameraGalleryScreen> createState() => _CameraGalleryPage();
}

class _ImageGalleryState extends ConsumerState<ProfileGalleryPage> {
class _CameraGalleryPage extends State<CameraGalleryScreen> {
final List<AssetEntity> _imageList = [];

int _currentPage = 0;
Expand Down Expand Up @@ -49,7 +49,7 @@ class _ImageGalleryState extends ConsumerState<ProfileGalleryPage> {
});
} else {
SnackBar snackBar = SnackBar(
content: const Text("앨범 접근 권한을 허용 해주세요"),
content: const Text(AppStrings.errorMessage_permissionGallery),
action: SnackBarAction(
label: 'OK',
onPressed: () {
Expand All @@ -63,7 +63,7 @@ class _ImageGalleryState extends ConsumerState<ProfileGalleryPage> {

void _navigateToSharePostScreen(File imageFile) {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => SharePostScreen(imageFile),
builder: (context) => ProfilePreviewScreen(imageFile),
));
}

Expand Down
53 changes: 53 additions & 0 deletions lib/feature/camera/CameraScreen.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import 'package:blueberry_flutter_template/feature/camera/widget/CameraButtonWidget.dart';
import 'package:blueberry_flutter_template/feature/camera/widget/CameraPreviewWidget.dart';
import 'package:blueberry_flutter_template/feature/camera/service/CameraService.dart';
import 'package:blueberry_flutter_template/utils/AppStrings.dart';
import 'package:flutter/material.dart';

class CameraScreen extends StatefulWidget {
static const String name = 'CameraScreen';
const CameraScreen({super.key});

@override
State<CameraScreen> createState() => _ProfileCameraPageState();
}

class _ProfileCameraPageState extends State<CameraScreen> {
final CameraService cameraService = CameraService();

@override
void initState() {
super.initState();
cameraService.initializeCameras();
}

@override
void dispose() {
cameraService.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;

return Scaffold(
appBar: AppBar(
title: const Text(AppStrings.takeProfilePhoto),
),
body: Column(
children: [
CameraPreviewWidget(
cameraService: cameraService,
size: size,
),
Expanded(
child: CameraButtonWidget(
onTap: () => cameraService.attemptTakePhoto(context),
),
),
],
),
);
}
}
61 changes: 0 additions & 61 deletions lib/feature/camera/MyPageProfileImagePreview.dart

This file was deleted.

170 changes: 0 additions & 170 deletions lib/feature/camera/ProfileCameraPage.dart

This file was deleted.

60 changes: 60 additions & 0 deletions lib/feature/camera/ProfilePreviewScreen.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import 'dart:io';
import 'package:blueberry_flutter_template/feature/camera/provider/fireStorageServiceProvider.dart';
import 'package:blueberry_flutter_template/feature/camera/widget/CircularProfileImagePreviewWidget.dart';
import 'package:blueberry_flutter_template/feature/mypage/MyPageScreen.dart';
import 'package:blueberry_flutter_template/utils/AppStrings.dart';
import 'package:blueberry_flutter_template/utils/Talker.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import '../../services/FirebaseStoreServiceProvider.dart';

class ProfilePreviewScreen extends ConsumerWidget {
final File imageFile;

const ProfilePreviewScreen(this.imageFile, {super.key});

@override
Widget build(BuildContext context, WidgetRef ref) {
final storage = ref.read(fireStorageServiceProvider);
final fireStorage = ref.read(firebaseStoreServiceProvider);
final userId = FirebaseAuth.instance.currentUser!.uid;

return Scaffold(
appBar: AppBar(
title: const Text(AppStrings.previewProfilePhoto),
),
body: Center(
child: Column(
children: [
CircularProfileImagePreviewWidget(imageFile: imageFile),
makeProfileImageBtn(storage, userId, fireStorage, context),
],
),
),
);
}

TextButton makeProfileImageBtn(FirebaseStorageService storage, String userId,
FirestoreService fireStorage, BuildContext context) {
return TextButton(
onPressed: () async {
try {
final imageUrl = await storage.uploadImageFromApp(
imageFile, ImageType.profileimage,
fixedFileName: userId);

// 프로필 이미지 생성
fireStorage.createProfileIamge(userId, imageUrl);

// 페이지 이동
context.goNamed(MyPageScreen.name);
} catch (e) {
talker.error('이미지 저장에 실패했습니다. 다시 시도해주세요.');
}
},
child: const Text(AppStrings.savePhoto),
);
}
}
Loading

0 comments on commit e0eaf99

Please sign in to comment.