buildActions method

  1. @override
List<Widget> buildActions(
  1. BuildContext context
)
override

Optional actions to show in the console toolbar

Implementation

@override
List<Widget> buildActions(BuildContext context) {
  if (FlutterDevToolkit.logger.logEntries.isEmpty) return [];

  return [
    IconButton(
      tooltip: 'Export Logs',
      icon: const Icon(Icons.share),
      onPressed: () {
        final logs = FlutterDevToolkit.logger.logEntries;
        final exportText = const JsonEncoder.withIndent('  ').convert(
          logs
              .map(
                (e) => {
                  'message': e.message,
                  'level': e.level.name,
                  'timestamp': e.timestamp.toIso8601String(),
                },
              )
              .toList(),
        );
        ExportUtil.exportData(
          text: exportText,
          title: 'DevToolkit Logs Export',
        );
      },
    ),
    IconButton(
      tooltip: 'Clear Logs',
      icon: const Icon(Icons.delete),
      onPressed: () async {
        final confirmed = await showDialog<bool>(
          context: context,
          builder:
              (context) => AlertDialog(
                title: const Text('Clear Logs?'),
                content: const Text(
                  'This will permanently delete all log entries.',
                ),
                actions: [
                  TextButton(
                    child: const Text('Cancel'),
                    onPressed: () => Navigator.pop(context, false),
                  ),
                  ElevatedButton(
                    child: const Text('Clear'),
                    onPressed: () => Navigator.pop(context, true),
                  ),
                ],
              ),
        );

        if (confirmed ?? false) {
          FlutterDevToolkit.logger.clear();
          FlutterDevToolkit.logger.log('✅ Logs cleared');
          (context as Element).markNeedsBuild();
        }
      },
    ),
  ];
}