繁体   English   中英

Flutter-在单独的类中委派文本字段

[英]Flutter - Delegate Textfield in separate Class

我想在Flutter中使用带有文本字段的单独类。 文本字段已经显示并且可以编辑。 如何将变量_eingegebenerWert传递给创建此类对象的类?

文本字段类的代码:

class eingabeTextbox extends StatelessWidget {
  final bool _nummerischeTastatur;
  final String _ueberschrift;
  final String _platzhalter;
  String _eingegebenerWert;

  eingabeTextbox(this._nummerischeTastatur, this._ueberschrift, this._platzhalter, this._eingegebenerWert);

  @override
  Widget build (BuildContext context){
    return new TextField(
        keyboardType: _nummerischeTastatur == true ? TextInputType.number : TextInputType.multiline,
        decoration: new InputDecoration(
            labelText: _ueberschrift,
            hintText: _platzhalter
        ),
        onChanged: (String str){
          _eingegebenerWert = str;
          print("neuer Wert:" + _eingegebenerWert);
        }
    );
  }
}

您可以使用typedef ValueChanged作为参数传递并从另一个类获取值,您正在传递一种方法来接收该值:

    class eingabeTextbox extends StatelessWidget {
      final bool _nummerischeTastatur;
      final String _ueberschrift;
      final String _platzhalter;
      ValueChanged<String> eingegebenerWert;

      eingabeTextbox(this._nummerischeTastatur, this._ueberschrift, this._platzhalter, this.eingegebenerWert);

      @override
      Widget build (BuildContext context){
        return new TextField(
            keyboardType: _nummerischeTastatur == true ? TextInputType.number : TextInputType.multiline,
            decoration: new InputDecoration(
                labelText: _ueberschrift,
                hintText: _platzhalter
            ),
            onChanged: eingegebenerWert
        );
      }
    }

来自其他班级的电话

    @override
      Widget build (BuildContext context){
        return new eingabeTextbox(
            ...
            eingegebenerWert: (String str){
              print("neuer Wert:" + str);
            }
        );
      }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM