Files
Hightube/frontend/lib/providers/settings_provider.dart
CGH0S7 6710aa0624 fix: resolve connectivity issues for Android and Web builds
- Android: Added INTERNET permission and enabled cleartext traffic in AndroidManifest.xml.
- Web: Implemented and registered CORSMiddleware in backend to allow cross-origin requests.
- Flutter: Updated SettingsProvider to use 10.0.2.2 as default for Android Emulator for easier local testing.
2026-03-26 13:37:34 +08:00

51 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter/foundation.dart';
class SettingsProvider with ChangeNotifier {
// Use 10.0.2.2 for Android emulator to access host's localhost
static String get _defaultUrl => (defaultTargetPlatform == TargetPlatform.android && !kIsWeb)
? "http://10.0.2.2:8080"
: "http://localhost:8080";
String _baseUrl = _defaultUrl;
Color _themeColor = Colors.blue;
String get baseUrl => _baseUrl;
Color get themeColor => _themeColor;
SettingsProvider() {
_loadSettings();
}
void _loadSettings() async {
final prefs = await SharedPreferences.getInstance();
_baseUrl = prefs.getString('baseUrl') ?? _baseUrl;
final colorValue = prefs.getInt('themeColor');
if (colorValue != null) {
_themeColor = Color(colorValue);
}
notifyListeners();
}
void setBaseUrl(String url) async {
_baseUrl = url;
final prefs = await SharedPreferences.getInstance();
await prefs.setString('baseUrl', url);
notifyListeners();
}
void setThemeColor(Color color) async {
_themeColor = color;
final prefs = await SharedPreferences.getInstance();
await prefs.setInt('themeColor', color.value);
notifyListeners();
}
// Also provide the RTMP URL based on the same hostname
String get rtmpUrl {
final uri = Uri.parse(_baseUrl);
return "rtmp://${uri.host}:1935/live";
}
}