flutter - 在 Flutter 中将多个小部件连续扩展到全宽?

标签 flutter dart

我试图在 Flutter 中获取一个按钮以扩展到其父宽度并随着添加更多小部件而动态扩展。例如,如果一行中有两个按钮,它们将每个扩展到 50% 的宽度,三个按钮扩展到 33% 等。

我试过 width: Double.infinite适用于单个按钮。可以理解的是,这不适用于多个按钮,因为宽度不受限制并且 Flutter 不知道如何调整元素的大小。

我尝试了各种属性,SizedBox , crossAxisAlignment , Expanded但它们似乎不起作用。

我想要实现的目标类似于:https://bulma.io/documentation/columns/basics/ - 基于 flex 的列布局。

App.dart

class App extends StatelessWidget {
  Widget build(BuildContext context) {
    return MaterialApp(
      // theme: WhisperyTheme,
      // theme: ThemeData(fontFamily: "Overpass"),
      home: Scaffold(
        body: Center(
          child: Column(
            children: <Widget>[
              LongButton(
                onTap: () => null,
                text: "Primary Button",
              ),
              Row(
                children: <Widget>[
                  LongButton(
                    onTap: () => null,
                    text: "Secondary Button",
                  ),
                  LongButton(
                    onTap: () => null,
                    text: "Secondary Button",
                  ),
                ],
              )
            ],
          ),
        ),
      ),
    );
  }
}

Button.dart
  @override
  Widget build(BuildContext context) {
    return Container(
      constraints: BoxConstraints(maxHeight: 40.0),
      margin: EdgeInsets.all(15),
      height: 40.0,
      decoration: BoxDecoration(border: Border.all(width: 1.5)),
      child: Material(
        color: Colors.transparent,
        child: InkWell(
          onTap: _onTap,
          child: Center(
            child: Text(_text),
          ),
        ),
      ),
    );
  }

enter image description here

最佳答案

你可以用 Flexible 包裹你的按钮小部件,其默认值 flex参数为 1 ,因此空间将在所有小部件之间平均分配:

Row(
  children: <Widget>[
    Flexible(
      child: LongButton(
        onTap: () => null,
        text: 'Secondary Button',
      ),
    ),
    Flexible(
      child: LongButton(
        onTap: () => null,
        text: 'Secondary Button',
      ),
    ),
  ],
)

关于flutter - 在 Flutter 中将多个小部件连续扩展到全宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57938570/

相关文章:

flutter - 通过 Google-Maps Flutter 插件中标记的经纬度位置的变化来更新标记位置?

flutter - dart/flutter 使用 sudo 运行进程

firebase - 使用 FirebaseAuth 、 Firestore 和 Google 登录的 Flutter multidex 问题

angular - 如何在自定义 Ng2 表单元素中访问 NgFormControl

algorithm - 为什么不通过代码战中问题平衡数的所有测试用例?

flutter - 如何使用 Flutter/Dart 根据选择将单个 Firestore 文档 ID 传递给另一个类?

android - Android Studio 更新 Bumblebee 后,该项目不是基于 Gradle 的项目

flutter - 映射字段运行时检查是否有问题?

dart - 需要关闭包含 SimpleDialog flutter 的模态底部表单

dart - 如何动态生成函数?