local_function_collections 0.0.10 copy "local_function_collections: ^0.0.10" to clipboard
local_function_collections: ^0.0.10 copied to clipboard

Local function that simplify navigation, dialog and secure storage for Flutter

Local Function Collections #

pub package likes Flutter Platform License: MIT

A robust, production-ready helper utility package for Flutter that encapsulates standard workflows: advanced network requests, context-safe navigation, customized alert dialogs, and persistent encrypted secure storage.


Features #

Category Class Description
🌐 Networking LocalAPIsRequest Unified HTTP client powered by Dio and automatic FormData construction for file uploads.
πŸ›‘οΈ Storage LocalSecureStorage Simple keychain/keystore encapsulation for reading, writing, and wiping highly sensitive encrypted key-value string data.
πŸ’¬ Dialogs LocalDialogFunction Pre-built alert interfaces including context-safe blocking Loaders, standard OK Informational alerts, and dynamic Option Dialogs.
πŸ—ΊοΈ Navigation LocalRouteNavigator Simplified routing patterns including basic pushes, inline replacements, complete stack-resets, and parameterized pops.

Getting Started #

Just make sure your flutter version is up to date.

Installation #

Add local_function_collections to your pubspec.yaml file:

Usage #

You only need a single import statement to gain access to the entire utility pipeline:

import 'package:local_function_collections/local_function_collections.dart';

1. Network Request & Multi-File Upload (LocalAPIsRequest) #

Execute network protocols (GET, POST, PUT, DELETE) with centralized error delegation seamlessly.

void makeNetworkCall(BuildContext context) async {
  final cancelToken = CancelToken();

  Response? response = await LocalAPIsRequest.submitRequest(
    requestType: RequestType.post,
    apisURL: "[https://api.example.com/v1/upload](https://api.example.com/v1/upload)",
    cancelToken: cancelToken,
    bodyData: {"category": "profile_pictures"},
    files: UploadFile(
      fileParameterName: "images",
      files: [File("/path/to/image1.png"), File("/path/to/image2.png")],
      isArrayKeyMethod: true, // Appends 'images[0]', 'images[1]' parameter structural keys
    ),
    errorHandler: (exception, stackTrace) {
      // Handles anomalies or non-200 Status Code responses safely inside the scope
      print("Network Anomaly Caught: $exception");
    },
  );

  if (response != null) {
    print("Payload received: ${response.data}");
  }
}

2. Dialog Operations (LocalDialogFunction) #

// Trigger an Information Alert
void showSuccessDialog() {
  LocalDialogFunction.okDialog(
    context: context,
    title: "Operation Successful",
    contentText: "Your preferences have been updated successfully.",
    contentAlign: TextAlign.center,
    onClose: () => print("Dialog dismissed"),
  );
}

// Trigger an Action Prompt Option
void onDeletePressed() {
  LocalDialogFunction.optionDialog(
    context: context,
    title: "Confirm Deletion",
    contentText: "Are you sure you want to purge this asset permanently?",
    acceptText: "Delete",
    declineText: "Cancel",
    onAccept: () => proceedDestruction(),
    onDecline: () => traceCancellation(),
  );
}

3. Encrypted Key-Value Persistence (LocalSecureStorage) #

// Write Encrypted Session Tokens
Future<bool> onWriteAuth() async {
  bool result = await LocalSecureStorage.writeKey(key: "auth_token", data: "JWT_STRING");
  
  return result;
}

// Retrieve Protected Credentials Safely 
Future<String?> onReadAuth() async {
  String? secureToken = await LocalSecureStorage.readKey(key: "auth_token");
  
  return secureToken;
}

// Purge Selected Registry Entries
Future<bool> onDeleteAuth() async {
  bool result = await LocalSecureStorage.deleteKey(key: "auth_token");
  
  return result;
}

// Total Storage Wipeout
Future<bool> onClearKey() async {
  bool result = await LocalSecureStorage.clearKey();
  
  return result;
}

4. Contextual Route Navigation (LocalRouteNavigator) #

// Standard Navigation Push
void openDetailPage() {
  LocalRouteNavigator.moveTo(
    context: context,
    target: const DetailScreen(),
    callbackFunction: (result) => processReturnedValue(result),
  );
}

// Destructive Linear Target Replacement
void onLoginSuccess() {
  LocalRouteNavigator.replaceWith(
    context: context, target: const DashboardView(),
  );
}

// Complete Navigation Stack Flush and Root Redirection
void onLogoutSuccess() {
  LocalRouteNavigator.redirectTo(
    context: context, target: const LoginView(),
  );
}

// Parameterized Stack Pop Closures
void onPopWithResult(bool? result) {
  LocalRouteNavigator.closeBack(
    context: context, callbackResult: result,
  );
}

Technical Details & Architecture #

Iterable TCP Lifecycle Performance: LocalAPIsRequest uses a unified, static shared Dio instance under the hood. This ensures connection reuse via connection pools, saving system memory and accelerating subsequent handshakes. Asynchronous Lifecycle Gap Protections: Dialog closures and network dispatches respect stateful attachment checking (Widget.mounted), guarding your runtime stack against thread safety alerts or memory leakage crashes.

Additional information #

Contributions, feature extensions, and architectural critiques are highly welcome. Feel free to connect or log technical feedback via our official touchpoints:

Instagram: @raznovrnf email: novian.shatter@gmail.com.

Developed with πŸ’™ by Razy Novian. Licensed under the MIT License.

1
likes
160
points
150
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Local function that simplify navigation, dialog and secure storage for Flutter

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

dio, flutter, flutter_secure_storage

More

Packages that depend on local_function_collections