118 lines
3.9 KiB
Dart
118 lines
3.9 KiB
Dart
import '/flutter_flow/flutter_flow_theme.dart';
|
|
import '/flutter_flow/flutter_flow_util.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
import 'text_field_component_model.dart';
|
|
export 'text_field_component_model.dart';
|
|
|
|
class TextFieldComponentWidget extends StatefulWidget {
|
|
const TextFieldComponentWidget({
|
|
super.key,
|
|
this.initialValueStrParam,
|
|
this.labelTextStrParam,
|
|
this.hintTextStrParam,
|
|
});
|
|
|
|
final String? initialValueStrParam;
|
|
final String? labelTextStrParam;
|
|
final String? hintTextStrParam;
|
|
|
|
@override
|
|
State<TextFieldComponentWidget> createState() =>
|
|
_TextFieldComponentWidgetState();
|
|
}
|
|
|
|
class _TextFieldComponentWidgetState extends State<TextFieldComponentWidget> {
|
|
late TextFieldComponentModel _model;
|
|
|
|
@override
|
|
void setState(VoidCallback callback) {
|
|
super.setState(callback);
|
|
_model.onUpdate();
|
|
}
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_model = createModel(context, () => TextFieldComponentModel());
|
|
|
|
_model.textController ??=
|
|
TextEditingController(text: widget.initialValueStrParam);
|
|
_model.textFieldFocusNode ??= FocusNode();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_model.maybeDispose();
|
|
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Padding(
|
|
padding: const EdgeInsetsDirectional.fromSTEB(8.0, 10.0, 8.0, 10.0),
|
|
child: TextFormField(
|
|
controller: _model.textController,
|
|
focusNode: _model.textFieldFocusNode,
|
|
autofocus: false,
|
|
obscureText: false,
|
|
decoration: InputDecoration(
|
|
labelText: widget.labelTextStrParam,
|
|
labelStyle: FlutterFlowTheme.of(context).labelMedium.override(
|
|
fontFamily: FlutterFlowTheme.of(context).labelMediumFamily,
|
|
color: FlutterFlowTheme.of(context).primaryText,
|
|
letterSpacing: 0.0,
|
|
useGoogleFonts: GoogleFonts.asMap().containsKey(
|
|
FlutterFlowTheme.of(context).labelMediumFamily),
|
|
),
|
|
hintText: widget.hintTextStrParam,
|
|
hintStyle: FlutterFlowTheme.of(context).labelMedium.override(
|
|
fontFamily: FlutterFlowTheme.of(context).labelMediumFamily,
|
|
color: FlutterFlowTheme.of(context).primaryText,
|
|
letterSpacing: 0.0,
|
|
useGoogleFonts: GoogleFonts.asMap().containsKey(
|
|
FlutterFlowTheme.of(context).labelMediumFamily),
|
|
),
|
|
enabledBorder: OutlineInputBorder(
|
|
borderSide: BorderSide(
|
|
color: FlutterFlowTheme.of(context).accent1,
|
|
width: 0.5,
|
|
),
|
|
borderRadius: BorderRadius.circular(8.0),
|
|
),
|
|
focusedBorder: OutlineInputBorder(
|
|
borderSide: BorderSide(
|
|
color: FlutterFlowTheme.of(context).primary,
|
|
width: 0.5,
|
|
),
|
|
borderRadius: BorderRadius.circular(8.0),
|
|
),
|
|
errorBorder: OutlineInputBorder(
|
|
borderSide: BorderSide(
|
|
color: FlutterFlowTheme.of(context).error,
|
|
width: 0.5,
|
|
),
|
|
borderRadius: BorderRadius.circular(8.0),
|
|
),
|
|
focusedErrorBorder: OutlineInputBorder(
|
|
borderSide: BorderSide(
|
|
color: FlutterFlowTheme.of(context).error,
|
|
width: 0.5,
|
|
),
|
|
borderRadius: BorderRadius.circular(8.0),
|
|
),
|
|
),
|
|
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
|
fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily,
|
|
color: FlutterFlowTheme.of(context).secondaryText,
|
|
letterSpacing: 0.0,
|
|
useGoogleFonts: GoogleFonts.asMap()
|
|
.containsKey(FlutterFlowTheme.of(context).bodyMediumFamily),
|
|
),
|
|
validator: _model.textControllerValidator.asValidator(context),
|
|
),
|
|
);
|
|
}
|
|
}
|