如何在flutter中实现这个设计

问题描述 投票:0回答:1

所以我正在尝试重新设计附图中的内容。

https://i.sstatic.net/65jHd8zB.jpg

我尝试将项目排列在堆栈中,然后使用位置小部件来定位不同的容器项目,但我无法实现共享图片中共享的内容。考虑到我们从后端获取 JSON 格式的数据,我不知道最好的方法。

json flutter dart user-interface
1个回答
0
投票

如果您有状态管理并且您的视图订阅了此数据,那么数据来自后端这一事实并不重要。

CachedNetworkImage
最有可能用于在接收到数据时显示图像。要以圆形显示图像,您可以执行以下操作:

class CircularWidgetLayout extends StatelessWidget {
  final List<Widget> widgets;
  final double radius;

  const CircularWidgetLayout({
    Key? key,
    required this.widgets,
    required this.radius,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final size = Size(radius * 2, radius * 2);
    final center = Offset(size.width / 2, size.height / 2);
    final angleIncrement = 360 / widgets.length;
    final angleFactor = pi / 180;

    return Stack(
      children: widgets.mapIndexed((index, widget) {
        final angle = index * angleIncrement;
        final x = center.dx + radius * cos(angle * angleFactor);
        final y = center.dy + radius * sin(angle * angleFactor);

        final randomRotation = Random().nextDouble() * 360;

        return Positioned(
          left: x,
          top: y,
          child: Transform.rotate(
            angle: randomRotation * angleFactor,
            child: widget,
          ),
        );
      }).toList(grawable: false),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.