Flutter アプリを長時間使っていると、
「メモリ使用量が増え続ける」「画面遷移でインスタンスが解放されない」
といった メモリリーク問題 に直面することがあります。
そんなときに役立つのが leak_tracker。
開発中に リークしているオブジェクトを検知 できる便利なパッケージです。
インストール
pubspec.yaml
に追加します。
dev_dependencies:
leak_tracker: ^10.0.0 # 最新バージョンを確認してください
dev_dependencies
に入れるのは、本番コードではなく 開発・テスト用ツール だからです。
基本的な使い方
leak_tracker
は「特定のオブジェクトが解放されているか」を監視できます。
import 'package:flutter/material.dart';
import 'package:leak_tracker/leak_tracker.dart';
void main() {
// LeakTracker を有効化
LeakTracking.start();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: LeakExamplePage(),
);
}
}
class LeakExamplePage extends StatefulWidget {
const LeakExamplePage({super.key});
@override
State<LeakExamplePage> createState() => _LeakExamplePageState();
}
class _LeakExamplePageState extends State<LeakExamplePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("leak_tracker サンプル")),
body: Center(
child: ElevatedButton(
onPressed: () {
// 監視対象のオブジェクトを作成
final obj = Object();
LeakTracking.track(obj, debugName: "TestObject");
debugPrint("オブジェクトを作成してトラッキングしました");
},
child: const Text("オブジェクトを作成"),
),
),
);
}
}
主なポイント
LeakTracking.start()
→ リーク検知を有効化LeakTracking.track(obj, debugName: "名前")
→ 特定オブジェクトを監視対象に- 解放されていないオブジェクトがあると警告ログが出力される
- 開発・テスト専用 なので、本番アプリには含めない
まとめ
leak_tracker
を使うと、
「画面遷移後にウィジェットやコントローラが残っていないか?」
といったチェックが簡単にできます。
Flutter アプリの 品質向上 や リソースリーク防止 に役立つツールです。