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)
42 lines
1.4 KiB
Dart
42 lines
1.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_map/flutter_map.dart';
|
|
import 'package:latlong2/latlong.dart';
|
|
|
|
/// Zoom control widget for flutter_map v6+
|
|
class ZoomMapPluginWidget extends StatelessWidget {
|
|
const ZoomMapPluginWidget({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return LayoutBuilder(
|
|
builder: (BuildContext context, BoxConstraints constraints) =>
|
|
Stack(fit: StackFit.expand, children: <Widget>[
|
|
Positioned(
|
|
top: constraints.maxHeight - 100,
|
|
right: 10.0,
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: <Widget>[
|
|
Column(
|
|
children: <Widget>[
|
|
_zoomButton(context, Icons.zoom_in, 1),
|
|
_zoomButton(context, Icons.zoom_out, -1)
|
|
],
|
|
)
|
|
],
|
|
),
|
|
)
|
|
]));
|
|
}
|
|
|
|
IconButton _zoomButton(BuildContext context, IconData zoomIcon, int inc) {
|
|
return IconButton(
|
|
icon: Icon(zoomIcon),
|
|
onPressed: () {
|
|
final MapController controller = MapController.of(context);
|
|
final double currentZoom = controller.camera.zoom;
|
|
final LatLng currentCenter = controller.camera.center;
|
|
controller.move(currentCenter, currentZoom + inc);
|
|
});
|
|
}
|
|
}
|