【问题标题】:How to dynamically change the number of steps in stepper in flutter?如何在颤动中动态改变步进器的步数?
【发布时间】:2019-03-25 23:33:10
【问题描述】:

我正在 flutter 中制作步进格式的验证表单。每个步骤都有一个验证表单。

第一次打开页面时,只有一步。我希望用户单击继续并获得更多步进器(即第 2 步并通过在第 2 步中单击继续获得更多步骤。)

我尝试通过在列表中再添加一个步骤并在调用changeCurrentStepContinue 时进行更新来更改步骤数,但它不能增加显示错误的步骤数。在一次又一次地前进时,我得到了更新的列表。

那么如何通过在每个步骤中单击继续来更改同一页面上的步骤数?

【问题讨论】:

  • “显示错误”然后请将错误添加到您的问题中。还要添加演示您尝试过的代码。

标签: android android-studio dart flutter


【解决方案1】:

根据stepper.dart 中的评论说/// The length of [steps] must not change. 这是不可能的,但我做了一些对垂直步进器很好的编辑。

按照以下步骤将该补丁应用到您的颤振代码中

  1. cdflutter目录
  2. 下载此文件0001-Made-Stepper-Stepper-Size-Dynamic.patch 并将其保存在flutter 文件夹中
  3. 在你的终端$ git apply 0001-Made-Stepper-Stepper-Size-Dynamic.patch

/flutter/packages/flutter/lib/src/material/stepper.dart 中的_buildVertical() 替换为this 函数

【讨论】:

  • 非常感谢您的解决方案。但不是操纵官方代码,是否可以为动态步进器创建自定义 pub 包或类?如果你创建一个,我肯定会把它放在我的依赖项中。谢谢。
  • 其实这只是个小东西,应该不需要pub包。我喜欢使用比目前更多的自定义选项创建一个 pub 包的想法。我在官方 Flutter 仓库中提出了一个 [pull request] (github.com/flutter/flutter/pull/23381)。如果合并,问题就解决了。查看我的 PR 以增加合并的机会。
  • 知道了。非常感谢 PR。
【解决方案2】:

我不知道我的技巧有多“好”,但我只是通过添加我要绑定到的列表中的项目总数来更改步进器的键。

return Stepper(
      key: Key("mysuperkey-" +  items.length.toString()),
      ...
);

当总步数发生变化时,这应该会创建一个新的步进器。

干杯

【讨论】:

  • 这似乎是最快最简单的解决方案。您是否有机会发现是否有任何性能 imapct?
  • 我不知道,但我停止使用它并自己做了一个。它开始变得令人讨厌,而不是好东西。爱颤抖只是因为如果你不喜欢一个组件,你需要几分钟才能为自己做一个。我的建议是你不应该破解它,而是从头开始构建一个。
  • @JuanCarlos 请问你是如何构建它的吗?
  • @cdaiga 只是根据我帖子上的代码动态更改密钥。
猜你喜欢
  • 2023-01-02
  • 2019-04-19
  • 1970-01-01
  • 2023-01-20
  • 2020-08-24
  • 2022-07-11
  • 1970-01-01
  • 2020-09-19
  • 2022-07-26
相关资源
最近更新 更多