skywalking_flutter 0.1.0 copy "skywalking_flutter: ^0.1.0" to clipboard
skywalking_flutter: ^0.1.0 copied to clipboard

OpenTelemetry OTLP/HTTP Flutter plugin for traces and metrics (SkyWalking OAP compatible).

example/lib/main.dart

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  OtlpFlutter.init(
    defaultServiceName: 'flutter-otlp-demo',
    defaultEndpoint: 'http://127.0.0.1:12800',
    defaultEnvironment: 'dev',
  );

  runApp(const DemoApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'OTLP Agent Demo',
      home: const DemoHomePage(),
    );
  }
}

class DemoHomePage extends StatefulWidget {
  const DemoHomePage({super.key});

  @override
  State<DemoHomePage> createState() => _DemoHomePageState();
}

class _DemoHomePageState extends State<DemoHomePage> {
  String _status = 'Ready';

  Future<void> _sendSample() async {
    if (!OtlpAgent.isInitialized) {
      setState(() => _status = 'Agent disabled (check SKYWALKING_ENABLED / endpoint)');
      return;
    }
    setState(() => _status = 'Sending...');
    try {
      final agent = OtlpAgent.instance;
      await agent.tracer.withSpan('demo.button_tap', (_) async {
        await Future<void>.delayed(const Duration(milliseconds: 80));
        agent.tracer.recordEvent(
          name: 'demo.screen_view',
          attributes: {Semconv.screenName: 'home'},
        );
      });
      agent.meter.addCounter('demo.button.clicks');
      await agent.flush();
      setState(() => _status = 'Sent. Check Zipkin for flutter-otlp-demo');
    } catch (e) {
      setState(() => _status = 'Error: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('OTLP Agent')),
      body: Padding(
        padding: const EdgeInsets.all(24),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Text(
              'OTLP/HTTP → ${OtlpAgent.isInitialized ? OtlpAgent.instance.config.otlpEndpoint : "(disabled)"}',
            ),
            const SizedBox(height: 24),
            FilledButton(
              onPressed: _sendSample,
              child: const Text('Send sample trace + metric'),
            ),
            const SizedBox(height: 16),
            Text(_status),
          ],
        ),
      ),
    );
  }
}
1
likes
0
points
134
downloads

Documentation

Documentation

Publisher

unverified uploader

Weekly Downloads

OpenTelemetry OTLP/HTTP Flutter plugin for traces and metrics (SkyWalking OAP compatible).

Repository (GitHub)
View/report issues

Topics

#opentelemetry #otlp #skywalking #tracing #flutter

License

unknown (license)

Dependencies

flutter, http

More

Packages that depend on skywalking_flutter

Packages that implement skywalking_flutter