import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../api/dio_config.dart'; import '../../theme/theme_controller.dart'; class NetworkSettings extends StatefulWidget { const NetworkSettings({super.key}); @override State createState() => _NetworkSettingsState(); } class _NetworkSettingsState extends State { final ThemeController themeController = Get.find(); String _ip = ''; int _port = 0; String _url = ''; Future _saveSettings() async { await SettingService.saveNetworkSettings(_ip, _port, _url); await DioConfig.updateBaseURL(); Get.back(); } Future _loadSettings() async { final settings = await SettingService.getNetworkSettings(); setState(() { _ip = settings['ip']; _port = settings['port']; _url = settings['url']; }); } @override void initState() { super.initState(); _loadSettings(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("网络设置"), backgroundColor: themeController.appBarColor, leading: IconButton( onPressed: () { Navigator.pop(context); }, icon: Icon(Icons.arrow_back_ios)), ), body: Padding( padding: EdgeInsets.all(20), child: Container( child: ListView( children: [ TextField( autofocus: true, decoration: InputDecoration( labelText: "Ip Address", ), controller: TextEditingController(text: _ip), onChanged: (value) { _ip = value; }, ), TextField( autofocus: true, decoration: InputDecoration( labelText: "Port", ), controller: TextEditingController(text: _port.toString()), onChanged: (value) { _port = int.parse(value); }, ), TextField( autofocus: true, decoration: InputDecoration( labelText: "Url", ), controller: TextEditingController(text: _url), onChanged: (value) { _url = value; }, ), ElevatedButton( onPressed: _saveSettings, child: Text('Save Settings')), ], ), ), ), ); } } class SettingService { static Future saveNetworkSettings( String ip, int port, String url) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString('network_ip', ip); await prefs.setInt('network_port', port); await prefs.setString('network_url', url); } static Future> getNetworkSettings() async { final prefs = await SharedPreferences.getInstance(); String ip = prefs.getString('network_ip') ?? '127.0.0.1'; int port = prefs.getInt('network_port') ?? 8080; String url = prefs.getString('network_url') ?? 'wms'; return {'ip': ip, 'port': port, 'url': url}; } }