【发布时间】:2020-05-01 21:00:32
【问题描述】:
我正在尝试使用下拉列表创建我的自定义 TextField 小部件。我想给它控制器和焦点节点的参数。我不希望它们是必需的,但如果它们不是,我不能为Controller() 和FocusNode() 设置它们。而且我不能让它们具有null 值,因为我已经在课堂上使用它们。我不知道该怎么做。这是我所拥有的:
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
class DropdownText extends StatefulWidget {
final TextEditingController controller;
final FocusNode focusNode;
const DropdownText({Key key, this.controller, this.focusNode}) : super(key: key);
@override
_DropdownTextState createState() => _DropdownTextState();
}
class _DropdownTextState extends State<DropdownText> {
bool _show = false;
@override
void initState() {
super.initState();
widget.focusNode.addListener(listener);
}
void listener(){
if(widget.focusNode.hasFocus){
setState(() {
_show = true;
});
}else{
setState(() {
_show = false;
});
}
}
}
当有人触摸用于更改其上所写内容的选项之一时,我已经在此类中使用了我的 TextField 的文本(使用 controller.text)。有什么方法可以让我的小部件用户访问 controller 和 focusNode,就像 TextField 一样?
PS:英语不是我的第一语言,我开始使用 Flutter 使用 OOP 进行编程。
编辑:
解决方案here之后是github存储库的链接。
【问题讨论】:
标签: flutter controller dropdown textfield