showDebugScreen method

  1. @override
Future<void> showDebugScreen(
  1. BuildContext context
)
override

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,
                                  )),
                            ],
                          );
                        },
                      ),
                    ),
                  ],
                )),
          );
        });
      });
}