Closure call with mismatched arguments: function 'LoginScreen.build.<anonymous closure>

Issue

Hello I’m getting this error when I tried to run the code

Here is the full error:

    ======== Exception caught by widgets library =======================================================
The following NoSuchMethodError was thrown building LoginScreen(dirty):
Closure call with mismatched arguments: function 'LoginScreen.build.<anonymous closure>'
Receiver: Closure: (String) => String?
Tried calling: LoginScreen.build.<anonymous closure>()
Found: LoginScreen.build.<anonymous closure>(String) => String?

The relevant error-causing widget was: 
  LoginScreen LoginScreen:file:///C:/Users/diaaa/AndroidStudioProjects/udemy_flutter/lib/main.dart:24:13
When the exception was thrown, this was the stack: 
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:63:5)
#1      _objectNoSuchMethod (dart:core-patch/object_patch.dart:106:9)
#2      defaultFormFeild (package:udemy_flutter/shared/components/components.dart:41:26)
#3      LoginScreen.build (package:udemy_flutter/modules/login/login_screen.dart:31:19)
#4      StatelessElement.build (package:flutter/src/widgets/framework.dart:4739:28)
#5      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4665:15)
#6      Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#7      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4643:5)
#8      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4638:5)
...     Normal element mounting (169 frames)
#177    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)
#178    MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6333:36)
#179    MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6344:32)
...     Normal element mounting (362 frames)
#541    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)
#542    Element.updateChild (package:flutter/src/widgets/framework.dart:3425:18)
#543    RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1198:16)
#544    RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1167:5)
#545    RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1112:18)
#546    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2573:19)
#547    RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1111:13)
#548    WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:944:7)
#549    WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:924:7)
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
====================================================================================================

======== Exception caught by widgets library =======================================================
The following NoSuchMethodError was thrown building LoginScreen(dirty):
Closure call with mismatched arguments: function 'LoginScreen.build.<anonymous closure>'
Receiver: Closure: (String) => String?
Tried calling: LoginScreen.build.<anonymous closure>()
Found: LoginScreen.build.<anonymous closure>(String) => String?

The relevant error-causing widget was: 
  LoginScreen LoginScreen:file:///C:/Users/diaaa/AndroidStudioProjects/udemy_flutter/lib/main.dart:24:13
When the exception was thrown, this was the stack: 
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:63:5)
#1      _objectNoSuchMethod (dart:core-patch/object_patch.dart:106:9)
#2      defaultFormFeild (package:udemy_flutter/shared/components/components.dart:41:26)
#3      LoginScreen.build (package:udemy_flutter/modules/login/login_screen.dart:31:19)
#4      StatelessElement.build (package:flutter/src/widgets/framework.dart:4739:28)
#5      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4665:15)
#6      Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#7      StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
#8      Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#9      SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#10     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#11     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#12     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#13     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
#14     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#15     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#16     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#17     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#18     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#19     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#20     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#21     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#22     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#23     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#24     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#25     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#26     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#27     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#28     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#29     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#30     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#31     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#32     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#33     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#34     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#35     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
#36     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#37     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#38     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#39     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#40     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#41     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#42     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#43     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#44     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#45     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#46     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#47     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#48     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#49     _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:181:11)
#50     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#51     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#52     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#53     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#54     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#55     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#56     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#57     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#58     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#59     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#60     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#61     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#62     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#63     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#64     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#65     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#66     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#67     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#68     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#69     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#70     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#71     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#72     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#73     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
#74     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#75     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#76     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#77     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
#78     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#79     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#80     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#81     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#82     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#83     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#84     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#85     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#86     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#87     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#88     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#89     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#90     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#91     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#92     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#93     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#94     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#95     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#96     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#97     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#98     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#99     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#100    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#101    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#102    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2620:33)
#103    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#104    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:319:5)
#105    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1143:15)
#106    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1080:9)
#107    SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:863:7)
(elided 4 frames from class _RawReceivePortImpl, class _Timer, and dart:async-patch)
====================================================================================================

