argos_inspector 0.3.1 copy "argos_inspector: ^0.3.1" to clipboard
argos_inspector: ^0.3.1 copied to clipboard

All-seeing Flutter APM and HTTP packet capture plugin — FPS monitoring, native HTTP interception (NSURLProtocol on iOS, OkHttp Interceptor on Android), curl reproduction, and a route-grouped packet in [...]

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:ui';

import 'package:mmkv/mmkv.dart';
import 'package:argos_inspector/argos_inspector.dart';

import 'package:argos_example/list_example.dart';
import 'package:argos_example/mmkv_storage_adapter.dart';
import 'package:argos_example/native_demo_page.dart';
import 'package:argos_example/apm_demo_page.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  DartPluginRegistrant.ensureInitialized();
  await MMKV.initialize();

  Future.delayed(const Duration(milliseconds: 500)).then((_) {
    ArgosManager.instance.init(
      config: ArgosConfig(
        apmTypes: [
          ArgosCapability.network,
          ArgosCapability.crash,
          ArgosCapability.jank,
          ArgosCapability.resource,
        ],
        enableStorage: true,
        maxPacketRecords: 200,
        storageAdapter: MmkvStorageAdapter(),
      ),
      listener: (ArgosBaseModel? model) {
        debugPrint(model?.getValue());
      },
    );
    ArgosNativeCapture.instance.enable();
  });

  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _ArgosRouteObserver extends NavigatorObserver {
  void _update(Route<dynamic>? route) {
    ArgosManager.instance.currentRoute = route?.settings.name ?? '';
  }

  @override
  void didPush(Route<dynamic> route, Route<dynamic>? previousRoute) =>
      _update(route);

  @override
  void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) =>
      _update(previousRoute);

  @override
  void didReplace({Route<dynamic>? newRoute, Route<dynamic>? oldRoute}) =>
      _update(newRoute);
}

class _MyAppState extends State<MyApp> {
  final _routeObserver = _ArgosRouteObserver();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorObservers: [_routeObserver],
      routes: {
        '/listPage': (context) => const ListExamplePage(),
        '/packets': (context) => const ArgosPacketListPage(),
        '/nativeDemo': (context) => const NativeCaptureDemoPage(),
        '/apmDemo': (context) => const ApmDemoPage(),
        '/': (context) => const MyHomePage(),
      },
      initialRoute: '/',
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Plugin example app'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            TextButton(
              onPressed: () => Navigator.pushNamed(context, '/listPage'),
              child: const Text('滚动列表 (触发网络请求)'),
            ),
            const SizedBox(height: 16),
            TextButton(
              onPressed: () => Navigator.pushNamed(context, '/packets'),
              child: const Text('查看抓包记录'),
            ),
            const SizedBox(height: 16),
            TextButton(
              onPressed: () => Navigator.pushNamed(context, '/nativeDemo'),
              child: const Text('原生抓包 demo'),
            ),
            const SizedBox(height: 16),
            TextButton(
              onPressed: () => Navigator.pushNamed(context, '/apmDemo'),
              child: const Text('APM demo (崩溃/卡顿/资源)'),
            ),
          ],
        ),
      ),
    );
  }
}
1
likes
130
points
138
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

All-seeing Flutter APM and HTTP packet capture plugin — FPS monitoring, native HTTP interception (NSURLProtocol on iOS, OkHttp Interceptor on Android), curl reproduction, and a route-grouped packet inspector UI.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter

More

Packages that depend on argos_inspector

Packages that implement argos_inspector