Remove the external comunes-flutter library dependency and replace all its components with local implementations: - Utility functions: Created lib/utils/widget_utils.dart with compactWidgets() and ellipse() functions, replacing the comunes-flutter helpers with modern Dart null-safety patterns (whereType instead of where(notNull)) - Secret loader: Inlined as lib/utils/secret_loader.dart for loading JSON config - Layout widgets: Replaced CenteredRow/CenteredColumn with standard Row/Column with MainAxisAlignment.center - Intro screens: Copied AppIntroPage and MaterialAppWithIntro locally in lib/widgets/ with cleaned-up deprecated code patterns - Button widget: Created lib/widgets/rounded_btn.dart for the RoundedBtn used in activeFires.dart Changes span 20 files: - 5 new utility/widget files created - Updated imports in 15 files - Removed path dependency from pubspec.yaml - All functionality preserved, build verified with flutter pub get Impact: - Removes external dependency, simplifying project structure - Modern Dart patterns (proper null-safety) - Better code clarity with explicit widget properties - Easier onboarding (no 'what is comunes-flutter?' questions)
20 lines
628 B
Dart
20 lines
628 B
Dart
import 'dart:async' show Future;
|
|
import 'dart:convert' show json;
|
|
import 'package:flutter/services.dart' show rootBundle;
|
|
|
|
/// Loads secret/config files from Flutter assets as JSON.
|
|
/// Used to load configuration files at app startup.
|
|
class SecretLoader {
|
|
final String secretPath;
|
|
|
|
SecretLoader({required this.secretPath});
|
|
|
|
/// Load and parse JSON from asset bundle.
|
|
/// Returns a map of the parsed JSON content.
|
|
Future<Map<String, dynamic>> load() {
|
|
return rootBundle.loadStructuredData<Map<String, dynamic>>(
|
|
secretPath,
|
|
(jsonStr) async => json.decode(jsonStr) as Map<String, dynamic>,
|
|
);
|
|
}
|
|
}
|