【问题标题】:Flutter: How to reduce size of CupertinoPicker in ModalBottomSheet?Flutter:如何减小 ModalBottomSheet 中 CupertinoPicker 的大小?
【发布时间】:2020-01-09 16:42:38
【问题描述】:

每当我尝试在ModalBottomSheetColumnRowContainer 中设置CupertinoPicker 时,它似乎占据了尽可能多的位置。

有没有办法将ModalBottomSheet 的大小/高度限制为CupertinoPicker 的实际大小,这显然比ModalBottomSheet 的高度要小得多(通过其灰色背景颜色变得明显)。

这是我的代码:

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';

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

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


class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(body:
    Center(child: RaisedButton(onPressed: () => showPicker(context),
        child: Text('Show Bottom Sheet')),)
    );
  }


  Widget showPicker(BuildContext context) {
    showModalBottomSheet(
        context: context,
        builder: (context) {
              return Container(
                child: Column(
                  mainAxisSize: MainAxisSize.min,
                  children: <Widget>[
                    Text('This is a picker'),
                    Expanded(
                      child: Row(
                        mainAxisSize: MainAxisSize.min,
                        children: <Widget>[
                          Expanded(
                            child: Container(
                              height: 100,
                              child: CupertinoPicker(
                                itemExtent: 30,
                                onSelectedItemChanged: (int index) {
                                  print(index);
                                },
                                children: <Widget>[
                                  Center(child: Text("Item 1")),
                                  Center(child: Text("Item 2")),
                                  Center(child: Text("Item 3")),
                                ],
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                  ],
                ),
              );

        });
  }

}

这是我得到的:

感谢您提供的任何提示、提示和建议!

【问题讨论】:

  • 只需删除此文本小部件下方的第一个 Expanded (Text('This is a picker'),)。这将解决问题

标签: flutter layout cupertinopicker


【解决方案1】:
  Widget showPicker(BuildContext context) {
    showModalBottomSheet(
        context: context,
        builder: (context) {
              return Container(
                child: Column(
                  mainAxisSize: MainAxisSize.min,
                  children: <Widget>[
                    Text('This is a picker'),
                    Row(
                      mainAxisSize: MainAxisSize.min,
                      children: <Widget>[
                        Expanded(
                          child: Container(
                            height: 100,
                            child: CupertinoPicker(
                              itemExtent: 30,
                              onSelectedItemChanged: (int index) {
                                print(index);
                              },
                              children: <Widget>[
                                Center(child: Text("Item 1")),
                                Center(child: Text("Item 2")),
                                Center(child: Text("Item 3")),
                              ],
                            ),
                          ),
                        ),
                      ],
                    ),
                  ],
                ),
              );

        });
  }

这可以解决问题粘贴方法,你会得到你想要的输出

【讨论】:

    猜你喜欢
    • 2020-05-04
    • 2022-01-20
    • 2019-02-03
    • 2021-10-26
    • 2011-09-03
    • 2016-01-17
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多