sync_ease 0.0.13 sync_ease: ^0.0.13 copied to clipboard
A lightweight Flutter State Management library for simplified state handling in Flutter applications.
SyncEase #
SyncEase is a lightweight and versatile state management library for Flutter applications. It provides simple yet powerful tools for managing the state of your application with ease.
Features #
- Simple API: SyncEase offers a straightforward API for managing state, making it easy to integrate into your Flutter projects.
- Error Handling: Easily handle errors within your application state and propagate them to your UI.
- Loading State: Manage loading states within your application, providing feedback to users during asynchronous operations.
- Batch Operations: Perform batch operations on your state, allowing you to update multiple values atomically.
- Listener Support: SyncEase supports listeners, allowing you to react to state changes and update your UI accordingly.
- Versatile: Suitable for various types of state management scenarios, including simple value states and list states.
- App Simulator: SyncEase provides methods for simulating various gestures and keyboard inputs in Flutter applications. This is particularly useful for testing UI interactions and automating certain user actions.
- EaseDevice Utility: The
EaseDevice
class provides various utilities for accessing device-related information and functionalities in Flutter applications. These utilities include checking internet connectivity, retrieving screen dimensions, determining the platform name and version, setting screen orientation, managing full-screen mode, detecting device type (mobile, tablet, desktop), handling the software keyboard, and more.
Installation #
To use SyncEase in your Flutter project, add the following dependency to your pubspec.yaml
file:
dependencies:
sync_ease: ^1.0.0`
Then, run flutter pub get
to install the package.
Usage #
Here's a simple example of how to use SyncEase to manage state in your Flutter application:
1. Import SyncEase #
import 'package:sync_ease/sync_ease.dart';
2. Create an Instance of Ease #
final Ease<int> counter = Ease(0);
3. Use EaseBuilder to React to State Changes #
EaseBuilder<int>(
ease: counter,
builder: (context, value) => Text(
value.toString(),
style: TextStyle(fontSize: 24),
),
),
4. Update State Values #
counter.value++; // Increment the counter
Counter App With SyncEase #
import 'package:flutter/material.dart';
import 'package:sync_ease/sync_ease.dart';
class CounterLogic extends SyncEaseLogic{
int a=0;
increment(){
a++;
put(); // update Logic Builder Widget
}
}
class MyApp extends StatelessWidget{
final CounterLogic _counterLogic=SyncEaseLogic.reg(CounterLogic());
MyApp({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.add),
onPressed: (){
_counterLogic.increment();
},
),
body: Center(
child: LogicBuilder(
logic: _counterLogic,
builder: (BuildContext context) {
return Text(_counterLogic.a.toString());
},
)
),
);
}
}
Advantages #
- Simplicity: SyncEase offers a simple and intuitive API, making it easy to manage state in Flutter applications.
- Flexibility: It provides various features like error handling, loading state management, and batch operations, catering to diverse state management needs.
- Efficiency: With its listener support and batch operations, SyncEase ensures efficient state updates and UI rendering.
- Compatibility: SyncEase seamlessly integrates with existing Flutter projects and other state management solutions, allowing for smooth adoption.
- Show Snack Bar, Alert Dialog, and Date Picker Anywhere in the App
Dialogs #
Show Snack Bar, Alert Dialog, and Date Picker Anywhere in the App #
You can now use the showSyncSnackBar
, showSyncAlertBox
, and showSyncDatePicker
functions to display snack bars, alert dialogs, and date pickers from anywhere in the app, even outside the widget tree.
Example
showSyncSnackBar(SnackBar(content: Text('Hello, world!')));
showSyncAlertBox(
builder: (BuildContext context) => AlertDialog(
title: Text('Alert'),
content: Text('This is an alert dialog.'),
),
);
showSyncDatePicker(
initialDate: DateTime.now(),
firstDate: DateTime(2022),
lastDate: DateTime(2025),
);
Simple Navigation #
to(SecondPage());
to(SecondPage(),asrguments:{"name":"Jhone"});
back();
EaseSimulator Class #
The EaseSimulator
class provides methods for simulating various gestures and keyboard inputs in Flutter applications. This class is particularly useful for testing UI interactions and automating certain user actions.
Methods #
-
getWidgetOffset(GlobalKey key): Offset?
-
Retrieves the offset of a widget identified by its GlobalKey on the screen.
-
tapDown(Offset offset, {bool showGestureMarker = true}): Future
-
Simulates a tap down event at the specified position on the screen.
-
tapUp(Offset offset, {bool showGestureMarker = true}): Future
-
Simulates a tap up event at the specified position on the screen.
-
tap(Offset offset, {bool showGestureMarker = true}): Future
-
Simulates a tap event (tap down followed by tap up) at the specified position on the screen.
-
longPress(Offset offset, {bool showGestureMarker = true}): Future
-
Simulates a long press event at the specified position on the screen.
-
scroll(Offset startOffset, Offset endOffset): Future
-
Simulates a scroll gesture starting from the given start offset to the end offset.
-
insertText(String text): Future
-
Inserts text into a text input field, simulating user keyboard input.
-
pinch(Offset focalPoint1, Offset focalPoint2): Future
-
Simulates a pinch gesture between two focal points on the screen.
-
zoom(Offset focalPoint1, Offset focalPoint2): Future
-
Simulates a zoom gesture between two focal points on the screen.
-
showGestureIndicator({required Offset position, Color color = Colors.red}): void
-
Displays a visual indicator at the specified position on the screen, useful for debugging and visualization of gestures.
Example Usage for getWidgetOffset
#
Offset? offset = EaseSimulator.getWidgetOffset(GlobalKey());
if (offset != null) {
print("Widget Offset: $offset");
}
Example Usage for tapDown
#
Offset offset = Offset(offset);
await EaseSimulator.tapDown(offset);
Example Usage for tapUp
#
Offset offset = Offset(100, 200);
await EaseSimulator.tapUp(offset);
Example Usage for tap
#
Offset offset = Offset(100, 200);
await EaseSimulator.tap(offset);
Example Usage for longPress
#
Offset offset = Offset(100, 200);
await EaseSimulator.longPress(offset);
Example Usage for scroll
#
Offset startOffset = Offset(100, 200);
Offset endOffset = Offset(100, 300);
await EaseSimulator.scroll(startOffset, endOffset);
Example Usage for insertText
#
await EaseSimulator.insertText("Hello, World!");
Example Usage for pinch
#
Offset focalPoint1 = Offset(100, 200);
Offset focalPoint2 = Offset(200, 300);
await EaseSimulator.pinch(focalPoint1, focalPoint2);
Example Usage for zoom
#
Offset focalPoint1 = Offset(100, 200);
Offset focalPoint2 = Offset(200, 300);
await EaseSimulator.zoom(focalPoint1, focalPoint2);
Example Usage for showGestureIndicator
#
Offset position = Offset(100, 200);
EaseSimulator.showGestureIndicator(position: position, color: Colors.blue);
EaseDevice Utility Class #
The EaseDevice
class provides various utilities for accessing device-related information and functionalities in Flutter applications. These utilities include checking internet connectivity, retrieving screen dimensions, determining the platform name and version, setting screen orientation, managing full-screen mode, detecting device type (mobile, tablet, desktop), handling the software keyboard, and more.
Methods #
-
isOnline(): Future
- Checks if the device is connected to the internet.
-
getScreenSize(): Size
- Retrieves the screen dimensions.
-
getScreenWidth(): double
- Retrieves the screen width.
-
getScreenHeight(): double
- Retrieves the screen height.
-
getPixelDensity(): double
- Retrieves the pixel density or device pixel ratio.
-
getPlatformName(): String
- Retrieves the platform name (e.g., "Android", "iOS").
-
getPlatformVersion(): String
- Retrieves the platform version.
-
isTablet(): bool
- Checks if the device is a tablet.
-
fullScreen(): Future
- Sets the app to full-screen mode.
-
setOrientation(DeviceOrientation orientation): Future
- Sets the preferred orientation for the app.
-
exitFullScreen(): void
- Exits full-screen mode.
-
isMobile(): bool
- Checks if the device is a mobile phone.
-
isDesktop(): bool
- Checks if the device is a desktop/laptop.
-
getPlatformLocale(): String
- Retrieves the platform's locale.
-
hasPhysicalKeyboard(): bool
- Checks if the device has a physical keyboard.
-
openKeyboard(): void
- Opens the software keyboard.
-
hideKeyboard(): void
- Hides the software keyboard.
Example Usage #
import 'package:your_package/ease_device.dart';
void main() async {
// Check internet connectivity
bool isOnline = await EaseDevice.isOnline();
print('Is Online: $isOnline');
// Retrieve screen size
Size screenSize = EaseDevice.getScreenSize();
print('Screen Size: $screenSize');
// Check device type
bool isMobile = EaseDevice.isMobile();
bool isTablet = EaseDevice.isTablet();
bool isDesktop = EaseDevice.isDesktop();
print('Is Mobile: $isMobile, Is Tablet: $isTablet, Is Desktop: $isDesktop');
// Set full-screen mode
await EaseDevice.fullScreen();
// Hide keyboard
EaseDevice.hideKeyboard();
}
Documentation #
For detailed documentation and API reference, visit the SyncEase Documentation.
Contributing #
Contributions to SyncEase are welcome! If you find any bugs or have suggestions for improvements, please open an issue or submit a pull request on GitHub.