【问题标题】:Flutter Progress Indicator Size [duplicate]颤振进度指示器大小[重复]
【发布时间】:2019-03-01 15:35:04
【问题描述】:

我想知道是否有办法改变线性和圆形进度条的宽度/长度/高度。我正在尝试使用它制作一个 XP 栏,但我不确定这是否可能。此外,我知道这些值仅通过 0.0 和 1.0,但我也认为我有可能(不确定)能够制定一个仍然可以工作的公式。

【问题讨论】:

  • 你能把你的代码放上去吗?您必须更改线性/圆形进度指示器的父项的约束,您可以更改 height , width ,值从 0.0 到 1.0。

标签: widget progress-bar flutter


【解决方案1】:

进度指示器将填充其父布局小部件,例如

SizedBox(
    height: 300.0,
    width: 300.0,
    child: 
        CircularProgressIndicator(
        valueColor: AlwaysStoppedAnimation(Colors.blue),
        strokeWidth: 5.0)
    )

【讨论】:

  • SizedBox 不限制 CircularProgressIndicator 的形状。这似乎是 Flutter 中的一个错误。但是,将其全部包含在 Center(child: ) 中。
  • 这是我在生产环境中使用的代码,如果现在不能正常工作,那么最新版本的 Flutter 中出现了一些变化。希望这只是一个错误,您使用的是什么构建通道? (稳定版、测试版、开发版、大师版?)
  • 在这里查看我的答案:stackoverflow.com/questions/51901379/… SizeBox 是否有任何效果似乎取决于它包含的内容(例如,如果包含在 Center 中,则作为广告工作,但不在 Stack 中) .我已经提交了一个错误:github.com/flutter/flutter/issues/50075
  • SizedBox 受其父级约束(强制大小),不会放松这些约束(中心将放松约束)。如果在屏幕宽度(例如在垂直滚动的 ListView 内)约束是“严格的”(不允许大小变化),则 SizedBox 宽度参数将被忽略。将 SizedBox 包裹在 Center 中的作用是,Center 填充了尽可能大的空间,然后放松了对其子项的约束,允许子项采用它想要的任何大小。 flutter.dev/docs/development/ui/layout/constraints“紧与松约束”部分对此进行了一些解释
【解决方案2】:
  1. 使用此代码,您可以确定它是一个 Widget 数组, 如果你把那是一个数组, 这是因为你可以给出的回应, 您可以添加更多小部件,
  2. 即居中
  3. 以及什么是 CircularProgressIndicator。

这样,循环进度指示器 不会取包含它的父亲的宽度和高度

问候

<Widget>[Center(child: CircularProgressIndicator())]

【讨论】:

    【解决方案3】:

    如何将创建加载指示器的类与我的 按钮,这样当我按下它时,指示灯会亮起并翻转到 下一页?

    代码如下:

    class Loader extends StatefulWidget {
          @override
          State createState() => LoaderState();
        }
    
        class LoaderState extends State<Loader> with SingleTickerProviderStateMixin {
          AnimationController controller;
          Animation<double> animation;
    
          @override
          void initState() {
            super.initState();
            controller = AnimationController(
                duration: Duration(milliseconds: 1200), vsync: this);
            animation = CurvedAnimation(parent: controller, curve: Curves.elasticOut);
            animation.addListener(() {
              this.setState(() {});
            });
            animation.addStatusListener((AnimationStatus status) {});
            controller.repeat();
          }
    
          @override
          void dispose() {
            controller.dispose();
            super.dispose();
          }
    
          @override
          Widget build(BuildContext context) {
            return Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Container(
                  color: Colors.blue,
                  height: 3.0,
                  width: animation.value * 100.0,
                ),
                Padding(
                  padding: EdgeInsets.only(bottom: 5.0),
                ),
                Container(
                  color: Colors.blue[300],
                  height: 3.0,
                  width: animation.value * 75.0,
                ),
                Padding(
                  padding: EdgeInsets.only(bottom: 5.0),
                ),
                Container(
                  color: Colors.blue,
                  height: 3.0,
                  width: animation.value * 50.0,
                )
              ],
            );
          }
        }
    
    
        Expanded(
                            child: Padding(
                              padding:
                                  EdgeInsets.only(left: 20.0, right: 5.0, top:20.0),
                              child: GestureDetector(
                                onTap: () {
                                  Navigator.push(
                                      context,
                                      MaterialPageRoute(
                                          builder: (context) => FirstScreen()));
                                },
                                child: Container(
                                    alignment: Alignment.center,
                                    height: 45.0,
                                    decoration: BoxDecoration(
                                        color: Color(0xFF1976D2),
                                        borderRadius: BorderRadius.circular(9.0)),
                                    child: Text('Login',
                                        style: TextStyle(
                                            fontSize: 20.0, color: Colors.white))),
                              ),
                            ),
                          ),
    

    【讨论】:

    • 如何将一个创建加载指示器的类与我的按钮结合起来,以便当我按下它时,指示器会打开并翻转到下一页?
    • 请在您的回答中添加解释
    • 通过点击登录按钮,加载指示应该出现3秒,然后进入下一页。
    猜你喜欢
    • 2018-11-01
    • 2023-04-11
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2022-01-23
    • 2021-05-15
    相关资源
    最近更新 更多