textfiled_customer_widget.dart 1.98 KB
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/common/extension/string_extension.dart';

class TextFiledCustomerWidget extends StatefulWidget {
  const TextFiledCustomerWidget({super.key,
    this.controller,
    this.hitStyle,
    this.textStyle,
    this.bgImageName,
    this.hitText,
    this.width,
    this.height,
    this.textAlign,
    this.textInputType,
    this.onChangeValue
  });

  final TextEditingController? controller;
  final TextStyle? hitStyle;
  final TextStyle? textStyle;
  final String? bgImageName;
  final String? hitText;
  final double? width;
  final double? height;
  final TextAlign? textAlign;
  final TextInputType? textInputType;
  final Function(String value)? onChangeValue;

  @override
  State<StatefulWidget> createState() {
    return _TextFiledCustomerWidgetState();
  }
}

class _TextFiledCustomerWidgetState extends State<TextFiledCustomerWidget> {
  @override
  Widget build(BuildContext context) {
    return Container(
      height: widget.height??45.h,
      width: widget.width??double.infinity,
      alignment: Alignment.center,
      decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage(
                '${widget.bgImageName}'.assetPng
            ),
            fit: BoxFit.fill,
          )
      ),
      child: TextField(
        controller: widget.controller,
        textAlign: widget.textAlign??TextAlign.center,
        textInputAction: TextInputAction.done,
        keyboardType: widget.textInputType,
        decoration: InputDecoration(
          hintText: widget.hitText??'',
          border: InputBorder.none,
          hintStyle: widget.hitStyle?? TextStyle(
            fontSize: 16.sp,
            color:const Color(0xFF999999)
          )
        ),
        style: widget.textStyle?? TextStyle(
          color: const Color(0xFF333333),
          fontSize: 16.sp,
        ),
        onChanged: widget.onChangeValue,
      ),
    );
  }
}