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 分钟后已经有一些小部件的列中添加小部件的主要内容,如果未能解决你的问题,请参考以下文章

Flutter中如何检测ListView的滚动位置

Flutter 如何手动安装包

在颤动中我如何在每 5 分钟后显示插页式广告

颤振:RangeError(索引):无效值:不在包含范围内0..27:28

Flutter 上的垂直可关闭屏幕实现

10分钟后触发一个动作[重复]