header_buttons_component_widget.dart 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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 'package:aligned_tooltip/aligned_tooltip.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:flutter_spinkit/flutter_spinkit.dart';
  9. import 'package:google_fonts/google_fonts.dart';
  10. import 'package:provider/provider.dart';
  11. import 'header_buttons_component_model.dart';
  12. export 'header_buttons_component_model.dart';
  13. /// Standaard header-knoppen (drawer + terug) voor herbruik op alle pagina's
  14. class HeaderButtonsComponentWidget extends StatefulWidget {
  15. const HeaderButtonsComponentWidget({
  16. super.key,
  17. bool? showBackButton,
  18. }) : this.showBackButton = showBackButton ?? true;
  19. final bool showBackButton;
  20. @override
  21. State<HeaderButtonsComponentWidget> createState() =>
  22. _HeaderButtonsComponentWidgetState();
  23. }
  24. class _HeaderButtonsComponentWidgetState
  25. extends State<HeaderButtonsComponentWidget> with RouteAware {
  26. late HeaderButtonsComponentModel _model;
  27. @override
  28. void setState(VoidCallback callback) {
  29. super.setState(callback);
  30. _model.onUpdate();
  31. }
  32. @override
  33. void initState() {
  34. super.initState();
  35. _model = createModel(context, () => HeaderButtonsComponentModel());
  36. }
  37. @override
  38. void dispose() {
  39. routeObserver.unsubscribe(this);
  40. _model.maybeDispose();
  41. super.dispose();
  42. }
  43. @override
  44. void didUpdateWidget(HeaderButtonsComponentWidget oldWidget) {
  45. super.didUpdateWidget(oldWidget);
  46. _model.widget = widget;
  47. }
  48. @override
  49. void didChangeDependencies() {
  50. super.didChangeDependencies();
  51. final route = DebugModalRoute.of(context);
  52. if (route != null) {
  53. routeObserver.subscribe(this, route);
  54. }
  55. debugLogGlobalProperty(context);
  56. }
  57. @override
  58. void didPopNext() {
  59. if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
  60. setState(() => _model.isRouteVisible = true);
  61. debugLogWidgetClass(_model);
  62. }
  63. }
  64. @override
  65. void didPush() {
  66. if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
  67. setState(() => _model.isRouteVisible = true);
  68. debugLogWidgetClass(_model);
  69. }
  70. }
  71. @override
  72. void didPop() {
  73. _model.isRouteVisible = false;
  74. }
  75. @override
  76. void didPushNext() {
  77. _model.isRouteVisible = false;
  78. }
  79. @override
  80. Widget build(BuildContext context) {
  81. DebugFlutterFlowModelContext.maybeOf(context)
  82. ?.parentModelCallback
  83. ?.call(_model);
  84. return Align(
  85. alignment: AlignmentDirectional(0.0, 0.0),
  86. child: Row(
  87. mainAxisSize: MainAxisSize.max,
  88. children: [
  89. AlignedTooltip(
  90. content: Padding(
  91. padding: EdgeInsets.all(4.0),
  92. child: Text(
  93. FFLocalizations.of(context).getText(
  94. '17msrach' /* Menu openen */,
  95. ),
  96. style: FlutterFlowTheme.of(context).bodyLarge.override(
  97. font: GoogleFonts.inter(
  98. fontWeight:
  99. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  100. fontStyle:
  101. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  102. ),
  103. letterSpacing: 0.0,
  104. fontWeight:
  105. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  106. fontStyle:
  107. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  108. ),
  109. ),
  110. ),
  111. offset: 4.0,
  112. preferredDirection: AxisDirection.down,
  113. borderRadius: BorderRadius.circular(8.0),
  114. backgroundColor: FlutterFlowTheme.of(context).secondaryBackground,
  115. elevation: 4.0,
  116. tailBaseWidth: 24.0,
  117. tailLength: 12.0,
  118. waitDuration: Duration(milliseconds: 100),
  119. showDuration: Duration(milliseconds: 1500),
  120. triggerMode: TooltipTriggerMode.tap,
  121. child: FlutterFlowIconButton(
  122. borderRadius: 8.0,
  123. buttonSize: 40.0,
  124. fillColor: Color(0xFFB50808),
  125. icon: Icon(
  126. Icons.dehaze_outlined,
  127. color: FlutterFlowTheme.of(context).info,
  128. size: 24.0,
  129. ),
  130. onPressed: () async {
  131. Scaffold.of(context).openDrawer();
  132. },
  133. ),
  134. ),
  135. if (widget!.showBackButton == true)
  136. AlignedTooltip(
  137. content: Padding(
  138. padding: EdgeInsets.all(4.0),
  139. child: Text(
  140. FFLocalizations.of(context).getText(
  141. 'jc7ha6d8' /* Terug */,
  142. ),
  143. style: FlutterFlowTheme.of(context).bodyLarge.override(
  144. font: GoogleFonts.inter(
  145. fontWeight:
  146. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  147. fontStyle:
  148. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  149. ),
  150. letterSpacing: 0.0,
  151. fontWeight:
  152. FlutterFlowTheme.of(context).bodyLarge.fontWeight,
  153. fontStyle:
  154. FlutterFlowTheme.of(context).bodyLarge.fontStyle,
  155. ),
  156. ),
  157. ),
  158. offset: 4.0,
  159. preferredDirection: AxisDirection.down,
  160. borderRadius: BorderRadius.circular(8.0),
  161. backgroundColor: FlutterFlowTheme.of(context).secondaryBackground,
  162. elevation: 4.0,
  163. tailBaseWidth: 24.0,
  164. tailLength: 12.0,
  165. waitDuration: Duration(milliseconds: 100),
  166. showDuration: Duration(milliseconds: 1500),
  167. triggerMode: TooltipTriggerMode.tap,
  168. child: Padding(
  169. padding: EdgeInsetsDirectional.fromSTEB(4.0, 0.0, 0.0, 0.0),
  170. child: FlutterFlowIconButton(
  171. borderColor: Color(0x00FF0000),
  172. borderRadius: 30.0,
  173. borderWidth: 1.0,
  174. buttonSize: 50.0,
  175. fillColor: Color(0xFFB50808),
  176. icon: Icon(
  177. Icons.arrow_back_outlined,
  178. color: Colors.white,
  179. size: 30.0,
  180. ),
  181. onPressed: () async {
  182. context.pop();
  183. },
  184. ),
  185. ),
  186. ),
  187. ClipRRect(
  188. borderRadius: BorderRadius.circular(8.0),
  189. child: Image.asset(
  190. 'assets/images/logo800px.png',
  191. width: 200.0,
  192. height: 200.0,
  193. fit: BoxFit.contain,
  194. ),
  195. ),
  196. ],
  197. ),
  198. );
  199. }
  200. }