【问题标题】:How to remove the space under the elevated button at the bottom of the screen?如何删除屏幕底部提升按钮下方的空间?
【发布时间】:2022-01-03 15:41:40
【问题描述】:
 import 'package:flutter/material.dart';

class AddPlaceScreen extends StatefulWidget {
  static const routeName = '/add-place';
  @override
  _AddPlaceScreenState createState() => _AddPlaceScreenState();
}

class _AddPlaceScreenState extends State<AddPlaceScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Add new Place data'),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: [
          Text('User Inputs'),
          ElevatedButton.icon(
            onPressed: () {},
            icon: Icon(Icons.add),
            label: Text('Add Place'),
          ),
        ],
      ),
    );
  }
}

这里我在位于页面底部的提升按钮下有一个空间,请提供任何解决方案来删除它。

【问题讨论】:

  • 在我的机器和飞镖垫上似乎都可以,我认为这是您的模拟器问题或您从哪里调用

标签: flutter dart user-interface button spacing


【解决方案1】:

试试下面的代码希望它对你有帮助。你可以用BottomSheet也可以here

Scaffold(
  body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: [
        Text('User Inputs'),
      ],
    ),
  ),
  bottomSheet: Container(
    width: double.infinity,
    child: ElevatedButton.icon(
      style: ButtonStyle(
        shape: MaterialStateProperty.all<RoundedRectangleBorder>(
          RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(0),
             
          ),
        ),
      ),
      onPressed: () {
        // Add your button press function here
        print('Button Pressed');
      },
      icon: Icon(
        Icons.add,
      ),
      label: Text(
        'Add Place',
      ),
    ),
  ),
);

您的结果屏幕->

【讨论】:

    【解决方案2】:

    请参考以下代码

    在 ElevatedButton.icon Widget 中添加这段代码

    样式:按钮样式( TapTargetSize:材质TapTargetSize .shrinkWrap, /* 请添加这个以避免填充 */ ),

    class AddPlaceScreen extends StatefulWidget {
      static const routeName = '/add-place';
      @override
      _AddPlaceScreenState createState() => _AddPlaceScreenState();
    }
    
    class _AddPlaceScreenState extends State<AddPlaceScreen> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Add new Place data'),
          ),
          body: Column(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              Text('User Inputs'),
              ElevatedButton.icon(
                style: ButtonStyle(
                  tapTargetSize: MaterialTapTargetSize
                      .shrinkWrap, /* Please add this to avoid padding */
                ),
                onPressed: () {},
                icon: Icon(Icons.add),
                label: Text('Add Place'),
              ),
            ],
          ),
        );
      }
    }
    

    【讨论】:

    • 把原代码中需要改动的地方和代码一起写出来。
    • 请检查上面的编辑代码
    • 您应该始终在代码中使用 cmets 来标记更改。
    • 好的,不便之处敬请见谅
    【解决方案3】:

    要实现这一点,请在 ElevatedButton 周围使用 remove the drop shadowextra margin

    为此设置elevation to 0,它会移除投影。

    要消除按钮周围的多余边距,请使用材质选项卡目标大小并将其设置为MaterialTabTargetSize.shrinkWrap。 MaterialTabTargetSize 基本上确保您有更大的空间可以用手指敲击,如果我们通过将其设置为 .shrinkWrap 来缩小它,您就可以摆脱多余的边距。

    在 ElevatedButton 中添加此代码:

    tapTargetSize: MaterialTabTargetSize.shrinkWrap,
    elevation: 0,
    

    因此,通过在此处进行设置,按钮现在真正位于屏幕的末端。

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多