google_maps_icon_button_widget.dart 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import '/flutter_flow/flutter_flow_theme.dart';
  2. import '/flutter_flow/flutter_flow_util.dart';
  3. import '/flutter_flow/flutter_flow_widgets.dart';
  4. import '/flutter_flow/custom_functions.dart' as functions;
  5. import 'package:flutter/material.dart';
  6. import 'package:flutter_spinkit/flutter_spinkit.dart';
  7. import 'package:google_fonts/google_fonts.dart';
  8. import 'package:provider/provider.dart';
  9. import 'google_maps_icon_button_model.dart';
  10. export 'google_maps_icon_button_model.dart';
  11. /// Toont een klein Maps-icoontje; tikken opent Google Maps met het gegeven
  12. /// adres+plaats.
  13. class GoogleMapsIconButtonWidget extends StatefulWidget {
  14. const GoogleMapsIconButtonWidget({
  15. super.key,
  16. required this.adres,
  17. required this.plaats,
  18. });
  19. final String? adres;
  20. final String? plaats;
  21. @override
  22. State<GoogleMapsIconButtonWidget> createState() =>
  23. _GoogleMapsIconButtonWidgetState();
  24. }
  25. class _GoogleMapsIconButtonWidgetState extends State<GoogleMapsIconButtonWidget>
  26. with RouteAware {
  27. late GoogleMapsIconButtonModel _model;
  28. @override
  29. void setState(VoidCallback callback) {
  30. super.setState(callback);
  31. _model.onUpdate();
  32. }
  33. @override
  34. void initState() {
  35. super.initState();
  36. _model = createModel(context, () => GoogleMapsIconButtonModel());
  37. }
  38. @override
  39. void dispose() {
  40. routeObserver.unsubscribe(this);
  41. _model.maybeDispose();
  42. super.dispose();
  43. }
  44. @override
  45. void didUpdateWidget(GoogleMapsIconButtonWidget oldWidget) {
  46. super.didUpdateWidget(oldWidget);
  47. _model.widget = widget;
  48. }
  49. @override
  50. void didChangeDependencies() {
  51. super.didChangeDependencies();
  52. final route = DebugModalRoute.of(context);
  53. if (route != null) {
  54. routeObserver.subscribe(this, route);
  55. }
  56. debugLogGlobalProperty(context);
  57. }
  58. @override
  59. void didPopNext() {
  60. if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
  61. setState(() => _model.isRouteVisible = true);
  62. debugLogWidgetClass(_model);
  63. }
  64. }
  65. @override
  66. void didPush() {
  67. if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
  68. setState(() => _model.isRouteVisible = true);
  69. debugLogWidgetClass(_model);
  70. }
  71. }
  72. @override
  73. void didPop() {
  74. _model.isRouteVisible = false;
  75. }
  76. @override
  77. void didPushNext() {
  78. _model.isRouteVisible = false;
  79. }
  80. @override
  81. Widget build(BuildContext context) {
  82. DebugFlutterFlowModelContext.maybeOf(context)
  83. ?.parentModelCallback
  84. ?.call(_model);
  85. return InkWell(
  86. splashColor: Colors.transparent,
  87. focusColor: Colors.transparent,
  88. hoverColor: Colors.transparent,
  89. highlightColor: Colors.transparent,
  90. onTap: () async {
  91. await launchURL(
  92. functions.googleMapsUrl(widget!.adres!, widget!.plaats!));
  93. },
  94. child: Icon(
  95. Icons.location_on,
  96. color: FlutterFlowTheme.of(context).primaryText,
  97. size: 24.0,
  98. ),
  99. );
  100. }
  101. }