showDebugScreen method
Implementation
@override
Future<void> showDebugScreen(BuildContext context) async {
final prefs = await SharedPreferences.getInstance();
List<String> logsJson = prefs.getStringList('logs') ?? [];
// Parse JSON strings to LogObject instances
List<LogObject> logs = logsJson.map((jsonStr) {
Map<String, dynamic> json = jsonDecode(jsonStr);
return LogObject.fromJson(json);
}).toList();
// Reverse to show newest first
logs = logs.reversed.toList();
// Store original logs for filtering
List<LogObject> allLogs = List.from(logs);
showDialog(
context: context,
builder: (context) {
return StatefulBuilder(builder: (context, setState) {
return Material(
child: SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Column(
children: [
Row(
children: [
const Text("Debug Search"),
Expanded(
child: TextField(
onChanged: (value) {
if (value.isEmpty) {
logs = List.from(allLogs);
} else {
logs = allLogs
.where((element) =>
element.feature!
.toLowerCase()
.contains(value.toLowerCase()) ||
element.log!
.toLowerCase()
.contains(value.toLowerCase()))
.toList();
}
setState(() {});
},
),
),
const SizedBox(
width: 20,
),
ElevatedButton(
onPressed: () async {
await removeAllDebug();
logs = [];
allLogs = [];
setState(() {});
},
child: Text("Clear All"),
)
],
),
Expanded(
child: ListView.builder(
itemCount: logs.length,
itemBuilder: (c, i) {
return Row(
children: [
SizedBox(
width: MediaQuery.of(context).size.width,
child: Text(
"| ${logs[i].feature!} | ${logs[i].log!}",
softWrap: true,
)),
],
);
},
),
),
],
)),
);
});
});
}