Logging and inspection tool for Flutter development and testing

pub version License: MIT GitHub stars

Pub likes Pub points

🔍 Overview

ISpect is the main debugging and inspection toolkit designed specifically for Flutter applications.

📊 Real-time Monitoring • 🐛 Debugging • 🔍 Inspection • ⚡ Performance Tracking

ISpect empowers Flutter developers with a suite of debugging tools that seamlessly integrate into your development workflow. From monitoring HTTP requests in real-time to tracking performance metrics and managing application state, ISpect provides an intuitive interface that makes debugging efficient and insightful.

🎯 Key Features

  • 🌐 Network Monitoring: Detailed HTTP request/response inspection with error tracking
  • 📝 Logging: Advanced logging system with categorization and filtering
  • Performance Analysis: Real-time performance metrics and monitoring
  • 🔍 UI Inspector: Widget hierarchy inspection with color picker and layout analysis
  • 📱 Device Information: System and app metadata collection
  • 🐛 Bug Reporting: Integrated feedback system with screenshot capture
  • 🗄️ Cache Management: Application cache inspection and management

🏗️ Architecture

ISpect is built as a modular system with specialized packages:

Package Purpose Version
ispect Core debugging interface and tools pub
ispectify Foundation logging system (based on Talker) pub
ispectify_dio Dio HTTP client integration pub
ispectify_http Standard HTTP client integration pub
ispectify_bloc BLoC state management integration pub
ispect_jira Jira ticket creation integration pub

🌐 Internationalization

  • Support for 12 languages: English, Russian, Kazakh, Chinese, Spanish, French, German, Portuguese, Arabic, Korean, Japanese, Hindi
  • Extensible localization system

📱 Interface Preview

📦 Installation

Add ispect to your pubspec.yaml:

dependencies:
  ispect: ^4.1.4

🚀 Quick Start

import 'package:flutter/material.dart';
import 'package:ispect/ispect.dart';

void main() {
  // Initialize ISpectify for logging
  final ISpectify logger = ISpectifyFlutter.init();

  // Wrap your app with ISpect
  ISpect.run(
    () => runApp(MyApp()),
    logger: logger,
  );
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: ISpectLocalizations.localizationDelegates([
        // Add your localization delegates here
      ]),
      builder: (context, child) => ISpectBuilder(
        child: child ?? const SizedBox.shrink(),
      ),
      home: Scaffold(
        appBar: AppBar(title: const Text('ISpect Example')),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              ISpect.logger.info('Button pressed!');
            },
            child: const Text('Press me'),
          ),
        ),
      ),
    );
  }
}

⚙️ Advanced Configuration

🎨 Custom Theming

MaterialApp(
  builder: (context, child) => ISpectBuilder(
    theme: ISpectTheme(
      pageTitle: 'Your name here',
      lightBackgroundColor: Colors.white,
      darkBackgroundColor: Colors.black,
      lightDividerColor: Colors.grey.shade300,
      darkDividerColor: Colors.grey.shade800,
      logColors: {
        'error': Colors.red,
        'info': Colors.blue,
      },
      logIcons: {
        'error': Icons.error,
        'info': Icons.info,
      },
      logDescriptions: [
        LogDescription(
          key: 'riverpod-add',
          isDisabled: true,
        ),
        LogDescription(
          key: 'riverpod-update',
          isDisabled: true,
        ),
        LogDescription(
          key: 'riverpod-dispose',
          isDisabled: true,
        ),
        LogDescription(
          key: 'riverpod-fail',
          isDisabled: true,
        ),
      ],
    ),
    child: child ?? const SizedBox.shrink(),
  ),
  /* ... */
)

🎛️ Panel Customization

MaterialApp(
  builder: (context, child) => ISpectBuilder(
    options: ISpectOptions(
      locale: const Locale('your_locale'),
      isFeedbackEnabled: true,
      actionItems: [
        ISpectActionItem(
            onTap: (BuildContext context) {},
            title: 'Some title here',
            icon: Icons.add),
      ],
      panelItems: [
        ISpectPanelItem(
          enableBadge: false,
          icon: Icons.settings,
          onTap: (context) {
            // Handle settings tap
          },
        ),
      ],
      panelButtons: [
        ISpectPanelButtonItem(
            icon: Icons.info,
            label: 'Info',
            onTap: (context) {
              // Handle info tap
            }),
      ],
    ),
    child: child ?? const SizedBox.shrink(),
  ),
  /* ... */
)

📚 Examples

Complete example applications are available in the example/ directory demonstrating core functionality.

🏗️ Architecture

ISpect is built as a modular system with specialized packages:

Package Purpose Version
ispect Core debugging interface and tools pub
ispectify Foundation logging system (based on Talker) pub
ispectify_dio Dio HTTP client integration pub
ispectify_http Standard HTTP client integration pub
ispectify_bloc BLoC state management integration pub
ispect_jira Jira ticket creation integration pub

🤝 Contributing

Contributions are welcome! Please read our contributing guidelines and submit pull requests to the main branch.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Built with ❤️ for the Flutter community

Libraries

ispect