Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4d198a5197 | |||
| e2a470abfe | |||
| 1164b50cc2 | |||
| ee78f04d33 | |||
| 3f8c930d48 | |||
| 6d3ff3dcd5 | |||
| 289b3dd4fa | |||
| 5d2fb37973 | |||
| 29116fa919 | |||
| 36cb839dd8 | |||
| a6f4b4aed6 | |||
| 21224bffcf | |||
| ab8d57c400 | |||
| 2debeaa79d | |||
| 7d6028eb6d |
@@ -26,6 +26,7 @@ A collection of Flutter packages maintained by @rodydavis.
|
|||||||
| Package | Description | Version |
|
| Package | Description | Version |
|
||||||
| :--- | :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| [diff_algorithims](./experimental/diff_algorithims) | A set of diffing algorithims for Dart |  |
|
| [diff_algorithims](./experimental/diff_algorithims) | A set of diffing algorithims for Dart |  |
|
||||||
|
| [http_get_cache](./experimental/http_get_cache) | HTTP Compliant cache for Flutter |  |
|
||||||
| [pocketbase_auth](./experimental/pocketbase_auth) | Pocketbase auth client with built in UI screens and token refresh |  |
|
| [pocketbase_auth](./experimental/pocketbase_auth) | Pocketbase auth client with built in UI screens and token refresh |  |
|
||||||
| [pocketbase_sync](./experimental/pocketbase_sync) | A Flutter package for offline-first syncing with PocketBase. |  |
|
| [pocketbase_sync](./experimental/pocketbase_sync) | A Flutter package for offline-first syncing with PocketBase. |  |
|
||||||
| [web_file_system](./experimental/web_file_system) | A high-performance, asynchronous file system for the web using IDB and OPFS. |  |
|
| [web_file_system](./experimental/web_file_system) | A high-performance, asynchronous file system for the web using IDB and OPFS. |  |
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
include: package:flutter_lints/flutter.yaml
|
||||||
|
analyzer:
|
||||||
|
exclude:
|
||||||
|
- deprecated/**
|
||||||
Executable → Regular
@@ -24,5 +24,5 @@ flutter:
|
|||||||
macos:
|
macos:
|
||||||
pluginClass: AppReviewPlugin
|
pluginClass: AppReviewPlugin
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
pigeon: ^26.1.5
|
pigeon: ^26.3.4
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 1.3.2
|
||||||
|
|
||||||
|
* Fix by @josealba to use .sizeOf(context): https://github.com/rodydavis/packages.dart/pull/14
|
||||||
|
|
||||||
## 1.3.0
|
## 1.3.0
|
||||||
|
|
||||||
* Update Dart SDK constraint to >=3.0.0.
|
* Update Dart SDK constraint to >=3.0.0.
|
||||||
|
|||||||
@@ -51,16 +51,14 @@ class Breakpoint {
|
|||||||
///
|
///
|
||||||
/// Use [Breakpoint.fromConstraints] when the widget does not take up the full screen
|
/// Use [Breakpoint.fromConstraints] when the widget does not take up the full screen
|
||||||
factory Breakpoint.fromMediaQuery(BuildContext context) {
|
factory Breakpoint.fromMediaQuery(BuildContext context) {
|
||||||
final _media = MediaQuery.of(context);
|
final size = MediaQuery.sizeOf(context);
|
||||||
|
|
||||||
double _width = 359;
|
double width = size.width;
|
||||||
|
|
||||||
Orientation orientation = Orientation.portrait;
|
final orientation =
|
||||||
|
size.width > size.height ? Orientation.landscape : Orientation.portrait;
|
||||||
|
|
||||||
_width = _media.size.width;
|
return _calcBreakpoint(orientation, width);
|
||||||
orientation = _media.orientation;
|
|
||||||
|
|
||||||
return _calcBreakpoint(orientation, _width);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Breakpoint _calcBreakpoint(Orientation orientation, double _width) {
|
static Breakpoint _calcBreakpoint(Orientation orientation, double _width) {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
name: breakpoint
|
name: breakpoint
|
||||||
description: A Flutter plugin to calculate the material design breakpoints.
|
description: A Flutter plugin to calculate the material design breakpoints.
|
||||||
version: 1.3.0
|
version: 1.3.2
|
||||||
|
|
||||||
maintainer: Rody Davis (@rodydavis)
|
maintainer: Rody Davis (@rodydavis)
|
||||||
homepage: https://github.com/rodydavis/plugins
|
homepage: https://github.com/rodydavis/plugins
|
||||||
repository: https://github.com/fluttercommunity/breakpoint
|
repository: https://github.com/rodydavis/packages.dart/tree/main/packages/breakpoint
|
||||||
resolution: workspace
|
resolution: workspace
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
@@ -19,4 +19,3 @@ dev_dependencies:
|
|||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
# 3.0.1
|
||||||
|
|
||||||
|
- Fix iOS build error: https://github.com/rodydavis/packages.dart/pull/11
|
||||||
|
|
||||||
# 3.0.0
|
# 3.0.0
|
||||||
|
|
||||||
* **Breaking Change**: Migrated to Pigeon for type-safe platform channels.
|
* **Breaking Change**: Migrated to Pigeon for type-safe platform channels.
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public class SwiftFlutterSmsPlugin: NSObject, FlutterPlugin, SmsHostApi, UINavig
|
|||||||
|
|
||||||
public func sendSms(message: String, recipients: [String], completion: @escaping (Result<String, Error>) -> Void) {
|
public func sendSms(message: String, recipients: [String], completion: @escaping (Result<String, Error>) -> Void) {
|
||||||
#if targetEnvironment(simulator)
|
#if targetEnvironment(simulator)
|
||||||
completion(.failure(FlutterError(
|
completion(.failure(PigeonError(
|
||||||
code: "message_not_sent",
|
code: "message_not_sent",
|
||||||
message: "Cannot send message on this device!",
|
message: "Cannot send message on this device!",
|
||||||
details: "Cannot send SMS and MMS on a Simulator. Test on a real device."
|
details: "Cannot send SMS and MMS on a Simulator. Test on a real device."
|
||||||
@@ -27,7 +27,7 @@ public class SwiftFlutterSmsPlugin: NSObject, FlutterPlugin, SmsHostApi, UINavig
|
|||||||
controller.messageComposeDelegate = self
|
controller.messageComposeDelegate = self
|
||||||
UIApplication.shared.keyWindow?.rootViewController?.present(controller, animated: true, completion: nil)
|
UIApplication.shared.keyWindow?.rootViewController?.present(controller, animated: true, completion: nil)
|
||||||
} else {
|
} else {
|
||||||
completion(.failure(FlutterError(
|
completion(.failure(PigeonError(
|
||||||
code: "device_not_capable",
|
code: "device_not_capable",
|
||||||
message: "The current device is not capable of sending text messages.",
|
message: "The current device is not capable of sending text messages.",
|
||||||
details: "A device may be unable to send messages if it does not support messaging or if it is not currently configured to send messages. This only applies to the ability to send text messages via iMessage, SMS, and MMS."
|
details: "A device may be unable to send messages if it does not support messaging or if it is not currently configured to send messages. This only applies to the ability to send text messages via iMessage, SMS, and MMS."
|
||||||
@@ -36,14 +36,14 @@ public class SwiftFlutterSmsPlugin: NSObject, FlutterPlugin, SmsHostApi, UINavig
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
public func canSendSms() -> Bool {
|
public func canSendSms(completion: @escaping (Result<Bool, Error>) -> Void) {
|
||||||
#if targetEnvironment(simulator)
|
#if targetEnvironment(simulator)
|
||||||
return false
|
completion(.success(false))
|
||||||
#else
|
#else
|
||||||
if (MFMessageComposeViewController.canSendText()) {
|
if (MFMessageComposeViewController.canSendText()) {
|
||||||
return true
|
completion(.success(true))
|
||||||
} else {
|
} else {
|
||||||
return false
|
completion(.success(false))
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: flutter_sms
|
name: flutter_sms
|
||||||
description: A Flutter plugin to send SMS and MMS on iOS and Android.
|
description: A Flutter plugin to send SMS and MMS on iOS and Android.
|
||||||
version: 3.0.0
|
version: 3.0.1
|
||||||
homepage: https://github.com/rodydavis/packages.dart
|
homepage: https://github.com/rodydavis/packages.dart
|
||||||
repository: https://github.com/rodydavis/packages.dart
|
repository: https://github.com/rodydavis/packages.dart
|
||||||
maintainer: Rody Davis (@rodydavis)
|
maintainer: Rody Davis (@rodydavis)
|
||||||
@@ -21,7 +21,7 @@ dependencies:
|
|||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
pigeon: ^26.1.5
|
pigeon: ^26.3.4
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
plugin:
|
plugin:
|
||||||
|
|||||||
+1
-5
@@ -20,14 +20,10 @@ rootProject.allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
apply plugin: 'dev.flutter.flutter-gradle-plugin'
|
|
||||||
apply plugin: 'dev.flutter.flutter-gradle-plugin'
|
|
||||||
apply plugin: 'dev.flutter.flutter-gradle-plugin'
|
|
||||||
apply plugin: 'dev.flutter.flutter-gradle-plugin'
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace "flutter.plugins.vibrate"
|
namespace "flutter.plugins.vibrate"
|
||||||
compileSdkVersion flutter.compileSdkVersion
|
compileSdkVersion 30
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
|
|||||||
@@ -3,7 +3,13 @@ import UIKit
|
|||||||
import AudioToolbox
|
import AudioToolbox
|
||||||
|
|
||||||
public class SwiftVibratePlugin: NSObject, FlutterPlugin, VibrateApi {
|
public class SwiftVibratePlugin: NSObject, FlutterPlugin, VibrateApi {
|
||||||
private let isDevice = TARGET_OS_SIMULATOR == 0
|
private var isDevice: Bool {
|
||||||
|
#if targetEnvironment(simulator)
|
||||||
|
return false
|
||||||
|
#else
|
||||||
|
return true
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
public static func register(with registrar: FlutterPluginRegistrar) {
|
public static func register(with registrar: FlutterPluginRegistrar) {
|
||||||
let messenger : FlutterBinaryMessenger = registrar.messenger()
|
let messenger : FlutterBinaryMessenger = registrar.messenger()
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ dependencies:
|
|||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_lints: ^6.0.0
|
flutter_lints: ^6.0.0
|
||||||
pigeon: ^26.1.5
|
pigeon: ^26.3.4
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
plugin:
|
plugin:
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"shared_preferences_foundation","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"shared_preferences_android","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.18/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"shared_preferences_foundation","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"path_provider_linux","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false}],"windows":[{"name":"path_provider_windows","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false}],"web":[{"name":"shared_preferences_web","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2026-01-15 17:05:21.433136","version":"3.38.5","swift_package_manager_enabled":{"ios":false,"macos":false}}
|
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"shared_preferences_foundation","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"shared_preferences_android","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.20/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"shared_preferences_foundation","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"path_provider_linux","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false}],"windows":[{"name":"path_provider_windows","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false}],"web":[{"name":"shared_preferences_web","path":"/Users/rodydavis/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2026-02-16 10:38:50.657587","version":"3.38.5","swift_package_manager_enabled":{"ios":false,"macos":false}}
|
||||||
@@ -11,4 +11,5 @@ environment:
|
|||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
lints: ^6.0.0
|
lints: ^6.0.0
|
||||||
test: ^1.24.9
|
flutter_test:
|
||||||
|
sdk: flutter
|
||||||
|
|||||||
+175
-177
@@ -1,197 +1,195 @@
|
|||||||
import 'dart:async';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
import 'package:test/test.dart';
|
|
||||||
import 'package:undo/undo.dart';
|
import 'package:undo/undo.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
group('initial state', () {
|
group('initial state', () {
|
||||||
test('is correct', () {
|
test('is correct', () {
|
||||||
final states = <int>[];
|
final states = <int>[];
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
expect(testObject.state, 0);
|
expect(testObject.state, 0);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('canUndo', () {
|
||||||
|
test('is false when no state changes have occurred', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
|
|
||||||
|
expect(testObject.canUndo, isFalse);
|
||||||
});
|
});
|
||||||
|
|
||||||
group('canUndo', () {
|
test('is true when a single state change has occurred', () async {
|
||||||
test('is false when no state changes have occurred', () async {
|
final states = <int>[];
|
||||||
final states = <int>[];
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
expect(testObject.canUndo, isFalse);
|
expect(testObject.canUndo, isTrue);
|
||||||
});
|
|
||||||
|
|
||||||
test('is true when a single state change has occurred', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
expect(testObject.canUndo, isTrue);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('is false when undos have been exhausted', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
|
|
||||||
expect(testObject.canUndo, isFalse);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
group('canRedo', () {
|
test('is false when undos have been exhausted', () async {
|
||||||
test('is false when no state changes have occurred', () async {
|
final states = <int>[];
|
||||||
final states = <int>[];
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
await Future<void>.delayed(
|
||||||
expect(testObject.canRedo, isFalse);
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
});
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
|
||||||
test('is true when a single undo has occurred', () async {
|
expect(testObject.canUndo, isFalse);
|
||||||
final states = <int>[];
|
});
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
});
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
expect(testObject.canRedo, isTrue);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('is false when redos have been exhausted', () async {
|
group('canRedo', () {
|
||||||
final states = <int>[];
|
test('is false when no state changes have occurred', () async {
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
final states = <int>[];
|
||||||
await Future<void>.delayed(
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
expect(testObject.canRedo, isFalse);
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.redo);
|
|
||||||
expect(testObject.canRedo, isFalse);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
group('clearHistory', () {
|
test('is true when a single undo has occurred', () async {
|
||||||
test('clears history and redos on new testObject', () async {
|
final states = <int>[];
|
||||||
final testObject = SimpleStack(0)..clearHistory();
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
expect(testObject.canRedo, isFalse);
|
await Future<void>.delayed(
|
||||||
expect(testObject.canUndo, isFalse);
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
});
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
expect(testObject.canRedo, isTrue);
|
||||||
});
|
});
|
||||||
|
|
||||||
group('undo', () {
|
test('is false when redos have been exhausted', () async {
|
||||||
test('does nothing when no state changes have occurred', () async {
|
final states = <int>[];
|
||||||
final states = <int>[];
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
await Future<void>.delayed(
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.redo);
|
||||||
|
expect(testObject.canRedo, isFalse);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
expect(states, [0]);
|
group('clearHistory', () {
|
||||||
});
|
test('clears history and redos on new testObject', () async {
|
||||||
|
final testObject = SimpleStack(0)..clearHistory();
|
||||||
|
expect(testObject.canRedo, isFalse);
|
||||||
|
expect(testObject.canUndo, isFalse);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test('does nothing when limit is 0', () async {
|
group('undo', () {
|
||||||
final states = <int>[];
|
test('does nothing when no state changes have occurred', () async {
|
||||||
final testObject = SimpleStack(0, limit: 0, onUpdate: states.add);
|
final states = <int>[];
|
||||||
await Future<void>.delayed(
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
|
|
||||||
expect(states, [0, 1, 0]);
|
expect(states, [0]);
|
||||||
});
|
|
||||||
|
|
||||||
test('loses history outside of limit', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, limit: 1, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
|
|
||||||
expect(states, [0, 1, 2, 1, 0]);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('reverts to initial state', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
|
|
||||||
expect(states, [0, 1, 0]);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('reverts to previous state with multiple state changes ', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
|
|
||||||
expect(states, [0, 1, 2, 1]);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
group('redo', () {
|
test('does nothing when limit is 0', () async {
|
||||||
test('does nothing when no state changes have occurred', () async {
|
final states = <int>[];
|
||||||
final states = <int>[];
|
final testObject = SimpleStack(0, limit: 0, onUpdate: states.add);
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
await Future<void>.delayed(
|
||||||
await Future<void>.delayed(Duration.zero, testObject.redo);
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
|
||||||
expect(states, [0]);
|
expect(states, [0, 1, 0]);
|
||||||
});
|
|
||||||
|
|
||||||
test('does nothing when no undos have occurred', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.redo);
|
|
||||||
|
|
||||||
expect(states, [0, 1, 2]);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('works when one undo has occurred', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.redo);
|
|
||||||
|
|
||||||
expect(states, [0, 1, 2, 1, 2]);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('does nothing when undos have been exhausted', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.redo);
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.redo);
|
|
||||||
|
|
||||||
expect(states, [0, 1, 2, 1, 2]);
|
|
||||||
});
|
|
||||||
|
|
||||||
test(
|
|
||||||
'does nothing when undos has occurred '
|
|
||||||
'followed by a new state change', () async {
|
|
||||||
final states = <int>[];
|
|
||||||
final testObject = SimpleStack(0, onUpdate: states.add);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state + 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.undo);
|
|
||||||
await Future<void>.delayed(
|
|
||||||
Duration.zero, () => testObject.modify(testObject.state - 1));
|
|
||||||
await Future<void>.delayed(Duration.zero, testObject.redo);
|
|
||||||
|
|
||||||
expect(states, [0, 1, 2, 1, 0]);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
test('loses history outside of limit', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, limit: 1, onUpdate: states.add);
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
|
||||||
|
expect(states, [0, 1, 2, 1, 0]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('reverts to initial state', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
|
||||||
|
expect(states, [0, 1, 0]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('reverts to previous state with multiple state changes ', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
|
||||||
|
expect(states, [0, 1, 2, 1]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('redo', () {
|
||||||
|
test('does nothing when no state changes have occurred', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.redo);
|
||||||
|
|
||||||
|
expect(states, [0]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('does nothing when no undos have occurred', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.redo);
|
||||||
|
|
||||||
|
expect(states, [0, 1, 2]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('works when one undo has occurred', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.redo);
|
||||||
|
|
||||||
|
expect(states, [0, 1, 2, 1, 2]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('does nothing when undos have been exhausted', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.redo);
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.redo);
|
||||||
|
|
||||||
|
expect(states, [0, 1, 2, 1, 2]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test(
|
||||||
|
'does nothing when undos has occurred '
|
||||||
|
'followed by a new state change', () async {
|
||||||
|
final states = <int>[];
|
||||||
|
final testObject = SimpleStack(0, onUpdate: states.add);
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state + 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.undo);
|
||||||
|
await Future<void>.delayed(
|
||||||
|
Duration.zero, () => testObject.modify(testObject.state - 1));
|
||||||
|
await Future<void>.delayed(Duration.zero, testObject.redo);
|
||||||
|
|
||||||
|
expect(states, [0, 1, 2, 1, 0]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
+17
-193
@@ -5,18 +5,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d
|
sha256: "8d7ff3948166b8ec5da0fbb5962000926b8e02f2ed9b3e51d1738905fbd4c98d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "91.0.0"
|
version: "93.0.0"
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08
|
sha256: de7148ed2fcec579b19f122c1800933dfa028f6d9fd38a152b04b1516cec120b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.4.1"
|
version: "10.0.1"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -61,18 +61,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: characters
|
name: characters
|
||||||
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
|
sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.4.1"
|
||||||
cli_config:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cli_config
|
|
||||||
sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.2.0"
|
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -105,14 +97,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.2"
|
||||||
coverage:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: coverage
|
|
||||||
sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.15.0"
|
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -125,10 +109,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dart_style
|
name: dart_style
|
||||||
sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b
|
sha256: "29f7ecc274a86d32920b1d9cfc7502fa87220da41ec60b55f329559d5732e2b2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.3"
|
version: "3.1.7"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -167,7 +151,7 @@ packages:
|
|||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
flutter_lints:
|
flutter_lints:
|
||||||
dependency: transitive
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: flutter_lints
|
name: flutter_lints
|
||||||
sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
|
sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
|
||||||
@@ -192,14 +176,6 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
frontend_server_client:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: frontend_server_client
|
|
||||||
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.0.0"
|
|
||||||
glob:
|
glob:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -216,38 +192,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.3.2"
|
||||||
http_multi_server:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: http_multi_server
|
|
||||||
sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.2.2"
|
|
||||||
http_parser:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: http_parser
|
|
||||||
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.1.2"
|
|
||||||
io:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: io
|
|
||||||
sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.5"
|
|
||||||
js:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: js
|
|
||||||
sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.7.2"
|
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -280,14 +224,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.0"
|
version: "6.0.0"
|
||||||
logging:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: logging
|
|
||||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.0"
|
|
||||||
markdown:
|
markdown:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -300,18 +236,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
|
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.17"
|
version: "0.12.19"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
version: "0.13.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -320,22 +256,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.17.0"
|
version: "1.17.0"
|
||||||
mime:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: mime
|
|
||||||
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.0"
|
|
||||||
node_preamble:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: node_preamble
|
|
||||||
sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
package_config:
|
package_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -380,10 +300,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pigeon
|
name: pigeon
|
||||||
sha256: fcfee18cf18dae434a149879e6876214c1b57c8d2d5d0cc55a5ba0c85278b886
|
sha256: "04cfefc8add8b47ddf9ccac8b92bb4edeb67c87f185c623ba0db118ac99334ad"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "26.1.5"
|
version: "26.3.4"
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -400,14 +320,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.8"
|
version: "2.1.8"
|
||||||
pool:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: pool
|
|
||||||
sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.5.2"
|
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -472,59 +384,11 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.1"
|
version: "2.4.1"
|
||||||
shelf:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shelf
|
|
||||||
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.4.2"
|
|
||||||
shelf_packages_handler:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shelf_packages_handler
|
|
||||||
sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.2"
|
|
||||||
shelf_static:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shelf_static
|
|
||||||
sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.3"
|
|
||||||
shelf_web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shelf_web_socket
|
|
||||||
sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.0"
|
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
source_map_stack_trace:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: source_map_stack_trace
|
|
||||||
sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.2"
|
|
||||||
source_maps:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: source_maps
|
|
||||||
sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.10.13"
|
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -565,30 +429,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.2"
|
version: "1.2.2"
|
||||||
test:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: test
|
|
||||||
sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.26.3"
|
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
|
sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.7"
|
version: "0.7.10"
|
||||||
test_core:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: test_core
|
|
||||||
sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.6.12"
|
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -693,30 +541,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.1"
|
||||||
web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket
|
|
||||||
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.1"
|
|
||||||
web_socket_channel:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket_channel
|
|
||||||
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.3"
|
|
||||||
webkit_inspection_protocol:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: webkit_inspection_protocol
|
|
||||||
sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.1"
|
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ publish_to: none
|
|||||||
environment:
|
environment:
|
||||||
sdk: ^3.5.0
|
sdk: ^3.5.0
|
||||||
|
|
||||||
|
dev_dependencies:
|
||||||
|
flutter_lints: ^6.0.0
|
||||||
|
|
||||||
workspace:
|
workspace:
|
||||||
- packages/flutter_vibrate
|
- packages/flutter_vibrate
|
||||||
- packages/flutter_sms
|
- packages/flutter_sms
|
||||||
|
|||||||
Reference in New Issue
Block a user