Search code examples
flutterdarttextfieldtexteditingcontroller

Passing TextEditingController as a paramater to a function?


I created Two text fields in flutter using a function, but I want to use two different TextEditingControllers for each. How can I pass a TextEditingController as a paramater to a function?

         Widget fieldmaker(String title) {
        return Container(
          width: double.infinity,
          height: 50,
          padding: EdgeInsets.symmetric(
            horizontal: 10,
          ),
          child: TextField(
            controller: ,
            decoration: InputDecoration(
              hintText: title,
              hintStyle: TextStyle(
                fontSize: 20,
              ),
              contentPadding: EdgeInsets.all(2),
            ),
          ),
        );
     }
final amountcontroller=TextEditingController();
  final titlecontroller=TextEditingController();

        Widget build(BuildContext context) {
      return Column(
        children: [
          fieldmaker('Title'),
          fieldmaker('Amount'),
        ],
      );
    }

Solution

  • You can pass it as an argument to your function:

             Widget fieldmaker(String title,TextEditingController controller) {
            return Container(
              width: double.infinity,
              height: 50,
              padding: EdgeInsets.symmetric(
                horizontal: 10,
              ),
              child: TextField(
                controller: controller,
                decoration: InputDecoration(
                  hintText: title,
                  hintStyle: TextStyle(
                    fontSize: 20,
                  ),
                  contentPadding: EdgeInsets.all(2),
                ),
              ),
            );
         }
    final amountcontroller=TextEditingController();
      final titlecontroller=TextEditingController();
    
            Widget build(BuildContext context) {
          return Column(
            children: [
              //pass them to the function from here
              fieldmaker('Title',titlecontroller), 
              fieldmaker('Amount',amountcontroller),
            ],
          );
        }