带推/弹出的颤振内存泄漏

时间:2021-03-30 23:17:04

标签: flutter dart memory-management memory-leaks

我真的不明白 Dart 垃圾收集器。

让我们像这样设置一个简单的小部件:

import 'package:flutter/material.dart';
import 'SecondModule.dart';

class First extends StatefulWidget {
  @override
  FirstState createState() => FirstState();
}

class FirstState extends State<First> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        toolbarHeight: 60,
        title: Text("First"),
      ),
      body: SafeArea(
        child: Center(child:
        OutlinedButton(onPressed: () => Navigator.push(context, MaterialPageRoute(builder: (context) => Second())),
            child: Text("Go to second screen")))
      ),
    );
  }
}

并且基本上第二个小部件是相同的,但推动了第一个。 当我尝试多次推送时,比如 6 次,分配列表显示:

  • 3 第一/第一状态
  • 3 秒/SecondState

现在让我们继续:

  • 弹出到第一个屏幕,它仍然显示 3 First, 3 Second。
  • 按 12 次,显示 6 First, 6 Second。
  • 跳到第一个,它会显示随机数量的实例,在多个应用运行中大约在 3 到 6 个之间。
  • 如果我使用 DevTools 中的按钮调用垃圾收集器,在它正确显示 1 First/1 Second 之后。

我做错了什么还是 Dart 内存管理应该像这样工作?如何在弹出时从内存中删除小部件?

非常感谢,干杯。

0 个答案:

没有答案