簡體   English   中英

自定義TextFormField Flutter后綴圖標

[英]Custom TextFormField Flutter suffix icon

我想用可選suffixIcon (IconButton) 制作 TextFormField 怎么做?

import 'package:flutter/material.dart';

class CustomTextFormField extends StatelessWidget {
  final String text;
  final String hintText;
  final bool obsecureText;
  final IconButton iconButton;

  const CustomTextFormField({
    Key? key,
    required this.text,
    required this.hintText,
    this.obsecureText = false,
    this.iconButton = IconButton() //I dont know the logic
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text(text),
        const SizedBox(height: 8.0),
        Form(
          child: TextFormField(
            obscureText: obsecureText,
            decoration: InputDecoration(
              suffixIcon: iconButton,
              hintText: hintText,
            ),
          ),
        ),
        const SizedBox(height: 24.0),
      ],
    );
  }
}

您可以為默認iconButtononPressed創建可為空的IconButton和回調方法,

final IconButton? iconButton;
final VoidCallback? callback;

const CustomTextFormField({
  this.iconButton,
  this.callback,
  ....
 }
suffixIcon: iconButton ??
    IconButton(
      onPressed: callback,
      icon: const Icon(Icons.ac_unit),
    ),

或者

final IconButton iconButton;
final VoidCallback? callback;

CustomTextFormField({
  this.callback,
  Key? key,
  required this.text,
  required this.hintText,
  this.obsecureText = false,
})  : iconButton = IconButton(
        onPressed: callback,
        icon: const Icon(Icons.ac_unit),
      ),
      super(key: key);

按鈕必須使用回調,否則您可以使用 go 進行狀態管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM