import 'package:chicken_farm/core/api/api_client.dart'; import 'package:chicken_farm/core/config/app_config.dart'; import 'package:chicken_farm/core/services/connectivity_service.dart'; import 'package:flutter/material.dart'; class ConfigDialog extends StatefulWidget { const ConfigDialog({super.key}); @override State createState() => _ConfigDialogState(); } class _ConfigDialogState extends State { final _formKey = GlobalKey(); late TextEditingController _baseUrlController; late TextEditingController _clientIdController; @override void initState() { super.initState(); _baseUrlController = TextEditingController(text: AppConfig.baseUrl); _clientIdController = TextEditingController(text: AppConfig.clientId); } @override void dispose() { _baseUrlController.dispose(); _clientIdController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return AlertDialog( title: const Text('配置服务器'), content: SizedBox( width: MediaQuery.of(context).size.width * 0.8, child: Form( key: _formKey, child: Column( mainAxisSize: MainAxisSize.min, children: [ TextFormField( controller: _baseUrlController, decoration: const InputDecoration( labelText: 'Base URL', hintText: '例如: http://localhost:8080', border: OutlineInputBorder(), ), validator: (value) { if (value == null || value.isEmpty) { return '请输入Base URL'; } if (!value.startsWith('http')) { return '请输入有效的URL地址'; } return null; }, ), const SizedBox(height: 16), TextFormField( controller: _clientIdController, decoration: const InputDecoration( labelText: 'Client ID', border: OutlineInputBorder(), ), validator: (value) { if (value == null || value.isEmpty) { return '请输入Client ID'; } return null; }, ), ], ), ), ), actions: [ TextButton( onPressed: () { Navigator.of(context).pop(); }, child: const Text('取消'), ), ElevatedButton( onPressed: () async { if (_formKey.currentState!.validate()) { // 保存配置 await AppConfig.save( _baseUrlController.text.trim(), _clientIdController.text.trim(), ); // 重新初始化API客户端 ApiClient.clearDio(); if (context.mounted) { Navigator.of(context).pop(true); } } }, child: const Text('保存'), ), ], ); } }