diff --git a/app/lib/ui/screens/settings_screen.dart b/app/lib/ui/screens/settings_screen.dart index ea5b2fd..54030b9 100644 --- a/app/lib/ui/screens/settings_screen.dart +++ b/app/lib/ui/screens/settings_screen.dart @@ -58,7 +58,7 @@ class _AiSection extends ConsumerWidget { subtitle: Text( meetsRam ? 'Gemma 4 E2B 모델 ≈ 2.4GB. 모든 처리는 단말에서 일어납니다.' - : '이 단말의 RAM 이 부족합니다 (필요: 4GB 이상).', + : '이 단말에서는 AI 도움을 사용할 수 없어요 (RAM 4GB 이상 필요)', ), value: meetsRam && optIn, onChanged: meetsRam @@ -86,7 +86,7 @@ class _AiSection extends ConsumerWidget { error: (e, _) => ListTile(title: Text('상태 오류: $e')), data: (a) => ListTile( title: const Text('모델 상태'), - subtitle: Text(_describe(a)), + subtitle: Text(_describe(a, meetsRam: meetsRam)), ), ), if (optIn && download != null) @@ -102,12 +102,16 @@ class _AiSection extends ConsumerWidget { ); } - String _describe(ModelAvailability a) { + String _describe(ModelAvailability a, {required bool meetsRam}) { switch (a) { case ModelAvailability.ready: return '준비 완료 — 새 습관 만들기에서 ✨ AI 제안을 쓸 수 있어요'; case ModelAvailability.missing: - return '아직 받지 않았어요 — 위 토글을 켜면 다운로드합니다'; + // RAM 게이트로 토글이 비활성인 상태에서 "토글을 켜면" 안내는 모순. + // 단말 미지원 메시지를 그대로 노출해서 사용자가 다음 행동을 알 수 있게. + return meetsRam + ? '아직 받지 않았어요 — 위 토글을 켜면 다운로드합니다' + : '이 단말은 모델을 받을 수 없어요 (RAM 4GB 이상 필요)'; case ModelAvailability.corrupt: return '파일이 손상됐어요 — 끄고 다시 켜면 새로 받습니다'; case ModelAvailability.downloading: @@ -171,7 +175,7 @@ class _AiSection extends ConsumerWidget { ), SizedBox(height: 4), Text( - '다시 켜면 다시 다운로드해야 합니다.', + '다시 켜면 처음부터 다운로드합니다.', style: TextStyle(fontSize: 13, color: Colors.grey), ), ],