cronet_http 1.10.0 copy "cronet_http: ^1.10.0" to clipboard
cronet_http: ^1.10.0 copied to clipboard

PlatformAndroid

An Android Flutter plugin that provides access to the Cronet HTTP client.

example/lib/main.dart

// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:convert';
import 'dart:io';

import 'package:cronet_http/cronet_http.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:http/io_client.dart';
import 'package:provider/provider.dart';

void main() {
  final Client httpClient;
  if (Platform.isAndroid) {
    WidgetsFlutterBinding.ensureInitialized();
    final engine = CronetEngine.build(
        cacheMode: CacheMode.memory,
        cacheMaxSize: 2 * 1024 * 1024,
        userAgent: 'Package Client');
    httpClient = CronetClient.fromCronetEngine(engine, closeEngine: true);
  } else {
    httpClient = IOClient(HttpClient()..userAgent = 'Package Client');
  }

  runApp(Provider<Client>(
      create: (_) => httpClient,
      child: const PackageDetailsApp(),
      dispose: (_, client) => client.close()));
}

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

  @override
  Widget build(BuildContext context) => const MaterialApp(
        debugShowCheckedModeBanner: false,
        title: 'Package Details',
        home: PackageDetailsPage(),
      );
}

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

  @override
  State<PackageDetailsPage> createState() => _PackageDetailsPageState();
}

class _PackageDetailsPageState extends State<PackageDetailsPage> {
  String _output = 'Loading...';

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

  void _fetchPackageInfo() async {
    final client = context.read<Client>();
    try {
      final response = await client.get(
        Uri.https('pub.dev', '/api/packages/cronet_http/score'),
      );
      if (response.statusCode == 200) {
        final json =
            jsonDecode(utf8.decode(response.bodyBytes)) as Map<String, dynamic>;
        setState(() {
          _output = 'Information about package:cronet_http:\n'
              '- Likes: ${json['likeCount']}\n'
              '- 30-day downloads: ${json['downloadCount30Days']}';
        });
      } else {
        setState(() {
          _output = 'Request failed with status: ${response.statusCode}.';
        });
      }
    } catch (e) {
      setState(() {
        _output = 'Request failed: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) => Scaffold(
        body: SafeArea(
          child: Padding(
            padding: const EdgeInsets.all(16),
            child: Text(
              _output,
              style: const TextStyle(fontSize: 18, fontFamily: 'monospace'),
            ),
          ),
        ),
      );
}
80
likes
160
points
253k
downloads

Documentation

API reference

Publisher

verified publisherdart.dev

Weekly Downloads

An Android Flutter plugin that provides access to the Cronet HTTP client.

Repository (GitHub)
View/report issues
Contributing

License

BSD-3-Clause (license)

Dependencies

flutter, http, http_profile, jni, jni_flutter

More

Packages that depend on cronet_http

Packages that implement cronet_http