如何让我的DropdownButton影响我的TextFormField



我认为这可能不太复杂,但我是编码新手,不理解这一点,也无法在网上找到我能理解的解释。

在我的应用程序中,我的AppBar包括标题和底部,标题只是文本,底部是用户用来搜索我的数据库的TextFormField。

最近,我将标题更新为DropdownButton,我想使用用户在那里选择的内容来更改TextFormField中的搜索参数(这样它就可以搜索数据库中的不同列(。

我在一个单独的文档中构建了DropdownButton,然后将其插入标题中。找到如何使用它变得更加棘手。

我建立了某种回调,可以在控制台中打印,但我不知道如何将信息传递到TextFormField中。

class HomePage extends StatelessWidget {
HomePage({Key key, this.title}) : super(key: key);
_handleValueReturned(value) {
if (value == 1) {print('This works');} if (value == 2) {print('This works not');} else {return null;}
}

appBar: AppBar(
title: DropDownButton(
valueReturned: _handleValueReturned,
),
bottom:...

我必须使用某种提供者吗;的";或者像Eventifier或ChangeNotificationer这样的包?我搞不明白这些事情是怎么回事。

根据我的理解,您正试图在TextFormField中设置DropDownButton中的选定值,如果这是您想要做的,那么创建一个TextEditingController并将其添加到TextFormField中,然后在回调中设置其text属性,即_handleValueReturned,但您必须重建小部件,以便使用新值重建TextFormField,您必须将您的小部件转换为StatefulWidget才能做到这一点。

创建和初始化TextEditingController:

final _controller = TextEditingController();

将控制器接入TextFromField:

TextFormField(
controller: _controller,
...
);

更改_handleValueReturned回调中控制器的值:

_handleValueReturned(value) {
...
setState((){
_controller.text = value; // It can be any String according to your scenario.
});
}

旁注:当您处理一个简单的文本输入(如一个输入字段(时,您不必使用TextFormField,只需将其替换为TextField即可。

我希望我对你的问题理解正确,希望它能得到解决。

最新更新