Flutter:如何在 10 分钟后在已有一些小部件的列中添加小部件
Flutter: How to add a widget inside a column which already has some widgets after 10 min
我想在一列内绘制三个小部件,但要在 10 分钟后绘制第一个小部件。
{编辑:从 Nickname 得到答案后,我尝试了 Timer.duration 但它抛出错误:The method 'Timer' isn't defined for the type '_MainScreenState'。尝试将名称更正为现有方法的名称,或定义一个名为 '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"),
],
),
);
}
}
尝试将其包装在 Timer
函数中,看看效果如何?
Timer(Duration(minutes: 10), () {
Text('I want this widget to be drawn after some delay');
});
您需要 import 'dart:async';
才能使用此功能。
尝试这样的事情。这个想法是:
- 你设置一个局部变量来控制你的文本是否被绘制 (true/false)。
- 在初始状态下设置定时器,该定时器将在 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"),
],
),
);
}
}
我想在一列内绘制三个小部件,但要在 10 分钟后绘制第一个小部件。 {编辑:从 Nickname 得到答案后,我尝试了 Timer.duration 但它抛出错误:The method 'Timer' isn't defined for the type '_MainScreenState'。尝试将名称更正为现有方法的名称,或定义一个名为 '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"),
],
),
);
}
}
尝试将其包装在 Timer
函数中,看看效果如何?
Timer(Duration(minutes: 10), () {
Text('I want this widget to be drawn after some delay');
});
您需要 import 'dart:async';
才能使用此功能。
尝试这样的事情。这个想法是: - 你设置一个局部变量来控制你的文本是否被绘制 (true/false)。 - 在初始状态下设置定时器,该定时器将在 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"),
],
),
);
}
}