appspector 0.1.0

  • Readme
  • Changelog
  • Example
  • Installing
  • 87

GitHub release

AppSpector #

A plugin that integrate AppSpector to your Flutter project.

With AppSpector you can remotely debug your app running in the same room or on another continent. You can measure app performance, view database content, logs, network requests and many more in realtime. This is the instrument that you've been looking for. Don't limit yourself only to simple logs. Debugging doesn't have to be painful!

AppSpector demonstration

Installation #

Each app you want to use with AppSpector SDK you have to register on the web ( and add two native applications(for iOS and Android). Application API keys will be available on the app settings page.

Add AppSpector SDK to pubspec.yaml #

  appspector: '0.1.0

Initialize AppSpector SDK #

void main() {

void runAppSpector() {
  var config = new Config();
  config.iosApiKey = "Your iOS API_KEY";
  config.androidApiKey = "Your Android API_KEY";;

Build and Run #

Build your project and see everything work! When your app is up and running you can go to and connect to your application session.

Features #

AppSpector provides many monitors that are can be different for both platforms.

SQLite monitor #

Provides browser for sqlite databases found in your app. Allows to track all queries, shows DB scheme and data in DB. You can issue custom SQL query on any DB and see results in browser immediately.

SQLite monitor

HTTP monitor

Shows all HTTP traffic in your app. You can examine any request, see request/response headers and body. We provide XML and JSON highliting for request/responses with formatting and folding options so even huge responses are easy to look through.

HTTP monitor

Logs monitor #

Displays all logs generated by your app.


AppSpector Logger allows you to collect log message only into AppSpector service.


Location monitor #

Most of the apps are location-aware. Testing it requires changing locations yourself. In this case, location mocking is a real time saver. Just point to the location on the map and your app will change its geodata right away.


Screenshot monitor #

Simply captures screenshot from the device.

SharedPreference/UserDefaults monitor #

Provides browser and editor for SharedPreferences/UserDefaults.

Performance monitor #

Displays real-time graphs of the CPU / Memory/ Network / Disk / Battery usage.

Environment monitor #

Gathers all of the environment variables and arguments in one place, info.plist, cli arguments and much more.

Notification Center monitor (only for iOS) #

Tracks all posted notifications and subscriptions. You can examine notification user info, sender/reciever objects, etc. And naturally you can post notifications to your app from the frontend.

For mode details, you can visit Android SDK and iOS SDK pages.

Feedback #

Let us know what do you think or what would you like to be improved:

Join our slack to discuss setup process and features

0.1.0 24 Dec 2019 #

  • Fixed logging module

0.0.9 20 Nov 2019 #

  • Fix compatibility with DIO library

0.0.8 11 Sep 2019 #

  • Add WidgetsFlutterBinding.ensureInitialized(); to
  • Fix issue about 'toImage' isn't defined for the class 'ContainerLayer
  • Use MethodChannel only on MainThread

0.0.7 - 29 Jul 2019 #

  • Fix compatibility issues with the latest flutter version

0.0.6 - 15 Jul 2019 #

  • Fix compatibility issues with new dart version
  • Bug fixes

0.0.4 - 6 May 2019 #

  • Update README

0.0.3 - 25 Apr 2019 #

  • Add Http Monitor
  • Add SharedPreference/UserDefaults Monitor
  • Add Logger to collect logs only into AppSpector Service

0.0.2 - 22 Jan 2019 #

  • Fix issue with black screen in Screenshot Monitor

0.0.1 - 20 Jan 2019 #

  • Initial release with base initialization of AppSpector


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

import 'color.dart';
import 'http_page.dart';
import 'main_page.dart';
import 'routes.dart';
import 'sqlite_page.dart';
import 'package:logging/logging.dart' as logger;

void main() {
  logger.Logger.root.level = logger.Level.ALL;
  logger.Logger.root.onRecord.listen((logger.LogRecord rec) {
    Logger.log(LogLevel.DEBUG, rec.loggerName, "(${}) ${rec.message}");
    print('${}: ${rec.time}: ${rec.message}');

void runAppSpector() {
  var config = new Config();
  config.iosApiKey = "YjU1NDVkZGEtN2U3Zi00MDM3LTk5ZGQtNzdkNzY3YmUzZGY2";
  config.androidApiKey = "MWM1YTZlOTItMmU4OS00NGI2LWJiNGQtYjdhZDljNjBhYjcz";;

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or press Run > Flutter Hot Reload in IntelliJ). Notice that the
        // counter didn't reset back to zero; the application is not restarted.
          primarySwatch: appSpectorPrimary,
          accentColor: appSpectorAccent),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
      routes: {
        Routes.SQLiteMonitorPage: (BuildContext context) => SQLitePage(),
        Routes.HttpMonitorPage: (BuildContext context) => HttpMonitorPage(),

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  appspector: ^0.1.0

2. Install it

You can install packages from the command line:

with Flutter:

$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:appspector/appspector.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Mar 31, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Health suggestions

Fix lib/src/request_receiver.dart. (-0.50 points)

Analysis of lib/src/request_receiver.dart reported 1 hint:

line 39 col 35: The member 'layer' can only be used within instance members of subclasses of 'package:flutter/src/rendering/object.dart'.

Format lib/src/http/client.dart.

Run flutter format to format lib/src/http/client.dart.

Format lib/src/http/request_wrapper.dart.

Run flutter format to format lib/src/http/request_wrapper.dart.

Format lib/src/log/logger.dart.

Run flutter format to format lib/src/log/logger.dart.

Maintenance suggestions

The package description is too short. (-1 points)

Add more detail to the description field of pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.3.1-dev.1.0 <3.0.0
flutter 0.0.0
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.8
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8