【问题标题】:TextFormField throws an exception on startUp and when the keyboard keys are pressedTextFormField 在启动时和按下键盘键时抛出异常
【发布时间】:2021-01-05 17:10:04
【问题描述】:

我的代码中有一个 TextFormField,用户需要在其中输入一个单词(在本例中为电子邮件) 但是当应用程序打开此屏幕时,它会立即引发异常,并且每次用户按下键盘上的键时都会重复该异常

E/MethodChannel#flutter/platform(24591): Failed to handle method call
E/MethodChannel#flutter/platform(24591): java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.app.trust.ITrustManager.isDeviceLocked(int)' on a null object reference
E/MethodChannel#flutter/platform(24591):    at android.os.Parcel.readException(Parcel.java:1626)
E/MethodChannel#flutter/platform(24591):    at android.os.Parcel.readException(Parcel.java:1573)
E/MethodChannel#flutter/platform(24591):    at android.content.IClipboard$Stub$Proxy.hasPrimaryClip(IClipboard.java:233)
E/MethodChannel#flutter/platform(24591):    at android.content.ClipboardManager.hasPrimaryClip(ClipboardManager.java:156)
E/MethodChannel#flutter/platform(24591):    at io.flutter.plugin.platform.PlatformPlugin.getClipboardData(PlatformPlugin.java:287)
E/MethodChannel#flutter/platform(24591):    at io.flutter.plugin.platform.PlatformPlugin.access$700(PlatformPlugin.java:26)
E/MethodChannel#flutter/platform(24591):    at io.flutter.plugin.platform.PlatformPlugin$1.getClipboardData(PlatformPlugin.java:85)
E/MethodChannel#flutter/platform(24591):    at io.flutter.embedding.engine.systemchannels.PlatformChannel$1.onMethodCall(PlatformChannel.java:141)
E/MethodChannel#flutter/platform(24591):    at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/MethodChannel#flutter/platform(24591):    at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#flutter/platform(24591):    at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:693)
E/MethodChannel#flutter/platform(24591):    at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#flutter/platform(24591):    at android.os.MessageQueue.next(MessageQueue.java:323)
E/MethodChannel#flutter/platform(24591):    at android.os.Looper.loop(Looper.java:135)
E/MethodChannel#flutter/platform(24591):    at android.app.ActivityThread.main(ActivityThread.java:5445)
E/MethodChannel#flutter/platform(24591):    at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#flutter/platform(24591):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
E/MethodChannel#flutter/platform(24591):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

这是调用的异常,我相信是因为TextFormField,因为当我注释掉那个Widget相关的代码时,异常就消失了。

我的这个小部件的代码:

class AuthPageState extends State<AuthPage> {
  final formKey = GlobalKey<FormState>();
  String _email, _password = "";

  @override
  Widget build(BuildContext context) {
    final emailField = SizedBox(
      height: 44.0,
      child: TextFormField(
          obscureText: false,
          onChanged: (val) => _email = val,
          autovalidateMode: AutovalidateMode.onUserInteraction,
          keyboardType: TextInputType.emailAddress,
          decoration: InputDecoration(
            contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
            labelText: "Email",
            hintText: "Enter Valid Email",
            border:
                OutlineInputBorder(borderRadius: BorderRadius.circular(5.0)),
          )),
    );
  return Scaffold(
      body: Center(
        child: Container(
          color: Colors.white,
          child: Padding(
            padding: const EdgeInsets.all(36.0),
            child: SingleChildScrollView(
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Form(key: formKey, child: emailField),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

也许我在错误的地方添加了一些东西,或者我忘记了一些东西。我对 Flutter 中的移动开发相当陌生。我不理解这个异常,到目前为止,我还没有找到任何关于 TextFormField 的此类异常的信息。

感谢您的帮助!

【问题讨论】:

  • 该错误是关于在未初始化对象上调用的方法“isDeviceLocked”...这似乎与您的表单无关。你可以尝试删除Form(key: formKey, child: emailField),,看看它是否与emailField有关?
  • 当我评论表单行时,异常消失了。我还尝试评论 emaiField,它也消失了。在我取消注释 emailField 的那一刻,出现异常。 ://

标签: android flutter input mobile


【解决方案1】:

参数autovalidateMode: AutovalidateMode.onUserInteraction,已弃用,请尝试将其删除link

【讨论】:

  • 自动验证参数不是被弃用了吗?而 autovalidateMode 取代了它? flutter.dev/docs/release/breaking-changes/… 但是即使我对该行/参数进行评论,仍然会发生相同的错误,该异常该死。
  • 确实,我的错!当您将 SizedBox 代码放入 Form 时会发生什么?替换 emailField ?如果你去掉 SizeBox,直接使用 TextFormField 呢?
  • 没关系,感谢您到目前为止的帮助!到目前为止似乎没有任何改变,我什至删除了TextFormField()中的所有内容,将其保留为空的Widget,异常仍然出现。如果我评论小部件,则永远不会显示异常。
  • 您是否尝试从这个示例从头开始:flutter.dev/docs/cookbook/forms/validation
  • 呃,它也给出了同样的错误。从理论上讲,这应该可以正常工作。这可能来自我的 Flutter SDK(?)也许?在我的 pubspec 中,我有 ">=2.7.0
猜你喜欢
  • 2021-02-06
  • 1970-01-01
  • 2010-10-31
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
相关资源
最近更新 更多