|
|
@@ -6,6 +6,7 @@ import '/shared/drawer_component/drawer_component_widget.dart';
|
|
|
import 'dart:ui';
|
|
|
import '/custom_code/actions/index.dart' as actions;
|
|
|
import '/index.dart';
|
|
|
+import 'package:aligned_tooltip/aligned_tooltip.dart';
|
|
|
import 'package:easy_debounce/easy_debounce.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:flutter/scheduler.dart';
|
|
|
@@ -179,47 +180,74 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
|
|
|
Column(
|
|
|
mainAxisSize: MainAxisSize.max,
|
|
|
children: [
|
|
|
- Container(
|
|
|
- width: 200.0,
|
|
|
- child: TextFormField(
|
|
|
- controller: _model.usernameFieldTextController,
|
|
|
- focusNode: _model.usernameFieldFocusNode,
|
|
|
- onChanged: (_) => EasyDebounce.debounce(
|
|
|
- '_model.usernameFieldTextController',
|
|
|
- Duration(milliseconds: 2000),
|
|
|
- () => safeSetState(() {}),
|
|
|
- ),
|
|
|
- autofocus: false,
|
|
|
- textInputAction: TextInputAction.next,
|
|
|
- obscureText: false,
|
|
|
- decoration: InputDecoration(
|
|
|
- isDense: true,
|
|
|
- labelStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ AlignedTooltip(
|
|
|
+ content: Padding(
|
|
|
+ padding: EdgeInsets.all(4.0),
|
|
|
+ child: Text(
|
|
|
+ FFLocalizations.of(context).getText(
|
|
|
+ 'pj545url' /* Veld wissen */,
|
|
|
+ ),
|
|
|
+ style: FlutterFlowTheme.of(context)
|
|
|
+ .bodyLarge
|
|
|
.override(
|
|
|
font: GoogleFonts.inter(
|
|
|
fontWeight: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ .bodyLarge
|
|
|
.fontWeight,
|
|
|
fontStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ .bodyLarge
|
|
|
.fontStyle,
|
|
|
),
|
|
|
letterSpacing: 0.0,
|
|
|
fontWeight: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ .bodyLarge
|
|
|
.fontWeight,
|
|
|
fontStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ .bodyLarge
|
|
|
.fontStyle,
|
|
|
),
|
|
|
- hintText: FFLocalizations.of(context).getText(
|
|
|
- 'd507d3b9' /* TextField */,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ offset: 4.0,
|
|
|
+ preferredDirection: AxisDirection.down,
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
+ backgroundColor: FlutterFlowTheme.of(context)
|
|
|
+ .secondaryBackground,
|
|
|
+ elevation: 4.0,
|
|
|
+ tailBaseWidth: 24.0,
|
|
|
+ tailLength: 12.0,
|
|
|
+ waitDuration: Duration(milliseconds: 100),
|
|
|
+ showDuration: Duration(milliseconds: 1500),
|
|
|
+ triggerMode: TooltipTriggerMode.tap,
|
|
|
+ child: Container(
|
|
|
+ width: 200.0,
|
|
|
+ child: TextFormField(
|
|
|
+ controller: _model.usernameFieldTextController,
|
|
|
+ focusNode: _model.usernameFieldFocusNode,
|
|
|
+ onChanged: (_) => EasyDebounce.debounce(
|
|
|
+ '_model.usernameFieldTextController',
|
|
|
+ Duration(milliseconds: 2000),
|
|
|
+ () => safeSetState(() {}),
|
|
|
),
|
|
|
- hintStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
- .override(
|
|
|
- font: GoogleFonts.inter(
|
|
|
+ autofocus: false,
|
|
|
+ textInputAction: TextInputAction.next,
|
|
|
+ obscureText: false,
|
|
|
+ decoration: InputDecoration(
|
|
|
+ isDense: true,
|
|
|
+ labelStyle: FlutterFlowTheme.of(context)
|
|
|
+ .labelMedium
|
|
|
+ .override(
|
|
|
+ font: GoogleFonts.inter(
|
|
|
+ fontWeight:
|
|
|
+ FlutterFlowTheme.of(context)
|
|
|
+ .labelMedium
|
|
|
+ .fontWeight,
|
|
|
+ fontStyle:
|
|
|
+ FlutterFlowTheme.of(context)
|
|
|
+ .labelMedium
|
|
|
+ .fontStyle,
|
|
|
+ ),
|
|
|
+ letterSpacing: 0.0,
|
|
|
fontWeight: FlutterFlowTheme.of(context)
|
|
|
.labelMedium
|
|
|
.fontWeight,
|
|
|
@@ -227,64 +255,90 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
|
|
|
.labelMedium
|
|
|
.fontStyle,
|
|
|
),
|
|
|
- letterSpacing: 0.0,
|
|
|
- fontWeight: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
- .fontWeight,
|
|
|
- fontStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
- .fontStyle,
|
|
|
+ hintText: FFLocalizations.of(context).getText(
|
|
|
+ 'd507d3b9' /* TextField */,
|
|
|
+ ),
|
|
|
+ hintStyle: FlutterFlowTheme.of(context)
|
|
|
+ .labelMedium
|
|
|
+ .override(
|
|
|
+ font: GoogleFonts.inter(
|
|
|
+ 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,
|
|
|
),
|
|
|
- enabledBorder: OutlineInputBorder(
|
|
|
- borderSide: BorderSide(
|
|
|
- color: Color(0x00000000),
|
|
|
- width: 1.0,
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
),
|
|
|
- borderRadius: BorderRadius.circular(8.0),
|
|
|
- ),
|
|
|
- focusedBorder: OutlineInputBorder(
|
|
|
- borderSide: BorderSide(
|
|
|
- color: Color(0x00000000),
|
|
|
- width: 1.0,
|
|
|
+ focusedBorder: OutlineInputBorder(
|
|
|
+ borderSide: BorderSide(
|
|
|
+ color: Color(0x00000000),
|
|
|
+ width: 1.0,
|
|
|
+ ),
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
),
|
|
|
- borderRadius: BorderRadius.circular(8.0),
|
|
|
- ),
|
|
|
- errorBorder: OutlineInputBorder(
|
|
|
- borderSide: BorderSide(
|
|
|
- color: FlutterFlowTheme.of(context).error,
|
|
|
- width: 1.0,
|
|
|
+ errorBorder: OutlineInputBorder(
|
|
|
+ borderSide: BorderSide(
|
|
|
+ color: FlutterFlowTheme.of(context).error,
|
|
|
+ width: 1.0,
|
|
|
+ ),
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
),
|
|
|
- borderRadius: BorderRadius.circular(8.0),
|
|
|
- ),
|
|
|
- focusedErrorBorder: OutlineInputBorder(
|
|
|
- borderSide: BorderSide(
|
|
|
- color: FlutterFlowTheme.of(context).error,
|
|
|
- width: 1.0,
|
|
|
+ focusedErrorBorder: OutlineInputBorder(
|
|
|
+ borderSide: BorderSide(
|
|
|
+ color: FlutterFlowTheme.of(context).error,
|
|
|
+ width: 1.0,
|
|
|
+ ),
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
),
|
|
|
- borderRadius: BorderRadius.circular(8.0),
|
|
|
+ filled: true,
|
|
|
+ fillColor: FlutterFlowTheme.of(context)
|
|
|
+ .secondaryBackground,
|
|
|
+ suffixIcon: _model
|
|
|
+ .usernameFieldTextController!
|
|
|
+ .text
|
|
|
+ .isNotEmpty
|
|
|
+ ? InkWell(
|
|
|
+ onTap: () async {
|
|
|
+ _model.usernameFieldTextController
|
|
|
+ ?.clear();
|
|
|
+ safeSetState(() {});
|
|
|
+ },
|
|
|
+ child: Icon(
|
|
|
+ Icons.clear,
|
|
|
+ size: 24.0,
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ : null,
|
|
|
),
|
|
|
- filled: true,
|
|
|
- fillColor: FlutterFlowTheme.of(context)
|
|
|
- .secondaryBackground,
|
|
|
- suffixIcon: _model.usernameFieldTextController!
|
|
|
- .text.isNotEmpty
|
|
|
- ? InkWell(
|
|
|
- onTap: () async {
|
|
|
- _model.usernameFieldTextController
|
|
|
- ?.clear();
|
|
|
- safeSetState(() {});
|
|
|
- },
|
|
|
- child: Icon(
|
|
|
- Icons.clear,
|
|
|
- size: 24.0,
|
|
|
- ),
|
|
|
- )
|
|
|
- : null,
|
|
|
- ),
|
|
|
- style: FlutterFlowTheme.of(context)
|
|
|
- .bodyMedium
|
|
|
- .override(
|
|
|
- font: GoogleFonts.inter(
|
|
|
+ style: FlutterFlowTheme.of(context)
|
|
|
+ .bodyMedium
|
|
|
+ .override(
|
|
|
+ font: GoogleFonts.inter(
|
|
|
+ fontWeight: FlutterFlowTheme.of(context)
|
|
|
+ .bodyMedium
|
|
|
+ .fontWeight,
|
|
|
+ fontStyle: FlutterFlowTheme.of(context)
|
|
|
+ .bodyMedium
|
|
|
+ .fontStyle,
|
|
|
+ ),
|
|
|
+ letterSpacing: 0.0,
|
|
|
fontWeight: FlutterFlowTheme.of(context)
|
|
|
.bodyMedium
|
|
|
.fontWeight,
|
|
|
@@ -292,58 +346,78 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
|
|
|
.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
|
|
|
- .usernameFieldTextControllerValidator
|
|
|
- .asValidator(context),
|
|
|
+ cursorColor:
|
|
|
+ FlutterFlowTheme.of(context).primaryText,
|
|
|
+ enableInteractiveSelection: true,
|
|
|
+ validator: _model
|
|
|
+ .usernameFieldTextControllerValidator
|
|
|
+ .asValidator(context),
|
|
|
+ ),
|
|
|
),
|
|
|
),
|
|
|
- Container(
|
|
|
- width: 200.0,
|
|
|
- child: TextFormField(
|
|
|
- controller: _model.passwordFieldTextController,
|
|
|
- focusNode: _model.passwordFieldFocusNode,
|
|
|
- autofocus: false,
|
|
|
- textInputAction: TextInputAction.next,
|
|
|
- obscureText: !_model.passwordFieldVisibility,
|
|
|
- decoration: InputDecoration(
|
|
|
- isDense: true,
|
|
|
- labelStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ AlignedTooltip(
|
|
|
+ content: Padding(
|
|
|
+ padding: EdgeInsets.all(4.0),
|
|
|
+ child: Text(
|
|
|
+ FFLocalizations.of(context).getText(
|
|
|
+ 'ahiklq0c' /* Wachtwoord tonen/verbergen */,
|
|
|
+ ),
|
|
|
+ style: FlutterFlowTheme.of(context)
|
|
|
+ .bodyLarge
|
|
|
.override(
|
|
|
font: GoogleFonts.inter(
|
|
|
fontWeight: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ .bodyLarge
|
|
|
.fontWeight,
|
|
|
fontStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ .bodyLarge
|
|
|
.fontStyle,
|
|
|
),
|
|
|
letterSpacing: 0.0,
|
|
|
fontWeight: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ .bodyLarge
|
|
|
.fontWeight,
|
|
|
fontStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
+ .bodyLarge
|
|
|
.fontStyle,
|
|
|
),
|
|
|
- hintText: FFLocalizations.of(context).getText(
|
|
|
- 't8h5f8ir' /* TextField */,
|
|
|
- ),
|
|
|
- hintStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
- .override(
|
|
|
- font: GoogleFonts.inter(
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ offset: 4.0,
|
|
|
+ preferredDirection: AxisDirection.down,
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
+ backgroundColor: FlutterFlowTheme.of(context)
|
|
|
+ .secondaryBackground,
|
|
|
+ elevation: 4.0,
|
|
|
+ tailBaseWidth: 24.0,
|
|
|
+ tailLength: 12.0,
|
|
|
+ waitDuration: Duration(milliseconds: 100),
|
|
|
+ showDuration: Duration(milliseconds: 1500),
|
|
|
+ triggerMode: TooltipTriggerMode.tap,
|
|
|
+ child: Container(
|
|
|
+ width: 200.0,
|
|
|
+ child: TextFormField(
|
|
|
+ controller: _model.passwordFieldTextController,
|
|
|
+ focusNode: _model.passwordFieldFocusNode,
|
|
|
+ autofocus: false,
|
|
|
+ textInputAction: TextInputAction.next,
|
|
|
+ obscureText: !_model.passwordFieldVisibility,
|
|
|
+ decoration: InputDecoration(
|
|
|
+ isDense: true,
|
|
|
+ labelStyle: FlutterFlowTheme.of(context)
|
|
|
+ .labelMedium
|
|
|
+ .override(
|
|
|
+ font: GoogleFonts.inter(
|
|
|
+ fontWeight:
|
|
|
+ FlutterFlowTheme.of(context)
|
|
|
+ .labelMedium
|
|
|
+ .fontWeight,
|
|
|
+ fontStyle:
|
|
|
+ FlutterFlowTheme.of(context)
|
|
|
+ .labelMedium
|
|
|
+ .fontStyle,
|
|
|
+ ),
|
|
|
+ letterSpacing: 0.0,
|
|
|
fontWeight: FlutterFlowTheme.of(context)
|
|
|
.labelMedium
|
|
|
.fontWeight,
|
|
|
@@ -351,64 +425,88 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
|
|
|
.labelMedium
|
|
|
.fontStyle,
|
|
|
),
|
|
|
- letterSpacing: 0.0,
|
|
|
- fontWeight: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
- .fontWeight,
|
|
|
- fontStyle: FlutterFlowTheme.of(context)
|
|
|
- .labelMedium
|
|
|
- .fontStyle,
|
|
|
+ hintText: FFLocalizations.of(context).getText(
|
|
|
+ 't8h5f8ir' /* TextField */,
|
|
|
+ ),
|
|
|
+ hintStyle: FlutterFlowTheme.of(context)
|
|
|
+ .labelMedium
|
|
|
+ .override(
|
|
|
+ font: GoogleFonts.inter(
|
|
|
+ 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,
|
|
|
),
|
|
|
- enabledBorder: OutlineInputBorder(
|
|
|
- borderSide: BorderSide(
|
|
|
- color: Color(0x00000000),
|
|
|
- width: 1.0,
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
),
|
|
|
- borderRadius: BorderRadius.circular(8.0),
|
|
|
- ),
|
|
|
- focusedBorder: OutlineInputBorder(
|
|
|
- borderSide: BorderSide(
|
|
|
- color: Color(0x00000000),
|
|
|
- width: 1.0,
|
|
|
+ focusedBorder: OutlineInputBorder(
|
|
|
+ borderSide: BorderSide(
|
|
|
+ color: Color(0x00000000),
|
|
|
+ width: 1.0,
|
|
|
+ ),
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
),
|
|
|
- borderRadius: BorderRadius.circular(8.0),
|
|
|
- ),
|
|
|
- errorBorder: OutlineInputBorder(
|
|
|
- borderSide: BorderSide(
|
|
|
- color: FlutterFlowTheme.of(context).error,
|
|
|
- width: 1.0,
|
|
|
+ errorBorder: OutlineInputBorder(
|
|
|
+ borderSide: BorderSide(
|
|
|
+ color: FlutterFlowTheme.of(context).error,
|
|
|
+ width: 1.0,
|
|
|
+ ),
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
),
|
|
|
- borderRadius: BorderRadius.circular(8.0),
|
|
|
- ),
|
|
|
- focusedErrorBorder: OutlineInputBorder(
|
|
|
- borderSide: BorderSide(
|
|
|
- color: FlutterFlowTheme.of(context).error,
|
|
|
- width: 1.0,
|
|
|
+ focusedErrorBorder: OutlineInputBorder(
|
|
|
+ borderSide: BorderSide(
|
|
|
+ color: FlutterFlowTheme.of(context).error,
|
|
|
+ width: 1.0,
|
|
|
+ ),
|
|
|
+ borderRadius: BorderRadius.circular(8.0),
|
|
|
),
|
|
|
- borderRadius: BorderRadius.circular(8.0),
|
|
|
- ),
|
|
|
- filled: true,
|
|
|
- fillColor: FlutterFlowTheme.of(context)
|
|
|
- .secondaryBackground,
|
|
|
- suffixIcon: InkWell(
|
|
|
- onTap: () async {
|
|
|
- safeSetState(() =>
|
|
|
- _model.passwordFieldVisibility =
|
|
|
- !_model.passwordFieldVisibility);
|
|
|
- },
|
|
|
- focusNode: FocusNode(skipTraversal: true),
|
|
|
- child: Icon(
|
|
|
- _model.passwordFieldVisibility
|
|
|
- ? Icons.visibility_outlined
|
|
|
- : Icons.visibility_off_outlined,
|
|
|
- size: 24.0,
|
|
|
+ filled: true,
|
|
|
+ fillColor: FlutterFlowTheme.of(context)
|
|
|
+ .secondaryBackground,
|
|
|
+ suffixIcon: InkWell(
|
|
|
+ onTap: () async {
|
|
|
+ safeSetState(() =>
|
|
|
+ _model.passwordFieldVisibility =
|
|
|
+ !_model.passwordFieldVisibility);
|
|
|
+ },
|
|
|
+ focusNode: FocusNode(skipTraversal: true),
|
|
|
+ child: Icon(
|
|
|
+ _model.passwordFieldVisibility
|
|
|
+ ? Icons.visibility_outlined
|
|
|
+ : Icons.visibility_off_outlined,
|
|
|
+ size: 24.0,
|
|
|
+ ),
|
|
|
),
|
|
|
),
|
|
|
- ),
|
|
|
- style: FlutterFlowTheme.of(context)
|
|
|
- .bodyMedium
|
|
|
- .override(
|
|
|
- font: GoogleFonts.inter(
|
|
|
+ style: FlutterFlowTheme.of(context)
|
|
|
+ .bodyMedium
|
|
|
+ .override(
|
|
|
+ font: GoogleFonts.inter(
|
|
|
+ fontWeight: FlutterFlowTheme.of(context)
|
|
|
+ .bodyMedium
|
|
|
+ .fontWeight,
|
|
|
+ fontStyle: FlutterFlowTheme.of(context)
|
|
|
+ .bodyMedium
|
|
|
+ .fontStyle,
|
|
|
+ ),
|
|
|
+ letterSpacing: 0.0,
|
|
|
fontWeight: FlutterFlowTheme.of(context)
|
|
|
.bodyMedium
|
|
|
.fontWeight,
|
|
|
@@ -416,20 +514,13 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
|
|
|
.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
|
|
|
- .passwordFieldTextControllerValidator
|
|
|
- .asValidator(context),
|
|
|
+ cursorColor:
|
|
|
+ FlutterFlowTheme.of(context).primaryText,
|
|
|
+ enableInteractiveSelection: true,
|
|
|
+ validator: _model
|
|
|
+ .passwordFieldTextControllerValidator
|
|
|
+ .asValidator(context),
|
|
|
+ ),
|
|
|
),
|
|
|
),
|
|
|
FFButtonWidget(
|