Flutter 颤振-如何填充步进控制生成器中的剩余空间?

Flutter 颤振-如何填充步进控制生成器中的剩余空间?,flutter,flutter-layout,stepper,Flutter,Flutter Layout,Stepper,在屏幕截图中,我想将“下一步”和“上一步”按钮放在屏幕底部 步进器有一个参数,controlsBuilder,可用于构建控件的布局。如果它只是一个简单的行,它就放在内容的正下方 显然,步进机是一种灵活的包装机。我不知道那是什么意思。我认为这意味着Stepper被视为flex对象,因为它包含一个可滚动区域(用于内容)。阅读后,如果我理解正确,它说我不能使用主轴上最大尺寸的展开的或列,因为步进器本质上是一个可滚动区域,这意味着其中的任何渲染器框都有无限的约束 那么,有哪些方法可以将控件生成器向下推

在屏幕截图中,我想将“下一步”和“上一步”按钮放在屏幕底部

步进器有一个参数,
controlsBuilder
,可用于构建控件的布局。如果它只是一个简单的行,它就放在内容的正下方

显然,步进机是一种灵活的包装机。我不知道那是什么意思。我认为这意味着Stepper被视为flex对象,因为它包含一个可滚动区域(用于内容)。阅读后,如果我理解正确,它说我不能使用主轴上最大尺寸的
展开的
,因为步进器本质上是一个可滚动区域,这意味着其中的任何渲染器框都有无限的约束

那么,有哪些方法可以将控件生成器向下推到底?

Widget _createEventControlBuilder(BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) {
return Row(
    mainAxisAlignment: MainAxisAlignment.spaceBetween,
    children: <Widget>[
      FlatButton(
        onPressed: onStepCancel,
        child: const Text('BACK'),
      ),
      FlatButton(
        onPressed: onStepContinue,
        child: const Text('NEXT'),
      ),
    ]
);
  }

我认为您可以创建自己的
步进器
,也可以尝试这种“黑客”方法:

创建两个变量来存储回调:

      VoidCallback _onStepContinue;
      VoidCallback _onStepCancel;
将您的
表单
放入
堆栈中

        Stack(
                children: <Widget>[
                  Form(
                    child: Stepper(
添加自定义按钮:

      Widget _bottomBar() {
        return Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              FlatButton(
                onPressed: () => _onStepCancel(),
                child: const Text('BACK'),
              ),
              FlatButton(
                onPressed: () => _onStepContinue(),
                child: const Text('NEXT'),
              ),
            ]);
      } 

我知道这有点脏,但您可以尝试,否则我建议您创建自己的小部件。

您也可以将步骤内容中小部件的高度更改为相同的值,并根据需要将其设置为
SingleChildScrollView
。e、 g

Step(content: Container(
      height: MediaQuery.of(context).size.height - 250, //IMPORTANT
      child: SingleChildScrollView(
        child: Column(children: <Widget>[
        ...
),
步骤(内容:容器(
高度:MediaQuery.of(context).size.height-250,//重要
子:SingleChildScrollView(
子项:列(子项:[
...
),

你能把这个屏幕的所有代码都放进去吗?@diegoveloper添加了构建方法代码。谢谢。我会尝试一下。我的理解正确吗,
Stepper
中的
controlsBuilder
的当前实现不允许因为无限约束而向下推它?@ShrimpCrackers是的,有一些限制不允许填充屏幕的约束。
      Widget _bottomBar() {
        return Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              FlatButton(
                onPressed: () => _onStepCancel(),
                child: const Text('BACK'),
              ),
              FlatButton(
                onPressed: () => _onStepContinue(),
                child: const Text('NEXT'),
              ),
            ]);
      } 
    Stack(
                children: <Widget>[
                  Form(
                    child: Stepper(
                    ....
                   ), //Form
                    Align(
                    alignment: Alignment.bottomCenter,
                    child: _bottomBar(),
                    )
Step(content: Container(
      height: MediaQuery.of(context).size.height - 250, //IMPORTANT
      child: SingleChildScrollView(
        child: Column(children: <Widget>[
        ...
),