以编程方式更改DropdownButtonFormField值

时间:2020-05-04 20:21:43

标签: flutter

我正在尝试使用setState更改事件(例如按钮按下)时的DropdownButtonFormField值。但这不起作用。

注意:如果我使用DropdownButton,它可以工作,但是使用DropdownButtonFormField时,它没有响应。

这是显示我要实现的简单代码。

df['translated'] = df['words'].str.translate(trans)

     words translated
0      Cat        cvc
1      DOG        cvc
2     bike       cvcv
3    APPLE      vcccv
4  foo bar    cvv cvc

3 个答案:

答案 0 :(得分:3)

从全局关键字中定义实例变量,并将其传递给 DropdownButtonFormField

final dropdownState = GlobalKey<FormFieldState>();

您可以通过调用此方法来更改dropDownFieldItem的值

dropdownState.currentState.didChange('two');

最终代码:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Testing(),
    );
  }
}

class Testing extends StatefulWidget {
  @override
  _TestingState createState() => _TestingState();
}

class _TestingState extends State<Testing> {
  String selectedValue;
  final dropdownState = GlobalKey<FormFieldState>();

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Column(
        children: <Widget>[
          DropdownButtonFormField(
            key: dropdownState,
            value: selectedValue,
            items: ['one', 'two'].map((value) {
              return DropdownMenuItem<String>(
                value: value,
                child: Text(value),
              );
            }).toList(),
            onChanged: (value) {
              setState(() {
                selectedValue = value;
              });
            },
          ),
          RaisedButton(
            child: Text('test'),
            onPressed: () {
              dropdownState.currentState.didChange('one');
            },
          ),
        ],
      ),
    );
  }
}

答案 1 :(得分:1)

此处与DropdownButtonFormFieldDropdownButton正常工作。

flutter --version

Flutter 1.12.13+hotfix.9 • channel stable •

答案 2 :(得分:1)

在Flutter 1.17.2版中,该错误已修复,因此请务必进行升级。

Github问题:https://github.com/flutter/flutter/issues/56898

已在版本1.17.2中修复:https://github.com/flutter/flutter/wiki/Hotfixes-to-the-Stable-Channel#1172-may-28-2020