简体   繁体   English

在文本字段 flutter 内下拉

[英]Drop down inside text field flutter

This is what I have currently:这是我目前拥有的:

当前代码下拉列表 单击下拉后的当前代码

My design / what I want it to be:我的设计/我想要的: 未来代码

This is my code and this sized box is a part of a column which is a part of a form:这是我的代码,这个大小的框是列的一部分,列的一部分是表单的一部分:

SizedBox(
                height: 80.0,
                child: Stack(alignment: Alignment.centerRight, children: [
                  TextFormField(
                      controller: null,
                      style: const TextStyle(color: Colors.white),
                      maxLength: 2,
                      decoration: InputDecoration(
                          fillColor: const Color(0xff353251),
                          filled: true,
                          hintText: 'ex. 5 hours',
                          contentPadding: const EdgeInsets.all(20.0),
                          hintStyle: const TextStyle(color: Colors.white24),
                          border: OutlineInputBorder(
                              borderRadius: BorderRadius.circular(15.0)))),
                  DropdownButton(
                      value: goalValue,
                      dropdownColor: const Color(0xff403A4F),
                      style: const TextStyle(color: Colors.white),
                      onChanged: (String? value) {
                        setState(() {
                          goalValue = value!;
                        });
                      },
                      items: <String>['Per Week', 'Per Day', 'Per Month']
                          .map<DropdownMenuItem<String>>((String value) {
                        return DropdownMenuItem<String>(
                          value: value,
                          child: Text(value),
                        );
                      }).toList()),
                ]),
              ),

Thanks in advance!提前致谢!

Instead of Stack, I am using Container for outer decoration and Row for placing two widgets.而不是 Stack,我使用Container进行外部装饰,使用Row放置两个小部件。 There are many changes occur during styling the property and used random color, play with styling.在对属性进行样式设置时会发生许多变化,并使用随机颜色,玩弄样式。

Now The result is现在结果是
在此处输入图像描述

Container(
  alignment: Alignment.center,
  padding: const EdgeInsets.only(left: 16),
  decoration: BoxDecoration(
    borderRadius: BorderRadius.circular(15.0),
    color: Color(0xff353251),
  ),
  child: Row(
    mainAxisAlignment: MainAxisAlignment.spaceBetween,
    crossAxisAlignment: CrossAxisAlignment.center,
    children: [
      const Flexible(
        flex: 2,
        child: TextField(
          controller: null,
          style: TextStyle(color: Colors.white),
          maxLength: 2,
          buildCounter: null,
          decoration: InputDecoration(
            fillColor: Color(0xff353251),
            filled: true,
            counterText: "",
            hintText: 'ex. 5 hours',
            contentPadding: EdgeInsets.only(right: 4),
            hintStyle: TextStyle(color: Colors.white24),
            border: InputBorder.none,
            focusedBorder: InputBorder.none,
            enabledBorder: InputBorder.none,
            errorBorder: InputBorder.none,
          ),
        ),
      ),
      Flexible(
        flex: 1,
        child: Container(
          padding: EdgeInsets.only(right: 16, left: 16),
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(15.0),
            color: Colors.purpleAccent,
          ),
          child: Theme(
            data: Theme.of(context).copyWith(
              canvasColor: Colors.purpleAccent,
            ),
            child: DropdownButton(
                borderRadius: BorderRadius.circular(15.0),
                underline: const SizedBox(),
                icon: const SizedBox(),
                value: goalValue,
                style: const TextStyle(color: Colors.white),
                hint: const Text(
                  "select",
                  style: TextStyle(color: Colors.white),
                ),
                onChanged: (String? value) {
                  setState(() {
                    goalValue = value!;
                  });
                },
                items: <String>['Per Week', 'Per Day', 'Per Month']
                    .map<DropdownMenuItem<String>>((String value) {
                  return DropdownMenuItem<String>(
                    value: value,
                    child: Text(value),
                  );
                }).toList()),
          ),
        ),
      ),
    ],
  ),
),

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

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