【问题标题】:Flutter Call Listener from another class来自另一个类的 Flutter Call Listener
【发布时间】:2021-01-01 16:45:02
【问题描述】:

我对 Flutter(来自 Java)非常陌生,并且正在开发第一个 Android 应用程序。

在我的项目中,我使用不同的类来创建一个可重用的小部件(来自示例 here),它与所有方法完美配合,但我无法找到定义和重用方法 @ 987654322@.

这是我的代码:

class AppTextField extends StatelessWidget {
  //
  AppTextField({
    this.controller,
    this.textInputType,
    this.pwValidator,

    this.editingComplete,  // this the method that is causing the problem
  });

  final TextEditingController controller;
  final TextInputType textInputType;
  final FormFieldValidator pwValidator;

  final Listener editingComplete;  //  This doesn't work. Am I using the wrong listener?

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Theme(
        data: ThemeData(
          primaryColorDark: Colors.blue,
        ),
        child: Padding(
          padding: EdgeInsets.fromLTRB(25, 15, 25, 0),
          child: TextFormField(
            controller: controller,
            keyboardType: null == textInputType ? textInputType : textInputType,
            validator: null == pwValidator ? pwValidator : pwValidator,

            // I am facing problems with this line of code 
            onEditingComplete:  null == editingComplete ? editingComplete : editingComplete,                
          ),
        ),
      ),
    );
  }
}

这是我要实现和重用小部件的类:

Container(
    child: AppTextField(

          controller: _controllerPassword,              
          pwValidator: (value) { },
          
          onEditingComplete:          // here is where I am facing difficulties              
    ),

【问题讨论】:

    标签: flutter textfield textformfield


    【解决方案1】:

    属性onEditingCompleteVoidCallback。这是一个没有参数的函数,不返回任何数据。

    AppTextField 中将onEditingComplete 定义为

    final VoidCallback onEditingComplete;
    

    然后将其分配给 TextFormField 的 onEditingComplete 属性。另外,去掉三元运算符。

    onEditingComplete: onEditingComplete
    

    并且在使用小部件时,像这样传递回调:

    Container(
      child: AppTextField(
    
          controller: _controllerPassword,              
          pwValidator: (value) { },
          
          onEditingComplete:   (){
              //Do what you want to do here.
          }           
    ),
    

    【讨论】:

    • 帅哥,非常感谢。我认为这与回调有关。感谢您的解释和代码 sn-p... 并感谢您提出摆脱三元运算符的建议。代码运行流畅,看起来干净整洁。
    猜你喜欢
    • 2021-08-28
    • 2022-12-18
    • 2020-03-12
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    相关资源
    最近更新 更多