flutter 多选不起作用或需要类似的东西

标签 flutter dart

我是 flutter 新手,正在尝试创建一个下拉框,用户可以在其中选择多个选项或类似于下拉框的内容。我在互联网上找到的唯一东西是多选,但我无法让它工作。

我尝试使其成为我的小部件树中的唯一子项,并且我也尝试在我的 pubsec.yaml 文件中切换版本控制,但无济于事。

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_multiselect/flutter_multiselect.dart';

//void main() => runApp(MaterialApp(Choices()));
Future<Null> main() async {

runApp(
  MaterialApp(
    title: "multiselect help",
    debugShowCheckedModeBanner: false,
    initialRoute: 'Choices',
    routes: {
      'Choices': (BuildContext context) => Choices(),
    },
  ),
);
}

class Choices extends StatefulWidget {
  Choices({Key key}) : super(key: key);

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

class _ChoicesState extends State<Choices> {
  String _value;
  String _value2;
  String _value3;
  List _myActivities = [];
  String _myActivitiesResult = '';


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Container(
          child: Row(
           children: <Widget>[
      /*  DropdownButton<String>(
          items: [
            DropdownMenuItem(
              value: "1",
              child: Text("1"),
            ),
            DropdownMenuItem(
              value: "2",
              child: Text("2"),
          ),
          ],
          onChanged: (value) {
            setState(() {
              _value = value;
            });
          },
          hint: Text("Item"),
          value: _value,
        ),

    DropdownButton<String>(
      items: [
        DropdownMenuItem(
          value: "1",
          child: Text("1"),
        ),
        DropdownMenuItem(
          value: "2",
          child: Text("2"),
        ),
        DropdownMenuItem(
          value: "3",
          child: Text("3"),
        ),
        DropdownMenuItem(
          value: "4",
          child: Text("4"),
        ),

      ],
      onChanged: (value) {
        setState(() {
          _value2 = value;
        });
      },
      //new code
      hint: Text("#"),
      value: _value2,
    ),


*/
        MultiSelect(
  autovalidate: false,
  titleText: "hi",
  validator: (value) {
    if (value == null) {
      return 'Please select one or more option(s)';
    }
  },
  errorText: 'Please select one or more option(s)',
  dataSource: [
    {
      "display": "Australia",
      "value": 1,
    },
    {
      "display": "Canada",
      "value": 2,
    },
    {
      "display": "India",
      "value": 3,
    },
    {
      "display": "United States",
      "value": 4,
    }
  ],
  textField: 'display',
  valueField: 'value',
  filterable: true,
  required: true,
  value: null,
  onSaved: (value) {
    print('The value is $value');
  }
),





      ],
      ),
      ),
    ),
  );
  }

}






  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Next Page"),
      ),

      body: Choices()
    );
  }

在预期结果中,我将有一个下拉菜单或类似的东西,我可以在其中进行多项选择。实际结果没有显示任何内容,包括在未注释掉兄弟/姐妹小部件时甚至不显示它们。感谢您的帮助!

最佳答案

处理Row时,布局有时会以无限宽度结束,这就是这里发生的情况。幸运的是,解决方案很简单。只需包裹 MultiSelect Expanded中的小部件小部件,它将限制 MultiSelect仅使用可用宽度,不再使用更多宽度。

所以

MultiSelect(...),

变成了

Expanded(
  child: MultiSelect(...),
),

或者,您可以删除 Row完全只是把MultiSelect作为单个小部件。

关于 flutter 多选不起作用或需要类似的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879063/

相关文章:

android - 如何在 Flutter 中让 Android 状态栏变亮

flutter - flutter Api的Json

regex - 检查字符串是否有效,位智实时 map 链接

flutter - 将数据发送到新屏幕,但不知道如何设置

flutter - 如何在 flutter 中获取移动国家代码

flutter - 在 Dart 中显示本地化标签的问题

dart - 来自pub的软件包未正确安装

flutter - 图标小部件被图像小部件切断

flutter - 如何在 Flutter 中实现此 CircularProgressIndicator?

dart - 下拉选择不与Flutter一起显示