flutter - 下拉按钮不会改变

标签 flutter dart

嗨,我在下拉按钮上编写 float 代码时陷入困境,在用户从列表中选择之后,提示不会更改为用户选择的内容。有人可以帮忙吗?

所以这是我的代码:

DropdownButton(items: [
            DropdownMenuItem(value: "1", child: Text('+')),
            DropdownMenuItem(value: "2", child: Text('-')),
            DropdownMenuItem(value: "3", child: Text('X')),
            DropdownMenuItem(value: "4", child: Text('/'))
            ].toList(), onChanged: (value){
              setState(() {
                _value = value;
              });
            },hint: Text('Operation'),)

最佳答案

我刚刚在下面创建了一个示例,只需检查一下,让我知道它是否有效:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String selectedOperator;
  var listOfOperators = [
    Operators(type: "+ Addition", value: 1),
    Operators(type: "- Substraction", value: 2),
    Operators(type: "* Multiplication", value: 3),
    Operators(type: "/ Division", value: 4),
  ];

  @override
  void initState() {
    super.initState();
    print(listOfOperators.length);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
                  child: Container(

            child: Padding(
              padding: const EdgeInsets.all(30.0),
              child: Container(
                height: 50,
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(5.0),
                  border: Border.all(
                      color: Colors.red, style: BorderStyle.solid, width: 0.80),
                ),
                child: DropdownButton(
                    value: selectedOperator,
                    isExpanded: true,
                    icon: Padding(
                      padding: const EdgeInsets.only(left: 15.0),
                      child: Icon(Icons.arrow_drop_down),
                    ),
                    iconSize: 25,
                    underline: SizedBox(),
                    onChanged: (newValue) {
                      setState(() {
                        print(newValue);
                        selectedOperator = newValue;
                      });
                      print(selectedOperator);
                    },
                    hint: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text('Select'),
                    ),
                    items: listOfOperators.map((data) {
                      return DropdownMenuItem(
                        value: data.value.toString(),
                        child: Padding(
                          padding: const EdgeInsets.only(left: 10.0),
                          child: Text(
                            data.type,
                            style: TextStyle(
                              fontSize: 18,
                              color: Colors.black,
                            ),
                          ),
                        ),
                      );
                    }).toList()),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

class Operators {
  String type;
  int value;
  Operators({this.type, this.value});
}


created an example for you just look it will brief you everything :

关于flutter - 下拉按钮不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60350543/

相关文章:

工厂构造函数标识符的 Dart 优势

dart - 从 api 获取 JSON 列表数据

firebase - 可以从 Firestore 快照 Flutter 获取元数据吗?

flutter - 如何更改脚手架小部件的抽屉颜色

android - Flutter Pie Chart labelAccessorFn无法正常工作

Flutter 如何为凸起的按钮填充渐变色?

flutter - Navigator 没有要替换的事件路线

flutter - Flutter&provider:如何通过提供者的int值更改文本?

gradle - 如何在离线模式下使用 gradle 运行 flutter 应用程序?

flutter - 如何在 flutter block 模式中重用以前的状态字段?