Вы можете попробовать использовать пакет dashed_circle для создания истории Instagram в виде круга (посмотрите на изображение ниже). Чтобы создать простую вращающуюся версию, вы можете добавить два вращения, используя конструктор Transform.rotate .
Первый поворот должен быть родительским виджетом пунктирной окружности. Второе вращение должно окружать дочерний виджет пунктирной окружности с противоположным углом первого вращения.
Чтобы создать эффект замедления слияния штрихов в одну строку, вы можете медленно уменьшить свойство зазора dashed_circle
.
Я попробовал и попробовал себя в быстрой демонстрации, чтобы показать пример реализации:
import 'package:flutter/material.dart';
import 'package:dashed_circle/dashed_circle.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(),
home: Scaffold(
body: Center(
child: RotateAnimationDemo(),
),
),
);
}
}
class RotateAnimationDemo extends StatefulWidget {
@override
State<StatefulWidget> createState() => RotateAnimationDemoState();
}
class RotateAnimationDemoState extends State<RotateAnimationDemo>
with SingleTickerProviderStateMixin {
AnimationController controller;
Animation base;
Animation inverted;
Animation gap;
@override
void initState() {
super.initState();
controller =
AnimationController(vsync: this, duration: Duration(seconds: 3));
base = CurvedAnimation(parent: controller, curve: Curves.easeOut);
inverted = Tween<double>(begin: 0.0, end: -1.0).animate(base);
gap = Tween<double>(begin: 3.0, end: 0.0).animate(base)
..addListener(() {
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () => controller.forward(),
child: RotationTransition(
turns: base,
child: DashedCircle(
gapSize: gap.value,
dashes: 20,
color: Colors.deepOrange,
child: RotationTransition(
turns: inverted,
child: Padding(
padding: const EdgeInsets.all(7.0),
child: CircleAvatar(
radius: 60.0,
backgroundImage: NetworkImage(
'https://upload.wikimedia.org/wikipedia/commons/thumb/7/71/Bill_Gates_Buys_Skype_%285707954468%29.jpg/2560px-Bill_Gates_Buys_Skype_%285707954468%29.jpg'),
),
),
),
),
),
);
}
}