dart 无作用变量增量

l3zydbqr  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(84)

我使用animatedSwitcher的Flutter,动画我的小部件列表,但事情是我想显示列表的下一个小部件没有按下任何按钮,就像一段时间后,但我不知道如何,所以我寻求任何帮助在这里,这是我的代码

Scaffold(
        backgroundColor: Colors.white,
        body: Column(
          children: [
           
            AnimatedSwitcher(
              duration: const Duration(milliseconds: 500),
              transitionBuilder: (Widget child, Animation<double> animation) {
                return ScaleTransition(scale: animation, child: child);
              },
              child: Text(
                widget.aya[i].text,
                style: Theme.of(context).textTheme.headlineMedium,
              ),
            ),
          ],
        ));

字符串

fae0ux8s

fae0ux8s1#

您可以FutureBuilder并添加所需的持续时间,然后您希望下一个小部件显示并返回它。
如下面的代码:

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.indigoAccent,
        body: FutureBuilder<Widget>(
          future: _futureFunction(),
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return snapshot.data ?? const SizedBox.shrink();
            }
            return Container(
              color: Colors.indigoAccent,
            );
          },
        ));
  }

  Future<Widget> _futureFunction() async {
    await Future.delayed(const Duration(seconds: 5));
    return Container(
      color: Colors.blueAccent,
    );
  }
}

字符串
在这里,我从scaffold body返回FutureBuilder,并传递了一个_futureFunction(),它在5秒后返回一个容器,直到那几秒,一个indigoAccent颜色的容器将被显示出来,在函数返回的容器将是可见的。
这整件事将在没有任何行动的情况下完成。
但在基本的应用程序中,你可以使用FutureBuilder,因为它是一个简单的解决方案,但我不建议在复杂的应用程序中使用,因为FutureBuilder会在每个变化的状态上构建自己,为此,你应该使用状态管理工具,如Bloc或Cubits。

qij5mzcb

qij5mzcb2#

最简单的方法是使用定时器。

int currentIndex = 0;
  Timer? timer;

 @override
 void initState() {
   super.initState();
   // Start the timer to switch automatically every 2seconds
   timer = Timer.periodic(Duration(seconds: 3), (_) {
   setState(() {
       currentIndex = (currentIndex + 1) % widget.aya.length;
        });
   });
 }

字符串
通过此设置,小部件将每3秒自动切换一次,无需按下任何按钮即可提供所需的行为。

相关问题