header_buttons_component_widget.dart 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  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_model.dart';
  13. export 'header_buttons_component_model.dart';
  14. /// Standaard header-knoppen (drawer + terug) voor herbruik op alle pagina's
  15. class HeaderButtonsComponentWidget extends StatefulWidget {
  16. const HeaderButtonsComponentWidget({
  17. super.key,
  18. bool? showBackButton,
  19. }) : this.showBackButton = showBackButton ?? true;
  20. final bool showBackButton;
  21. @override
  22. State<HeaderButtonsComponentWidget> createState() =>
  23. _HeaderButtonsComponentWidgetState();
  24. }
  25. class _HeaderButtonsComponentWidgetState
  26. extends State<HeaderButtonsComponentWidget> with RouteAware {
  27. late HeaderButtonsComponentModel _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, () => HeaderButtonsComponentModel());
  37. }
  38. @override
  39. void dispose() {
  40. routeObserver.unsubscribe(this);
  41. _model.maybeDispose();
  42. super.dispose();
  43. }
  44. @override
  45. void didUpdateWidget(HeaderButtonsComponentWidget 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. context.watch<FFAppState>();
  86. return Align(
  87. alignment: AlignmentDirectional(0.0, 0.0),
  88. child: Row(
  89. mainAxisSize: MainAxisSize.max,
  90. children: [
  91. AlignedTooltip(
  92. content: Padding(
  93. padding: EdgeInsets.all(4.0),
  94. child: Text(
  95. FFLocalizations.of(context).getText(
  96. '17msrach' /* Menu openen */,
  97. ),
  98. style: FlutterFlowTheme.of(context).bodyLarge.override(
  99. font: GoogleFonts.inter(
  100. fontWeight:
  101. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  102. fontStyle:
  103. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  104. ),
  105. letterSpacing: 0.0,
  106. fontWeight:
  107. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  108. fontStyle:
  109. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  110. ),
  111. ),
  112. ),
  113. offset: 4.0,
  114. preferredDirection: AxisDirection.down,
  115. borderRadius: BorderRadius.circular(8.0),
  116. backgroundColor: FlutterFlowTheme.of(context).secondaryBackground,
  117. elevation: 4.0,
  118. tailBaseWidth: 24.0,
  119. tailLength: 12.0,
  120. waitDuration: Duration(milliseconds: 100),
  121. showDuration: Duration(milliseconds: 1500),
  122. triggerMode: TooltipTriggerMode.tap,
  123. child: FlutterFlowIconButton(
  124. borderRadius: 8.0,
  125. buttonSize: 40.0,
  126. fillColor: Color(0xFFB50808),
  127. icon: Icon(
  128. Icons.dehaze_outlined,
  129. color: FlutterFlowTheme.of(context).info,
  130. size: 24.0,
  131. ),
  132. onPressed: () async {
  133. Scaffold.of(context).openDrawer();
  134. },
  135. ),
  136. ),
  137. if (widget!.showBackButton == true)
  138. AlignedTooltip(
  139. content: Padding(
  140. padding: EdgeInsets.all(4.0),
  141. child: Text(
  142. FFLocalizations.of(context).getText(
  143. 'f8ay39rg' /* Terug */,
  144. ),
  145. style: FlutterFlowTheme.of(context).bodyLarge.override(
  146. font: GoogleFonts.inter(
  147. fontWeight:
  148. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  149. fontStyle:
  150. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  151. ),
  152. letterSpacing: 0.0,
  153. fontWeight:
  154. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  155. fontStyle:
  156. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  157. ),
  158. ),
  159. ),
  160. offset: 4.0,
  161. preferredDirection: AxisDirection.down,
  162. borderRadius: BorderRadius.circular(8.0),
  163. backgroundColor: FlutterFlowTheme.of(context).secondaryBackground,
  164. elevation: 4.0,
  165. tailBaseWidth: 24.0,
  166. tailLength: 12.0,
  167. waitDuration: Duration(milliseconds: 100),
  168. showDuration: Duration(milliseconds: 1500),
  169. triggerMode: TooltipTriggerMode.tap,
  170. child: Padding(
  171. padding: EdgeInsetsDirectional.fromSTEB(4.0, 0.0, 0.0, 0.0),
  172. child: FlutterFlowIconButton(
  173. borderColor: Color(0x00FF0000),
  174. borderRadius: 30.0,
  175. borderWidth: 1.0,
  176. buttonSize: 50.0,
  177. fillColor: Color(0xFFB50808),
  178. icon: Icon(
  179. Icons.arrow_back_outlined,
  180. color: Colors.white,
  181. size: 30.0,
  182. ),
  183. onPressed: () async {
  184. context.pop();
  185. },
  186. ),
  187. ),
  188. ),
  189. Builder(
  190. builder: (context) {
  191. if (FFAppState()
  192. .favorieteGemeenteIds
  193. .contains(FFAppState().gemeenteSelectId) ==
  194. true) {
  195. return FlutterFlowIconButton(
  196. borderRadius: 8.0,
  197. buttonSize: 40.0,
  198. fillColor: Color(0xFFB50808),
  199. icon: Icon(
  200. Icons.favorite,
  201. color: Colors.white,
  202. size: 24.0,
  203. ),
  204. onPressed: () async {
  205. await actions.drupalRequest(
  206. 'POST',
  207. 'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
  208. FFAppState().userSessionname,
  209. FFAppState().userSessionid,
  210. FFAppState().userToken,
  211. '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
  212. );
  213. FFAppState().removeFromFavorieteGemeenteIds(
  214. FFAppState().gemeenteSelectId);
  215. safeSetState(() {});
  216. },
  217. );
  218. } else {
  219. return FlutterFlowIconButton(
  220. borderRadius: 8.0,
  221. buttonSize: 40.0,
  222. fillColor: Color(0xFFB50808),
  223. icon: Icon(
  224. Icons.favorite_border,
  225. color: Colors.white,
  226. size: 24.0,
  227. ),
  228. onPressed: () async {
  229. await actions.drupalRequest(
  230. 'POST',
  231. 'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
  232. FFAppState().userSessionname,
  233. FFAppState().userSessionid,
  234. FFAppState().userToken,
  235. '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
  236. );
  237. FFAppState().addToFavorieteGemeenteIds(
  238. FFAppState().gemeenteSelectId);
  239. safeSetState(() {});
  240. },
  241. );
  242. }
  243. },
  244. ),
  245. ],
  246. ),
  247. );
  248. }
  249. }