对于不熟悉状态恢复需求的用户: 移动操作系统可能会终止后台应用以回收资源供前台应用使用。发生这种情况时,操作系统会通知该应用即将被终止以便其快速保存界面状态,从而在用户切换回该应用时能够恢复。正确实现该操作后,既能为用户提供无缝体验,也可以更好地利用设备资源。Flutter 此前尚不支持状态恢复,因为在不具备框架支持的情况下很难正确地实现状态恢复。正因如此,我们很高兴能够在 Android 平台中提供此功能的基础实现。

看完后的理解如下:

  @Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
    }

    @Override
    public void onRestoreInstanceState(@Nullable Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
    }

类似于这样子的来恢复数据的。

下面是一段官方示例:


class CounterState extends State<RestorableCounter> with RestorationMixin {
    @override
    String get restorationId => widget.restorationId;

    RestorableInt _counter = RestorableInt(0);

    @override
    void restoreState(RestorationBucket oldBucket) => registerForRestoration(_counter, 'count');

    void _incrementCounter() => setState(() => _counter.value++);

    @override
    Widget build(BuildContext context) => Scaffold(
        body: Center(child: Text('${_counter.value}')),
        floatingActionButton: FloatingActionButton(onPressed: _incrementCounter),
    );
}

大致意思是说通过新的数据类型来存储数据:RestorableProperty,文章中使用了RestorableInt,当然也有RestorableDouble,RestorableString,和 RestorableTextEditingController等等来供我们使用,不够还可以通过RestorableProperty来自行扩展,目的是为了用户更好的体验。

该功能还未发布,在测试阶段,将在 Flutter 的下一个稳定版本中正式发布。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