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<NetworkSettings> createState() => _NetworkSettingsState();
|
}
|
|
class _NetworkSettingsState extends State<NetworkSettings> {
|
final ThemeController themeController = Get.find();
|
String _ip = '';
|
int _port = 0;
|
String _url = '';
|
|
Future<void> _saveSettings() async {
|
await SettingService.saveNetworkSettings(_ip, _port, _url);
|
await DioConfig.updateBaseURL();
|
Get.back();
|
}
|
|
Future<void> _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<void> 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<Map<String, dynamic>> 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};
|
}
|
}
|