Spaces:
Build error
Build error
import 'package:flutter/material.dart'; | |
import 'package:flutter_highlight/flutter_highlight.dart'; | |
import 'package:flutter_highlight/themes/github.dart'; | |
import 'package:flutter/services.dart'; | |
import 'dart:convert'; | |
class JsonCodeSnippetView extends StatelessWidget { | |
final String jsonString; | |
// Constructor to initialize the jsonString that will be displayed | |
const JsonCodeSnippetView({ | |
Key? key, | |
required this.jsonString, | |
}) : super(key: key); | |
Widget build(BuildContext context) { | |
// Pretty print the JSON using JsonEncoder to format with indentation | |
String prettyJson = | |
const JsonEncoder.withIndent(' ').convert(json.decode(jsonString)); | |
return Padding( | |
// Padding applied to align the code snippet view within its container | |
padding: const EdgeInsets.fromLTRB(30, 30, 0, 30), | |
child: Row( | |
children: [ | |
// Expanded widget to ensure the code snippet view takes the available space | |
Expanded( | |
child: SingleChildScrollView( | |
// SingleChildScrollView to make the code snippet scrollable if it overflows | |
child: HighlightView( | |
// Display the pretty-printed JSON | |
prettyJson, | |
// Set the language to JSON for syntax highlighting | |
language: 'json', | |
// Apply a GitHub-like theme for the highlighting | |
theme: githubTheme, | |
// Padding applied to the code snippet inside the view | |
padding: const EdgeInsets.all(12), | |
// TextStyle applied to the code snippet (monospace font) | |
textStyle: const TextStyle( | |
fontFamily: 'monospace', | |
fontSize: 12, | |
), | |
), | |
), | |
), | |
// SizedBox to create a gap between the code snippet view and the copy button | |
const SizedBox(width: 20), | |
Material( | |
color: Colors.white, | |
// IconButton to allow the user to copy the pretty-printed JSON to the clipboard | |
child: IconButton( | |
icon: const Icon(Icons.copy), | |
onPressed: () { | |
// Copy the pretty-printed JSON to the clipboard | |
Clipboard.setData(ClipboardData(text: prettyJson)); | |
}, | |
), | |
), | |
], | |
), | |
); | |
} | |
} | |