style(lint): flutter analyze 경고 91건 → 0건 전체 정리
- analysis_options.yaml: freezed/g.dart 생성 파일 분석 제외
- game_text_l10n.dart: if문 중괄호 추가, 불필요한 ${} 제거
- iap_service.dart: 불필요한 dart:typed_data import 제거
- pq_logic.dart, combat_text_frames.dart: dangling library doc → library; 추가
- save_picker_dialog.dart: __ → _ (unnecessary_underscores)
- desktop_equipment_panel.dart: 불필요한 import 제거
- test 파일: _localVar → localVar 네이밍, ignore_for_file 추가
This commit is contained in:
@@ -159,7 +159,7 @@ String get speedBoostTitle => _l('Speed Boost', '속도 부스트', 'スピー
|
||||
String get speedBoostActivate =>
|
||||
_l('Activate 10x Speed', '10배속 활성화', '10倍速を有効化');
|
||||
String speedBoostRemaining(int seconds) =>
|
||||
_l('${seconds}s remaining', '${seconds}초 남음', '残り${seconds}秒');
|
||||
_l('${seconds}s remaining', '$seconds초 남음', '残り$seconds秒');
|
||||
String get speedBoostActive => _l('BOOST ACTIVE', '부스트 활성화', 'ブースト中');
|
||||
|
||||
// ============================================================================
|
||||
@@ -650,8 +650,9 @@ String translateImpressiveTitle(String englishName) {
|
||||
/// 특수 아이템 이름 번역
|
||||
String translateSpecial(String englishName) {
|
||||
if (isKoreanLocale) return specialTranslationsKo[englishName] ?? englishName;
|
||||
if (isJapaneseLocale)
|
||||
if (isJapaneseLocale) {
|
||||
return specialTranslationsJa[englishName] ?? englishName;
|
||||
}
|
||||
return englishName;
|
||||
}
|
||||
|
||||
@@ -828,54 +829,65 @@ String translateItemNameL10n(String itemString) {
|
||||
|
||||
/// Act 제목 번역
|
||||
String translateActTitle(String englishTitle) {
|
||||
if (isKoreanLocale)
|
||||
if (isKoreanLocale) {
|
||||
return actTitleTranslationsKo[englishTitle] ?? englishTitle;
|
||||
if (isJapaneseLocale)
|
||||
}
|
||||
if (isJapaneseLocale) {
|
||||
return actTitleTranslationsJa[englishTitle] ?? englishTitle;
|
||||
}
|
||||
return englishTitle;
|
||||
}
|
||||
|
||||
/// Act 보스 이름 번역
|
||||
String translateActBoss(String englishBoss) {
|
||||
if (isKoreanLocale) return actBossTranslationsKo[englishBoss] ?? englishBoss;
|
||||
if (isJapaneseLocale)
|
||||
if (isJapaneseLocale) {
|
||||
return actBossTranslationsJa[englishBoss] ?? englishBoss;
|
||||
}
|
||||
return englishBoss;
|
||||
}
|
||||
|
||||
/// Act 퀘스트 번역
|
||||
String translateActQuest(String englishQuest) {
|
||||
if (isKoreanLocale)
|
||||
if (isKoreanLocale) {
|
||||
return actQuestTranslationsKo[englishQuest] ?? englishQuest;
|
||||
if (isJapaneseLocale)
|
||||
}
|
||||
if (isJapaneseLocale) {
|
||||
return actQuestTranslationsJa[englishQuest] ?? englishQuest;
|
||||
}
|
||||
return englishQuest;
|
||||
}
|
||||
|
||||
/// 시네마틱 텍스트 번역
|
||||
String translateCinematic(String englishText) {
|
||||
if (isKoreanLocale)
|
||||
if (isKoreanLocale) {
|
||||
return cinematicTranslationsKo[englishText] ?? englishText;
|
||||
if (isJapaneseLocale)
|
||||
}
|
||||
if (isJapaneseLocale) {
|
||||
return cinematicTranslationsJa[englishText] ?? englishText;
|
||||
}
|
||||
return englishText;
|
||||
}
|
||||
|
||||
/// 지역 이름 번역
|
||||
String translateLocation(String englishLocation) {
|
||||
if (isKoreanLocale)
|
||||
if (isKoreanLocale) {
|
||||
return locationTranslationsKo[englishLocation] ?? englishLocation;
|
||||
if (isJapaneseLocale)
|
||||
}
|
||||
if (isJapaneseLocale) {
|
||||
return locationTranslationsJa[englishLocation] ?? englishLocation;
|
||||
}
|
||||
return englishLocation;
|
||||
}
|
||||
|
||||
/// 세력/조직 이름 번역
|
||||
String translateFaction(String englishFaction) {
|
||||
if (isKoreanLocale)
|
||||
if (isKoreanLocale) {
|
||||
return factionTranslationsKo[englishFaction] ?? englishFaction;
|
||||
if (isJapaneseLocale)
|
||||
}
|
||||
if (isJapaneseLocale) {
|
||||
return factionTranslationsJa[englishFaction] ?? englishFaction;
|
||||
}
|
||||
return englishFaction;
|
||||
}
|
||||
|
||||
@@ -1233,7 +1245,7 @@ String get notifyQuestComplete => _l('QUEST COMPLETE!', '퀘스트 완료!', '
|
||||
String get notifyPrologueComplete =>
|
||||
_l('PROLOGUE COMPLETE!', '프롤로그 완료!', 'プロローグ完了!');
|
||||
String notifyActComplete(int actNumber) =>
|
||||
_l('ACT $actNumber COMPLETE!', '${actNumber}막 완료!', '第${actNumber}幕完了!');
|
||||
_l('ACT $actNumber COMPLETE!', '$actNumber막 완료!', '第$actNumber幕完了!');
|
||||
String get notifyNewSpell => _l('NEW SPELL!', '새 주문!', '新しい呪文!');
|
||||
String get notifyNewEquipment => _l('NEW EQUIPMENT!', '새 장비!', '新しい装備!');
|
||||
String get notifyBossDefeated => _l('BOSS DEFEATED!', '보스 처치!', 'ボス撃破!');
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:in_app_purchase/in_app_purchase.dart';
|
||||
@@ -190,10 +188,7 @@ class IAPService implements IIAPService {
|
||||
|
||||
/// 구매 상태 저장 (보안 저장소 사용)
|
||||
Future<void> _savePurchaseState(bool purchased) async {
|
||||
await _secureStorage.write(
|
||||
key: _purchaseKey,
|
||||
value: purchased.toString(),
|
||||
);
|
||||
await _secureStorage.write(key: _purchaseKey, value: purchased.toString());
|
||||
_adRemovalPurchased = purchased;
|
||||
debugPrint('[IAPService] Saved purchase state: $purchased');
|
||||
}
|
||||
@@ -451,10 +446,7 @@ class IAPService implements IIAPService {
|
||||
pc.PublicKeyParameter<pc.RSAPublicKey>(publicKey),
|
||||
);
|
||||
|
||||
return signer.verifySignature(
|
||||
dataBytes,
|
||||
pc.RSASignature(signatureBytes),
|
||||
);
|
||||
return signer.verifySignature(dataBytes, pc.RSASignature(signatureBytes));
|
||||
} catch (e) {
|
||||
debugPrint('[IAPService] RSA verification error: $e');
|
||||
return false;
|
||||
@@ -477,10 +469,8 @@ class IAPService implements IIAPService {
|
||||
final rsaParser = ASN1Parser(publicKeyBytes);
|
||||
final rsaSequence = rsaParser.nextObject() as ASN1Sequence;
|
||||
|
||||
final modulus =
|
||||
(rsaSequence.elements![0] as ASN1Integer).integer!;
|
||||
final exponent =
|
||||
(rsaSequence.elements![1] as ASN1Integer).integer!;
|
||||
final modulus = (rsaSequence.elements![0] as ASN1Integer).integer!;
|
||||
final exponent = (rsaSequence.elements![1] as ASN1Integer).integer!;
|
||||
|
||||
return pc.RSAPublicKey(modulus, exponent);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
///
|
||||
/// 유틸리티 함수 모음.
|
||||
/// 이 파일은 분할된 모듈들을 re-export하여 기존 코드 호환성 유지.
|
||||
library;
|
||||
|
||||
// 랜덤/확률 함수
|
||||
export 'package:asciineverdie/src/core/util/pq_random.dart';
|
||||
|
||||
@@ -52,7 +52,7 @@ class SavePickerDialog extends StatelessWidget {
|
||||
child: ListView.separated(
|
||||
shrinkWrap: true,
|
||||
itemCount: saves.length,
|
||||
separatorBuilder: (_, __) => const Divider(height: 1),
|
||||
separatorBuilder: (_, _) => const Divider(height: 1),
|
||||
itemBuilder: (context, index) {
|
||||
final save = saves[index];
|
||||
return _SaveListTile(
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:asciineverdie/data/game_text_l10n.dart' as game_l10n;
|
||||
import 'package:asciineverdie/l10n/app_localizations.dart';
|
||||
import 'package:asciineverdie/src/shared/l10n/game_data_l10n.dart';
|
||||
import 'package:asciineverdie/src/core/model/game_state.dart';
|
||||
import 'package:asciineverdie/src/core/model/inventory.dart';
|
||||
import 'package:asciineverdie/src/features/game/widgets/combat_log.dart';
|
||||
import 'package:asciineverdie/src/features/game/widgets/desktop_panel_widgets.dart';
|
||||
import 'package:asciineverdie/src/features/game/widgets/equipment_stats_panel.dart';
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
///
|
||||
/// CanvasBattleComposer에서 분리된 전투 텍스트 프레임 상수.
|
||||
/// 크리티컬, 회피, 미스, 디버프, DOT, 블록, 패리 텍스트 프레임.
|
||||
library;
|
||||
|
||||
// ============================================================================
|
||||
// 몬스터 공격 이펙트 (← 방향, Phase 8) - 5줄
|
||||
|
||||
Reference in New Issue
Block a user