학교별 배포를 위해 서버주소/학교이름을 빌드타임 설정으로 전환
- config.dart의 baseUrl/webVapidKey와 학교 이름을 String.fromEnvironment로 전환 - 기본값은 기존 백산고 값 그대로라 인자 없이 빌드하면 지금과 동일하게 동작 - 다른 학교는 --dart-define=BASE_URL=...=SCHOOL_NAME=...=WEB_VAPID_KEY=...로 빌드
This commit is contained in:
+19
-4
@@ -5,13 +5,28 @@ import 'package:device_info_plus/device_info_plus.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/foundation.dart' show kIsWeb;
|
||||
|
||||
// 🌐 기존에 사용하시던 실제 백엔드 서버 도메인 주소로 통일합니다.
|
||||
const String baseUrl = 'https://backsanhi.mcv.kr';
|
||||
// 🌐 학교마다 다른 값들. 빌드할 때 --dart-define으로 안 넘기면 지금 쓰는
|
||||
// 백산고 값이 그대로 기본값이 된다 (기존 빌드 명령이 안 깨지게 하기 위함).
|
||||
// 예: flutter build web --dart-define=BASE_URL=https://다른학교도메인.com
|
||||
const String baseUrl = String.fromEnvironment(
|
||||
'BASE_URL',
|
||||
defaultValue: 'https://backsanhi.mcv.kr',
|
||||
);
|
||||
|
||||
// 🔑 웹에서 FCM 토큰을 받으려면 필요한 VAPID 키
|
||||
// (Firebase Console > 프로젝트 설정 > Cloud Messaging > 웹 구성 > 웹 푸시 인증서에서 발급)
|
||||
const String webVapidKey =
|
||||
'BG4LnirukBdW3cXVWxhvY9pcjevBKDhpsaq1SLZdBs2cOEiwLAFyuuZLkMqpEGp9uOuHdPOe_y3FdwdZaz3qdfk';
|
||||
// 학교마다 Firebase 프로젝트가 다르므로 VAPID 키도 학교별로 --dart-define=WEB_VAPID_KEY=...로 지정.
|
||||
const String webVapidKey = String.fromEnvironment(
|
||||
'WEB_VAPID_KEY',
|
||||
defaultValue:
|
||||
'BG4LnirukBdW3cXVWxhvY9pcjevBKDhpsaq1SLZdBs2cOEiwLAFyuuZLkMqpEGp9uOuHdPOe_y3FdwdZaz3qdfk',
|
||||
);
|
||||
|
||||
// 🏫 앱/로그인 화면에 표시할 학교 이름. --dart-define=SCHOOL_NAME=...으로 학교별 지정.
|
||||
const String schoolName = String.fromEnvironment(
|
||||
'SCHOOL_NAME',
|
||||
defaultValue: '백산고등학교',
|
||||
);
|
||||
|
||||
// 권한 요청 및 FCM 토큰을 가져와서 콘솔에 출력하는 함수
|
||||
Future<void> printFCMToken() async {
|
||||
|
||||
@@ -26,7 +26,7 @@ class SchoolAttendanceApp extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
debugShowCheckedModeBanner: false,
|
||||
title: '백산고등학교 학생 도우미',
|
||||
title: '$schoolName 학생 도우미',
|
||||
theme: ThemeData(primarySwatch: Colors.indigo, useMaterial3: true),
|
||||
home: const LoginScreen(), // 🚪 앱을 켜면 무조건 로그인 화면이 먼저 등장합니다.
|
||||
);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// 🔑 로그인 화면 (UI 전용). 입력폼/다이얼로그/화면 이동만 담당한다.
|
||||
// 인증 로직/서버 통신은 lib/function/login_controller.dart가 담당한다.
|
||||
import 'package:flutter/material.dart';
|
||||
import '../config.dart' show schoolName;
|
||||
import '../function/login_controller.dart';
|
||||
import 'student_dashboard.dart';
|
||||
import 'teacher_dashboard.dart';
|
||||
@@ -310,9 +311,9 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||
children: [
|
||||
const Icon(Icons.school, size: 80, color: Colors.indigo),
|
||||
const SizedBox(height: 16),
|
||||
const Text(
|
||||
'백산고등학교 모니터',
|
||||
style: TextStyle(
|
||||
Text(
|
||||
'$schoolName 모니터',
|
||||
style: const TextStyle(
|
||||
fontSize: 26,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.indigo,
|
||||
|
||||
Reference in New Issue
Block a user