graphql_inspector
A Flutter package to intercept and inspect GraphQL API requests and responses β inspired by tools like Chucker for Android and Postman. Ideal for debugging GraphQL requests in development builds.
π Folder Structure
graphql_inspector/
βββ lib/
β βββ src/
β βββ GraphQLLogScreen.dart
β βββ LoggingLink.dart
βββ test/
βββ README.md
βββ pubspec.yaml
βββ LICENSE
βββ CHANGELOG.md
βββ ...
β¨ Features
- π¦ Logs every GraphQL query, mutation, and variables
- π― Displays request time and response neatly
- π§Ύ Pretty JSON viewer with syntax highlighting
- π Export GraphQL requests as
cURL
commands - π Copy/share requests directly from your Flutter UI
- π‘ Useful for QA, debugging, and API development
πΈ Screenshots
Query View | Response View | cURL Export |
---|---|---|
![]() |
![]() |
![]() |
π Getting Started
1. Add dependency
dependencies:
graphql_inspector: ^1.0.0
2. Usage
Import the package and wrap your GraphQL client with the LoggingLink
. You can then use the GraphQLLogScreen
widget to view logged requests and responses in your app.
import 'package:flutter/material.dart';
import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:graphql_inspector/graphql_inspector.dart';
import 'package:hive_flutter/hive_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Hive.initFlutter();
final httpLink = HttpLink(
'https://your.graphql.api/graphql',
defaultHeaders: {'Authorization': 'Bearer YOUR_TOKEN', 'store': 'en_sa'},
);
final loggingLink = LoggingLink(
innerLink: httpLink,
url: 'https://your.graphql.api/graphql',
headers: {'Authorization': 'Bearer YOUR_TOKEN', 'store': 'en_sa'},
);
final client = GraphQLClient(link: loggingLink, cache: GraphQLCache());
runApp(MyApp(client: client));
}
class MyApp extends StatelessWidget {
final GraphQLClient client;
const MyApp({super.key, required this.client});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('GraphQL Inspector Example')),
body: Center(
child: Builder(
builder: (context) => ElevatedButton(
child: const Text('Open Inspector'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (_) => const GraphQLLogScreen()),
);
},
),
),
),
),
);
}
}
- Replace the API URL and headers with your own.
- Use the `GraphQLLogScreen` widget anywhere in your app to inspect requests and responses.