dio_network_logger 1.0.2 copy "dio_network_logger: ^1.0.2" to clipboard
dio_network_logger: ^1.0.2 copied to clipboard

Dio network logger.

example/lib/main.dart

import 'package:dio/dio.dart';
import 'package:dio_network_logger/dio_network_logger.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

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

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const HomeScreen(),
    );
  }
}

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

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  late Dio dio;
  bool isLoading = false;
  final String url = 'https://jsonplaceholder.typicode.com';
  bool isProduction = false;

  void setupDio() {
    dio = Dio(BaseOptions(baseUrl: url));

    // If flavor is production, no need to setup logs
    if (!isProduction) {
      dio.interceptors.add(DioNetworkLogger());
      NetworkLoggerOverlay.attachTo(context);
    }
  }

  Future<Response<T>> callDio<T>(Future<Response<T>> request) async {
    setState(() {
      isLoading = true;
    });
    try {
      return await request;
    } finally {
      setState(() {
        isLoading = false;
      });
    }
  }

  @override
  void initState() {
    super.initState();
    setupDio();
  }

  @override
  void dispose() {
    dio.close();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Network Logger Sample'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () async {
                await callDio(
                  dio.post(
                    '/posts',
                    data: {
                      'title': 'foo',
                      'body': 'bar',
                      'userId': 1,
                    },
                  ),
                );
              },
              child: const Text('Post Data'),
            ),
            ElevatedButton(
              onPressed: () async {
                await callDio(dio.get('/todos/1'));
              },
              child: const Text('Fetch Data'),
            ),
            ElevatedButton(
              onPressed: () async {
                await callDio(
                  dio.put(
                    '/posts/1',
                    data: {
                      'id': 1,
                      'title': 'foo',
                      'body': 'bar',
                      'userId': 1,
                    },
                  ),
                );
              },
              child: const Text('Put Data'),
            ),
            ElevatedButton(
              onPressed: () async {
                await callDio(
                  dio.patch(
                    '/posts/1',
                    data: {
                      'title': 'foo',
                    },
                  ),
                );
              },
              child: const Text('Patch Data'),
            ),
            ElevatedButton(
              onPressed: () async {
                await callDio(dio.delete('/posts/1'));
              },
              child: const Text('Delete Data'),
            ),
            if (isLoading) const CircularProgressIndicator(),
          ],
        ),
      ),
    );
  }
}
3
likes
130
points
220
downloads

Publisher

verified publisherikhwansetyo.dev

Weekly Downloads

Dio network logger.

Homepage

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

dio, flutter, flutter_json_viewer, intl

More

Packages that depend on dio_network_logger