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"),
        ],
      ),
    );
  }
}