header_buttons_component_copymethartje_widget.dart 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. import '/flutter_flow/flutter_flow_icon_button.dart';
  2. import '/flutter_flow/flutter_flow_theme.dart';
  3. import '/flutter_flow/flutter_flow_util.dart';
  4. import '/flutter_flow/flutter_flow_widgets.dart';
  5. import 'dart:ui';
  6. import '/custom_code/actions/index.dart' as actions;
  7. import 'package:aligned_tooltip/aligned_tooltip.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:flutter_spinkit/flutter_spinkit.dart';
  10. import 'package:google_fonts/google_fonts.dart';
  11. import 'package:provider/provider.dart';
  12. import 'header_buttons_component_copymethartje_model.dart';
  13. export 'header_buttons_component_copymethartje_model.dart';
  14. /// Standaard header-knoppen (drawer + terug) voor herbruik op alle pagina's
  15. class HeaderButtonsComponentCopymethartjeWidget extends StatefulWidget {
  16. const HeaderButtonsComponentCopymethartjeWidget({
  17. super.key,
  18. bool? showBackButton,
  19. }) : this.showBackButton = showBackButton ?? true;
  20. final bool showBackButton;
  21. @override
  22. State<HeaderButtonsComponentCopymethartjeWidget> createState() =>
  23. _HeaderButtonsComponentCopymethartjeWidgetState();
  24. }
  25. class _HeaderButtonsComponentCopymethartjeWidgetState
  26. extends State<HeaderButtonsComponentCopymethartjeWidget> with RouteAware {
  27. late HeaderButtonsComponentCopymethartjeModel _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 =
  37. createModel(context, () => HeaderButtonsComponentCopymethartjeModel());
  38. }
  39. @override
  40. void dispose() {
  41. routeObserver.unsubscribe(this);
  42. _model.maybeDispose();
  43. super.dispose();
  44. }
  45. @override
  46. void didUpdateWidget(HeaderButtonsComponentCopymethartjeWidget oldWidget) {
  47. super.didUpdateWidget(oldWidget);
  48. _model.widget = widget;
  49. }
  50. @override
  51. void didChangeDependencies() {
  52. super.didChangeDependencies();
  53. final route = DebugModalRoute.of(context);
  54. if (route != null) {
  55. routeObserver.subscribe(this, route);
  56. }
  57. debugLogGlobalProperty(context);
  58. }
  59. @override
  60. void didPopNext() {
  61. if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
  62. setState(() => _model.isRouteVisible = true);
  63. debugLogWidgetClass(_model);
  64. }
  65. }
  66. @override
  67. void didPush() {
  68. if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
  69. setState(() => _model.isRouteVisible = true);
  70. debugLogWidgetClass(_model);
  71. }
  72. }
  73. @override
  74. void didPop() {
  75. _model.isRouteVisible = false;
  76. }
  77. @override
  78. void didPushNext() {
  79. _model.isRouteVisible = false;
  80. }
  81. @override
  82. Widget build(BuildContext context) {
  83. DebugFlutterFlowModelContext.maybeOf(context)
  84. ?.parentModelCallback
  85. ?.call(_model);
  86. context.watch<FFAppState>();
  87. return Align(
  88. alignment: AlignmentDirectional(0.0, 0.0),
  89. child: Row(
  90. mainAxisSize: MainAxisSize.max,
  91. children: [
  92. AlignedTooltip(
  93. content: Padding(
  94. padding: EdgeInsets.all(4.0),
  95. child: Text(
  96. FFLocalizations.of(context).getText(
  97. 'eiqzkhnd' /* Menu openen */,
  98. ),
  99. style: FlutterFlowTheme.of(context).bodyLarge.override(
  100. font: GoogleFonts.roboto(
  101. fontWeight:
  102. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  103. fontStyle:
  104. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  105. ),
  106. letterSpacing: 0.0,
  107. fontWeight:
  108. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  109. fontStyle:
  110. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  111. ),
  112. ),
  113. ),
  114. offset: 4.0,
  115. preferredDirection: AxisDirection.down,
  116. borderRadius: BorderRadius.circular(8.0),
  117. backgroundColor: FlutterFlowTheme.of(context).secondaryBackground,
  118. elevation: 4.0,
  119. tailBaseWidth: 24.0,
  120. tailLength: 12.0,
  121. waitDuration: Duration(milliseconds: 100),
  122. showDuration: Duration(milliseconds: 1500),
  123. triggerMode: TooltipTriggerMode.tap,
  124. child: FlutterFlowIconButton(
  125. borderRadius: 8.0,
  126. buttonSize: 40.0,
  127. fillColor: Color(0xFFB50808),
  128. icon: Icon(
  129. Icons.dehaze_outlined,
  130. color: FlutterFlowTheme.of(context).info,
  131. size: 24.0,
  132. ),
  133. onPressed: () async {
  134. Scaffold.of(context).openDrawer();
  135. },
  136. ),
  137. ),
  138. if (widget!.showBackButton == true)
  139. AlignedTooltip(
  140. content: Padding(
  141. padding: EdgeInsets.all(4.0),
  142. child: Text(
  143. FFLocalizations.of(context).getText(
  144. 'vakum2qi' /* Terug */,
  145. ),
  146. style: FlutterFlowTheme.of(context).bodyLarge.override(
  147. font: GoogleFonts.roboto(
  148. fontWeight:
  149. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  150. fontStyle:
  151. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  152. ),
  153. letterSpacing: 0.0,
  154. fontWeight:
  155. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  156. fontStyle:
  157. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  158. ),
  159. ),
  160. ),
  161. offset: 4.0,
  162. preferredDirection: AxisDirection.down,
  163. borderRadius: BorderRadius.circular(8.0),
  164. backgroundColor: FlutterFlowTheme.of(context).secondaryBackground,
  165. elevation: 4.0,
  166. tailBaseWidth: 24.0,
  167. tailLength: 12.0,
  168. waitDuration: Duration(milliseconds: 100),
  169. showDuration: Duration(milliseconds: 1500),
  170. triggerMode: TooltipTriggerMode.tap,
  171. child: Padding(
  172. padding: EdgeInsetsDirectional.fromSTEB(4.0, 0.0, 0.0, 0.0),
  173. child: FlutterFlowIconButton(
  174. borderColor: Color(0x00FF0000),
  175. borderRadius: 30.0,
  176. borderWidth: 1.0,
  177. buttonSize: 50.0,
  178. fillColor: Color(0xFFB50808),
  179. icon: Icon(
  180. Icons.arrow_back_outlined,
  181. color: Colors.white,
  182. size: 30.0,
  183. ),
  184. onPressed: () async {
  185. context.pop();
  186. },
  187. ),
  188. ),
  189. ),
  190. Builder(
  191. builder: (context) {
  192. if (FFAppState()
  193. .favorieteGemeenteIds
  194. .contains(FFAppState().gemeenteSelectId) ==
  195. true) {
  196. return FlutterFlowIconButton(
  197. borderRadius: 8.0,
  198. buttonSize: 40.0,
  199. fillColor: Color(0xFFB50808),
  200. icon: Icon(
  201. Icons.favorite,
  202. color: Colors.white,
  203. size: 24.0,
  204. ),
  205. onPressed: () async {
  206. await actions.drupalRequest(
  207. 'POST',
  208. 'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
  209. FFAppState().userSessionname,
  210. FFAppState().userSessionid,
  211. FFAppState().userToken,
  212. '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
  213. );
  214. FFAppState().removeFromFavorieteGemeenteIds(
  215. FFAppState().gemeenteSelectId);
  216. safeSetState(() {});
  217. },
  218. );
  219. } else {
  220. return FlutterFlowIconButton(
  221. borderRadius: 8.0,
  222. buttonSize: 40.0,
  223. fillColor: Color(0xFFB50808),
  224. icon: Icon(
  225. Icons.favorite_border,
  226. color: Colors.white,
  227. size: 24.0,
  228. ),
  229. onPressed: () async {
  230. await actions.drupalRequest(
  231. 'POST',
  232. 'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
  233. FFAppState().userSessionname,
  234. FFAppState().userSessionid,
  235. FFAppState().userToken,
  236. '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
  237. );
  238. FFAppState().addToFavorieteGemeenteIds(
  239. FFAppState().gemeenteSelectId);
  240. safeSetState(() {});
  241. },
  242. );
  243. }
  244. },
  245. ),
  246. ],
  247. ),
  248. );
  249. }
  250. }