728x90
1️⃣ page_object.dart 파일 생성 및 버튼 클래스 추가
프로젝트 구조 예시:
lib/
├── main.dart
├── pages/
│ ├── home_page.dart (버튼을 사용하는 페이지)
│ ├── login_page.dart (버튼을 사용하는 페이지)
├── widgets/
│ ├── page_object.dart (공통 버튼 정의)
🔧 lib/widgets/page_object.dart
import 'package:flutter/material.dart';
/// 구글 로그인 버튼
class GoogleSignInBtn extends StatelessWidget {
final VoidCallback onPressed;
const GoogleSignInBtn({super.key, required this.onPressed});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPressed,
child: Image.asset(
'assets/images/google_signin_button.png',
height: 50,
),
);
}
}
/// 애플 로그인 버튼
class AppleSignInBtn extends StatelessWidget {
final VoidCallback onPressed;
const AppleSignInBtn({super.key, required this.onPressed});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPressed,
child: Image.asset(
'assets/images/apple_signin_button.png',
height: 50,
),
);
}
}
/// GitHub 로그인 버튼
class GitHubSignInBtn extends StatelessWidget {
final VoidCallback onPressed;
const GitHubSignInBtn({super.key, required this.onPressed});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPressed,
child: Image.asset(
'assets/images/github_signin_button.png',
height: 50,
),
);
}
}
✅ 각 버튼을 StatelessWidget 클래스로 만들어 재사용 가능하도록 구성
✅ 각 버튼의 클릭 이벤트를 onPressed 매개변수로 전달
2️⃣ 버튼을 다른 페이지에서 사용하기
이제 home_page.dart 또는 login_page.dart 같은 페이지에서 버튼을 가져와 사용할 수 있습니다.
🔧 예제: lib/pages/login_page.dart
import 'package:flutter/material.dart';
import '../widgets/page_object.dart'; // 버튼 클래스를 import
class LoginPage extends StatelessWidget {
const LoginPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("로그인 페이지")),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
GoogleSignInBtn(
onPressed: () {
print("Google 로그인 버튼 클릭됨!");
},
),
const SizedBox(height: 16),
AppleSignInBtn(
onPressed: () {
print("Apple 로그인 버튼 클릭됨!");
},
),
const SizedBox(height: 16),
GitHubSignInBtn(
onPressed: () {
print("GitHub 로그인 버튼 클릭됨!");
},
),
],
),
),
);
}
}
🚀 최종 정리
1️⃣ lib/widgets/page_object.dart 파일을 만들어 공통 버튼 클래스를 정의
2️⃣ GestureDetector를 활용하여 터치 이벤트를 onPressed로 처리
3️⃣ lib/pages/login_page.dart에서 import하여 필요할 때 사용
LIST
'Develop > Flutter' 카테고리의 다른 글
[Flutter] Local Database : hive_ce & hive_ce_flutter 소개 및 사용법 (1) | 2025.03.04 |
---|---|
[Flutter] 밑에서 올라오는 팝업 위젯 (Bottom Sheet) (1) | 2025.03.04 |
[Flutter] PNG 이미지를 버튼으로 추가하는 방법 (0) | 2025.02.28 |
[Flutter] ThemeData 위젯의 모든 argument 설명 (0) | 2025.02.28 |
Flutter BLoC 패턴: 정의와 사용법 (2) | 2025.02.27 |