|
|
|
@ -12,25 +12,13 @@ class DirectorySettings extends StatefulWidget {
@@ -12,25 +12,13 @@ class DirectorySettings extends StatefulWidget {
|
|
|
|
|
class _DirectorySettingsState extends State<DirectorySettings> { |
|
|
|
|
late TextEditingController _searchDirectoryController; |
|
|
|
|
late TextEditingController _fileTypeController; |
|
|
|
|
late ContentSearchController _controller; |
|
|
|
|
|
|
|
|
|
@override |
|
|
|
|
void initState() { |
|
|
|
|
super.initState(); |
|
|
|
|
_controller = context.read<ContentSearchController>(); |
|
|
|
|
_searchDirectoryController = TextEditingController(text: _controller.searchDirectory); |
|
|
|
|
_fileTypeController = TextEditingController(text: _controller.fileType); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@override |
|
|
|
|
void didChangeDependencies() { |
|
|
|
|
super.didChangeDependencies(); |
|
|
|
|
final newController = context.read<ContentSearchController>(); |
|
|
|
|
if (_controller != newController) { |
|
|
|
|
_controller = newController; |
|
|
|
|
_searchDirectoryController.text = _controller.searchDirectory; |
|
|
|
|
_fileTypeController.text = _controller.fileType; |
|
|
|
|
} |
|
|
|
|
final controller = context.read<ContentSearchController>(); |
|
|
|
|
_searchDirectoryController = TextEditingController(text: controller.searchDirectory); |
|
|
|
|
_fileTypeController = TextEditingController(text: controller.fileType); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@override |
|
|
|
@ -42,6 +30,17 @@ class _DirectorySettingsState extends State<DirectorySettings> {
@@ -42,6 +30,17 @@ class _DirectorySettingsState extends State<DirectorySettings> {
|
|
|
|
|
|
|
|
|
|
@override |
|
|
|
|
Widget build(BuildContext context) { |
|
|
|
|
// 使用 Consumer 监听 ContentSearchController 的变化 |
|
|
|
|
return Consumer<ContentSearchController>( |
|
|
|
|
builder: (context, controller, child) { |
|
|
|
|
// 同步 TextEditingController 的值 |
|
|
|
|
if (_searchDirectoryController.text != controller.searchDirectory) { |
|
|
|
|
_searchDirectoryController.text = controller.searchDirectory; |
|
|
|
|
} |
|
|
|
|
if (_fileTypeController.text != controller.fileType) { |
|
|
|
|
_fileTypeController.text = controller.fileType; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return Card( |
|
|
|
|
child: Padding( |
|
|
|
|
padding: const EdgeInsets.all(8.0), |
|
|
|
@ -50,30 +49,39 @@ class _DirectorySettingsState extends State<DirectorySettings> {
@@ -50,30 +49,39 @@ class _DirectorySettingsState extends State<DirectorySettings> {
|
|
|
|
|
Expanded( |
|
|
|
|
child: TextField( |
|
|
|
|
controller: _searchDirectoryController, |
|
|
|
|
decoration: const InputDecoration(labelText: '搜索目录', border: OutlineInputBorder()), |
|
|
|
|
onChanged: (value) => _controller.searchDirectory = value, |
|
|
|
|
decoration: const InputDecoration( |
|
|
|
|
labelText: '搜索目录', |
|
|
|
|
border: OutlineInputBorder(), |
|
|
|
|
), |
|
|
|
|
onChanged: (value) => controller.searchDirectory = value, |
|
|
|
|
), |
|
|
|
|
), |
|
|
|
|
const SizedBox(width: 8), |
|
|
|
|
SizedBox( |
|
|
|
|
width: 100, |
|
|
|
|
child: TextField( |
|
|
|
|
controller: _fileTypeController, |
|
|
|
|
decoration: const InputDecoration(labelText: '文件类型', border: OutlineInputBorder()), |
|
|
|
|
onChanged: (value) => _controller.fileType = value, |
|
|
|
|
decoration: const InputDecoration( |
|
|
|
|
labelText: '文件类型', |
|
|
|
|
border: OutlineInputBorder(), |
|
|
|
|
), |
|
|
|
|
onChanged: (value) => controller.fileType = value, |
|
|
|
|
), |
|
|
|
|
), |
|
|
|
|
const SizedBox(width: 8), |
|
|
|
|
IconButton( |
|
|
|
|
icon: const Icon(Icons.folder_open), |
|
|
|
|
onPressed: () async { |
|
|
|
|
await _controller.pickDirectory(); |
|
|
|
|
_searchDirectoryController.text = _controller.searchDirectory; |
|
|
|
|
await controller.pickDirectory(); |
|
|
|
|
// 不需要手动更新 _searchDirectoryController.text, |
|
|
|
|
// 因为 Consumer 会触发重建并自动同步 |
|
|
|
|
}, |
|
|
|
|
), |
|
|
|
|
], |
|
|
|
|
), |
|
|
|
|
), |
|
|
|
|
); |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|