The LoginScreen code:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:udemy_flutter/shared/components/components.dart';
class LoginScreen extends StatelessWidget {
  var emailController = TextEditingController();
  var passController = TextEditingController();
  var formKey = GlobalKey<FormState>();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Padding(
        padding: const EdgeInsets.all(20.0),
        child: Center(
          child: SingleChildScrollView(
            child: Form(
              key: formKey,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  const Text(
                      'Login',
                    style: TextStyle(
                      fontSize: 40.0,
                      fontWeight: FontWeight.bold
                    ),
                  ),
                  const SizedBox(
                    height: 40.0,
                  ),
                  defaultFormFeild(
                      controller: emailController,
                      label: 'Email',
                      prefix: Icons.email,
                      type: TextInputType.emailAddress,
                      validate: (String value){
                        if(value.isEmpty != null){
                          return 'Email Cannot Be Empty';
                        }
                        return null;
                      }
                  ),
                  const SizedBox(
                    height: 15.0,
                  ),
                  TextFormField(
                    controller: passController,
                    obscureText: true,
                    keyboardType: TextInputType.visiblePassword,
                    decoration: const InputDecoration(
                      border: OutlineInputBorder(),
                      labelText: 'Password',
                      prefixIcon: Icon(
                        Icons.lock
                      ),
                      suffixIcon: Icon(
                        Icons.remove_red_eye,
                      )
                    ),
                    onChanged: (value) {
                      print(value);
                    },
                    onFieldSubmitted: (value) {
                      print(value);
                    },
                    validator: (value) {
                      if(value!.isEmpty){
                        return 'Password cannot be empty';
                      }
                      return null;
                    },
                  ),
                  const SizedBox(
                    height: 10.0,
                  ),
                  defaultButton(
                    function: (){
                      print(emailController.text);
                      print(passController.text);
                    },
                    text: 'Login',
                  ),
                  const SizedBox(
                    height: 10.0,
                  ),
                  defaultButton(
                    text: 'ReGister',
                    function: () {
                      print('You have just clicked on register');
                    },
                    background: Colors.red,
                    isUpperCase: false
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      const Text('Don\'t you have an account?'),
                      TextButton(onPressed: () {}, child: const Text(
                        'Register Now'
                      ))
                    ],
                  )
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

The main.dart code:

import 'package:flutter/material.dart';
import 'package:udemy_flutter/modules/bmi_result/bmi_result_screen.dart';
import 'modules/bmi_result/bmi_result_screen.dart';
import 'modules/bmi/bmi_screen.dart';
import 'modules/home/home_screen.dart';
import 'modules/login/login_screen.dart';
import 'modules/messenger/messenger_screen.dart';
import 'modules/users/users_screen.dart';
import 'modules/counter/counter_screen.dart';

void main() {
  runApp(MyApp());
  MyApp app = MyApp();
}

//Stateless widget
//Stateful widget

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: LoginScreen(),
    );
  }
}

I have this code in a separate file called components.dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

Widget defaultButton(
    {double width = double.infinity,
      Color background = Colors.blue,
      double radius = 10.0,
      required Function function,
      required String text,
      bool isUpperCase = true}) =>
    Container(
      height: 40.0,
      width: width,
      child: MaterialButton(
          onLongPress: () {},
          onPressed: function(),
          child: Text(
            isUpperCase ? text.toUpperCase() : text.toLowerCase(),
            style: TextStyle(color: Colors.white),
          )),
      decoration: BoxDecoration(
        borderRadius: BorderRadiusDirectional.circular(radius),
        color: background,
      ),
    );

Widget defaultFormFeild({
  required TextEditingController controller,
  required TextInputType type,
  Function? onSubmit, //Add question mark
  Function? onChange, //Add question mark
  required Function validate,
  required var label,
  required IconData prefix,
}) =>
    TextFormField(
      controller: controller,
      keyboardType: type,
      onFieldSubmitted: onSubmit != null? onSubmit() : null, //do null checking
      onChanged: onChange != null? onChange() : null, //do null checking
      validator: validate(),
      decoration: InputDecoration(
          labelText: label,
          prefixIcon: Icon(prefix),
          border: OutlineInputBorder()
      ),
    );

can someone tell me where I am going wrong I’m new to the Flutter platform and I’m trying to build screens for various uses as I was having problems with Null safety and I managed to solve it, but I didn’t know exactly what the problem with this code was

Solution

The error is caused by validation.
Inside Widget defaultFormFeild instead of validator: validate(), use the following

validator: (value) {

      return validate!(value);
    },

Answered By – Hillary Bett

Answer Checked By – Senaida (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *