flutter AnimatedContainer中的文本溢出

5w9g7ksd  于 2023-03-19  发布在  Flutter
关注(0)|答案(2)|浏览(144)

我目前正在使用一个AnimatedContainer和一个AnimatedContainer中的LinearProgressIndicator。这是我目前的代码:

LayoutBuilder(
                  builder: (context, constraints) => AnimatedContainer(
                    width: expanded ? constraints.maxWidth : 0,
                    duration: Duration(milliseconds: 250),
                    child: Container(
                      color: Colors.red,
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: [
                          Text(trackName, maxLines: 1, overflow: TextOverflow.ellipsis),
                          Text(artists.join(", "), maxLines: 1, overflow: TextOverflow.ellipsis),
                          if (currentProgressValue != null)
                            Row(
                              children: [
                                Text(currentProgress.minutes.toString() + ":" + currentProgress.seconds.toString(),
                                    maxLines: 1, overflow: TextOverflow.ellipsis),
                                Expanded(
                                  child: LinearProgressIndicator(
                                    valueColor: new AlwaysStoppedAnimation<Color>(MyTheme.primaryColor),
                                    value: currentProgressValue / songDuration,
                                  ),
                                ),
                              ],
                            ),
                        ],
                      ),
                    ),
                  ),
                ),

问题是当压缩AnimatedContainer时,“if(currentProgressValue!= null)”之后的行中的第一个文本溢出。有效的解决方案是将Text和LinearProgressIndicator都放在Expanded中,但这样做会将空间一分为二,这不是我想要的。我不会用LinearProgressIndicator来填充Text的剩余空间。您知道如何解决这个问题吗?

bkhjykvo

bkhjykvo1#

而不是扩展使用灵活的。 Package 小部件可能会溢出,而容器变得更大的灵活。

44u64gxh

44u64gxh2#

将溢出小部件 Package 在灵活的小部件中。
例如

class MenuItemWidget extends StatelessWidget {
  const MenuItemWidget({
    Key? key,
    required this.selected,
    required this.onPress,
    required this.idx,
  }) : super(key: key);
  final int selected;
  final int idx;
  final void Function(int idx) onPress;

  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);
    return InkWell(
      onTap: () {
        onPress(idx);
      },
      child: AnimatedContainer(
        alignment: Alignment.center,
        padding: const EdgeInsets.all(SizeConst.smallInsect),
        width: selected == idx ? 90 : 40,
        height: 40,
        decoration: BoxDecoration(
          color: selected == idx ? Colors.white : null,
          borderRadius: BorderRadius.circular(30),
        ),
        duration: const Duration(milliseconds: 300),
        child: Row(
          children: [
            Icon(
              Icons.home_outlined,
              color: selected == idx ? Colors.red : Colors.white,
            ),
            if (selected == idx)
              Flexible(
                child: Padding(
                  padding: const EdgeInsets.only(left: 4),
                  child: Text(
                    'Home',
                    style: theme.textTheme.titleMedium,
                    maxLines: 1,
                    overflow: TextOverflow.fade,
                  ),
                ),
              ),
          ],
        ),
      ),
    );
  }
}

这里的文本字段得到溢出。所以我 Package 与灵活的小部件。现在它是工作正常。

相关问题