import 'package:flutter/material.dart'; /// 语言设置页 /// /// 对应 Gitea issue #9 /// TODO: 接入 l10n_sdk,实现语言切换持久化 class LanguagePage extends StatefulWidget { const LanguagePage({super.key}); @override State createState() => _LanguagePageState(); } class _LanguagePageState extends State { /// TODO: 从 l10n_sdk / Locale 读取当前语言 String _selected = 'zh'; static const _languages = [ _LangOption(code: 'zh', label: '简体中文', nativeLabel: '简体中文'), _LangOption(code: 'en', label: '英文', nativeLabel: 'English'), _LangOption(code: 'zh-TW', label: '繁体中文', nativeLabel: '繁體中文'), ]; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('语言')), body: ListView.separated( itemCount: _languages.length, separatorBuilder: (_, __) => const Divider(height: 1, indent: 16), itemBuilder: (context, index) { final lang = _languages[index]; final isSelected = _selected == lang.code; return ListTile( title: Text(lang.nativeLabel), subtitle: lang.label != lang.nativeLabel ? Text(lang.label) : null, trailing: isSelected ? Icon(Icons.check, color: Theme.of(context).colorScheme.primary) : null, onTap: () { setState(() => _selected = lang.code); // TODO: ref.read(localeProvider.notifier).setLocale(lang.code) ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('语言已切换为 ${lang.nativeLabel}(持久化待接入)')), ); }, ); }, ), ); } } class _LangOption { const _LangOption({ required this.code, required this.label, required this.nativeLabel, }); final String code; final String label; final String nativeLabel; }