flutter是否有一个方法Activity.resume()可以告诉开发人员用户已经回到活动.
当我从Page-B中的互联网中选择数据并返回到Page-A时,如何让Page-A知道数据是否已准备好.
当我正在学习Flutter时,我来到导航.我想屏幕之间的数据传递类似于Android中传递活动之间的数据和iOS中查看控制器之间传递数据.我如何在Flutter中做到这一点?
相关问题:
我正在创建这个规范问答,因为我找不到Flutter的另一个.我的答案如下.
我有一个小的测试应用程序我正在使用它有一个计时器,将textview更新从100倒数到0.这很好,但现在我试图暂停应用程序,如果用户按下手机上的后退按钮然后从他们重新打开应用程序时停止的位置重新启动计时器.这是我正在使用的代码:
@Override
public void onPause()
{
if(this._timer_time_remaining > 0) {
this.timer.cancel();
}
super.onPause();
Log.v("Pausing", String.format("Pausing with %d", this._timer_time_remaining));
}
@Override
public void onResume()
{
Log.v("Resuming", String.format("Resuming with %d", this._timer_time_remaining));
if(this._timer_time_remaining > 0) {
start_timer(this._timer_time_remaining);
}
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
start_timer()方法创建一个CountDownTimer,它更新onTick方法中的textview并更新this._timer_time_remaining int变量.
CountDownTimer和_timer_time_remaining都在类级别声明,如下所示:
private CountDownTimer timer;
private int _timer_time_remaining;
Run Code Online (Sandbox Code Playgroud)
从Log.v()打印我看到_timer_time_remaining变量在调用onPause时存储了正确的秒数,但是在onResume启动时它被设置回0.为什么变量会被重置?我认为应用程序将继续在后台运行相同的值.我错过了什么吗?这都是在扩展Activity的类中声明的.
提前致谢!
注意:编辑清理代码复制
我是Dart/Flutter的新手,想建立一个简单的应用程序,其中LinearProgressBar每秒都会更新.
没有太多的实际代码,我有以下设置工作.
一切都按预期工作,但有一个例外.当我在Android设备的后台移动应用程序时,'tick'会继续打印.
在原生Android上,当触发'onPause'事件时,我会取消我的定期计时器.
Flutter有类似的东西吗?我能找到的只是'initState'和'dispose'.但是,在将应用程序移动到后台时,不会调用Dispose.
我不希望计时器在后台继续滴答作响.
在我的研究中,我发现这个Stack Overflow问题onresume-and-onpause-for-widgets-on-flutter.它的答案建议使用TickerProviderStateMixin.
我用下面的方法.
class _BarItemState extends State<BarItem> with SingleTickerProviderStateMixin {
Ticker ticker;
num progress = 1.0;
@override
void initState() {
super.initState();
ticker = createTicker((duration) => setState(() {
debugPrint('tick');
progress = duration.inSeconds / 30;
}))
..start();
}
// other stuff omitted
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我仍然不满意.
原因是,自动收报机回调现在每隔几毫秒调用一次,而不是每秒调用一次.在我看来,这似乎是浪费资源(我不需要流畅的动画),...我是否过于复杂的事情?
即使我的用例似乎不需要它,我仍然想知道:
如何自己处理onPause/onResume事件?
我以前见过这个问题,但问题总是功能的子集。我正在寻找完全相同的生命周期事件。我可以说得更具体。
我知道 Flutter 小部件中存在的是
onCreate/ viewDidLoad=initStateonDestroy/ viewDidUnload=dispose这些是我想了解的生命周期事件(对于当前可见的 widget/route,而不是整个应用程序):
onResume/viewWillAppear在当前可见的小部件上被触发内部导航(在应用程序内导航)
A。您将路线/小部件推入堆栈
b. 您导航回路线/小部件(已经位于导航堆栈的背面)
外部导航(应用程序的后台和前台)
A。您从后台打开应用程序(路线/小部件是显示给用户的)
b. 您打开屏幕(电源按钮)并且应用程序已打开
onPause/在当前可见的小部件上viewDidDisappear被触发内部导航(在应用程序内导航)
A。您离开小部件/路线继续前进
b. 您可以通过关闭小部件/在堆栈中向后浏览来离开该小部件
外部导航(应用程序的后台和前台)
A。您将应用程序置于后台(并且路线/小部件是向用户显示的) b.您在应用程序打开的情况下关闭屏幕(电源按钮)
这就是场景.我刚刚停止了一个线程已按下后退键返回上一个活动,唯一的问题是我想在发生这种情况时执行一个方法,所以我想我可以用这样的方法覆盖一个方法:
@Override protected void onResume() {
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
但这似乎是在我开始活动时运行的.我希望有这个功能,但按后退键返回.
对不起,如果没有意义,我对术语不是很了解.
我正在使用Flutter应用程序,需要弹出屏幕。我尝试了initState()方法,但是没有运气。initState()第一次上课时被调用。
onResume()Flutter中是否有等效的Android 方法?
有任何想法吗?