import '/backend/api_requests/api_calls.dart'; import '/backend/api_requests/api_streaming.dart'; import '/components/header_buttons_component_widget.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/flutter_flow_widgets.dart'; import '/shared/drawer_component/drawer_component_widget.dart'; import 'dart:convert'; import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import 'wachtwoord_vergeten_model.dart'; export 'wachtwoord_vergeten_model.dart'; class WachtwoordVergetenWidget extends StatefulWidget { const WachtwoordVergetenWidget({super.key}); static String routeName = 'wachtwoordVergeten'; static String routePath = '/wachtwoordVergeten'; @override State createState() => _WachtwoordVergetenWidgetState(); } class _WachtwoordVergetenWidgetState extends State with RouteAware { late WachtwoordVergetenModel _model; final scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _model = createModel(context, () => WachtwoordVergetenModel()); _model.naamOfEmailFieldTextController ??= TextEditingController() ..addListener(() { debugLogWidgetClass(_model); }); _model.naamOfEmailFieldFocusNode ??= FocusNode(); } @override void dispose() { routeObserver.unsubscribe(this); _model.dispose(); super.dispose(); } @override void didUpdateWidget(WachtwoordVergetenWidget oldWidget) { super.didUpdateWidget(oldWidget); _model.widget = widget; } @override void didChangeDependencies() { super.didChangeDependencies(); final route = DebugModalRoute.of(context); if (route != null) { routeObserver.subscribe(this, route); } debugLogGlobalProperty(context); } @override void didPopNext() { if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) { setState(() => _model.isRouteVisible = true); debugLogWidgetClass(_model); } } @override void didPush() { if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) { setState(() => _model.isRouteVisible = true); debugLogWidgetClass(_model); } } @override void didPop() { _model.isRouteVisible = false; } @override void didPushNext() { _model.isRouteVisible = false; } @override Widget build(BuildContext context) { DebugFlutterFlowModelContext.maybeOf(context) ?.parentModelCallback ?.call(_model); return GestureDetector( onTap: () { FocusScope.of(context).unfocus(); FocusManager.instance.primaryFocus?.unfocus(); }, child: Scaffold( key: scaffoldKey, backgroundColor: FlutterFlowTheme.of(context).primaryBackground, drawer: Drawer( elevation: 16.0, child: wrapWithModel( model: _model.drawerComponentModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: DrawerComponentWidget(), ); }), ), ), appBar: PreferredSize( preferredSize: Size.fromHeight(80.0), child: AppBar( backgroundColor: FlutterFlowTheme.of(context).info, automaticallyImplyLeading: false, actions: [], flexibleSpace: FlexibleSpaceBar( background: wrapWithModel( model: _model.headerButtonsComponentModel, updateCallback: () => safeSetState(() {}), child: Builder(builder: (_) { return DebugFlutterFlowModelContext( rootModel: _model.rootModel, child: HeaderButtonsComponentWidget( showBackButton: true, ), ); }), ), centerTitle: true, expandedTitleScale: 1.0, ), bottom: PreferredSize( preferredSize: Size.fromHeight(70.0), child: Container(), ), toolbarHeight: MediaQuery.sizeOf(context).height * 0.25, elevation: 2.0, ), ), body: SafeArea( top: true, child: Column( mainAxisSize: MainAxisSize.max, children: [ Text( FFLocalizations.of(context).getText( 'vrbz9a3l' /* Wachtwoord vergeten */, ), style: FlutterFlowTheme.of(context).bodyMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context).bodyMedium.fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context).bodyMedium.fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), ), Text( FFLocalizations.of(context).getText( '503u6v73' /* Vul je gebruikersnaam of e-mai... */, ), style: FlutterFlowTheme.of(context).bodyMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context).bodyMedium.fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context).bodyMedium.fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), ), Container( width: 200.0, child: TextFormField( controller: _model.naamOfEmailFieldTextController, focusNode: _model.naamOfEmailFieldFocusNode, autofocus: false, enabled: true, obscureText: false, decoration: InputDecoration( isDense: true, labelStyle: FlutterFlowTheme.of(context).labelMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .labelMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .labelMedium .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .labelMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .labelMedium .fontStyle, ), hintText: FFLocalizations.of(context).getText( 'ush5uxz1' /* Gebruikersnaam of e-mailadres */, ), hintStyle: FlutterFlowTheme.of(context).labelMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .labelMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .labelMedium .fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context) .labelMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context) .labelMedium .fontStyle, ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( color: Color(0x00000000), width: 1.0, ), borderRadius: BorderRadius.circular(8.0), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( color: Color(0x00000000), width: 1.0, ), borderRadius: BorderRadius.circular(8.0), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).error, width: 1.0, ), borderRadius: BorderRadius.circular(8.0), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).error, width: 1.0, ), borderRadius: BorderRadius.circular(8.0), ), filled: true, fillColor: FlutterFlowTheme.of(context).secondaryBackground, ), style: FlutterFlowTheme.of(context).bodyMedium.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .bodyMedium .fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context).bodyMedium.fontWeight, fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle, ), cursorColor: FlutterFlowTheme.of(context).primaryText, enableInteractiveSelection: true, validator: _model.naamOfEmailFieldTextControllerValidator .asValidator(context), ), ), FFButtonWidget( onPressed: () async { _model.apiResultuoz = await RequestNewPasswordCall.call( name: _model.naamOfEmailFieldTextController.text, ); if ((_model.apiResultuoz?.succeeded ?? true)) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( 'Als dit account bestaat, ontvang je een e-mail om je wachtwoord opnieuw in te stellen.', style: TextStyle( color: FlutterFlowTheme.of(context).primaryText, ), ), duration: Duration(milliseconds: 4000), backgroundColor: FlutterFlowTheme.of(context).secondary, ), ); } else { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( RequestNewPasswordCall.errorMessage( (_model.apiResultuoz?.jsonBody ?? ''), )!, style: TextStyle( color: FlutterFlowTheme.of(context).primaryText, ), ), duration: Duration(milliseconds: 4000), backgroundColor: FlutterFlowTheme.of(context).secondary, ), ); } safeSetState(() {}); }, text: FFLocalizations.of(context).getText( '0gfuq6i7' /* Verstuur */, ), options: FFButtonOptions( height: 40.0, padding: EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 0.0), iconPadding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).secondary, textStyle: FlutterFlowTheme.of(context).titleSmall.override( font: GoogleFonts.roboto( fontWeight: FlutterFlowTheme.of(context) .titleSmall .fontWeight, fontStyle: FlutterFlowTheme.of(context).titleSmall.fontStyle, ), color: Colors.white, letterSpacing: 0.0, fontWeight: FlutterFlowTheme.of(context).titleSmall.fontWeight, fontStyle: FlutterFlowTheme.of(context).titleSmall.fontStyle, ), elevation: 0.0, borderRadius: BorderRadius.circular(8.0), ), ), ], ), ), ), ); } }