Flutter:如何在 10 分钟后已经有一些小部件的列中添加小部件
Posted
技术标签:
【中文标题】Flutter:如何在 10 分钟后已经有一些小部件的列中添加小部件【英文标题】:Flutter: How to add a widget inside a column which already has some widgets after 10 min 【发布时间】:2021-04-18 03:48:36 【问题描述】:我想在一列内绘制三个小部件,但第一个小部件要在 10 分钟后绘制。 编辑:在得到昵称的回答后,我尝试了 Timer.duration,但它抛出了错误:没有为类型“_MainScreenState”定义方法“Timer”。尝试将名称更正为现有方法的名称,或者定义一个名为“Timer”的方法。我现在应该做什么 谢谢
class MainScreenPortraitPageUI extends StatefulWidget
@override
_MainScreenState createState() => _MainScreenState();
class _MainScreenState extends State<MainScreenPortraitPageUI>
@override
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(title: Text("App title goes here")),
body: Column(
children: [
Text('I want this widget to be drawn after some delay),
Text("Second widget"),
Text("Third widget"),
],
),
);
【问题讨论】:
【参考方案1】:试试这样的。这个想法是: - 你设置一个局部变量来控制你的文本是否被绘制(真/假)。 -in init state 设置将在 10 分钟后将变量翻转为 true 的计时器。它还将调用 setState(),因此您的屏幕将被重建。
(我没有尝试编译这个,所以第一次尝试可能会抛出一些错误):
class MainScreenPortraitPageUI extends StatefulWidget
@override
_MainScreenState createState() => _MainScreenState();
class _MainScreenState extends State<MainScreenPortraitPageUI>
bool drawFirstWidget=false;
@override
void initState()
super.initState();
Timer(Duration(minutes: 10), ()
setState(() drawFirstWidget=true);
);
@override
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(title: Text("App title goes here")),
body: Column(
children: [
if (drawFirstWidget) Text('I want this widget to be drawn after some delay'),
Text("Second widget"),
Text("Third widget"),
],
),
);
【讨论】:
【参考方案2】:尝试将其包装在 Timer
函数中,看看它是如何工作的?
Timer(Duration(minutes: 10), ()
Text('I want this widget to be drawn after some delay');
);
您需要import 'dart:async';
才能使用此功能。
【讨论】:
以上是关于Flutter:如何在 10 分钟后已经有一些小部件的列中添加小部件的主要内容,如果未能解决你的问题,请参考以下文章