Skip to content

Commit

Permalink
린트 추가 (#51)
Browse files Browse the repository at this point in the history
* add lint

* add lint

* git ignore
  • Loading branch information
jwson-automation authored Jul 21, 2024
1 parent f985e37 commit b956831
Show file tree
Hide file tree
Showing 33 changed files with 267 additions and 250 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,6 @@ lib/firebase_options.dart

# Ignore metadata
.metadata

# vscode
.vscode/launch.json
34 changes: 0 additions & 34 deletions .vscode/launch.json

This file was deleted.

25 changes: 25 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"dart.analysisExcludedFolders": [
"build"
],
"dart.lineLength": 80,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": true
},
"[dart]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "Dart-Code.dart-code"
},
"files.exclude": {
"**/build": true,
"**/.dart_tool": true,
"**/ios/Flutter/Flutter.framework": true,
"**/ios/Flutter/Flutter.podspec": true,
"**/ios/Flutter/Flutter.xcworkspace": true,
"**/ios/Pods": true,
"**/ios/Runner.xcodeproj": true,
"**/ios/Runner.xcworkspace": true,
"**/.packages": true
}
}
31 changes: 31 additions & 0 deletions lib/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
include: package:flutter_lints/flutter.yaml # 기본 flutter_lints 규칙 포함

linter:
rules:
avoid_print: true # print() 함수 사용을 피함
avoid_unused_constructor_parameters: true # 사용되지 않는 생성자 매개변수를 피함
camel_case_types: true # 타입 이름을 camelCase로 작성
constant_identifier_names: true # 상수 식별자를 대문자로 작성
control_flow_in_finally: true # finally 블록에서 제어 흐름을 사용하지 않음
curly_braces_in_flow_control_structures: true # 제어 구조에서 중괄호 사용
diagnostic_describe_all_properties: true # 진단 메시지에서 모든 속성 설명
directives_ordering: true # import 및 export 지시문의 순서 정렬
empty_constructor_bodies: true # 비어 있는 생성자 본문 피함
file_names: true # 파일 이름을 snake_case로 작성
library_prefixes: true # 라이브러리 접두사 사용
lines_longer_than_80_chars: true # 80자를 초과하는 줄 피함
list_remove_unrelated_type: true # List에서 관련 없는 타입 제거
no_logic_in_create_state: true # createState에서 로직 사용하지 않음
non_constant_identifier_names: true # 식별자를 camelCase로 작성
prefer_const_constructors: true # const 생성자 선호
prefer_final_fields: true # final 필드 사용 선호
prefer_is_empty: true # isEmpty 사용 선호
prefer_is_not_empty: true # isNotEmpty 사용 선호
prefer_typing_uninitialized_variables: true # 초기화되지 않은 변수에 타입 지정
public_member_api_docs: true # 공개 멤버에 대한 문서 작성
slash_for_doc_comments: true # 문서 주석에 슬래시 사용
sort_child_properties_last: true # 자식 속성을 마지막에 정렬
unnecessary_brace_in_string_interps: true # 문자열 보간에서 불필요한 중괄호 사용 피함
unnecessary_const: true # 불필요한 const 사용 피함
unnecessary_new: true # 불필요한 new 사용 피함
use_full_hex_values_for_flutter_colors: true # Flutter 색상에 전체 16진수 값 사용
72 changes: 35 additions & 37 deletions lib/providers/camera/fireStorageServiceProvider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,14 @@ import 'package:flutter/foundation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:uuid/uuid.dart';

