rxnet_plus 0.6.0 copy "rxnet_plus: ^0.6.0" to clipboard
rxnet_plus: ^0.6.0 copied to clipboard

Flexible network request framework with pluggable adapters (Dio, http, or custom), supporting various caching strategies

example/lib/main.dart

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:rxnet_plus/adapters/dio_adapter.dart';
import 'package:rxnet_plus/adapters/http_adapter.dart';
import 'package:rxnet_plus/rxnet_lib.dart';
import 'package:uikit_plus/toast/toast_utils.dart';
import 'enhanced_example.dart';



void main() async {


  final adapter = DioAdapter();
  adapter.dio.httpClientAdapter = IOHttpClientAdapter(
    createHttpClient: () {
      final client = HttpClient();
      client.badCertificateCallback = (cert, host, port) {
        return true;
      };
      return client;
    },
  );


  // IOClient createPinnedClient() {
  //   final HttpClient httpClient = HttpClient();
  //   httpClient.badCertificateCallback =
  //       (X509Certificate cert, String host, int port) {
  //     // // 获取证书 DER
  //     // final der = cert.der;
  //     // final sha256 = sha256Convert(der);
  //     // const trustedFingerprint = "YOUR_SHA256_FINGERPRINT";
  //     // return sha256 == trustedFingerprint;
  //         return true;
  //   };
  //   return IOClient(httpClient);
  // }
  // final adapter2 = HttpAdapter(client: createPinnedClient());

  await RxNet.init(
      baseUrl: "http://t.weather.sojson.com/",
      baseCacheMode: CacheMode.REQUEST_FAILED_READ_CACHE,
      baseCheckNet: checkNet,
      adapter: adapter,
      cacheInvalidationTime: 365 * 24 * 60 * 60 * 1000,
      interceptors: [
        RxNetLogAdapterInterceptor(),
      ]);


  RxNet.saveCache("name", "张三");
  RxNet.readCache("name").then((value) {
    LogUtil.v(value); //输出:张三
  });
  //或者
  Future.delayed(const Duration(seconds: 5), () async {
    final result = await RxNet.readCache("name");
    LogUtil.v(result); //输出:张三
  });

  runApp(const MyApp());
}

Future<bool> checkNet() async {
  // var connectivityResult = await (Connectivity().checkConnectivity());
  // if (connectivityResult == ConnectivityResult.none) {
  //   Toast.show("当前无网络");
  //   return false;
  // }
  return Future.value(true);
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter RxNet',
      navigatorKey: Toast.navigatorState,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const EnhancedExample(),
    );
  }
}
1
likes
130
points
113
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flexible network request framework with pluggable adapters (Dio, http, or custom), supporting various caching strategies

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

crypto, dio, flutter, hive, http, path, path_provider, path_provider_platform_interface, web

More

Packages that depend on rxnet_plus

Packages that implement rxnet_plus