controller.dart 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'package:vitalapp/architecture/defines.dart';
  2. import 'package:vitalapp/architecture/utils/prompt_box.dart';
  3. import 'package:vitalapp/rpc.dart';
  4. import 'package:vitalapp/store/store.dart';
  5. import 'package:fis_common/logger/logger.dart';
  6. import 'state.dart';
  7. class ServerSettingController extends FControllerBase {
  8. final state = ServerSettingState();
  9. @override
  10. void onReady() {
  11. _load();
  12. super.onReady();
  13. }
  14. /// 保存配置
  15. Future<void> save() async {
  16. RegExp regExp = RegExp(r'\s'); // 匹配空格的正则表达式
  17. bool hasSpace = regExp.hasMatch(state.host);
  18. if (hasSpace) {
  19. PromptBox.toast("请输入正确的服务器地址");
  20. return;
  21. }
  22. setBusy("正在保存");
  23. try {
  24. final uri = Uri(
  25. scheme: state.enableSSL ? "https" : "http",
  26. host: state.host,
  27. port: state.port,
  28. );
  29. final fullAddress = uri.toString();
  30. Store.app.serverUrl = fullAddress;
  31. await Store.persistent();
  32. // 更新RPC地址
  33. rpc.setServerHost("${uri.host}:${uri.port}", uri.scheme == 'https');
  34. rpc.clearCache();
  35. PromptBox.toast("保存成功");
  36. } catch (e) {
  37. logger.e("ServerSettingController save url error.", e);
  38. PromptBox.toast("保存失败");
  39. }
  40. cancelBusy();
  41. }
  42. void _load() async {
  43. final address = Store.app.serverUrl;
  44. final uri = Uri.parse(address);
  45. state.enableSSL = uri.scheme.toLowerCase() == "https";
  46. state.host = uri.host;
  47. state.port = uri.port;
  48. }
  49. }