/**
* FirebaseStorageService.dart
*
* Firebase Storage Service
* - Firebase Storage에 이미지 업로드 서비스
* - uploadImageFromWeb(): 웹 이미지 업로드
* - uploadImageFromApp(): 앱 이미지 업로드
*
* @jwson-automation
*/
/// FirebaseStorageService.dart
///
/// Firebase Storage Service
/// - Firebase Storage에 이미지 업로드 서비스
/// - uploadImageFromWeb(): 웹 이미지 업로드
/// - uploadImageFromApp(): 앱 이미지 업로드
///
/// @jwson-automation
enum ImageType {
banner,
Expand All @@ -32,40 +30,40 @@ final fireStorageServiceProvider = Provider<FirebaseStorageService>((ref) {
class FirebaseStorageService {
final FirebaseStorage _storage = FirebaseStorage.instance;

Future<String> uploadImageFromWeb(Uint8List webImageFile, ImageType _type,
Future<String> uploadImageFromWeb(Uint8List webImageFile, ImageType type,
{String? fixedFileName}) async {
try {
// UUID를 사용하여 유니크한 파일 이름 생성
var uuid = Uuid();
var uuid = const Uuid();
String fullPath = '';

switch (_type) {
switch (type) {
case ImageType.banner:
fullPath = '${_type.name}/$fixedFileName';
fullPath = '${type.name}/$fixedFileName';
break;
case ImageType.profileimage:
fullPath = '${_type.name}/$fixedFileName';
fullPath = '${type.name}/$fixedFileName';
break;
case ImageType.event:
String fileName = uuid.v4() + '.jpg';
fullPath = '${_type.name}/$fileName';
String fileName = '${uuid.v4()}.jpg';
fullPath = '${type.name}/$fileName';
break;
case ImageType.item:
String fileName = uuid.v4() + '.jpg';
fullPath = '${_type.name}/$fileName';
String fileName = '${uuid.v4()}.jpg';
fullPath = '${type.name}/$fileName';
break;
case ImageType.productImage:
String fileName = uuid.v4() + '.jpg';
fullPath = '${_type.name}/$fileName';
String fileName = '${uuid.v4()}.jpg';
fullPath = '${type.name}/$fileName';
break;
case ImageType.descriptionImage:
String fileName = uuid.v4() + '.jpg';
fullPath = '${_type.name}/$fileName';
String fileName = '${uuid.v4()}.jpg';
fullPath = '${type.name}/$fileName';
break;
}

final ref = _storage.ref().child(fullPath);
await ref.putData(await webImageFile);
await ref.putData(webImageFile);
final url = await ref.getDownloadURL();
print('Image uploaded successfully : $url');
return url;
Expand All @@ -76,35 +74,35 @@ class FirebaseStorageService {
}
}

Future<String> uploadImageFromApp(File appImageFile, ImageType _type,
Future<String> uploadImageFromApp(File appImageFile, ImageType type,
{String? fixedFileName}) async {
try {
// UUID를 사용하여 유니크한 파일 이름 생성
var uuid = Uuid();
var uuid = const Uuid();

String fullPath = '';
switch (_type) {
switch (type) {
case ImageType.banner:
fullPath = '${_type.name}/$fixedFileName';
fullPath = '${type.name}/$fixedFileName';
break;
case ImageType.profileimage:
fullPath = '${_type.name}/$fixedFileName';
fullPath = '${type.name}/$fixedFileName';
break;
case ImageType.event:
String fileName = uuid.v4() + '.jpg';
fullPath = '${_type.name}/$fileName';
String fileName = '${uuid.v4()}.jpg';
fullPath = '${type.name}/$fileName';
break;
case ImageType.item:
String fileName = uuid.v4() + '.jpg';
fullPath = '${_type.name}/$fileName';
String fileName = '${uuid.v4()}.jpg';
fullPath = '${type.name}/$fileName';
break;
case ImageType.productImage:
String fileName = uuid.v4() + '.jpg';
fullPath = '${_type.name}/$fileName';
String fileName = '${uuid.v4()}.jpg';
fullPath = '${type.name}/$fileName';
break;
case ImageType.descriptionImage:
String fileName = uuid.v4() + '.jpg';
fullPath = '${_type.name}/$fileName';
String fileName = '${uuid.v4()}.jpg';
fullPath = '${type.name}/$fileName';
break;
}

Expand Down
28 changes: 13 additions & 15 deletions lib/providers/user/FirebaseAuthServiceProvider.dart
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

/**
* FirebaseAuthServiceProvider.dart
*
* Firebase Auth Service Provider
* - FirebaseAuthService를 제공하는 Provider
* - FirebaseAuthService: Firebase Auth 인증 서비스
* - user: 사용자 상태 스트림
* - signUpWithEmailPassword(): 이메일/비밀번호 회원가입
* - signInWithEmailPassword(): 이메일/비밀번호 로그인
* - signOut(): 로그아웃
* - getCurrentUser(): 현재 로그인한 사용자 가져오기
* - sendPasswordResetEmail(): 비밀번호 재설정 이메일 보내기
*
* @jwson-automation
*/
/// FirebaseAuthServiceProvider.dart
///
/// Firebase Auth Service Provider
/// - FirebaseAuthService를 제공하는 Provider
/// - FirebaseAuthService: Firebase Auth 인증 서비스
/// - user: 사용자 상태 스트림
/// - signUpWithEmailPassword(): 이메일/비밀번호 회원가입
/// - signInWithEmailPassword(): 이메일/비밀번호 로그인
/// - signOut(): 로그아웃
/// - getCurrentUser(): 현재 로그인한 사용자 가져오기
/// - sendPasswordResetEmail(): 비밀번호 재설정 이메일 보내기
///
/// @jwson-automation
final firebaseAuthServiceProvider = Provider<FirebaseAuthService>((ref) {
return FirebaseAuthService(FirebaseAuth.instance);
Expand Down
16 changes: 7 additions & 9 deletions lib/providers/user/ProfileImageProvider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@ import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

/**
* ProfileImageProvider.dart
*
* Profile Image Provider
* - 프로필 이미지 데이터를 제공하는 Provider
* - profileImageUrlStream(): 프로필 이미지 데이터 불러오기
*
* @jwson-automation
*/
/// ProfileImageProvider.dart
///
/// Profile Image Provider
/// - 프로필 이미지 데이터를 제공하는 Provider
/// - profileImageUrlStream(): 프로필 이미지 데이터 불러오기
///
/// @jwson-automation
Stream<String> profileImageUrlStream() {
final userId = FirebaseAuth
.instance.currentUser!.uid; // 안전하게 처리를 위해 non-null assertion 사용
Expand Down
18 changes: 8 additions & 10 deletions lib/providers/user/UserInfoProvider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';

import '../../model/UserModel.dart';

/**
* UserInfoProvider.dart
*
* User Info Provider
* - 사용자 정보 데이터를 제공하는 Provider
* - fetchUserInfoStream(): 사용자 정보 데이터 불러오기
*
* @jwson-automation
*/
/// UserInfoProvider.dart
///
/// User Info Provider
/// - 사용자 정보 데이터를 제공하는 Provider
/// - fetchUserInfoStream(): 사용자 정보 데이터 불러오기
///
/// @jwson-automation
// 사용자의 인증 상태를 실시간으로 추적
final loginStateProvider = StreamProvider<User?>((ref) {
Expand Down Expand Up @@ -53,7 +51,7 @@ final userInfoNotifierProvider =

// 유저 정보 업데이트를 위한 노티파이어
class UserNotifier extends StateNotifier<UserModel> {
UserNotifier(UserModel state) : super(state);
UserNotifier(super.state);

Future<void> updateUser(
{String? name, int? age, String? profilePicture}) async {
Expand Down
2 changes: 1 addition & 1 deletion lib/screens/SplashScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import '../utils/ResponsiveLayoutBuilder.dart';
/// 내용: 앱 초기화와 필수 자원 로딩을 관리하는 스플래쉬 스크린 구현
class SplashScreen extends ConsumerStatefulWidget {
const SplashScreen({Key? key}) : super(key: key);
const SplashScreen({super.key});

@override
_SplashScreenState createState() => _SplashScreenState();
Expand Down
2 changes: 1 addition & 1 deletion lib/screens/chat/ChatScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class ChatScreen extends StatelessWidget {
body: Center(
child: Column(
children: [
Expanded(child: ChatListWidget()),
const Expanded(child: ChatListWidget()),
ChatSendWidget(),
],
),
Expand Down
6 changes: 3 additions & 3 deletions lib/screens/match/MatchScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,23 @@ import 'ProfileScreen.dart';

final List<DogProfileModel> dogProfiles = [
DogProfileModel(
const DogProfileModel(
name: '멍멍이',
gender: '수컷',
breed: '골든 리트리버',
location: '서울',
bio: '산책을 좋아하는 활발한 강아지예요!',
imageUrl: 'https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcY8RCd%2FbtsC31gfzPL%2FbSnADONPu66xPesaWHmW00%2Fimg.jpg',
),
DogProfileModel(
const DogProfileModel(
name: '뭉치',
gender: '암컷',
breed: '푸들',
location: '부산',
bio: '애교 많고 사랑스러운 강아지입니다.',
imageUrl: 'https://image.dongascience.com/Photo/2017/07/14994185580021.jpg',
),
DogProfileModel(
const DogProfileModel(
name: '초코',
gender: '수컷',
breed: '비글',
Expand Down
8 changes: 4 additions & 4 deletions lib/screens/match/ProfileScreen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ class ProfileScreen extends StatelessWidget {
children: [
Text(
dogProfile.name,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
const SizedBox(height: 8),
Text('성별: ${dogProfile.gender}'),
Text('종족: ${dogProfile.breed}'),
Text('사는 곳: ${dogProfile.location}'),
SizedBox(height: 16),
Text(
const SizedBox(height: 16),
const Text(
'소개',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
Expand Down
Loading

0 comments on commit b956831

Please sign in to comment.