| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- 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<ConfigDialog> createState() => _ConfigDialogState();
- }
- class _ConfigDialogState extends State<ConfigDialog> {
- final _formKey = GlobalKey<FormState>();
- 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('保存'),
- ),
- ],
- );
- }
- }
|