flutter_chen_common 2.5.0 copy "flutter_chen_common: ^2.5.0" to clipboard
flutter_chen_common: ^2.5.0 copied to clipboard

The flutter common package designed to help developers swiftly build aesthetically pleasing and feature-rich mobile application interfaces.

example/lib/main.dart

import 'dart:io';

import 'package:dio/dio.dart';
import 'package:example/network/network_interceptor.dart';
import 'package:example/pages/component/component.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_chen_common/flutter_chen_common.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:get/get.dart';
import 'package:module_base/module_base.dart';
import 'package:path_provider/path_provider.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';

final navigatorKey = GlobalKey<NavigatorState>();

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  ComContext.init(navigatorKey);
  await SpUtil.init();
  Directory dir = await getApplicationDocumentsDirectory();
  await Log.init(
    LogConfig(
      retentionDays: 3,
      enableFileLog: true,
      logLevel: LogLevel.all,
      recordLevel: LogLevel.info,
      output: const [],
      logDirectory: kIsWeb ? null : Directory('${dir.path}/logs'),
    ),
  );
  HttpClient.init(
    config: HttpConfig(
      baseUrl: Env.config.baseUrl,
      connectTimeout: const Duration(seconds: 30),
      receiveTimeout: const Duration(seconds: 30),
      sendTimeout: const Duration(seconds: 30),
      commonHeaders: {"language": Get.deviceLocale?.languageCode},
      interceptors: [NetworkInterceptor()],
      enableLog: true,
      enableToken: true,
      enableRetry: true,
      maxRetries: 3,
      retriesDelay: const Duration(seconds: 1),
      getToken: () => SpUtil.getString("token"),
      onRefreshToken: () async {
        return "new_token";
      },
      onRefreshTokenFailed: () async {
        Log.d("重新登录");
      },
    ),
  );

  Log.d("debug message");
  Log.i("info message");
  Log.w("warning message");
  Log.e("error message");
  Log.console("console message 可完整打印不被截断并且无前缀");
  HttpClient.instance.request("https://gutendex.com/books",
      data: {"xx": "xx"}, options: Options(extra: {'custom': true}));

  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return ComConfiguration(
      config: ComConfig.defaults(),
      child: RefreshConfiguration(
        hideFooterWhenNotFull: false,
        headerBuilder: () => const ClassicHeader(),
        footerBuilder: () => const ClassicFooter(),
        child: GetMaterialApp(
          navigatorKey: navigatorKey,
          builder: ComToastBuilder(),
          navigatorObservers: [ComToastNavigatorObserver()],
          home: ComponentListPage(),
          title: 'Flutter Demo',
          theme: AppTheme.lightTheme,
          darkTheme: AppTheme.darkTheme,
          themeMode: AppThemeMode.getLocalThemeModel(),
          locale: const Locale('zh', 'CN'),
          localizationsDelegates: const [
            ComLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalCupertinoLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          supportedLocales: const [
            Locale('zh', 'CN'),
            Locale('en', 'US'),
          ],
        ),
      ),
    );
  }
}
9
likes
160
points
1.45k
downloads

Publisher

unverified uploader

Weekly Downloads

The flutter common package designed to help developers swiftly build aesthetically pleasing and feature-rich mobile application interfaces.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

dio, flutter, logger, pull_to_refresh, shared_preferences

More

Packages that depend on flutter_chen_common