diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..25db2325 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,192 @@ +name: CI + +on: + pull_request: + push: + branches: + - main + - master + +env: + FLUTTER_VERSION: '3.38.9' + +jobs: + pigeon_contracts: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart run melos bootstrap + - run: dart run pigeon --input pigeons/midi_api.dart + - run: git diff --exit-code -- packages/flutter_midi_command_platform_interface/lib/src/pigeon packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/pigeon packages/flutter_midi_command_darwin/ios/Classes/pigeon + + dart_checks: + runs-on: ubuntu-latest + needs: pigeon_contracts + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - run: melos run analyze + - run: melos run test + - run: melos run test:web:chrome + + native_android_checks: + runs-on: ubuntu-latest + needs: pigeon_contracts + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - name: Android native unit tests + run: bash ./example/android/gradlew -p example/android :flutter_midi_command_android:testDebugUnitTest + + native_darwin_checks: + runs-on: macos-latest + needs: pigeon_contracts + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - name: Darwin native tests + run: melos run test:native:darwin + + native_linux_checks: + runs-on: ubuntu-latest + needs: pigeon_contracts + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - name: Linux backend tests + run: melos run test:native:linux + + native_windows_checks: + runs-on: windows-latest + needs: pigeon_contracts + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - name: Windows backend tests + run: melos run test:native:windows + + example_android: + runs-on: ubuntu-latest + needs: [dart_checks, native_android_checks] + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - name: Build example app (Android) + run: melos run build:example:android + - name: Enable KVM + run: | + sudo tee /etc/udev/rules.d/99-kvm4all.rules <<'EOF' + KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm" + EOF + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + - name: Run smoke test (Android emulator) + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: 35 + arch: x86_64 + target: google_apis + profile: pixel_6 + disable-animations: true + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -no-snapshot -no-snapshot-save + script: melos run test:example:integration:android + env: + ANDROID_DEVICE_ID: emulator-5554 + ANDROID_SMOKE_MAX_ATTEMPTS: "3" + + example_linux: + runs-on: ubuntu-latest + needs: [dart_checks, native_linux_checks] + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - name: Install Linux build dependencies + run: | + sudo apt-get update + sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev xvfb + - run: dart pub global activate melos + - run: melos bootstrap + - name: Build example app (Linux) + run: melos run build:example:linux + - name: Run smoke test (Linux) + run: xvfb-run -a melos run test:example:integration:linux + + example_apple: + runs-on: macos-latest + needs: [dart_checks, native_darwin_checks] + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - name: Build example app (iOS) + run: melos run build:example:ios + - name: Build example app (macOS) + run: melos run build:example:macos + - name: Run smoke test (macOS) + run: melos run test:example:integration:macos + - name: Run smoke test (iOS simulator) + run: melos run test:example:integration:ios + env: + IOS_SMOKE_MAX_ATTEMPTS: "3" + + example_windows: + runs-on: windows-latest + needs: [dart_checks, native_windows_checks] + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - name: Build example app (Windows) + run: melos run build:example:windows + - name: Run smoke test (Windows) + run: melos run test:example:integration:windows + + example_web: + runs-on: ubuntu-latest + needs: dart_checks + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - run: dart pub global activate melos + - run: melos bootstrap + - name: Build example app (Web) + run: melos run build:example:web + - name: Run smoke test (Web Chrome) + run: melos run test:example:integration:web diff --git a/.gitignore b/.gitignore index 8ffcf9a4..19d5eb3c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ pubspec.lock build/ local.properties .idea/ +*.iml +packages/flutter_midi_command_darwin/ios/.build/ diff --git a/.pubignore b/.pubignore new file mode 100644 index 00000000..e47aba1a --- /dev/null +++ b/.pubignore @@ -0,0 +1,22 @@ +# Workspace-only dependency linking. +pubspec_overrides.yaml +example/pubspec_overrides.yaml +packages/**/pubspec_overrides.yaml + +# Federated implementations are published as separate packages. +packages/ + +# Local IDE/workspace artifacts. +*.iml +.idea/ + +# Generated API docs are published separately. +doc/api/ + +# Build and tool caches. +build/ +**/build/ +.dart_tool/ +**/.dart_tool/ +.pub/ +**/.pub/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 23668bd0..b9646109 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## 1.0.0 +- Restructured into a melos-managed federated monorepo. +- Bumped federated subpackages to 1.0.0 for the major API transition. +- Introduced shared BLE transport package (`flutter_midi_command_ble`) and optional BLE wiring via `configureBleTransport`. +- Migrated host API contracts to generated Pigeon interfaces. +- Added typed host models (`MidiDeviceType`, `MidiHostDevice`, `MidiPort`, `MidiPacket`) across platform bridges. +- Added web implementation package (`flutter_midi_command_web`) using browser Web MIDI. +- Added transport capabilities/policies and stronger async connection semantics (`connectToDevice` completes on connection). +- Added a typed MIDI parser/generator API (`MidiMessageParser` and `MidiMessage.parse`) with support for running status, realtime interleaving, SysEx, and NRPN/RPN message flows. +- Expanded test coverage across shared logic, platform interface, BLE transport, and web backend. + ## 0.5.3 Adds a runtime check to ensure MIDI is available on the android device before starting. See #125 for further details. Make plugin work with Flutter 3.27.0 and Android Studio Lady Bug. #127 @@ -238,4 +249,3 @@ Readme and formatting Initial Release. Functioning discovery and connection to MIDI devices on Android and iOS, as well as BLE MIDI devices on Android. Functioning sending and receiving of MIDI data - diff --git a/README.md b/README.md index 0a5b1308..67461ff2 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,368 @@ -# flutter_midi_command +# Flutter MIDI Command + +[![CI](https://github.com/InvisibleWrench/FlutterMidiCommand/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/InvisibleWrench/FlutterMidiCommand/actions/workflows/ci.yml) +[![pub package](https://img.shields.io/pub/v/flutter_midi_command.svg)](https://pub.dev/packages/flutter_midi_command) +[![pub points](https://img.shields.io/pub/points/flutter_midi_command)](https://pub.dev/packages/flutter_midi_command/score) +[![pub likes](https://img.shields.io/pub/likes/flutter_midi_command)](https://pub.dev/packages/flutter_midi_command/score) +[![License](https://img.shields.io/github/license/InvisibleWrench/FlutterMidiCommand)](https://github.com/InvisibleWrench/FlutterMidiCommand/blob/main/LICENSE) A Flutter plugin for sending and receiving MIDI messages between Flutter and physical and virtual MIDI devices. -Wraps CoreMIDI/android.media.midi/ALSA/win32 in a thin dart/flutter layer. +Wraps CoreMIDI/android.media.midi/ALSA/win32 in a thin Dart/Flutter layer. +Includes a built-in typed MIDI parser/generator (`MidiMessageParser` and `MidiMessage.parse`); see [Message parser](#message-parser). Supports -| Transports | iOS | macos | Android | Linux | Windows | -|---|---|---|---|---|---| -| USB | ✓ | ✓ | ✓ | ✓ | ✓ | -| BLE | ✓ | ✓ | ✓ | ✗ | ✓ | -| Virtual | ✓ | ✓ | ✓ | ✗ | ✗ | -| Network Session | ✓ | ✓ | ✗ | ✗ | ✗ | +| Transports | iOS | macOS | Android | Linux | Windows | Web | +|---|---|---|---|---|---|---| +| USB | ✓ | ✓ | ✓ | ✓ | ✓ | ✓* | +| BLE | ✓ | ✓ | ✓ | ✗ | ✓ | ✗** | +| Virtual | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | +| Network Session | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | + +\* via browser Web MIDI API support. +\** BLE MIDI on Web is not handled by `flutter_midi_command_ble`; Web MIDI exposure depends on browser/OS. ## To install - Make sure your project is created with Kotlin and Swift support. -- Add flutter_midi_command: ^0.5.1 to your pubspec.yaml file. -- In ios/Podfile uncomment and change the platform to 11.0 `platform :ios, '11.0'` -- On iOS, After building, Add a NSBluetoothAlwaysUsageDescription and NSLocalNetworkUsageDescription to info.plist in the generated Xcode project. +- Add `flutter_midi_command` to your `pubspec.yaml`. +- Add `flutter_midi_command_ble` only if you want BLE MIDI support. +- Minimum platform versions in this repo: + - iOS: plugin package minimum is `11.0` (`packages/flutter_midi_command_darwin/ios/flutter_midi_command_darwin.podspec`), while the example app currently targets `13.0` (`example/ios/Podfile`). + - macOS: plugin package minimum is `10.13` (`packages/flutter_midi_command_darwin/macos/flutter_midi_command_darwin.podspec`), while the example app currently targets `10.15` (`example/macos/Podfile`). + - Android: plugin package minimum is `minSdkVersion(21)` (`packages/flutter_midi_command_android/android/build.gradle.kts`), while the example app currently uses `minSdkVersion(24)` (`example/android/app/build.gradle.kts`). +- If BLE is enabled on iOS, add `NSBluetoothAlwaysUsageDescription` (and related Bluetooth/location keys as required by your BLE flow) to `Info.plist`. +- If using network MIDI on iOS, add `NSLocalNetworkUsageDescription`. - On Linux, make sure ALSA is installed. +- On Web, use HTTPS and a browser with Web MIDI enabled (for example Chrome/Edge). ## Getting Started -This plugin is build using Swift and Kotlin on the native side, so make sure your project supports this. +The snippet below shows a practical integration pattern with optional BLE, device discovery, connection, and send/receive flow. + +```dart +import 'dart:async'; + +import 'package:flutter_midi_command/flutter_midi_command.dart'; +import 'package:flutter_midi_command/flutter_midi_command_messages.dart'; +// Optional: remove this import and BLE setup if your app is native-only. +import 'package:flutter_midi_command_ble/flutter_midi_command_ble.dart'; + +class MidiSessionController { + MidiSessionController({required this.enableBle}); + + final bool enableBle; + final MidiCommand midi = MidiCommand(); + StreamSubscription? _rxSub; + StreamSubscription? _setupSub; + MidiDevice? selectedDevice; + + Future initialize() async { + if (enableBle) { + midi.configureBleTransport(UniversalBleMidiTransport()); + await midi.startBluetooth(); + await midi.waitUntilBluetoothIsInitialized(); + await midi.startScanningForBluetoothDevices(); + } else { + midi.configureBleTransport(null); + midi.configureTransportPolicy( + const MidiTransportPolicy( + excludedTransports: {MidiTransport.ble}, + ), + ); + } + + _setupSub = midi.onMidiSetupChanged?.listen((_) async { + final devices = await midi.devices ?? const []; + if (devices.isNotEmpty && selectedDevice == null) { + selectedDevice = devices.first; + } + }); + + _rxSub = midi.onMidiDataReceived?.listen((event) { + _handleIncomingMessage( + event.device, + event.transport, + event.timestamp, + event.message, + ); + }); + } + + Future connectFirstMatching(String query) async { + final devices = await midi.devices ?? const []; + final q = query.toLowerCase(); + final device = devices.firstWhere( + (d) => d.name.toLowerCase().contains(q), + orElse: () => throw StateError('No MIDI device found for "$query".'), + ); + await midi.connectToDevice(device); + selectedDevice = device; + } + + void sendMiddleC() { + final targetId = selectedDevice?.id; + midi.sendData( + NoteOnMessage(channel: 0, note: 60, velocity: 100).generateData(), + deviceId: targetId, + ); + Future.delayed(const Duration(milliseconds: 200), () { + midi.sendData( + NoteOffMessage(channel: 0, note: 60, velocity: 0).generateData(), + deviceId: targetId, + ); + }); + } + + void _handleIncomingMessage( + MidiDevice source, + MidiTransport transport, + int timestamp, + MidiMessage message, + ) { + if (message is NoteOnMessage) { + // Example: route to synth engine / UI. + return; + } + if (message is CCMessage) { + // Example: map controllers to parameters. + return; + } + if (message is SysExMessage) { + // Example: parse manufacturer-specific payload. + return; + } + // Handle other typed messages as needed (PitchBendMessage, NRPN4Message, etc). + } + + Future dispose() async { + await _rxSub?.cancel(); + await _setupSub?.cancel(); + if (enableBle) { + midi.stopScanningForBluetoothDevices(); + } + midi.dispose(); + } +} +``` + +`connectToDevice` completes when the connection is established, throws `StateError` on connection failure, and times out after 10 seconds by default. + +See `example/` for a complete app with UI and transport toggles. + +## Message parser + +`onMidiDataReceived` already emits typed MIDI messages. +Use `MidiMessageParser` (or `MidiMessage.parse`) when you need to parse raw bytes from `onMidiPacketReceived` or from custom byte streams. +Keep one parser instance per input stream/device to preserve running-status and partial-message state correctly. + +- Supports running status. +- Handles realtime bytes interleaved with channel and SysEx data. +- Reassembles split packets across callback boundaries. +- Recovers from malformed/incomplete byte sequences and resumes on the next valid status byte. + +```dart +import 'dart:typed_data'; + +import 'package:flutter_midi_command/flutter_midi_command.dart'; +import 'package:flutter_midi_command/flutter_midi_command_messages.dart'; + +final MidiMessageParser parser = MidiMessageParser(); + +void onPacket(MidiPacket packet) { + final messages = parser.parse(packet.data, flushPendingNrpn: false); + for (final message in messages) { + if (message is NoteOnMessage) { + print('NoteOn ch=${message.channel} note=${message.note} vel=${message.velocity}'); + } else if (message is PitchBendMessage) { + print('Pitch bend ch=${message.channel} value=${message.bend}'); + } else if (message is NRPN4Message) { + print('NRPN param=${message.parameter} value=${message.value}'); + } else if (message is SysExMessage) { + print('SysEx bytes=${message.data.length}'); + } + } +} + +void onStreamClosed() { + // Flush pending partial NRPN/RPN state, if any. + final flushed = parser.parse(Uint8List(0), flushPendingNrpn: true); + for (final message in flushed) { + // Handle final pending message. + } + parser.reset(); +} +``` + +For simple one-shot payloads you can also call: + +```dart +final messages = MidiMessage.parse(packet.data); +``` + +### Dependency examples + +With native transports only: + +```yaml +dependencies: + flutter_midi_command: ^1.0.0 +``` + +With BLE support enabled: + +```yaml +dependencies: + flutter_midi_command: ^1.0.0 + flutter_midi_command_ble: ^1.0.0 +``` + +## Migration Guide (from older plugin versions) + +### 1) BLE moved to an optional package + +If you previously relied on built-in BLE behavior, add and attach the BLE transport explicitly: + +```yaml +dependencies: + flutter_midi_command: ^1.0.0 + flutter_midi_command_ble: ^1.0.0 +``` + +```dart +final midi = MidiCommand(); +midi.configureBleTransport(UniversalBleMidiTransport()); +``` + +If you want to remove BLE entirely, omit `flutter_midi_command_ble` and/or call: + +```dart +midi.configureBleTransport(null); +``` + +For local workspace development (like this monorepo), `path:` dependencies are still valid and used by the example app. -Import flutter_midi_command +### 2) Bluetooth API rename -`import 'package:flutter_midi_command/flutter_midi_command.dart';` +- Old: `startBluetoothCentral()` +- New: `startBluetooth()` -- Get a list of available MIDI devices by calling `MidiCommand().devices` which returns a list of `MidiDevice` -- Start bluetooth subsystem by calling `MidiCommand().startBluetoothCentral()` -- Observe the bluetooth system state by calling `MidiCommand().onBluetoothStateChanged()` -- Get the current bluetooth system state by calling `MidiCommand().bluetoothState()` -- Start scanning for BLE MIDI devices by calling `MidiCommand().startScanningForBluetoothDevices()` -- Connect to a specific `MidiDevice` by calling `MidiCommand.connectToDevice(selectedDevice)` -- Stop scanning for BLE MIDI devices by calling `MidiCommand().stopScanningForBluetoothDevices()` -- Disconnect from the current device by calling `MidiCommand.disconnectDevice()` -- Listen for updates in the MIDI setup by subscribing to `MidiCommand().onMidiSetupChanged` -- Listen for incoming MIDI messages on from the current device by subscribing to `MidiCommand().onMidiDataReceived`, after which the listener will recieve inbound MIDI messages as an UInt8List of variable length. -- Send a MIDI message by calling `MidiCommand.sendData(data)`, where data is an UInt8List of bytes following the MIDI spec. -- Or use the various `MidiCommand` subtypes to send PC, CC, NoteOn and NoteOff messages. -- Use `MidiCommand().addVirtualDevice(name: "Your Device Name")` to create a virtual MIDI destination and a virtual MIDI source. These virtual MIDI devices show up in other apps and can be used by other apps to send and receive MIDI to or from your app. The name parameter is ignored on Android and the Virtual Device is always called FlutterMIDICommand. To make this feature work on iOS, enable background audio for your app, i.e., add key `UIBackgroundModes` with value `audio` to your app's `info.plist` file. +`onBluetoothStateChanged` and `bluetoothState` are still available. -See example folder for how to use. +### 3) `MidiDevice.type` changed from `String` to enum + +Use `MidiDeviceType` instead of string comparisons: + +```dart +if (device.type == MidiDeviceType.ble) { + // ... +} +``` + +If you still need old wire values for logging or compatibility, use `device.type.wireValue`. + +### 4) Connection semantics are stricter + +`await midi.connectToDevice(device)` now resolves only when connected (or throws on failure/timeout), so completion means a real connected state. + +`MidiDevice` also exposes `onConnectionStateChanged` for reactive flows. + +### 5) Transport policies are first-class + +Use `MidiTransportPolicy` to enable/disable transports at runtime. Transport-specific calls throw `StateError` when that transport is disabled. + +### 6) Host-paired Bluetooth MIDI devices may be native-routed + +A host-native device can report `MidiDeviceType.ble` while still communicating through host MIDI APIs (for example paired CoreMIDI/Android host devices). Do not assume `type == ble` always means Dart BLE transport is used internally. For help getting started with Flutter, view our online [documentation](https://flutter.dev/). For help on editing plugin code, view the [documentation](https://docs.flutter.dev/development/packages-and-plugins/developing-packages#edit-plugin-package). + +## Workspace and architecture + +This repository is now managed as a melos monorepo. + +### Packages + +- `flutter_midi_command` (this package): public API and transport policies +- `packages/flutter_midi_command_platform_interface`: shared platform contracts +- `packages/flutter_midi_command_linux`: Linux host MIDI wrapper +- `packages/flutter_midi_command_windows`: Windows host MIDI wrapper +- `packages/flutter_midi_command_ble`: shared BLE MIDI transport using `universal_ble` +- `packages/flutter_midi_command_web`: browser Web MIDI transport + See `packages/flutter_midi_command_web/README.md` for web-specific runtime/permission details. + +### Transport policies + +You can include/exclude transports at runtime: + +```dart +final midi = MidiCommand(); +midi.configureTransportPolicy( + const MidiTransportPolicy( + excludedTransports: {MidiTransport.ble}, + ), +); +``` + +When a transport is disabled, transport-specific calls throw a `StateError`. + +### Device types + +`MidiDevice.type` is now strongly typed as `MidiDeviceType` (for example `MidiDeviceType.serial`, `MidiDeviceType.ble`, `MidiDeviceType.virtual`). + +### Device connection state + +Each `MidiDevice` now exposes connection state updates: + +```dart +final sub = selectedDevice.onConnectionStateChanged.listen((state) { + // state is MidiConnectionState.disconnected/connecting/connected/disconnecting +}); +``` + +### Compile-time BLE include/exclude + +Direct BLE scan/connect is optional at dependency level: + +- If you only depend on `flutter_midi_command`, no shared Dart BLE scanner/transport is attached. +- To include shared Dart BLE discovery/connection, add `flutter_midi_command_ble` and attach it to `MidiCommand`: + +```dart +import 'package:flutter_midi_command/flutter_midi_command.dart'; +import 'package:flutter_midi_command_ble/flutter_midi_command_ble.dart'; + +final midi = MidiCommand(); +midi.configureBleTransport(UniversalBleMidiTransport()); +``` + +To disable BLE completely: + +```dart +midi.configureBleTransport(null); +``` + +Note: paired Bluetooth MIDI devices exposed by host native MIDI APIs can still appear in `MidiCommand().devices` with `MidiDeviceType.ble` and connect through the native backend. + +The normal BLE API remains unchanged: + +```dart +await midi.startBluetooth(); +await midi.startScanningForBluetoothDevices(); +final state = midi.bluetoothState; +final stateStream = midi.onBluetoothStateChanged; +``` + +### Architecture note + +`MidiCommandPlatform` now only describes native host MIDI operations. +Shared BLE discovery/connection lives in `MidiBleTransport`, implemented in Dart (`flutter_midi_command_ble`). +Host-native backends may also report paired Bluetooth devices as `MidiDeviceType.ble`. +Web MIDI is implemented by `flutter_midi_command_web` using browser Web MIDI APIs. + +### Native API contracts with Pigeon + +Pigeon definitions are tracked in `pigeons/midi_api.dart` and should be used as the source-of-truth for generated host/flutter messaging code. diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml deleted file mode 100644 index 476ba62d..00000000 --- a/android/src/main/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/BondedDevice.kt b/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/BondedDevice.kt deleted file mode 100644 index db9444e4..00000000 --- a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/BondedDevice.kt +++ /dev/null @@ -1,168 +0,0 @@ -package com.invisiblewrench.fluttermidicommand - -import android.bluetooth.* -import android.content.Context -import android.media.midi.MidiReceiver -import android.util.Log -import io.flutter.plugin.common.MethodChannel.Result - -class BondedDevice : Device { - - lateinit var device: BluetoothDevice - lateinit var context: Context - - var socket: BluetoothSocket? = null - constructor(device: BluetoothDevice, context: Context) : super(device.address, "Bonded") { - this.device = device - this.context = context - - device.fetchUuidsWithSdp() - } - override fun connectWithStreamHandler(streamHandler: FMCStreamHandler, connectResult:Result?) { - Log.d("FlutterMIDICommand","connect bonded") - - this.setupStreamHandler = streamHandler - - Log.d("FlutterMIDICommand","bonded UUIds ${device.uuids}") - - this.receiver = receiver - - connectResult?.success(null) - } - - - override fun send(data: ByteArray, timestamp: Long?) { - - } - - override fun close() { - - - Log.d("FlutterMIDICommand", "Close bondede device ${this.device}") - socket?.close() - - setupStreamHandler?.send("deviceDisconnected") - } -} - -class BondedReceiver(stream: FMCStreamHandler, device: BluetoothDevice) : MidiReceiver() { - val stream = stream - val deviceInfo = mapOf("id" to device.address, "name" to device.name, "type" to "Bonded") - - // MIDI parsing - enum class PARSER_STATE - { - HEADER, - PARAMS, - SYSEX, - } - - var parserState = PARSER_STATE.HEADER - - var sysExBuffer = mutableListOf() - var midiBuffer = mutableListOf() - var midiPacketLength:Int = 0 - var statusByte:Byte = 0 - - override fun onSend(msg: ByteArray?, offset: Int, count: Int, timestamp: Long) { - msg?.also { - var data = it.slice(IntRange(offset, offset + count - 1)) -// Log.d("FlutterMIDICommand", "data sliced $data offset $offset count $count") - - if (data.size > 0) { - for (i in 0 until data.size) { - var midiByte: Byte = data[i] - var midiInt = midiByte.toInt() and 0xFF - -// Log.d("FlutterMIDICommand", "parserState $parserState byte $midiByte") - - when (parserState) { - PARSER_STATE.HEADER -> { - if (midiInt == 0xF0) { - parserState = PARSER_STATE.SYSEX - sysExBuffer.clear() - sysExBuffer.add(midiByte) - } else if (midiInt and 0x80 == 0x80) { - // some kind of midi msg - statusByte = midiByte - midiPacketLength = lengthOfMessageType(midiInt) -// Log.d("FlutterMIDICommand", "expected length $midiPacketLength") - midiBuffer.clear() - midiBuffer.add(midiByte) - parserState = PARSER_STATE.PARAMS - finalizeMessageIfComplete(timestamp) - } else { - // in header state but no status byte, do running status - midiBuffer.clear() - midiBuffer.add(statusByte) - midiBuffer.add(midiByte) - parserState = PARSER_STATE.PARAMS - finalizeMessageIfComplete(timestamp) - } - } - - PARSER_STATE.SYSEX -> { - if (midiInt == 0xF0) { - // Android can skip SysEx end bytes, when more sysex messages are coming in succession. - // in an attempt to save the situation, add an end byte to the current buffer and start a new one. - sysExBuffer.add(0xF7.toByte()) -// Log.d("FlutterMIDICommand", "sysex force finalized $sysExBuffer") - stream.send( - mapOf( - "data" to sysExBuffer.toList(), - "timestamp" to timestamp, - "device" to deviceInfo - ) - ) - sysExBuffer.clear(); - } - sysExBuffer.add(midiByte) - if (midiInt == 0xF7) { - // Sysex complete -// Log.d("FlutterMIDICommand", "sysex complete $sysExBuffer") - stream.send( - mapOf( - "data" to sysExBuffer.toList(), - "timestamp" to timestamp, - "device" to deviceInfo - ) - ) - parserState = PARSER_STATE.HEADER - } - } - - PARSER_STATE.PARAMS -> { - midiBuffer.add(midiByte) - finalizeMessageIfComplete(timestamp) - } - } - } - } - } - } - - fun finalizeMessageIfComplete(timestamp: Long) { - if (midiBuffer.size == midiPacketLength) { -// Log.d("FlutterMIDICommand", "status complete $midiBuffer") - stream.send( mapOf("data" to midiBuffer.toList(), "timestamp" to timestamp, "device" to deviceInfo)) - parserState = PARSER_STATE.HEADER - } - } - - fun lengthOfMessageType(type:Int): Int { - var midiType:Int = type and 0xF0 - - when (type) { - 0xF6, 0xF8, 0xFA, 0xFB, 0xFC, 0xFF, 0xFE -> return 1 - 0xF1, 0xF3 -> return 2 - 0xF2 -> return 3 - } - - when (midiType) { - 0xC0, 0xD0 -> return 2 - 0x80, 0x90, 0xA0, 0xB0, 0xE0 -> return 3 - } - return 0 - } -} - diff --git a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/ConnectedDevice.kt b/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/ConnectedDevice.kt deleted file mode 100644 index 27bc4235..00000000 --- a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/ConnectedDevice.kt +++ /dev/null @@ -1,211 +0,0 @@ -package com.invisiblewrench.fluttermidicommand - -import android.bluetooth.BluetoothDevice -import android.content.pm.ServiceInfo -import android.media.midi.* -import android.os.Handler -import android.util.Log -import io.flutter.plugin.common.MethodChannel.Result - -class ConnectedDevice : Device { - var inputPort: MidiInputPort? = null - var outputPort: MidiOutputPort? = null - - private var isOwnVirtualDevice = false; - - constructor(device:MidiDevice, setupStreamHandler: FMCStreamHandler) : super(deviceIdForInfo(device.info), device.info.type.toString()) { - this.midiDevice = device - this.setupStreamHandler = setupStreamHandler - } - - override fun connectWithStreamHandler(streamHandler: FMCStreamHandler, connectResult:Result?) { - Log.d("FlutterMIDICommand","connectWithHandler") - - this.midiDevice.info?.let { - - Log.d("FlutterMIDICommand","inputPorts ${it.inputPortCount} outputPorts ${it.outputPortCount}") - - this.receiver = RXReceiver(streamHandler, this.midiDevice) - - var serviceInfo = it.properties.getParcelable("service_info") - if (serviceInfo?.name == "com.invisiblewrench.fluttermidicommand.VirtualDeviceService") { - Log.d("FlutterMIDICommand", "Own virtual") - isOwnVirtualDevice = true - } else { - if (it.inputPortCount > 0) { - Log.d("FlutterMIDICommand", "Open input port") - this.inputPort = this.midiDevice.openInputPort(0) - } - } - if (it.outputPortCount > 0) { - Log.d("FlutterMIDICommand", "Open output port") - this.outputPort = this.midiDevice.openOutputPort(0) - this.outputPort?.connect(this.receiver) - } - } - - - - Handler().postDelayed({ - setupStreamHandler?.send("deviceConnected") - connectResult?.success(null) - }, 2500) - } - - override fun send(data: ByteArray, timestamp: Long?) { - - if(isOwnVirtualDevice) { - Log.d("FlutterMIDICommand", "Send to recevier") - if (timestamp == null) - this.receiver?.send(data, 0, data.size) - else - this.receiver?.send(data, 0, data.size, timestamp) - - } else { - this.inputPort?.send(data, 0, data.count(), if (timestamp is Long) timestamp else 0) - } - } - - override fun close() { - Log.d("FlutterMIDICommand", "Flush input port ${this.inputPort}") - this.inputPort?.flush() - Log.d("FlutterMIDICommand", "Close input port ${this.inputPort}") - this.inputPort?.close() - Log.d("FlutterMIDICommand", "Close output port ${this.outputPort}") - this.outputPort?.close() - Log.d("FlutterMIDICommand", "Disconnect receiver ${this.receiver}") - this.outputPort?.disconnect(this.receiver) - this.receiver = null - Log.d("FlutterMIDICommand", "Close device ${this.midiDevice}") - this.midiDevice.close() - - setupStreamHandler?.send("deviceDisconnected") - } - - class RXReceiver(stream: FMCStreamHandler, device: MidiDevice) : MidiReceiver() { - val stream = stream - var isBluetoothDevice = device.info.type == MidiDeviceInfo.TYPE_BLUETOOTH - val deviceInfo = mapOf( - "id" to if (isBluetoothDevice) (device.info.properties.get(MidiDeviceInfo.PROPERTY_BLUETOOTH_DEVICE) as BluetoothDevice).address else device.info.id.toString(), - "name" to device.info.properties.getString(MidiDeviceInfo.PROPERTY_NAME), - "type" to if (isBluetoothDevice) "BLE" else "native" - ) - - // MIDI parsing - enum class PARSER_STATE - { - HEADER, - PARAMS, - SYSEX, - } - - var parserState = PARSER_STATE.HEADER - - var sysExBuffer = mutableListOf() - var midiBuffer = mutableListOf() - var midiPacketLength:Int = 0 - var statusByte:Byte = 0 - - override fun onSend(msg: ByteArray?, offset: Int, count: Int, timestamp: Long) { - msg?.also { - var data = it.slice(IntRange(offset, offset + count - 1)) -// Log.d("FlutterMIDICommand", "data sliced $data offset $offset count $count") - - if (data.size > 0) { - for (i in 0 until data.size) { - var midiByte: Byte = data[i] - var midiInt = midiByte.toInt() and 0xFF - -// Log.d("FlutterMIDICommand", "parserState $parserState byte $midiByte") - - when (parserState) { - PARSER_STATE.HEADER -> { - if (midiInt == 0xF0) { - parserState = PARSER_STATE.SYSEX - sysExBuffer.clear() - sysExBuffer.add(midiByte) - } else if (midiInt and 0x80 == 0x80) { - // some kind of midi msg - statusByte = midiByte - midiPacketLength = lengthOfMessageType(midiInt) -// Log.d("FlutterMIDICommand", "expected length $midiPacketLength") - midiBuffer.clear() - midiBuffer.add(midiByte) - parserState = PARSER_STATE.PARAMS - finalizeMessageIfComplete(timestamp) - } else { - // in header state but no status byte, do running status - midiBuffer.clear() - midiBuffer.add(statusByte) - midiBuffer.add(midiByte) - parserState = PARSER_STATE.PARAMS - finalizeMessageIfComplete(timestamp) - } - } - - PARSER_STATE.SYSEX -> { - if (midiInt == 0xF0) { - // Android can skip SysEx end bytes, when more sysex messages are coming in succession. - // in an attempt to save the situation, add an end byte to the current buffer and start a new one. - sysExBuffer.add(0xF7.toByte()) -// Log.d("FlutterMIDICommand", "sysex force finalized $sysExBuffer") - stream.send( - mapOf( - "data" to sysExBuffer.toList(), - "timestamp" to timestamp, - "device" to deviceInfo - ) - ) - sysExBuffer.clear(); - } - sysExBuffer.add(midiByte) - if (midiInt == 0xF7) { - // Sysex complete -// Log.d("FlutterMIDICommand", "sysex complete $sysExBuffer") - stream.send( - mapOf( - "data" to sysExBuffer.toList(), - "timestamp" to timestamp, - "device" to deviceInfo - ) - ) - parserState = PARSER_STATE.HEADER - } - } - - PARSER_STATE.PARAMS -> { - midiBuffer.add(midiByte) - finalizeMessageIfComplete(timestamp) - } - } - } - } - } - } - - fun finalizeMessageIfComplete(timestamp: Long) { - if (midiBuffer.size == midiPacketLength) { -// Log.d("FlutterMIDICommand", "status complete $midiBuffer") - stream.send( mapOf("data" to midiBuffer.toList(), "timestamp" to timestamp, "device" to deviceInfo)) - parserState = PARSER_STATE.HEADER - } - } - - fun lengthOfMessageType(type:Int): Int { - var midiType:Int = type and 0xF0 - - when (type) { - 0xF6, 0xF8, 0xFA, 0xFB, 0xFC, 0xFF, 0xFE -> return 1 - 0xF1, 0xF3 -> return 2 - 0xF2 -> return 3 - } - - when (midiType) { - 0xC0, 0xD0 -> return 2 - 0x80, 0x90, 0xA0, 0xB0, 0xE0 -> return 3 - } - return 0 - } - } - -} diff --git a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FMCStreamHandler.kt b/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FMCStreamHandler.kt deleted file mode 100644 index d3687a88..00000000 --- a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FMCStreamHandler.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.invisiblewrench.fluttermidicommand - -import android.os.Handler -import android.util.Log -import io.flutter.embedding.engine.plugins.FlutterPlugin -import io.flutter.plugin.common.* -import io.flutter.plugin.common.MethodChannel.MethodCallHandler - -class FMCStreamHandler(handler: Handler) : EventChannel.StreamHandler { - val handler = handler - private var eventSink: EventChannel.EventSink? = null - - // EventChannel.StreamHandler methods - override fun onListen(arguments: Any?, eventSink: EventChannel.EventSink?) { - Log.d("FlutterMIDICommand","FlutterStreamHandler onListen") - this.eventSink = eventSink - } - - override fun onCancel(arguments: Any?) { - Log.d("FlutterMIDICommand","FlutterStreamHandler onCancel") - eventSink = null - } - - fun send(data: Any) { - handler.post { - eventSink?.success(data) - } - } -} \ No newline at end of file diff --git a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FlutterMidiCommandPlugin.kt b/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FlutterMidiCommandPlugin.kt deleted file mode 100644 index 649c8175..00000000 --- a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FlutterMidiCommandPlugin.kt +++ /dev/null @@ -1,659 +0,0 @@ -package com.invisiblewrench.fluttermidicommand - -import android.Manifest -import android.app.Activity -import android.bluetooth.* -import android.bluetooth.BluetoothGatt.* -import android.bluetooth.BluetoothProfile.* -import android.bluetooth.le.* -import android.content.* -import android.content.pm.PackageInfo -import android.content.pm.PackageManager -import android.media.midi.* -import android.os.* -import android.util.Log -import io.flutter.embedding.engine.plugins.FlutterPlugin -import io.flutter.embedding.engine.plugins.activity.ActivityAware -import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding -import io.flutter.plugin.common.* -import io.flutter.plugin.common.MethodChannel.MethodCallHandler -import io.flutter.plugin.common.MethodChannel.Result - -/** FlutterMidiCommandPlugin */ -class FlutterMidiCommandPlugin : FlutterPlugin, ActivityAware, MethodCallHandler, PluginRegistry.RequestPermissionsResultListener { - - lateinit var context: Context - private var activity: Activity? = null - lateinit var messenger: BinaryMessenger - - private lateinit var midiManager: MidiManager - private lateinit var handler: Handler - - private var isSupported: Boolean = false - - private var connectedDevices = mutableMapOf() - - lateinit var rxChannel: EventChannel - lateinit var setupChannel: EventChannel - lateinit var setupStreamHandler: FMCStreamHandler - lateinit var bluetoothStateChannel: EventChannel - lateinit var bluetoothStateHandler: FMCStreamHandler - lateinit var rxStreamHandler: FMCStreamHandler - var bluetoothState: String = "unknown" - set(value) { - bluetoothStateHandler.send(value) - field = value - } - - var bluetoothAdapter: BluetoothAdapter? = null - var bluetoothScanner: BluetoothLeScanner? = null - - private val PERMISSIONS_REQUEST_ACCESS_LOCATION = 95453 // arbitrary - var discoveredDevices = mutableSetOf() - var ongoingConnections = mutableMapOf() - - var blManager:BluetoothManager? = null - - // #region Lifetime functions - override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) { - messenger = binding.binaryMessenger - context = binding.applicationContext - } - - override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { - teardownChannels() - } - - override fun onAttachedToActivity(p0: ActivityPluginBinding) { - print("onAttachedToActivity") - // TODO: your plugin is now attached to an Activity - activity = p0.activity - p0.addRequestPermissionsResultListener(this) - setup() - } - - override fun onDetachedFromActivityForConfigChanges() { - print("onDetachedFromActivityForConfigChanges") - // TODO: the Activity your plugin was attached to was -// destroyed to change configuration. -// This call will be followed by onReattachedToActivityForConfigChanges(). - } - - override fun onReattachedToActivityForConfigChanges(p0: ActivityPluginBinding) { - // TODO: your plugin is now attached to a new Activity - p0.addRequestPermissionsResultListener(this) - -// after a configuration change. - print("onReattachedToActivityForConfigChanges") - } - - override fun onDetachedFromActivity() { // TODO: your plugin is no longer associated with an Activity. -// Clean up references. - print("onDetachedFromActivity") - activity = null - } - - // #endregion - - fun setup() { - print("setup") - - isSupported = - context.packageManager.hasSystemFeature(PackageManager.FEATURE_MIDI) && - context.packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) - - val channel = MethodChannel(messenger, "plugins.invisiblewrench.com/flutter_midi_command") - channel.setMethodCallHandler(this) - - if (!isSupported) { - return - } - - if (!::handler.isInitialized) { - handler = Handler(context.mainLooper) - } - if (!::midiManager.isInitialized) { - midiManager = context.getSystemService(Context.MIDI_SERVICE) as MidiManager - midiManager.registerDeviceCallback(deviceConnectionCallback, handler) - } - - rxStreamHandler = FMCStreamHandler(handler) - rxChannel = EventChannel(messenger, "plugins.invisiblewrench.com/flutter_midi_command/rx_channel") - rxChannel.setStreamHandler(rxStreamHandler) - VirtualDeviceService.rxStreamHandler = rxStreamHandler - - setupStreamHandler = FMCStreamHandler(handler) - setupChannel = EventChannel(messenger, "plugins.invisiblewrench.com/flutter_midi_command/setup_channel") - setupChannel.setStreamHandler( setupStreamHandler ) - - bluetoothStateHandler = FMCStreamHandler(handler) - bluetoothStateChannel = EventChannel(messenger, "plugins.invisiblewrench.com/flutter_midi_command/bluetooth_central_state") - bluetoothStateChannel.setStreamHandler( bluetoothStateHandler ) - } - - - override fun onMethodCall(call: MethodCall, result: Result): Unit { -// Log.d("FlutterMIDICommand","call method ${call.method}") - - if (!isSupported) { - result.error("ERROR", "MIDI not supported", null) - return - } - - when (call.method) { - "sendData" -> { - var args : Map? = call.arguments() - sendData(args?.get("data") as ByteArray, args["timestamp"] as? Long, args["deviceId"]?.toString()) - result.success(null) - } - "getDevices" -> { - result.success(listOfDevices()) - } - - "bluetoothState" -> { - result.success(bluetoothState) - } - - "startBluetoothCentral" -> { - if (blManager != null && bluetoothAdapter != null && bluetoothScanner != null) { - result.success(null) - } - val errorMsg = tryToInitBT() - if (errorMsg != null) { - result.error("ERROR", errorMsg, null) - } else { - result.success(null) - } - } - "scanForDevices" -> { - val errorMsg = startScanningLeDevices() - if (errorMsg != null) { - result.error("ERROR", errorMsg, null) - } else { - result.success(null) - } - } - "stopScanForDevices" -> { - stopScanningLeDevices() - result.success(null) - } - "connectToDevice" -> { - var args = call.arguments>() - var device = (args?.get("device") as Map) -// var portList = (args["ports"] as List>).map{ -// Port(if (it["id"].toString() is String) it["id"].toString().toInt() else 0 , it["type"].toString()) -// } - var deviceId = device["id"].toString() - ongoingConnections[deviceId] = result - val errorMsg = connectToDevice(deviceId, device["type"].toString()) - if (errorMsg != null) { - result.error("ERROR", errorMsg, null) - } - } - "disconnectDevice" -> { - var args = call.arguments>() - args?.get("id")?.let { disconnectDevice(it.toString()) } - result.success(null) - } - "teardown" -> { - teardown() - result.success(null) - } - - "addVirtualDevice" -> { - startVirtualService() - } - - "removeVirtualDevice" -> { - stopVirtualService() - } - - "isNetworkSessionEnabled" -> { - result.success(false) - } - - "enableNetworkSession" -> { - result.success(null) - } - - else -> { - result.notImplemented() - } - } - } - - fun startVirtualService() { - val comp = ComponentName(context, "com.invisiblewrench.fluttermidicommand.VirtualDeviceService") - val pm = context.packageManager - pm.setComponentEnabledSetting(comp, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.SYNCHRONOUS or PackageManager.DONT_KILL_APP) - - } - - private fun teardownChannels() { - // Teardown channels - } - - fun stopVirtualService() { - val comp = ComponentName(context, "com.invisiblewrench.fluttermidicommand.VirtualDeviceService") - val pm = context.packageManager - pm.setComponentEnabledSetting(comp, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP) - - } - - fun appName() : String { - val pm: PackageManager = context.getPackageManager() - val info: PackageInfo = pm.getPackageInfo(context.getPackageName(), 0) - return info.applicationInfo?.loadLabel(pm).toString() - } - - private fun tryToInitBT() : String? { - Log.d("FlutterMIDICommand", "tryToInitBT") - - if (Build.VERSION.SDK_INT >= 31 && (context.checkSelfPermission(Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED || - context.checkSelfPermission(Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED)) { - - bluetoothState = "unknown"; - - if (activity != null) { - val activity = activity!! -// if (activity.shouldShowRequestPermissionRationale(Manifest.permission.BLUETOOTH_SCAN) || activity.shouldShowRequestPermissionRationale(Manifest.permission.BLUETOOTH_CONNECT)) { -// Log.d("FlutterMIDICommand", "Show rationale for Bluetooth") -// bluetoothState = "unauthorized" -// } else { - activity.requestPermissions(arrayOf(Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_CONNECT), PERMISSIONS_REQUEST_ACCESS_LOCATION) -// } - } - - } else - if (Build.VERSION.SDK_INT < 31 && (context.checkSelfPermission(Manifest.permission.BLUETOOTH_ADMIN) != PackageManager.PERMISSION_GRANTED || - context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)) { - - bluetoothState = "unknown"; - - if (activity != null) { - var activity = activity!! -// if (activity.shouldShowRequestPermissionRationale(Manifest.permission.BLUETOOTH_ADMIN) || activity.shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) { -// Log.d("FlutterMIDICommand", "Show rationale for Location") -// bluetoothState = "unauthorized" -// } else { - activity.requestPermissions(arrayOf(Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.ACCESS_FINE_LOCATION), PERMISSIONS_REQUEST_ACCESS_LOCATION) - -// } - } - } else { - Log.d("FlutterMIDICommand", "Already permitted") - - blManager = context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager - - bluetoothAdapter = blManager!!.adapter - if (bluetoothAdapter != null) { - bluetoothState = "poweredOn"; - - bluetoothScanner = bluetoothAdapter!!.bluetoothLeScanner - - if (bluetoothScanner != null) { - // Listen for changes in Bluetooth state - context.registerReceiver(broadcastReceiver, IntentFilter().apply { - addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - addAction( BluetoothDevice.ACTION_BOND_STATE_CHANGED); - }) - - startScanningLeDevices() - } else { - Log.d("FlutterMIDICommand", "bluetoothScanner is null") - return "bluetoothNotAvailable" - } - } else { - bluetoothState = "unsupported"; - Log.d("FlutterMIDICommand", "bluetoothAdapter is null") - } - } - return null - } - - private val broadcastReceiver = object : BroadcastReceiver() { - override fun onReceive(context: Context, intent: Intent) { - val action = intent.action - - if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { - val state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) - - when (state) { - BluetoothAdapter.STATE_OFF -> { - Log.d("FlutterMIDICommand", "BT is now off") - bluetoothState = "poweredOff"; - bluetoothScanner = null - } - - BluetoothAdapter.STATE_TURNING_OFF -> { - Log.d("FlutterMIDICommand", "BT is now turning off") - } - - BluetoothAdapter.STATE_ON -> { - bluetoothState = "poweredOn"; - Log.d("FlutterMIDICommand", "BT is now on") - } - } - } else - - if (action.equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED)) { - val device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) - val previousBondState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, -1) - val bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, -1) - val bondTransition = "${previousBondState.toBondStateDescription()} to " + bondState.toBondStateDescription() - Log.d("Bond state change", "${device?.address} bond state changed | $bondTransition") - setupStreamHandler.send(bondState.toBondStateDescription()) - } - } - - private fun Int.toBondStateDescription() = when(this) { - BluetoothDevice.BOND_BONDED -> "BONDED" - BluetoothDevice.BOND_BONDING -> "BONDING" - BluetoothDevice.BOND_NONE -> "NOT BONDED" - else -> "ERROR: $this" - } - } - - private fun startScanningLeDevices() : String? { - - if (bluetoothScanner == null) { - val errMsg = tryToInitBT() - errMsg?.let { - return it - } - } else { - stopScanningLeDevices() - Log.d("FlutterMIDICommand", "Start BLE Scan") - - bluetoothAdapter?.startDiscovery() - - val filter = ScanFilter.Builder().setServiceUuid(ParcelUuid.fromString("03B80E5A-EDE8-4B33-A751-6CE34EC4C700")).build() - val settings = ScanSettings.Builder().build() - bluetoothScanner?.startScan(listOf(filter), settings, bleScanner) - } - return null - } - - private fun stopScanningLeDevices() { - Log.d("FlutterMIDICommand", "Stop BLE Scan") - bluetoothScanner?.stopScan(bleScanner) - discoveredDevices.clear() - } - -//fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean - override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray): Boolean { - Log.d("FlutterMIDICommand", "Permissions code: $requestCode grantResults: $grantResults") - - if (!isSupported) { - Log.d("FlutterMIDICommand", "MIDI not supported") - return false; - } - - if (requestCode == PERMISSIONS_REQUEST_ACCESS_LOCATION && grantResults?.get(0) == PackageManager.PERMISSION_GRANTED) { - startScanningLeDevices() - return true; - } else { - bluetoothState = "unauthorized" - Log.d("FlutterMIDICommand", "Perms failed") - return true; - } - - return false; - } - - private fun connectToDevice(deviceId:String, type:String) : String? { - Log.d("FlutterMIDICommand", "connect to $type device: $deviceId") - - if (type == "BLE" || type == "bonded") { - val bleDevices = discoveredDevices.filter { it.address == deviceId } - if (bleDevices.isEmpty()) { - - var connectedGattDevice = blManager?.getConnectedDevices(GATT_SERVER)?.filter { it.address == deviceId }?.firstOrNull() - if (type == "bonded" && connectedGattDevice != null) { - midiManager.openBluetoothDevice(connectedGattDevice, deviceOpenedListener, handler) - } else { - Log.d("FlutterMIDICommand", "Device not found ${deviceId}") - return "Device not found" - } - } else { - Log.d("FlutterMIDICommand", "Open device") - midiManager.openBluetoothDevice(bleDevices.first(), deviceOpenedListener, handler) - } - } else if (type == "native") { - val devices = midiManager.devices.filter { d -> Device.deviceIdForInfo(d) == deviceId } - if (devices.isEmpty()) { - Log.d("FlutterMIDICommand", "not found device $devices") - return "Device not found" - } else { - Log.d("FlutterMIDICommand", "open device ${devices[0]}") - midiManager.openDevice(devices.first(), deviceOpenedListener, handler) - } - } else { - Log.d("FlutterMIDICommand", "Can't connect to unknown device type $type") - } - return null; - } - - private val bleScanner = object : ScanCallback() { - override fun onScanResult(callbackType: Int, result: ScanResult?) { - super.onScanResult(callbackType, result) - Log.d("FlutterMIDICommand", "onScanResult: ${result?.device?.address} - ${result?.device?.name}") - result?.also { - if (!discoveredDevices.contains(it.device)) { - discoveredDevices.add(it.device) - setupStreamHandler.send("deviceAppeared") - } - } - } - - override fun onScanFailed(errorCode: Int) { - super.onScanFailed(errorCode) - - var messages = mapOf( - SCAN_FAILED_ALREADY_STARTED to "Scan already started", - SCAN_FAILED_APPLICATION_REGISTRATION_FAILED to "Application Registration Failed", - SCAN_FAILED_FEATURE_UNSUPPORTED to "Future Unsupported", - SCAN_FAILED_INTERNAL_ERROR to "Internal Error" -// SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES to "Out of HW Resources", -// SCAN_FAILED_SCANNING_TOO_FREQUENTLY to "Scanning too frequently" - ) - - - Log.d("FlutterMIDICommand", "onScanFailed: $errorCode") - setupStreamHandler.send("BLE scan failed $errorCode ${messages[errorCode]}") - } - } - - - fun teardown() { - Log.d("FlutterMIDICommand", "teardown") - - stopVirtualService() - - connectedDevices.forEach { s, connectedDevice -> connectedDevice.close() } - connectedDevices.clear() - - Log.d("FlutterMIDICommand", "unregisterDeviceCallback") - midiManager.unregisterDeviceCallback(deviceConnectionCallback) - Log.d("FlutterMIDICommand", "unregister broadcastReceiver") - try { - context.unregisterReceiver(broadcastReceiver) - } catch (e: Exception) { - // The receiver was not registered. - // There is nothing to do in that case. - // Everything is fine. - } - } - - - - fun disconnectDevice(deviceId: String) { - connectedDevices[deviceId]?.also { - it.close() - connectedDevices.remove(deviceId) - } - } - - fun sendData(data: ByteArray, timestamp: Long?, deviceId: String?) { - if (deviceId != null) { - if (connectedDevices.containsKey(deviceId)) { - connectedDevices[deviceId]?.let { - Log.d("FlutterMIDICommand", "send midi to $it ${it.id}") - it.send(data, timestamp) - } - } else { - Log.d("FlutterMIDICommand", "no device for id $deviceId") - } - } - else { - connectedDevices.values.forEach { - it.send(data, timestamp) - } - } - } - - fun listOfPorts(count: Int) : List> { - return (0 until count).map { mapOf("id" to it, "connected" to false) } - } - - fun listOfDevices() : List> { - var list = mutableMapOf>() - - - // Bonded BT devices - var connectedGattDeviceIds = mutableListOf() - var connectedGattDevices = blManager?.getConnectedDevices(GATT_SERVER) - connectedGattDevices?.forEach { - Log.d("FlutterMIDICommand", "connectedGattDevice ${it.address} type ${it.type} name ${it.name}") - connectedGattDeviceIds.add(it.address) - } - - var bondedDeviceIds = mutableListOf() - var bondedDevices = bluetoothAdapter?.getBondedDevices() - bondedDevices?.forEach { - Log.d("FlutterMIDICommand", "add bonded device ${it.address} type ${it.type} name ${it.name}") - bondedDeviceIds.add(it.address) - - var id = it.address - if (connectedGattDeviceIds.contains(id)) { - list[id] = mapOf( - "name" to it.name, - "id" to id, - "type" to "bonded", - "connected" to if (connectedDevices.contains(it.address)) "true" else "false",///*if (connectedGattDeviceIds.contains(id)) "true" else*/ "false", - "inputs" to listOf(mapOf("id" to 0, "connected" to false)), - "outputs" to listOf(mapOf("id" to 0, "connected" to false)) - ) - } - } - - // Discovered BLE devices - discoveredDevices.forEach { - var id = it.address; - Log.d("FlutterMIDICommand", "add discovered device $ type ${it.type}") - - if (list.contains(id)) { - Log.d("FlutterMIDICommand", "device already in list $id") - } else { - Log.d("FlutterMIDICommand", "add native device $id type ${it.type}") - list[id] = mapOf( - "name" to it.name, - "id" to id, - "type" to "BLE", - "connected" to if (connectedDevices.contains(id)) "true" else "false", - "inputs" to listOf(mapOf("id" to 0, "connected" to false)), - "outputs" to listOf(mapOf("id" to 0, "connected" to false)) - ) - } - } - - // Generic MIDI devices - val devs:Array = midiManager.devices - devs.forEach { - var id = Device.deviceIdForInfo(it) - Log.d("FlutterMIDICommand", "add device from midiManager id $id") - - if (list.contains(id)) { - Log.d("FlutterMIDICommand", "device already in list $id") - } else { - Log.d("FlutterMIDICommand", "add native device $id type ${it.type}") - - list[id] = mapOf( - "name" to (it.properties.getString(MidiDeviceInfo.PROPERTY_NAME) ?: "-"), - "id" to id, - "type" to if (bondedDeviceIds.contains(id)) "bonded" else "native", - "connected" to if (connectedDevices.contains(id)) "true" else "false", - "inputs" to listOfPorts(it.inputPortCount), - "outputs" to listOfPorts(it.outputPortCount) - ) - } - } - - Log.d("FlutterMIDICommand", "list $list") - - return list.values.toList() - } - - - private val deviceOpenedListener = object : MidiManager.OnDeviceOpenedListener { - override fun onDeviceOpened(it: MidiDevice?) { - Log.d("FlutterMIDICommand", "onDeviceOpened") - it?.also { - val device = ConnectedDevice(it, this@FlutterMidiCommandPlugin.setupStreamHandler) - var result = this@FlutterMidiCommandPlugin.ongoingConnections[device.id] - device.connectWithStreamHandler(rxStreamHandler, result) - - Log.d("FlutterMIDICommand", "Opened device id ${device.id}") - connectedDevices[device.id] = device - } - } - } - - private val deviceConnectionCallback = object : MidiManager.DeviceCallback() { - - override fun onDeviceAdded(device: MidiDeviceInfo?) { - super.onDeviceAdded(device) - device?.also { - Log.d("FlutterMIDICommand", "MIDI device added $it") - this@FlutterMidiCommandPlugin.setupStreamHandler.send("deviceFound") - } - } - - override fun onDeviceRemoved(device: MidiDeviceInfo?) { - super.onDeviceRemoved(device) - device?.also { - Log.d("FlutterMIDICommand","MIDI device removed $it") - var id = Device.deviceIdForInfo(it) - connectedDevices[id]?.also { - Log.d("FlutterMIDICommand","remove removed device $it") - connectedDevices.remove(id) - discoveredDevices.removeIf { discoveredDevice -> discoveredDevice.address == id } - ongoingConnections.remove(id) - } - this@FlutterMidiCommandPlugin.setupStreamHandler.send("deviceLost") - } - } - - override fun onDeviceStatusChanged(status: MidiDeviceStatus?) { - super.onDeviceStatusChanged(status) - Log.d("FlutterMIDICommand","MIDI device status changed ${status.toString()}") - - status?.also { - connectedDevices[Device.deviceIdForInfo(it.deviceInfo)]?.also { - Log.d("FlutterMIDICommand", "update device status $status") -// it.status = status - } - } - this@FlutterMidiCommandPlugin.setupStreamHandler.send(status.toString()) - } - - - } - - -} - - diff --git a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Port.kt b/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Port.kt deleted file mode 100644 index 1fc8b707..00000000 --- a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Port.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.invisiblewrench.fluttermidicommand - -class Port { - var id:Int - var type:String - - constructor(id:Int, type:String) { - this.id = id - this.type = type - } -} \ No newline at end of file diff --git a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/VirtualDeviceService.kt b/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/VirtualDeviceService.kt deleted file mode 100644 index 83937265..00000000 --- a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/VirtualDeviceService.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.invisiblewrench.fluttermidicommand - -import android.content.Intent -import android.media.midi.MidiDeviceService -import android.media.midi.MidiReceiver -import android.util.Log - -class VirtualDeviceService() : MidiDeviceService() { - var receiver:VirtualRXReceiver? = null - - override fun onGetInputPortReceivers(): Array { - Log.d("FlutterMIDICommand", "Create recevier $this") - if (receiver == null) { - receiver = VirtualRXReceiver(rxStreamHandler) - } - return arrayOf(receiver!!) - } - - override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { - Log.d("FlutterMIDICommand_vSer", "onStartCommand") - - return START_NOT_STICKY - } - - override fun onDestroy() { - receiver = null; - super.onDestroy() - } - - class VirtualRXReceiver(stream:FMCStreamHandler) : MidiReceiver() { - val streamHandler = stream - val _deviceInfo = mutableMapOf("id" to "FlutterMidiCommand_Virtual", "name" to "FlutterMidiCommand_Virtual", "type" to "native") - - override fun onSend(msg: ByteArray?, offset: Int, count: Int, timestamp: Long) { - msg?.also { - var data = it.slice(IntRange(offset, offset + count - 1)) - streamHandler.send(mapOf("data" to data.toList(), "timestamp" to timestamp, "device" to _deviceInfo)) - } - } - - override fun send(msg: ByteArray?, offset: Int, count: Int) { - Log.d("FlutterMIDICommand", "Send override") - super.send(msg, offset, count) - } - } - - companion - - object { - lateinit var rxStreamHandler: FMCStreamHandler - } - -} diff --git a/doc/api/__404error.html b/doc/api/__404error.html index 589d5331..ea9712c2 100644 --- a/doc/api/__404error.html +++ b/doc/api/__404error.html @@ -16,15 +16,11 @@ - - -
-
menu
- -
-

404: Something's gone wrong :-(

- -
-

You've tried to visit a page that doesn't exist. Luckily this site - has other pages.

-

If you were looking for something specific, try searching: +

+

404: Something's gone wrong :-(

+
+

+ You've tried to visit a page that doesn't exist. Luckily this site has + other pages. +

+
+ If you were looking for something specific, try searching: -

- -
-
- - +
+
+ + - - - + +
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/dart-async/AsyncError-class.html b/doc/api/dart-async/AsyncError-class.html deleted file mode 100644 index 5a0d8ad5..00000000 --- a/doc/api/dart-async/AsyncError-class.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - - AsyncError class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
AsyncError
- -
- -
- - - -
-

AsyncError class

- -
-

Pair of error and stack trace. Returned by Zone.errorCallback.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- AsyncError(Object error, StackTrace stackTrace) -
-
- -
-
-
- -
-

Properties

- -
-
- error - Object -
-
- -
final
-
-
- stackTrace - StackTrace -
-
- -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- defaultStackTrace(Object error) - StackTrace - -
-
- A default stack trace for an error. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/AsyncError/AsyncError.html b/doc/api/dart-async/AsyncError/AsyncError.html deleted file mode 100644 index b9c0d161..00000000 --- a/doc/api/dart-async/AsyncError/AsyncError.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - AsyncError constructor - AsyncError class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
AsyncError
- -
- -
- - - -
-

AsyncError constructor

- -
- - AsyncError(Object error, StackTrace stackTrace) -
- - -
-

Implementation

-
AsyncError(this.error, StackTrace? stackTrace)
-    : stackTrace = stackTrace ?? defaultStackTrace(error) {
-  // TODO(40614): Remove once non-nullability is sound.
-  ArgumentError.checkNotNull(error, "error");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/AsyncError/defaultStackTrace.html b/doc/api/dart-async/AsyncError/defaultStackTrace.html deleted file mode 100644 index 6a868686..00000000 --- a/doc/api/dart-async/AsyncError/defaultStackTrace.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - defaultStackTrace method - AsyncError class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
defaultStackTrace
- -
- -
- - - -
-

defaultStackTrace method

- -
- StackTrace - defaultStackTrace -(Object error) - -
-
-

A default stack trace for an error.

-

If error is an Error and it has an Error.stackTrace, -that stack trace is returned. -If not, the StackTrace.empty default stack trace is returned.

-
- -
-

Implementation

-
static StackTrace defaultStackTrace(Object error) {
-  if (error is Error) {
-    var stackTrace = error.stackTrace;
-    if (stackTrace != null) return stackTrace;
-  }
-  return StackTrace.empty;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/AsyncError/error.html b/doc/api/dart-async/AsyncError/error.html deleted file mode 100644 index cf2fb818..00000000 --- a/doc/api/dart-async/AsyncError/error.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - error property - AsyncError class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
error
- -
- -
- - - -
-

error property

- -
- Object - error -
final
-
-
-

Implementation

-
final Object error
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/AsyncError/stackTrace.html b/doc/api/dart-async/AsyncError/stackTrace.html deleted file mode 100644 index f38c90ff..00000000 --- a/doc/api/dart-async/AsyncError/stackTrace.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - stackTrace property - AsyncError class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
stackTrace
- -
- -
- - - -
-

stackTrace property

- -
- StackTrace - stackTrace -
final
-
-
-

Implementation

-
final StackTrace stackTrace
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/AsyncError/toString.html b/doc/api/dart-async/AsyncError/toString.html deleted file mode 100644 index ef72b105..00000000 --- a/doc/api/dart-async/AsyncError/toString.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - toString method - AsyncError class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => '$error';
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Completer-class.html b/doc/api/dart-async/Completer-class.html deleted file mode 100644 index c3952aba..00000000 --- a/doc/api/dart-async/Completer-class.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - - - Completer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Completer
- -
- -
- - - -
-

Completer<T> class

- -
-

A way to produce Future objects and to complete them later -with a value or error.

-

Most of the time, the simplest way to create a future is to just use -one of the Future constructors to capture the result of a single -asynchronous computation:

-
new Future(() { doSomething(); return result; });
-
-

or, if the future represents the result of a sequence of asynchronous -computations, they can be chained using Future.then or similar functions -on Future:

-
Future doStuff(){
-  return someAsyncOperation().then((result) {
-    return someOtherAsyncOperation(result);
-  });
-}
-
-

If you do need to create a Future from scratch — for example, -when you're converting a callback-based API into a Future-based -one — you can use a Completer as follows:

-
class AsyncOperation {
-  Completer _completer = new Completer();
-
-  Future<T> doOperation() {
-    _startOperation();
-    return _completer.future; // Send future object back to client.
-  }
-
-  // Something calls this when the value is ready.
-  void _finishOperation(T result) {
-    _completer.complete(result);
-  }
-
-  // If something goes wrong, call this.
-  void _errorHappened(error) {
-    _completer.completeError(error);
-  }
-}
-
-
- - -
-

Constructors

- -
-
- Completer() -
-
- Creates a new completer. [...] -
factory
-
-
- Completer.sync() -
-
- Completes the future synchronously. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- future - Future<T> -
-
- The future that is completed by this completer. [...] -
read-only
-
-
- isCompleted - bool -
-
- Whether the future has been completed. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- complete([FutureOr<T> value ]) - → void - -
-
- Completes future with the supplied values. [...] - -
-
- completeError(Object error, [ StackTrace stackTrace ]) - → void - -
-
- Complete future with an error. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Completer/Completer.html b/doc/api/dart-async/Completer/Completer.html deleted file mode 100644 index e88460c4..00000000 --- a/doc/api/dart-async/Completer/Completer.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - Completer constructor - Completer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Completer
- -
- -
- - - -
-

Completer<T> constructor

- -
- - Completer<T>() -
- -
-

Creates a new completer.

-

The general workflow for creating a new future is to 1) create a -new completer, 2) hand out its future, and, at a later point, 3) invoke -either complete or completeError.

-

The completer completes the future asynchronously. That means that -callbacks registered on the future are not called immediately when -complete or completeError is called. Instead the callbacks are -delayed until a later microtask.

-

Example:

-
var completer = new Completer();
-handOut(completer.future);
-later: {
-  completer.complete('completion value');
-}
-
-
- -
-

Implementation

-
factory Completer() => new _AsyncCompleter<T>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Completer/Completer.sync.html b/doc/api/dart-async/Completer/Completer.sync.html deleted file mode 100644 index 9179df86..00000000 --- a/doc/api/dart-async/Completer/Completer.sync.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - Completer.sync constructor - Completer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Completer.sync
- -
- -
- - - -
-

Completer<T>.sync constructor

- -
- - Completer<T>.sync() -
- -
-

Completes the future synchronously.

-

This constructor should be avoided unless the completion of the future is -known to be the final result of another asynchronous operation. If in doubt -use the default Completer constructor.

-

Using an normal, asynchronous, completer will never give the wrong -behavior, but using a synchronous completer incorrectly can cause -otherwise correct programs to break.

-

A synchronous completer is only intended for optimizing event -propagation when one asynchronous event immediately triggers another. -It should not be used unless the calls to complete and completeError -are guaranteed to occur in places where it won't break Future invariants.

-

Completing synchronously means that the completer's future will be -completed immediately when calling the complete or completeError -method on a synchronous completer, which also calls any callbacks -registered on that future.

-

Completing synchronously must not break the rule that when you add a -callback on a future, that callback must not be called until the code -that added the callback has completed. -For that reason, a synchronous completion must only occur at the very end -(in "tail position") of another synchronous event, -because at that point, completing the future immediately is be equivalent -to returning to the event loop and completing the future in the next -microtask.

-

Example:

-
var completer = new Completer.sync();
-// The completion is the result of the asynchronous onDone event.
-// No other operation is performed after the completion. It is safe
-// to use the Completer.sync constructor.
-stream.listen(print, onDone: () { completer.complete("done"); });
-
-

Bad example. Do not use this code. Only for illustrative purposes:

-
var completer = new Completer.sync();
-completer.future.then((_) { bar(); });
-// The completion is the result of the asynchronous onDone event.
-// However, there is still code executed after the completion. This
-// operation is *not* safe.
-stream.listen(print, onDone: () {
-  completer.complete("done");
-  foo();  // In this case, foo() runs after bar().
-});
-
-
- -
-

Implementation

-
factory Completer.sync() => new _SyncCompleter<T>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Completer/complete.html b/doc/api/dart-async/Completer/complete.html deleted file mode 100644 index a452a312..00000000 --- a/doc/api/dart-async/Completer/complete.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - complete method - Completer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
complete
- -
- -
- - - -
-

complete method

- -
- void - complete -([FutureOr<T> value ]) - -
-
-

Completes future with the supplied values.

-

The value must be either a value of type T -or a future of type Future<T>. -If the value is omitted or null, and T is not nullable, the call -to complete throws.

-

If the value is itself a future, the completer will wait for that future -to complete, and complete with the same result, whether it is a success -or an error.

-

Calling complete or completeError must be done at most once.

-

All listeners on the future are informed about the value.

-
- -
-

Implementation

-
void complete([FutureOr<T>? value]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Completer/completeError.html b/doc/api/dart-async/Completer/completeError.html deleted file mode 100644 index eeab10be..00000000 --- a/doc/api/dart-async/Completer/completeError.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - completeError method - Completer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
completeError
- -
- -
- - - -
-

completeError method

- -
- void - completeError -(Object error, [ StackTrace stackTrace ]) - -
-
-

Complete future with an error.

-

Calling complete or completeError must be done at most once.

-

Completing a future with an error indicates that an exception was thrown -while trying to produce a value.

-

If error is a Future, the future itself is used as the error value. -If you want to complete with the result of the future, you can use:

-
thisCompleter.complete(theFuture)
-
-

or if you only want to handle an error from the future:

-
theFuture.catchError(thisCompleter.completeError);
-
-
- -
-

Implementation

-
void completeError(Object error, [StackTrace? stackTrace]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Completer/future.html b/doc/api/dart-async/Completer/future.html deleted file mode 100644 index f59327d6..00000000 --- a/doc/api/dart-async/Completer/future.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - future property - Completer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
future
- -
- -
- - - -
-

future property

- - -
- -
- Future<T> - future - -
- -
-

The future that is completed by this completer.

-

The future that is completed when complete or completeError is called.

-
-
-

Implementation

-
Future<T> get future;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Completer/isCompleted.html b/doc/api/dart-async/Completer/isCompleted.html deleted file mode 100644 index dc06c29d..00000000 --- a/doc/api/dart-async/Completer/isCompleted.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - isCompleted property - Completer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
isCompleted
- -
- -
- - - -
-

isCompleted property

- - -
- -
- bool - isCompleted - -
- -
-

Whether the future has been completed.

-

Reflects whether complete or completeError has been called. -A true value doesn't necessarily mean that listeners of this future -have been invoked yet, either because the completer usually waits until -a later microtask to propagate the result, or because complete -was called with a future that hasn't completed yet.

-

When this value is true, complete and completeError must not be -called again.

-
-
-

Implementation

-
bool get isCompleted;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ControllerCallback.html b/doc/api/dart-async/ControllerCallback.html deleted file mode 100644 index 52eef596..00000000 --- a/doc/api/dart-async/ControllerCallback.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - ControllerCallback typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ControllerCallback
- -
- -
- - - -
-

ControllerCallback typedef

- -
- void - ControllerCallback -() -
- -
-

Type of a stream controller's onListen, onPause and onResume callbacks.

-
-
-

Implementation

-
typedef void ControllerCallback();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ControllerCancelCallback.html b/doc/api/dart-async/ControllerCancelCallback.html deleted file mode 100644 index 54e5a37a..00000000 --- a/doc/api/dart-async/ControllerCancelCallback.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - ControllerCancelCallback typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ControllerCancelCallback
- -
- -
- - - -
-

ControllerCancelCallback typedef

- -
- FutureOr<void> - ControllerCancelCallback -() -
- -
-

Type of stream controller onCancel callbacks.

-
-
-

Implementation

-
typedef FutureOr<void> ControllerCancelCallback();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/CreatePeriodicTimerHandler.html b/doc/api/dart-async/CreatePeriodicTimerHandler.html deleted file mode 100644 index f2dc5386..00000000 --- a/doc/api/dart-async/CreatePeriodicTimerHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - CreatePeriodicTimerHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
CreatePeriodicTimerHandler
- -
- -
- - - -
-

CreatePeriodicTimerHandler typedef

- -
- Timer - CreatePeriodicTimerHandler -(Zone self, ZoneDelegate parent, Zone zone, Duration period, void f(Timer timer)) -
- -
-

Implementation

-
typedef Timer CreatePeriodicTimerHandler(Zone self, ZoneDelegate parent,
-    Zone zone, Duration period, void f(Timer timer));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/CreateTimerHandler.html b/doc/api/dart-async/CreateTimerHandler.html deleted file mode 100644 index 8a664b61..00000000 --- a/doc/api/dart-async/CreateTimerHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - CreateTimerHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
CreateTimerHandler
- -
- -
- - - -
-

CreateTimerHandler typedef

- -
- Timer - CreateTimerHandler -(Zone self, ZoneDelegate parent, Zone zone, Duration duration, void f()) -
- -
-

Implementation

-
typedef Timer CreateTimerHandler(
-    Zone self, ZoneDelegate parent, Zone zone, Duration duration, void f());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/DeferredLibrary-class.html b/doc/api/dart-async/DeferredLibrary-class.html deleted file mode 100644 index 5f7b7425..00000000 --- a/doc/api/dart-async/DeferredLibrary-class.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - DeferredLibrary class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
DeferredLibrary
- -
- -
- - - -
-

DeferredLibrary class

- -
-

Indicates that loading of libraryName is deferred.

-

This class is obsolete. Instead use the syntax: -import "library.dart" deferred as prefix;

-
- -
-
- - - - - -
Annotations
-
-
-
- -
-

Constructors

- -
-
- DeferredLibrary(String libraryName, { String uri }) -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- libraryName - String -
-
- -
final
-
-
- uri - String -
-
- -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- load() - Future<Null> - -
-
- Ensure that libraryName has been loaded. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/DeferredLibrary/DeferredLibrary.html b/doc/api/dart-async/DeferredLibrary/DeferredLibrary.html deleted file mode 100644 index 48969e12..00000000 --- a/doc/api/dart-async/DeferredLibrary/DeferredLibrary.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - DeferredLibrary constructor - DeferredLibrary class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
DeferredLibrary
- -
- -
- - - -
-

DeferredLibrary constructor

- -
- const - DeferredLibrary(String libraryName, { String uri }) -
- - -
-

Implementation

-
const DeferredLibrary(this.libraryName, {this.uri});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/DeferredLibrary/libraryName.html b/doc/api/dart-async/DeferredLibrary/libraryName.html deleted file mode 100644 index a8aa6eee..00000000 --- a/doc/api/dart-async/DeferredLibrary/libraryName.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - libraryName property - DeferredLibrary class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
libraryName
- -
- -
- - - -
-

libraryName property

- -
- String - libraryName -
final
-
-
-

Implementation

-
final String libraryName
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/DeferredLibrary/load.html b/doc/api/dart-async/DeferredLibrary/load.html deleted file mode 100644 index 350d451f..00000000 --- a/doc/api/dart-async/DeferredLibrary/load.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - load method - DeferredLibrary class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
load
- -
- -
- - - -
-

load method

- -
- Future<Null> - load -() - -
-
-

Ensure that libraryName has been loaded.

-

If the library fails to load, the Future will complete with a -DeferredLoadException.

-
- -
-

Implementation

-
external Future<Null> load();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/DeferredLibrary/uri.html b/doc/api/dart-async/DeferredLibrary/uri.html deleted file mode 100644 index 889a1538..00000000 --- a/doc/api/dart-async/DeferredLibrary/uri.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - uri property - DeferredLibrary class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
uri
- -
- -
- - - -
-

uri property

- -
- String - uri -
final
-
-
-

Implementation

-
final String? uri
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/DeferredLoadException-class.html b/doc/api/dart-async/DeferredLoadException-class.html deleted file mode 100644 index c82e4214..00000000 --- a/doc/api/dart-async/DeferredLoadException-class.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - DeferredLoadException class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
DeferredLoadException
- -
- -
- - - -
-

DeferredLoadException class

- -
-

Thrown when a deferred library fails to load.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- DeferredLoadException(String message) -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/DeferredLoadException/DeferredLoadException.html b/doc/api/dart-async/DeferredLoadException/DeferredLoadException.html deleted file mode 100644 index 87052da7..00000000 --- a/doc/api/dart-async/DeferredLoadException/DeferredLoadException.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - DeferredLoadException constructor - DeferredLoadException class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
DeferredLoadException
- -
- -
- - - -
-

DeferredLoadException constructor

- -
- - DeferredLoadException(String message) -
- - -
-

Implementation

-
DeferredLoadException(String message) : _s = message;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/DeferredLoadException/toString.html b/doc/api/dart-async/DeferredLoadException/toString.html deleted file mode 100644 index 2332f094..00000000 --- a/doc/api/dart-async/DeferredLoadException/toString.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - toString method - DeferredLoadException class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "DeferredLoadException: '$_s'";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ErrorCallbackHandler.html b/doc/api/dart-async/ErrorCallbackHandler.html deleted file mode 100644 index 873e72a7..00000000 --- a/doc/api/dart-async/ErrorCallbackHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - ErrorCallbackHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ErrorCallbackHandler
- -
- -
- - - -
-

ErrorCallbackHandler typedef

- -
- AsyncError - ErrorCallbackHandler -(Zone self, ZoneDelegate parent, Zone zone, Object error, StackTrace stackTrace) -
- -
-

Implementation

-
typedef AsyncError? ErrorCallbackHandler(Zone self, ZoneDelegate parent,
-    Zone zone, Object error, StackTrace? stackTrace);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/EventSink-class.html b/doc/api/dart-async/EventSink-class.html deleted file mode 100644 index 354ae5db..00000000 --- a/doc/api/dart-async/EventSink-class.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - EventSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
EventSink
- -
- -
- - - -
-

EventSink<T> class

- -
-

A Sink that supports adding errors.

-

This makes it suitable for capturing the results of asynchronous -computations, which can complete with a value or an error.

-

The EventSink has been designed to handle asynchronous events from -Streams. See, for example, Stream.eventTransformed which uses -EventSinks to transform events.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- EventSink() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(T event) - → void - -
-
- Adds a data event to the sink. [...] -
override
-
-
- addError(Object error, [ StackTrace stackTrace ]) - → void - -
-
- Adds an error to the sink. [...] - -
-
- close() - → void - -
-
- Closes the sink. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/EventSink/EventSink.html b/doc/api/dart-async/EventSink/EventSink.html deleted file mode 100644 index 9ec9efef..00000000 --- a/doc/api/dart-async/EventSink/EventSink.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - EventSink constructor - EventSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
EventSink
- -
- -
- - - -
-

EventSink<T> constructor

- -
- - EventSink<T>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/EventSink/add.html b/doc/api/dart-async/EventSink/add.html deleted file mode 100644 index 938fdbbf..00000000 --- a/doc/api/dart-async/EventSink/add.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - add method - EventSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(T event) -
override
-
-
-

Adds a data event to the sink.

-

Must not be called on a closed sink.

-
- -
-

Implementation

-
void add(T event);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/EventSink/addError.html b/doc/api/dart-async/EventSink/addError.html deleted file mode 100644 index 1c2a7242..00000000 --- a/doc/api/dart-async/EventSink/addError.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - addError method - EventSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
addError
- -
- -
- - - -
-

addError method

- -
- void - addError -(Object error, [ StackTrace stackTrace ]) - -
-
-

Adds an error to the sink.

-

Must not be called on a closed sink.

-
- -
-

Implementation

-
void addError(Object error, [StackTrace? stackTrace]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/EventSink/close.html b/doc/api/dart-async/EventSink/close.html deleted file mode 100644 index a7a2424e..00000000 --- a/doc/api/dart-async/EventSink/close.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - close method - EventSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- void - close -() -
override
-
-
-

Closes the sink.

-

Calling this method more than once is allowed, but does nothing.

-

Neither add nor addError must be called after this method.

-
- -
-

Implementation

-
void close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ForkHandler.html b/doc/api/dart-async/ForkHandler.html deleted file mode 100644 index 5d65bd1c..00000000 --- a/doc/api/dart-async/ForkHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - ForkHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ForkHandler
- -
- -
- - - -
-

ForkHandler typedef

- -
- Zone - ForkHandler -(Zone self, ZoneDelegate parent, Zone zone, ZoneSpecification specification, Map<Object, Object> zoneValues) -
- -
-

Implementation

-
typedef Zone ForkHandler(Zone self, ZoneDelegate parent, Zone zone,
-    ZoneSpecification? specification, Map<Object?, Object?>? zoneValues);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future-class.html b/doc/api/dart-async/Future-class.html deleted file mode 100644 index 9aacd896..00000000 --- a/doc/api/dart-async/Future-class.html +++ /dev/null @@ -1,471 +0,0 @@ - - - - - - - - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Future
- -
- -
- - - -
-

Future<T> class

- -
-

An object representing a delayed computation.

-

A Future is used to represent a potential value, or error, -that will be available at some time in the future. -Receivers of a Future can register callbacks -that handle the value or error once it is available. -For example:

-
Future<int> future = getFuture();
-future.then((value) => handleValue(value))
-      .catchError((error) => handleError(error));
-
-

A Future can be completed in two ways: -with a value ("the future succeeds") -or with an error ("the future fails"). -Users can install callbacks for each case.

-

In some cases we say that a future is completed with another future. -This is a short way of stating that the future is completed in the same way, -with the same value or error, -as the other future once that completes. -Whenever a function in the core library may complete a future -(for example Completer.complete or new Future.value), -then it also accepts another future and does this work for the developer.

-

The result of registering a pair of callbacks is a new Future (the -"successor") which in turn is completed with the result of invoking the -corresponding callback. -The successor is completed with an error if the invoked callback throws. -For example:

-
Future<int> successor = future.then((int value) {
-    // Invoked when the future is completed with a value.
-    return 42;  // The successor is completed with the value 42.
-  },
-  onError: (e) {
-    // Invoked when the future is completed with an error.
-    if (canHandle(e)) {
-      return 499;  // The successor is completed with the value 499.
-    } else {
-      throw e;  // The successor is completed with the error e.
-    }
-  });
-
-

If a future does not have a successor when it completes with an error, -it forwards the error message to the global error-handler. -This behavior makes sure that no error is silently dropped. -However, it also means that error handlers should be installed early, -so that they are present as soon as a future is completed with an error. -The following example demonstrates this potential bug:

-
var future = getFuture();
-new Timer(new Duration(milliseconds: 5), () {
-  // The error-handler is not attached until 5 ms after the future has
-  // been received. If the future fails before that, the error is
-  // forwarded to the global error-handler, even though there is code
-  // (just below) to eventually handle the error.
-  future.then((value) { useValue(value); },
-              onError: (e) { handleError(e); });
-});
-
-

When registering callbacks, it's often more readable to register the two -callbacks separately, by first using then with one argument -(the value handler) and using a second catchError for handling errors. -Each of these will forward the result that they don't handle -to their successors, and together they handle both value and error result. -It also has the additional benefit of the catchError handling errors in the -then value callback too. -Using sequential handlers instead of parallel ones often leads to code that -is easier to reason about. -It also makes asynchronous code very similar to synchronous code:

-
// Synchronous code.
-try {
-  int value = foo();
-  return bar(value);
-} catch (e) {
-  return 499;
-}
-
-

Equivalent asynchronous code, based on futures:

-
Future<int> future = new Future(foo);  // Result of foo() as a future.
-future.then((int value) => bar(value))
-      .catchError((e) => 499);
-
-

Similar to the synchronous code, the error handler (registered with -catchError) is handling any errors thrown by either foo or bar. -If the error-handler had been registered as the onError parameter of -the then call, it would not catch errors from the bar call.

-

Futures can have more than one callback-pair registered. Each successor is -treated independently and is handled as if it was the only successor.

-

A future may also fail to ever complete. In that case, no callbacks are -called.

-
- - -
-

Constructors

- -
-
- Future(FutureOr<T> computation()) -
-
- Creates a future containing the result of calling computation -asynchronously with Timer.run. [...] -
factory
-
-
- Future.delayed(Duration duration, [ FutureOr<T> computation() ]) -
-
- Creates a future that runs its computation after a delay. [...] -
factory
-
-
- Future.error(Object error, [ StackTrace stackTrace ]) -
-
- Creates a future that completes with an error. [...] -
factory
-
-
- Future.microtask(FutureOr<T> computation()) -
-
- Creates a future containing the result of calling computation -asynchronously with scheduleMicrotask. [...] -
factory
-
-
- Future.sync(FutureOr<T> computation()) -
-
- Returns a future containing the result of immediately calling -computation. [...] -
factory
-
-
- Future.value([FutureOr<T> value ]) -
-
- Creates a future completed with value. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- asStream() - Stream<T> - -
-
- Creates a Stream containing the result of this future. [...] - -
-
- catchError(Function onError, { bool test(Object error) }) - Future<T> - -
-
- Handles errors emitted by this Future. [...] - -
-
- then<R>(FutureOr<R> onValue(T value), { Function onError }) - Future<R> - -
-
- Register callbacks to be called when this future completes. [...] - -
-
- timeout(Duration timeLimit, { FutureOr<T> onTimeout() }) - Future<T> - -
-
- Time-out the future computation after timeLimit has passed. [...] - -
-
- whenComplete(FutureOr<void> action()) - Future<T> - -
-
- Registers a function to be called when this future completes. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- any<T>(Iterable<Future<T>> futures) - Future<T> - -
-
- Returns the result of the first future in futures to complete. [...] - -
-
- doWhile(FutureOr<bool> action()) - Future - -
-
- Performs an operation repeatedly until it returns false. [...] - -
-
- forEach<T>(Iterable<T> elements, FutureOr action(T element)) - Future - -
-
- Performs an action for each element of the iterable, in turn. [...] - -
-
- wait<T>(Iterable<Future<T>> futures, { bool eagerError: false, void cleanUp(T successValue) }) - Future<List<T>> - -
-
- Waits for multiple futures to complete and collects their results. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/Future.delayed.html b/doc/api/dart-async/Future/Future.delayed.html deleted file mode 100644 index 70813f2a..00000000 --- a/doc/api/dart-async/Future/Future.delayed.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - Future.delayed constructor - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Future.delayed
- -
- -
- - - -
-

Future<T>.delayed constructor

- -
- - Future<T>.delayed(Duration duration, [ FutureOr<T> computation() ]) -
- -
-

Creates a future that runs its computation after a delay.

-

The computation will be executed after the given duration has passed, -and the future is completed with the result of the computation.

-

If computation returns a future, -the future returned by this constructor will complete with the value or -error of that future.

-

If the duration is 0 or less, -it completes no sooner than in the next event-loop iteration, -after all microtasks have run.

-

If computation is omitted, -it will be treated as if computation was () => null, -and the future will eventually complete with the null value. -In that case, T must be nullable.

-

If calling computation throws, the created future will complete with the -error.

-

See also Completer for a way to create and complete a future at a -later time that isn't necessarily after a known fixed duration.

-
- -
-

Implementation

-
factory Future.delayed(Duration duration, [FutureOr<T> computation()?]) {
-  if (computation == null && !typeAcceptsNull<T>()) {
-    throw ArgumentError.value(
-        null, "computation", "The type parameter is not nullable");
-  }
-  _Future<T> result = new _Future<T>();
-  new Timer(duration, () {
-    if (computation == null) {
-      result._complete(null as T);
-    } else {
-      try {
-        result._complete(computation());
-      } catch (e, s) {
-        _completeWithErrorCallback(result, e, s);
-      }
-    }
-  });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/Future.error.html b/doc/api/dart-async/Future/Future.error.html deleted file mode 100644 index ccdf607e..00000000 --- a/doc/api/dart-async/Future/Future.error.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - Future.error constructor - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Future.error
- -
- -
- - - -
-

Future<T>.error constructor

- -
- - Future<T>.error(Object error, [ StackTrace stackTrace ]) -
- -
-

Creates a future that completes with an error.

-

The created future will be completed with an error in a future microtask. -This allows enough time for someone to add an error handler on the future. -If an error handler isn't added before the future completes, the error -will be considered unhandled.

-

Use Completer to create a future and complete it later.

-
- -
-

Implementation

-
factory Future.error(Object error, [StackTrace? stackTrace]) {
-  // TODO(40614): Remove once non-nullability is sound.
-  ArgumentError.checkNotNull(error, "error");
-  if (!identical(Zone.current, _rootZone)) {
-    AsyncError? replacement = Zone.current.errorCallback(error, stackTrace);
-    if (replacement != null) {
-      error = replacement.error;
-      stackTrace = replacement.stackTrace;
-    }
-  }
-  stackTrace ??= AsyncError.defaultStackTrace(error);
-  return new _Future<T>.immediateError(error, stackTrace);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/Future.html b/doc/api/dart-async/Future/Future.html deleted file mode 100644 index a30b2d56..00000000 --- a/doc/api/dart-async/Future/Future.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - Future constructor - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Future
- -
- -
- - - -
-

Future<T> constructor

- -
- - Future<T>(FutureOr<T> computation()) -
- -
-

Creates a future containing the result of calling computation -asynchronously with Timer.run.

-

If the result of executing computation throws, the returned future is -completed with the error.

-

If the returned value is itself a Future, completion of -the created future will wait until the returned future completes, -and will then complete with the same result.

-

If a non-future value is returned, the returned future is completed -with that value.

-
- -
-

Implementation

-
factory Future(FutureOr<T> computation()) {
-  _Future<T> result = new _Future<T>();
-  Timer.run(() {
-    try {
-      result._complete(computation());
-    } catch (e, s) {
-      _completeWithErrorCallback(result, e, s);
-    }
-  });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/Future.microtask.html b/doc/api/dart-async/Future/Future.microtask.html deleted file mode 100644 index 134169e8..00000000 --- a/doc/api/dart-async/Future/Future.microtask.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - Future.microtask constructor - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Future.microtask
- -
- -
- - - -
-

Future<T>.microtask constructor

- -
- - Future<T>.microtask(FutureOr<T> computation()) -
- -
-

Creates a future containing the result of calling computation -asynchronously with scheduleMicrotask.

-

If executing computation throws, -the returned future is completed with the thrown error.

-

If calling computation returns a Future, completion of -the created future will wait until the returned future completes, -and will then complete with the same result.

-

If calling computation returns a non-future value, -the returned future is completed with that value.

-
- -
-

Implementation

-
factory Future.microtask(FutureOr<T> computation()) {
-  _Future<T> result = new _Future<T>();
-  scheduleMicrotask(() {
-    try {
-      result._complete(computation());
-    } catch (e, s) {
-      _completeWithErrorCallback(result, e, s);
-    }
-  });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/Future.sync.html b/doc/api/dart-async/Future/Future.sync.html deleted file mode 100644 index e00c5439..00000000 --- a/doc/api/dart-async/Future/Future.sync.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - Future.sync constructor - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Future.sync
- -
- -
- - - -
-

Future<T>.sync constructor

- -
- - Future<T>.sync(FutureOr<T> computation()) -
- -
-

Returns a future containing the result of immediately calling -computation.

-

If calling computation throws, the returned future is completed with the -error.

-

If calling computation returns a Future<T>, that future is returned.

-

If calling computation returns a non-future value, -a future is returned which has been completed with that value.

-
- -
-

Implementation

-
factory Future.sync(FutureOr<T> computation()) {
-  try {
-    var result = computation();
-    if (result is Future<T>) {
-      return result;
-    } else {
-      // TODO(40014): Remove cast when type promotion works.
-      return new _Future<T>.value(result as dynamic);
-    }
-  } catch (error, stackTrace) {
-    var future = new _Future<T>();
-    AsyncError? replacement = Zone.current.errorCallback(error, stackTrace);
-    if (replacement != null) {
-      future._asyncCompleteError(replacement.error, replacement.stackTrace);
-    } else {
-      future._asyncCompleteError(error, stackTrace);
-    }
-    return future;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/Future.value.html b/doc/api/dart-async/Future/Future.value.html deleted file mode 100644 index 20b38235..00000000 --- a/doc/api/dart-async/Future/Future.value.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - Future.value constructor - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Future.value
- -
- -
- - - -
-

Future<T>.value constructor

- -
- - Future<T>.value([FutureOr<T> value ]) -
- -
-

Creates a future completed with value.

-

If value is a future, the created future waits for the -value future to complete, and then completes with the same result. -Since a value future can complete with an error, so can the future -created by Future.value, even if the name suggests otherwise.

-

If value is not a Future, the created future is completed -with the value value, -equivalently to new Future<T>.sync(() => value).

-

If value is omitted or null, it is converted to FutureOr<T> by -value as FutureOr<T>. If T is not nullable, then the value is -required, otherwise the construction throws.

-

Use Completer to create a future and complete it later.

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-@pragma("vm:prefer-inline")
-factory Future.value([FutureOr<T>? value]) {
-  return new _Future<T>.immediate(value == null ? value as T : value);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/any.html b/doc/api/dart-async/Future/any.html deleted file mode 100644 index 0af7c41e..00000000 --- a/doc/api/dart-async/Future/any.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - any method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
any
- -
- -
- - - -
-

any<T> method

- -
- Future<T> - any -<T>(Iterable<Future<T>> futures) - -
-
-

Returns the result of the first future in futures to complete.

-

The returned future is completed with the result of the first -future in futures to report that it is complete, -whether it's with a value or an error. -The results of all the other futures are discarded.

-

If futures is empty, or if none of its futures complete, -the returned future never completes.

-
- -
-

Implementation

-
static Future<T> any<T>(Iterable<Future<T>> futures) {
-  var completer = new Completer<T>.sync();
-  void onValue(T value) {
-    if (!completer.isCompleted) completer.complete(value);
-  }
-
-  void onError(Object error, StackTrace stack) {
-    if (!completer.isCompleted) completer.completeError(error, stack);
-  }
-
-  for (var future in futures) {
-    future.then(onValue, onError: onError);
-  }
-  return completer.future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/asStream.html b/doc/api/dart-async/Future/asStream.html deleted file mode 100644 index d87596a1..00000000 --- a/doc/api/dart-async/Future/asStream.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - asStream method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
asStream
- -
- -
- - - -
-

asStream method

- -
- Stream<T> - asStream -() - -
-
-

Creates a Stream containing the result of this future.

-

The stream will produce single data or error event containing the -completion result of this future, and then it will close with a -done event.

-

If the future never completes, the stream will not produce any events.

-
- -
-

Implementation

-
Stream<T> asStream();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/catchError.html b/doc/api/dart-async/Future/catchError.html deleted file mode 100644 index 777aa6d0..00000000 --- a/doc/api/dart-async/Future/catchError.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - catchError method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
catchError
- -
- -
- - - -
-

catchError method

- -
- Future<T> - catchError -(Function onError, { bool test(Object error) }) - -
-
-

Handles errors emitted by this Future.

-

This is the asynchronous equivalent of a "catch" block.

-

Returns a new Future that will be completed with either the result of -this future or the result of calling the onError callback.

-

If this future completes with a value, -the returned future completes with the same value.

-

If this future completes with an error, -then test is first called with the error value.

-

If test returns false, the exception is not handled by this catchError, -and the returned future completes with the same error and stack trace -as this future.

-

If test returns true, -onError is called with the error and possibly stack trace, -and the returned future is completed with the result of this call -in exactly the same way as for then's onError.

-

If test is omitted, it defaults to a function that always returns true. -The test function should not throw, but if it does, it is handled as -if the onError function had thrown.

-

Note that futures don't delay reporting of errors until listeners are -added. If the first catchError (or then) call happens after this future -has completed with an error then the error is reported as unhandled error. -See the description on Future.

-
- -
-

Implementation

-
// The `Function` below stands for one of two types:
-// - (dynamic) -> FutureOr<T>
-// - (dynamic, StackTrace) -> FutureOr<T>
-// Given that there is a `test` function that is usually used to do an
-// `isCheck` we should also expect functions that take a specific argument.
-Future<T> catchError(Function onError, {bool test(Object error)?});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/doWhile.html b/doc/api/dart-async/Future/doWhile.html deleted file mode 100644 index c43b02b7..00000000 --- a/doc/api/dart-async/Future/doWhile.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - doWhile method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
doWhile
- -
- -
- - - -
-

doWhile method

- -
- Future - doWhile -(FutureOr<bool> action()) - -
-
-

Performs an operation repeatedly until it returns false.

-

The operation, action, may be either synchronous or asynchronous.

-

The operation is called repeatedly as long as it returns either the bool -value true or a Future<bool> which completes with the value true.

-

If a call to action returns false or a Future that completes to -false, iteration ends and the future returned by doWhile is completed -with a null value.

-

If a call to action throws or a future returned by action completes -with an error, iteration ends and the future returned by doWhile -completes with the same error.

-

Calls to action may happen at any time, -including immediately after calling doWhile. -The only restriction is a new call to action won't happen before -the previous call has returned, and if it returned a Future<bool>, not -until that future has completed.

-
- -
-

Implementation

-
static Future doWhile(FutureOr<bool> action()) {
-  _Future<void> doneSignal = new _Future<void>();
-  late void Function(bool) nextIteration;
-  // Bind this callback explicitly so that each iteration isn't bound in the
-  // context of all the previous iterations' callbacks.
-  // This avoids, e.g., deeply nested stack traces from the stack trace
-  // package.
-  nextIteration = Zone.current.bindUnaryCallbackGuarded((bool keepGoing) {
-    while (keepGoing) {
-      FutureOr<bool> result;
-      try {
-        result = action();
-      } catch (error, stackTrace) {
-        // Cannot use _completeWithErrorCallback because it completes
-        // the future synchronously.
-        _asyncCompleteWithErrorCallback(doneSignal, error, stackTrace);
-        return;
-      }
-      if (result is Future<bool>) {
-        result.then(nextIteration, onError: doneSignal._completeError);
-        return;
-      }
-      // TODO(40014): Remove cast when type promotion works.
-      keepGoing = result as bool;
-    }
-    doneSignal._complete(null);
-  });
-  nextIteration(true);
-  return doneSignal;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/forEach.html b/doc/api/dart-async/Future/forEach.html deleted file mode 100644 index 2f259cff..00000000 --- a/doc/api/dart-async/Future/forEach.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - forEach method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach<T> method

- -
- Future - forEach -<T>(Iterable<T> elements, FutureOr action(T element)) - -
-
-

Performs an action for each element of the iterable, in turn.

-

The action may be either synchronous or asynchronous.

-

Calls action with each element in elements in order. -If the call to action returns a Future<T>, the iteration waits -until the future is completed before continuing with the next element.

-

Returns a Future that completes with null when all elements have been -processed.

-

Non-Future return values, and completion-values of returned Futures, -are discarded.

-

Any error from action, synchronous or asynchronous, -will stop the iteration and be reported in the returned Future.

-
- -
-

Implementation

-
static Future forEach<T>(Iterable<T> elements, FutureOr action(T element)) {
-  var iterator = elements.iterator;
-  return doWhile(() {
-    if (!iterator.moveNext()) return false;
-    var result = action(iterator.current);
-    if (result is Future) return result.then(_kTrue);
-    return true;
-  });
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/then.html b/doc/api/dart-async/Future/then.html deleted file mode 100644 index 77fcecfd..00000000 --- a/doc/api/dart-async/Future/then.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - then method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
then
- -
- -
- - - -
-

then<R> method

- -
- Future<R> - then -<R>(FutureOr<R> onValue(T value), { Function onError }) - -
-
-

Register callbacks to be called when this future completes.

-

When this future completes with a value, -the onValue callback will be called with that value. -If this future is already completed, the callback will not be called -immediately, but will be scheduled in a later microtask.

-

If onError is provided, and this future completes with an error, -the onError callback is called with that error and its stack trace. -The onError callback must accept either one argument or two arguments -where the latter is a StackTrace. -If onError accepts two arguments, -it is called with both the error and the stack trace, -otherwise it is called with just the error object. -The onError callback must return a value or future that can be used -to complete the returned future, so it must be something assignable to -FutureOr<R>.

-

Returns a new Future -which is completed with the result of the call to onValue -(if this future completes with a value) -or to onError (if this future completes with an error).

-

If the invoked callback throws, -the returned future is completed with the thrown error -and a stack trace for the error. -In the case of onError, -if the exception thrown is identical to the error argument to onError, -the throw is considered a rethrow, -and the original stack trace is used instead.

-

If the callback returns a Future, -the future returned by then will be completed with -the same result as the future returned by the callback.

-

If onError is not given, and this future completes with an error, -the error is forwarded directly to the returned future.

-

In most cases, it is more readable to use catchError separately, possibly -with a test parameter, instead of handling both value and error in a -single then call.

-

Note that futures don't delay reporting of errors until listeners are -added. If the first then or catchError call happens after this future -has completed with an error then the error is reported as unhandled error. -See the description on Future.

-
- -
-

Implementation

-
Future<R> then<R>(FutureOr<R> onValue(T value), {Function? onError});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/timeout.html b/doc/api/dart-async/Future/timeout.html deleted file mode 100644 index 511dbe35..00000000 --- a/doc/api/dart-async/Future/timeout.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - timeout method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
timeout
- -
- -
- - - -
-

timeout method

- -
- Future<T> - timeout -(Duration timeLimit, { FutureOr<T> onTimeout() }) - -
-
-

Time-out the future computation after timeLimit has passed.

-

Returns a new future that completes with the same value as this future, -if this future completes in time.

-

If this future does not complete before timeLimit has passed, -the onTimeout action is executed instead, and its result (whether it -returns or throws) is used as the result of the returned future. -The onTimeout function must return a T or a Future<T>.

-

If onTimeout is omitted, a timeout will cause the returned future to -complete with a TimeoutException.

-
- -
-

Implementation

-
Future<T> timeout(Duration timeLimit, {FutureOr<T> onTimeout()?});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/wait.html b/doc/api/dart-async/Future/wait.html deleted file mode 100644 index 0775f8bb..00000000 --- a/doc/api/dart-async/Future/wait.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - - wait method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
wait
- -
- -
- - - -
-

wait<T> method

- -
- Future<List<T>> - wait -<T>(Iterable<Future<T>> futures, { bool eagerError: false, void cleanUp(T successValue) }) - -
-
-

Waits for multiple futures to complete and collects their results.

-

Returns a future which will complete once all the provided futures -have completed, either with their results, or with an error if any -of the provided futures fail.

-

The value of the returned future will be a list of all the values that -were produced in the order that the futures are provided by iterating -futures.

-

If any future completes with an error, -then the returned future completes with that error. -If further futures also complete with errors, those errors are discarded.

-

If eagerError is true, the returned future completes with an error -immediately on the first error from one of the futures. Otherwise all -futures must complete before the returned future is completed (still with -the first error; the remaining errors are silently dropped).

-

In the case of an error, cleanUp (if provided), is invoked on any -non-null result of successful futures. -This makes it possible to cleanUp resources that would otherwise be -lost (since the returned future does not provide access to these values). -The cleanUp function is unused if there is no error.

-

The call to cleanUp should not throw. If it does, the error will be an -uncaught asynchronous error.

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-static Future<List<T>> wait<T>(Iterable<Future<T>> futures,
-    {bool eagerError = false, void cleanUp(T successValue)?}) {
-  // This is a VM recognised method, and the _future variable is deliberately
-  // allocated in a specific slot in the closure context for stack unwinding.
-  final _Future<List<T>> _future = _Future<List<T>>();
-  List<T?>? values; // Collects the values. Set to null on error.
-  int remaining = 0; // How many futures are we waiting for.
-  late Object error; // The first error from a future.
-  late StackTrace stackTrace; // The stackTrace that came with the error.
-
-  // Handle an error from any of the futures.
-  void handleError(Object theError, StackTrace theStackTrace) {
-    remaining--;
-    List<T?>? valueList = values;
-    if (valueList != null) {
-      if (cleanUp != null) {
-        for (var value in valueList) {
-          if (value != null) {
-            // Ensure errors from cleanUp are uncaught.
-            T cleanUpValue = value;
-            new Future.sync(() {
-              cleanUp(cleanUpValue);
-            });
-          }
-        }
-      }
-      values = null;
-      if (remaining == 0 || eagerError) {
-        _future._completeError(theError, theStackTrace);
-      } else {
-        error = theError;
-        stackTrace = theStackTrace;
-      }
-    } else if (remaining == 0 && !eagerError) {
-      _future._completeError(error, stackTrace);
-    }
-  }
-
-  try {
-    // As each future completes, put its value into the corresponding
-    // position in the list of values.
-    for (var future in futures) {
-      int pos = remaining;
-      future.then((T value) {
-        remaining--;
-        List<T?>? valueList = values;
-        if (valueList != null) {
-          valueList[pos] = value;
-          if (remaining == 0) {
-            _future._completeWithValue(List<T>.from(valueList));
-          }
-        } else {
-          if (cleanUp != null && value != null) {
-            // Ensure errors from cleanUp are uncaught.
-            new Future.sync(() {
-              cleanUp(value);
-            });
-          }
-          if (remaining == 0 && !eagerError) {
-            // If eagerError is false, and valueList is null, then
-            // error and stackTrace have been set in handleError above.
-            _future._completeError(error, stackTrace);
-          }
-        }
-      }, onError: handleError);
-      // Increment the 'remaining' after the call to 'then'.
-      // If that call throws, we don't expect any future callback from
-      // the future, and we also don't increment remaining.
-      remaining++;
-    }
-    if (remaining == 0) {
-      return new Future<List<T>>.value(const <Never>[]);
-    }
-    values = new List<T?>.filled(remaining, null);
-  } catch (e, st) {
-    // The error must have been thrown while iterating over the futures
-    // list, or while installing a callback handler on the future.
-    // This is a breach of the `Future` protocol, but we try to handle it
-    // gracefully.
-    if (remaining == 0 || eagerError) {
-      // Throw a new Future.error.
-      // Don't just call `_future._completeError` since that would propagate
-      // the error too eagerly, not giving the callers time to install
-      // error handlers.
-      // Also, don't use `_asyncCompleteError` since that one doesn't give
-      // zones the chance to intercept the error.
-      return new Future.error(e, st);
-    } else {
-      // Don't allocate a list for values, thus indicating that there was an
-      // error.
-      // Set error to the caught exception.
-      error = e;
-      stackTrace = st;
-    }
-  }
-  return _future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Future/whenComplete.html b/doc/api/dart-async/Future/whenComplete.html deleted file mode 100644 index e16fdc2a..00000000 --- a/doc/api/dart-async/Future/whenComplete.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - whenComplete method - Future class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
whenComplete
- -
- -
- - - -
-

whenComplete method

- -
- Future<T> - whenComplete -(FutureOr<void> action()) - -
-
-

Registers a function to be called when this future completes.

-

The action function is called when this future completes, whether it -does so with a value or with an error.

-

This is the asynchronous equivalent of a "finally" block.

-

The future returned by this call, f, will complete the same way -as this future unless an error occurs in the action call, or in -a Future returned by the action call. If the call to action -does not return a future, its return value is ignored.

-

If the call to action throws, then f is completed with the -thrown error.

-

If the call to action returns a Future, f2, then completion of -f is delayed until f2 completes. If f2 completes with -an error, that will be the result of f too. The value of f2 is always -ignored.

-

This method is equivalent to:

-
Future<T> whenComplete(action()) {
-  return this.then((v) {
-    var f2 = action();
-    if (f2 is Future) return f2.then((_) => v);
-    return v
-  }, onError: (e) {
-    var f2 = action();
-    if (f2 is Future) return f2.then((_) { throw e; });
-    throw e;
-  });
-}
-
-
- -
-

Implementation

-
Future<T> whenComplete(FutureOr<void> action());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/FutureOr-class.html b/doc/api/dart-async/FutureOr-class.html deleted file mode 100644 index 27de8b09..00000000 --- a/doc/api/dart-async/FutureOr-class.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - - FutureOr class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
FutureOr
- -
- -
- - - -
-

FutureOr<T> class

- -
-

A type representing values that are either Future<T> or T.

-

This class declaration is a public stand-in for an internal -future-or-value generic type. References to this class are resolved to the -internal type.

-

It is a compile-time error for any class to extend, mix in or implement -FutureOr.

-

Examples

-
// The `Future<T>.then` function takes a callback [f] that returns either
-// an `S` or a `Future<S>`.
-Future<S> then<S>(FutureOr<S> f(T x), ...);
-
-// `Completer<T>.complete` takes either a `T` or `Future<T>`.
-void complete(FutureOr<T> value);
-
-

Advanced

-

The FutureOr<int> type is actually the "type union" of the types int and -Future<int>. This type union is defined in such a way that -FutureOr<Object> is both a super- and sub-type of Object (sub-type -because Object is one of the types of the union, super-type because -Object is a super-type of both of the types of the union). Together it -means that FutureOr<Object> is equivalent to Object.

-

As a corollary, FutureOr<Object> is equivalent to -FutureOr<FutureOr<Object>>, FutureOr<Future<Object>> is equivalent to -Future<Object>.

-
- - - -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/HandleUncaughtErrorHandler.html b/doc/api/dart-async/HandleUncaughtErrorHandler.html deleted file mode 100644 index ff07e526..00000000 --- a/doc/api/dart-async/HandleUncaughtErrorHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - HandleUncaughtErrorHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
HandleUncaughtErrorHandler
- -
- -
- - - -
-

HandleUncaughtErrorHandler typedef

- -
- void - HandleUncaughtErrorHandler -(Zone self, ZoneDelegate parent, Zone zone, Object error, StackTrace stackTrace) -
- -
-

Implementation

-
typedef HandleUncaughtErrorHandler = void Function(Zone self,
-    ZoneDelegate parent, Zone zone, Object error, StackTrace stackTrace);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/MultiStreamController-class.html b/doc/api/dart-async/MultiStreamController-class.html deleted file mode 100644 index ed6379cc..00000000 --- a/doc/api/dart-async/MultiStreamController-class.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - - - MultiStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
MultiStreamController
- -
- -
- - - -
-

MultiStreamController<T> class

- -
-

An enhanced stream controller provided by Stream.multi.

-

Acts like a normal asynchronous controller, but also allows -adding events synchronously. -As with any synchronous event delivery, the sender should be very careful -to not deliver events at times when a new listener might not -be ready to receive them. -That generally means only delivering events synchronously in response to other -asynchronous events, because that is a time when an asynchronous event could -happen.

-
- -
-
- -
Implemented types
-
- -
- - - - -
Annotations
-
    -
  • @Since("2.9")
  • -
-
-
- -
-

Constructors

- -
-
- MultiStreamController() -
-
- -
-
-
- -
-

Properties

- -
-
- done - Future -
-
- A future which is completed when the stream controller is done -sending events. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- hasListener - bool -
-
- Whether there is a subscriber on the Stream. -
read-only, inherited
-
-
- isClosed - bool -
-
- Whether the stream controller is closed for adding more events. [...] -
read-only, inherited
-
-
- isPaused - bool -
-
- Whether the subscription would need to buffer events. [...] -
read-only, inherited
-
-
- onCancel - FutureOr<void> Function() -
-
- The callback which is called when the stream is canceled. [...] -
read / write, inherited
-
-
- onListen - ↔ void Function() -
-
- The callback which is called when the stream is listened to. [...] -
read / write, inherited
-
-
- onPause - ↔ void Function() -
-
- The callback which is called when the stream is paused. [...] -
read / write, inherited
-
-
- onResume - ↔ void Function() -
-
- The callback which is called when the stream is resumed. [...] -
read / write, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- sink - StreamSink<T> -
-
- Returns a view of this object that only exposes the StreamSink interface. -
read-only, inherited
-
-
- stream - Stream<T> -
-
- The stream that this controller is controlling. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addErrorSync(Object error, [ StackTrace stackTrace ]) - → void - -
-
- Adds and delivers an error event. [...] - -
-
- addSync(T value) - → void - -
-
- Adds and delivers an event. [...] - -
-
- closeSync() - → void - -
-
- Closes the controller and delivers a done event. [...] - -
-
- add(T event) - → void - -
-
- Sends a data event. [...] -
inherited
-
-
- addError(Object error, [ StackTrace stackTrace ]) - → void - -
-
- Sends or enqueues an error event. [...] -
inherited
-
-
- addStream(Stream<T> source, { bool cancelOnError }) - Future - -
-
- Receives events from source and puts them into this controller's stream. [...] -
inherited
-
-
- close() - Future - -
-
- Closes the stream. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/MultiStreamController/MultiStreamController.html b/doc/api/dart-async/MultiStreamController/MultiStreamController.html deleted file mode 100644 index e4d589f1..00000000 --- a/doc/api/dart-async/MultiStreamController/MultiStreamController.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - MultiStreamController constructor - MultiStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
MultiStreamController
- -
- -
- - - -
-

MultiStreamController<T> constructor

- -
- - MultiStreamController<T>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/MultiStreamController/addErrorSync.html b/doc/api/dart-async/MultiStreamController/addErrorSync.html deleted file mode 100644 index b39f0b47..00000000 --- a/doc/api/dart-async/MultiStreamController/addErrorSync.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - addErrorSync method - MultiStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
addErrorSync
- -
- -
- - - -
-

addErrorSync method

- -
- void - addErrorSync -(Object error, [ StackTrace stackTrace ]) - -
-
-

Adds and delivers an error event.

-

Adds an error like addError and attempts to deliver it immediately. -Delivery can be delayed if other previously added events are -still pending delivery, if the subscription is paused, -or if the subscription isn't listening yet.

-
- -
-

Implementation

-
void addErrorSync(Object error, [StackTrace? stackTrace]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/MultiStreamController/addSync.html b/doc/api/dart-async/MultiStreamController/addSync.html deleted file mode 100644 index 45486a98..00000000 --- a/doc/api/dart-async/MultiStreamController/addSync.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - addSync method - MultiStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
addSync
- -
- -
- - - -
-

addSync method

- -
- void - addSync -(T value) - -
-
-

Adds and delivers an event.

-

Adds an event like add and attempts to deliver it immediately. -Delivery can be delayed if other previously added events are -still pending delivery, if the subscription is paused, -or if the subscription isn't listening yet.

-
- -
-

Implementation

-
void addSync(T value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/MultiStreamController/closeSync.html b/doc/api/dart-async/MultiStreamController/closeSync.html deleted file mode 100644 index ab688a94..00000000 --- a/doc/api/dart-async/MultiStreamController/closeSync.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - closeSync method - MultiStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
closeSync
- -
- -
- - - -
-

closeSync method

- -
- void - closeSync -() - -
-
-

Closes the controller and delivers a done event.

-

Closes the controller like close and attempts to deliver a "done" -event immediately. -Delivery can be delayed if other previously added events are -still pending delivery, if the subscription is paused, -or if the subscription isn't listening yet. -If it's necessary to know whether the "done" event has been delievered, -done future will complete when that has happened.

-
- -
-

Implementation

-
void closeSync();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/PrintHandler.html b/doc/api/dart-async/PrintHandler.html deleted file mode 100644 index 15c502aa..00000000 --- a/doc/api/dart-async/PrintHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - PrintHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
PrintHandler
- -
- -
- - - -
-

PrintHandler typedef

- -
- void - PrintHandler -(Zone self, ZoneDelegate parent, Zone zone, String line) -
- -
-

Implementation

-
typedef void PrintHandler(
-    Zone self, ZoneDelegate parent, Zone zone, String line);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/RegisterBinaryCallbackHandler.html b/doc/api/dart-async/RegisterBinaryCallbackHandler.html deleted file mode 100644 index d0e44966..00000000 --- a/doc/api/dart-async/RegisterBinaryCallbackHandler.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - RegisterBinaryCallbackHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
RegisterBinaryCallbackHandler
- -
- -
- - - -
-

RegisterBinaryCallbackHandler typedef

- -
- ZoneBinaryCallback<R, T1, T2> - RegisterBinaryCallbackHandler -<R, T1, T2>(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)) -
- -
-

Implementation

-
typedef RegisterBinaryCallbackHandler
-    = ZoneBinaryCallback<R, T1, T2> Function<R, T1, T2>(Zone self,
-        ZoneDelegate parent, Zone zone, R Function(T1 arg1, T2 arg2) f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/RegisterCallbackHandler.html b/doc/api/dart-async/RegisterCallbackHandler.html deleted file mode 100644 index de1c646c..00000000 --- a/doc/api/dart-async/RegisterCallbackHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - RegisterCallbackHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
RegisterCallbackHandler
- -
- -
- - - -
-

RegisterCallbackHandler typedef

- -
- ZoneCallback<R> - RegisterCallbackHandler -<R>(Zone self, ZoneDelegate parent, Zone zone, R f()) -
- -
-

Implementation

-
typedef RegisterCallbackHandler = ZoneCallback<R> Function<R>(
-    Zone self, ZoneDelegate parent, Zone zone, R Function() f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/RegisterUnaryCallbackHandler.html b/doc/api/dart-async/RegisterUnaryCallbackHandler.html deleted file mode 100644 index 68d82d59..00000000 --- a/doc/api/dart-async/RegisterUnaryCallbackHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - RegisterUnaryCallbackHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
RegisterUnaryCallbackHandler
- -
- -
- - - -
-

RegisterUnaryCallbackHandler typedef

- -
- ZoneUnaryCallback<R, T> - RegisterUnaryCallbackHandler -<R, T>(Zone self, ZoneDelegate parent, Zone zone, R f(T arg)) -
- -
-

Implementation

-
typedef RegisterUnaryCallbackHandler = ZoneUnaryCallback<R, T> Function<R, T>(
-    Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/RunBinaryHandler.html b/doc/api/dart-async/RunBinaryHandler.html deleted file mode 100644 index 1132967a..00000000 --- a/doc/api/dart-async/RunBinaryHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - RunBinaryHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
RunBinaryHandler
- -
- -
- - - -
-

RunBinaryHandler typedef

- -
- R - RunBinaryHandler -<R, T1, T2>(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2) -
- -
-

Implementation

-
typedef RunBinaryHandler = R Function<R, T1, T2>(Zone self, ZoneDelegate parent,
-    Zone zone, R Function(T1 arg1, T2 arg2) f, T1 arg1, T2 arg2);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/RunHandler.html b/doc/api/dart-async/RunHandler.html deleted file mode 100644 index cb041f4f..00000000 --- a/doc/api/dart-async/RunHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - RunHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
RunHandler
- -
- -
- - - -
-

RunHandler typedef

- -
- R - RunHandler -<R>(Zone self, ZoneDelegate parent, Zone zone, R f()) -
- -
-

Implementation

-
typedef RunHandler = R Function<R>(
-    Zone self, ZoneDelegate parent, Zone zone, R Function() f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/RunUnaryHandler.html b/doc/api/dart-async/RunUnaryHandler.html deleted file mode 100644 index e2a61594..00000000 --- a/doc/api/dart-async/RunUnaryHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - RunUnaryHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
RunUnaryHandler
- -
- -
- - - -
-

RunUnaryHandler typedef

- -
- R - RunUnaryHandler -<R, T>(Zone self, ZoneDelegate parent, Zone zone, R f(T arg), T arg) -
- -
-

Implementation

-
typedef RunUnaryHandler = R Function<R, T>(
-    Zone self, ZoneDelegate parent, Zone zone, R Function(T arg) f, T arg);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ScheduleMicrotaskHandler.html b/doc/api/dart-async/ScheduleMicrotaskHandler.html deleted file mode 100644 index b397559a..00000000 --- a/doc/api/dart-async/ScheduleMicrotaskHandler.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - ScheduleMicrotaskHandler typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ScheduleMicrotaskHandler
- -
- -
- - - -
-

ScheduleMicrotaskHandler typedef

- -
- void - ScheduleMicrotaskHandler -(Zone self, ZoneDelegate parent, Zone zone, void f()) -
- -
-

Implementation

-
typedef void ScheduleMicrotaskHandler(
-    Zone self, ZoneDelegate parent, Zone zone, void f());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream-class.html b/doc/api/dart-async/Stream-class.html deleted file mode 100644 index 29a944ec..00000000 --- a/doc/api/dart-async/Stream-class.html +++ /dev/null @@ -1,783 +0,0 @@ - - - - - - - - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream
- -
- -
- - - -
-

Stream<T> class

- -
-

A source of asynchronous data events.

-

A Stream provides a way to receive a sequence of events. -Each event is either a data event, also called an element of the stream, -or an error event, which is a notification that something has failed. -When a stream has emitted all its event, -a single "done" event will notify the listener that the end has been reached.

-

You listen on a stream to make it start generating events, -and to set up listeners that receive the events. -When you listen, you receive a StreamSubscription object -which is the active object providing the events, -and which can be used to stop listening again, -or to temporarily pause events from the subscription.

-

There are two kinds of streams: "Single-subscription" streams and -"broadcast" streams.

-

A single-subscription stream allows only a single listener during the whole -lifetime of the stream. -It doesn't start generating events until it has a listener, -and it stops sending events when the listener is unsubscribed, -even if the source of events could still provide more.

-

Listening twice on a single-subscription stream is not allowed, even after -the first subscription has been canceled.

-

Single-subscription streams are generally used for streaming chunks of -larger contiguous data like file I/O.

-

A broadcast stream allows any number of listeners, and it fires -its events when they are ready, whether there are listeners or not.

-

Broadcast streams are used for independent events/observers.

-

If several listeners want to listen to a single subscription stream, -use asBroadcastStream to create a broadcast stream on top of the -non-broadcast stream.

-

On either kind of stream, stream transformations, such as where and -skip, return the same type of stream as the one the method was called on, -unless otherwise noted.

-

When an event is fired, the listener(s) at that time will receive the event. -If a listener is added to a broadcast stream while an event is being fired, -that listener will not receive the event currently being fired. -If a listener is canceled, it immediately stops receiving events. -Listening on a broadcast stream can be treated as listening on a new stream -containing only the events that have not yet been emitted when the listen -call occurs. -For example, the first getter listens to the stream, then returns the first -event that listener receives. -This is not necessarily the first even emitted by the stream, but the first -of the remaining events of the broadcast stream.

-

When the "done" event is fired, subscribers are unsubscribed before -receiving the event. After the event has been sent, the stream has no -subscribers. Adding new subscribers to a broadcast stream after this point -is allowed, but they will just receive a new "done" event as soon -as possible.

-

Stream subscriptions always respect "pause" requests. If necessary they need -to buffer their input, but often, and preferably, they can simply request -their input to pause too.

-

The default implementation of isBroadcast returns false. -A broadcast stream inheriting from Stream must override isBroadcast -to return true.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Stream() -
-
- -
-
- Stream.empty() -
-
- Creates an empty broadcast stream. [...] -
const
-
factory
-
-
- Stream.error(Object error, [ StackTrace stackTrace ]) -
-
- Creates a stream which emits a single error event before completing. [...] -
factory
-
-
- Stream.eventTransformed(Stream source, EventSink mapSink(EventSink<T> sink)) -
-
- Creates a stream where all events of an existing stream are piped through -a sink-transformation. [...] -
factory
-
-
- Stream.fromFuture(Future<T> future) -
-
- Creates a new single-subscription stream from the future. [...] -
factory
-
-
- Stream.fromFutures(Iterable<Future<T>> futures) -
-
- Create a stream from a group of futures. [...] -
factory
-
-
- Stream.fromIterable(Iterable<T> elements) -
-
- Creates a single-subscription stream that gets its data from elements. [...] -
factory
-
-
- Stream.multi(void onListen(MultiStreamController<T>), { bool isBroadcast: false }) -
-
- Creates a multi-subscription stream. [...] -
factory
-
-
- Stream.periodic(Duration period, [ T computation(int computationCount) ]) -
-
- Creates a stream that repeatedly emits events at period intervals. [...] -
factory
-
-
- Stream.value(T value) -
-
- Creates a stream which emits a single data event before completing. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- first - Future<T> -
-
- The first element of this stream. [...] -
read-only
-
-
- isBroadcast - bool -
-
- Whether this stream is a broadcast stream. -
read-only
-
-
- isEmpty - Future<bool> -
-
- Whether this stream contains any elements. [...] -
read-only
-
-
- last - Future<T> -
-
- The last element of this stream. [...] -
read-only
-
-
- length - Future<int> -
-
- The number of elements in this stream. [...] -
read-only
-
-
- single - Future<T> -
-
- The single element of this stream. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- any(bool test(T element)) - Future<bool> - -
-
- Checks whether test accepts any element provided by this stream. [...] - -
-
- asBroadcastStream({void onListen(StreamSubscription<T> subscription) void onCancel(StreamSubscription<T> subscription) }) - Stream<T> - -
-
- Returns a multi-subscription stream that produces the same events as this. [...] - -
-
- asyncExpand<E>(Stream<E> convert(T event)) - Stream<E> - -
-
- Transforms each element into a sequence of asynchronous events. [...] - -
-
- asyncMap<E>(FutureOr<E> convert(T event)) - Stream<E> - -
-
- Creates a new stream with each data event of this stream asynchronously -mapped to a new event. [...] - -
-
- cast<R>() - Stream<R> - -
-
- Adapt this stream to be a Stream<R>. [...] - -
-
- contains(Object needle) - Future<bool> - -
-
- Returns whether needle occurs in the elements provided by this stream. [...] - -
-
- distinct([bool equals(T previous T next) ]) - Stream<T> - -
-
- Skips data events if they are equal to the previous data event. [...] - -
-
- drain<E>([E futureValue ]) - Future<E> - -
-
- Discards all data on this stream, but signals when it is done or an error -occurred. [...] - -
-
- elementAt(int index) - Future<T> - -
-
- Returns the value of the indexth data event of this stream. [...] - -
-
- every(bool test(T element)) - Future<bool> - -
-
- Checks whether test accepts all elements provided by this stream. [...] - -
-
- expand<S>(Iterable<S> convert(T element)) - Stream<S> - -
-
- Transforms each element of this stream into a sequence of elements. [...] - -
-
- firstWhere(bool test(T element), { T orElse() }) - Future<T> - -
-
- Finds the first element of this stream matching test. [...] - -
-
- fold<S>(S initialValue, S combine(S previous, T element)) - Future<S> - -
-
- Combines a sequence of values by repeatedly applying combine. [...] - -
-
- forEach(void action(T element)) - Future - -
-
- Executes action on each element of this stream. [...] - -
-
- handleError(Function onError, { bool test(dynamic error) }) - Stream<T> - -
-
- Creates a wrapper Stream that intercepts some errors from this stream. [...] - -
-
- join([String separator = "" ]) - Future<String> - -
-
- Combines the string representation of elements into a single string. [...] - -
-
- lastWhere(bool test(T element), { T orElse() }) - Future<T> - -
-
- Finds the last element in this stream matching test. [...] - -
-
- listen(void onData(T event), { Function onError, void onDone(), bool cancelOnError }) - StreamSubscription<T> - -
-
- Adds a subscription to this stream. [...] - -
-
- map<S>(S convert(T event)) - Stream<S> - -
-
- Transforms each element of this stream into a new stream event. [...] - -
-
- pipe(StreamConsumer<T> streamConsumer) - Future - -
-
- Pipes the events of this stream into streamConsumer. [...] - -
-
- reduce(T combine(T previous T element)) - Future<T> - -
-
- Combines a sequence of values by repeatedly applying combine. [...] - -
-
- singleWhere(bool test(T element), { T orElse() }) - Future<T> - -
-
- Finds the single element in this stream matching test. [...] - -
-
- skip(int count) - Stream<T> - -
-
- Skips the first count data events from this stream. [...] - -
-
- skipWhile(bool test(T element)) - Stream<T> - -
-
- Skip data events from this stream while they are matched by test. [...] - -
-
- take(int count) - Stream<T> - -
-
- Provides at most the first count data events of this stream. [...] - -
-
- takeWhile(bool test(T element)) - Stream<T> - -
-
- Forwards data events while test is successful. [...] - -
-
- timeout(Duration timeLimit, { void onTimeout(EventSink<T> sink) }) - Stream<T> - -
-
- Creates a new stream with the same events as this stream. [...] - -
-
- toList() - Future<List<T>> - -
-
- Collects all elements of this stream in a List. [...] - -
-
- toSet() - Future<Set<T>> - -
-
- Collects the data of this stream in a Set. [...] - -
-
- transform<S>(StreamTransformer<T, S> streamTransformer) - Stream<S> - -
-
- Applies streamTransformer to this stream. [...] - -
-
- where(bool test(T event)) - Stream<T> - -
-
- Creates a new stream from this stream that discards some elements. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- castFrom<S, T>(Stream<S> source) - Stream<T> - -
-
- Adapts source to be a Stream<T>. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.empty.html b/doc/api/dart-async/Stream/Stream.empty.html deleted file mode 100644 index d35019d1..00000000 --- a/doc/api/dart-async/Stream/Stream.empty.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - Stream.empty constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.empty
- -
- -
- - - -
-

Stream<T>.empty constructor

- -
- const - Stream<T>.empty() -
- -
-

Creates an empty broadcast stream.

-

This is a stream which does nothing except sending a done event -when it's listened to.

-
- -
-

Implementation

-
const factory Stream.empty() = _EmptyStream<T>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.error.html b/doc/api/dart-async/Stream/Stream.error.html deleted file mode 100644 index 41081a04..00000000 --- a/doc/api/dart-async/Stream/Stream.error.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - Stream.error constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.error
- -
- -
- - - -
-

Stream<T>.error constructor

- -
-
-
    -
  1. @Since("2.5")
  2. -
-
- - Stream<T>.error(Object error, [ StackTrace stackTrace ]) -
- -
-

Creates a stream which emits a single error event before completing.

-

This stream emits a single error event of error and stackTrace -and then completes with a done event.

-

Example:

-
Future<void> tryThings(Stream<int> data) async {
-  try {
-    await for (var x in data) {
-      print("Data: $x");
-    }
-  } catch (e) {
-    print(e);
-  }
-}
-tryThings(Stream<int>.error("Error")); // prints "Error".
-
-

The returned stream is effectively equivalent to one created by -Future<T>.error(error, stackTrace).asStream(), by or -(() async* { throw error; } ()), except that you can control the -stack trace as well.

-
- -
-

Implementation

-
@Since("2.5")
-factory Stream.error(Object error, [StackTrace? stackTrace]) {
-  // TODO(40614): Remove once non-nullability is sound.
-  ArgumentError.checkNotNull(error, "error");
-  return (_AsyncStreamController<T>(null, null, null, null)
-        .._addError(error, stackTrace ?? AsyncError.defaultStackTrace(error))
-        .._closeUnchecked())
-      .stream;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.eventTransformed.html b/doc/api/dart-async/Stream/Stream.eventTransformed.html deleted file mode 100644 index 237e9197..00000000 --- a/doc/api/dart-async/Stream/Stream.eventTransformed.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - Stream.eventTransformed constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.eventTransformed
- -
- -
- - - -
-

Stream<T>.eventTransformed constructor

- -
- - Stream<T>.eventTransformed(Stream source, EventSink mapSink(EventSink<T> sink)) -
- -
-

Creates a stream where all events of an existing stream are piped through -a sink-transformation.

-

The given mapSink closure is invoked when the returned stream is -listened to. All events from the source are added into the event sink -that is returned from the invocation. The transformation puts all -transformed events into the sink the mapSink closure received during -its invocation. Conceptually the mapSink creates a transformation pipe -with the input sink being the returned EventSink and the output sink -being the sink it received.

-

This constructor is frequently used to build transformers.

-

Example use for a duplicating transformer:

-
class DuplicationSink implements EventSink<String> {
-  final EventSink<String> _outputSink;
-  DuplicationSink(this._outputSink);
-
-  void add(String data) {
-    _outputSink.add(data);
-    _outputSink.add(data);
-  }
-
-  void addError(e, [st]) { _outputSink.addError(e, st); }
-  void close() { _outputSink.close(); }
-}
-
-class DuplicationTransformer extends StreamTransformerBase<String, String> {
-  // Some generic types omitted for brevity.
-  Stream bind(Stream stream) => new Stream<String>.eventTransformed(
-      stream,
-      (EventSink sink) => new DuplicationSink(sink));
-}
-
-stringStream.transform(new DuplicationTransformer());
-
-

The resulting stream is a broadcast stream if source is.

-
- -
-

Implementation

-
factory Stream.eventTransformed(
-    Stream<dynamic> source, EventSink<dynamic> mapSink(EventSink<T> sink)) {
-  return new _BoundSinkStream(source, mapSink);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.fromFuture.html b/doc/api/dart-async/Stream/Stream.fromFuture.html deleted file mode 100644 index 2961cc8f..00000000 --- a/doc/api/dart-async/Stream/Stream.fromFuture.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - Stream.fromFuture constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.fromFuture
- -
- -
- - - -
-

Stream<T>.fromFuture constructor

- -
- - Stream<T>.fromFuture(Future<T> future) -
- -
-

Creates a new single-subscription stream from the future.

-

When the future completes, the stream will fire one event, either -data or error, and then close with a done-event.

-
- -
-

Implementation

-
factory Stream.fromFuture(Future<T> future) {
-  // Use the controller's buffering to fill in the value even before
-  // the stream has a listener. For a single value, it's not worth it
-  // to wait for a listener before doing the `then` on the future.
-  _StreamController<T> controller =
-      new _SyncStreamController<T>(null, null, null, null);
-  future.then((value) {
-    controller._add(value);
-    controller._closeUnchecked();
-  }, onError: (error, stackTrace) {
-    controller._addError(error, stackTrace);
-    controller._closeUnchecked();
-  });
-  return controller.stream;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.fromFutures.html b/doc/api/dart-async/Stream/Stream.fromFutures.html deleted file mode 100644 index f2d95b63..00000000 --- a/doc/api/dart-async/Stream/Stream.fromFutures.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - Stream.fromFutures constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.fromFutures
- -
- -
- - - -
-

Stream<T>.fromFutures constructor

- -
- - Stream<T>.fromFutures(Iterable<Future<T>> futures) -
- -
-

Create a stream from a group of futures.

-

The stream reports the results of the futures on the stream in the order -in which the futures complete. -Each future provides either a data event or an error event, -depending on how the future completes.

-

If some futures have already completed when Stream.fromFutures is called, -their results will be emitted in some unspecified order.

-

When all futures have completed, the stream is closed.

-

If futures is empty, the stream closes as soon as possible.

-
- -
-

Implementation

-
factory Stream.fromFutures(Iterable<Future<T>> futures) {
-  _StreamController<T> controller =
-      new _SyncStreamController<T>(null, null, null, null);
-  int count = 0;
-  // Declare these as variables holding closures instead of as
-  // function declarations.
-  // This avoids creating a new closure from the functions for each future.
-  void onValue(T value) {
-    if (!controller.isClosed) {
-      controller._add(value);
-      if (--count == 0) controller._closeUnchecked();
-    }
-  }
-
-  void onError(Object error, StackTrace stack) {
-    if (!controller.isClosed) {
-      controller._addError(error, stack);
-      if (--count == 0) controller._closeUnchecked();
-    }
-  }
-
-  // The futures are already running, so start listening to them immediately
-  // (instead of waiting for the stream to be listened on).
-  // If we wait, we might not catch errors in the futures in time.
-  for (var future in futures) {
-    count++;
-    future.then(onValue, onError: onError);
-  }
-  // Use schedule microtask since controller is sync.
-  if (count == 0) scheduleMicrotask(controller.close);
-  return controller.stream;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.fromIterable.html b/doc/api/dart-async/Stream/Stream.fromIterable.html deleted file mode 100644 index d20fcc73..00000000 --- a/doc/api/dart-async/Stream/Stream.fromIterable.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - Stream.fromIterable constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.fromIterable
- -
- -
- - - -
-

Stream<T>.fromIterable constructor

- -
- - Stream<T>.fromIterable(Iterable<T> elements) -
- -
-

Creates a single-subscription stream that gets its data from elements.

-

The iterable is iterated when the stream receives a listener, and stops -iterating if the listener cancels the subscription, or if the -Iterator.moveNext method returns false or throws. -Iteration is suspended while the stream subscription is paused.

-

If calling Iterator.moveNext on elements.iterator throws, -the stream emits that error and then it closes. -If reading Iterator.current on elements.iterator throws, -the stream emits that error, but keeps iterating.

-
- -
-

Implementation

-
factory Stream.fromIterable(Iterable<T> elements) {
-  return new _GeneratedStreamImpl<T>(
-      () => new _IterablePendingEvents<T>(elements));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.html b/doc/api/dart-async/Stream/Stream.html deleted file mode 100644 index 24a6f054..00000000 --- a/doc/api/dart-async/Stream/Stream.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - Stream constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream
- -
- -
- - - -
-

Stream<T> constructor

- -
- - Stream<T>() -
- - -
-

Implementation

-
Stream();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.multi.html b/doc/api/dart-async/Stream/Stream.multi.html deleted file mode 100644 index 9005276d..00000000 --- a/doc/api/dart-async/Stream/Stream.multi.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - Stream.multi constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.multi
- -
- -
- - - -
-

Stream<T>.multi constructor

- -
-
-
    -
  1. @Since("2.9")
  2. -
-
- - Stream<T>.multi(void onListen(MultiStreamController<T>), { bool isBroadcast: false }) -
- -
-

Creates a multi-subscription stream.

-

Each time the created stream is listened to, -the onListen callback is invoked with a new MultiStreamController -which forwards events to the StreamSubscription -returned by that listen call.

-

This allows each listener to be treated as an individual stream.

-

The MultiStreamController does not support reading its -StreamController.stream. Setting its StreamController.onListen -has no effect since the onListen callback is called instead, -and the StreamController.onListen won't be called later. -The controller acts like an asynchronous controller, -but provides extra methods for delivering events synchronously.

-

If isBroadcast is set to true, the returned stream's -Stream.isBroadcast will be true. -This has no effect on the stream behavior, -it is up to the onListen function -to act like a broadcast stream if it claims to be one.

-

A multi-subscription stream can behave like any other stream. -If the onListen callback throws on every call after the first, -the stream behaves like a single-subscription stream. -If the stream emits the same events to all current listeners, -it behaves like a broadcast stream.

-

It can also choose to emit different events to different listeners. -For example, a stream which repeats the most recent -non-null event to new listeners, could be implemented as this example:

-
extension StreamRepeatLatestExtension<T extends Object> on Stream<T> {
-  Stream<T> repeatLatest() {
-    var done = false;
-    T? latest = null;
-    var currentListeners = <MultiStreamController<T>>{};
-    this.listen((event) {
-      latest = event;
-      for (var listener in [...currentListeners]) listener.addSync(event);
-    }, onError: (Object error, StackTrace stack) {
-      for (var listener in [...currentListeners]) listener.addErrorSync(error, stack);
-    }, onDone: () {
-      done = true;
-      latest = null;
-      for (var listener in currentListeners) listener.closeSync();
-      currentListeners.clear();
-    });
-    return Stream.multi((controller) {
-      if (done) {
-        controller.close();
-        return;
-      }
-      currentListeners.add(controller);
-      var latestValue = latest;
-      if (latestValue != null) controller.add(latestValue);
-      controller.onCancel = () {
-        currentListeners.remove(controller);
-      };
-    });
-  }
-}
-
-
- -
-

Implementation

-
@Since("2.9")
-factory Stream.multi(void Function(MultiStreamController<T>) onListen,
-    {bool isBroadcast = false}) {
-  return _MultiStream<T>(onListen, isBroadcast);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.periodic.html b/doc/api/dart-async/Stream/Stream.periodic.html deleted file mode 100644 index 3d4e54f2..00000000 --- a/doc/api/dart-async/Stream/Stream.periodic.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - Stream.periodic constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.periodic
- -
- -
- - - -
-

Stream<T>.periodic constructor

- -
- - Stream<T>.periodic(Duration period, [ T computation(int computationCount) ]) -
- -
-

Creates a stream that repeatedly emits events at period intervals.

-

The event values are computed by invoking computation. The argument to -this callback is an integer that starts with 0 and is incremented for -every event.

-

The period must a non-negative Duration.

-

If computation is omitted the event values will all be null.

-

The computation must not be omitted if the event type T does not -allow null as a value.

-
- -
-

Implementation

-
factory Stream.periodic(Duration period,
-    [T computation(int computationCount)?]) {
-  if (computation == null && !typeAcceptsNull<T>()) {
-    throw ArgumentError.value(null, "computation",
-        "Must not be omitted when the event type is non-nullable");
-  }
-  var controller = _SyncStreamController<T>(null, null, null, null);
-  // Counts the time that the Stream was running (and not paused).
-  Stopwatch watch = new Stopwatch();
-  controller.onListen = () {
-    int computationCount = 0;
-    void sendEvent(_) {
-      watch.reset();
-      if (computation != null) {
-        T event;
-        try {
-          event = computation(computationCount++);
-        } catch (e, s) {
-          controller.addError(e, s);
-          return;
-        }
-        controller.add(event);
-      } else {
-        controller.add(null as T); // We have checked that null is T.
-      }
-    }
-
-    Timer timer = Timer.periodic(period, sendEvent);
-    controller
-      ..onCancel = () {
-        timer.cancel();
-        return Future._nullFuture;
-      }
-      ..onPause = () {
-        watch.stop();
-        timer.cancel();
-      }
-      ..onResume = () {
-        Duration elapsed = watch.elapsed;
-        watch.start();
-        timer = new Timer(period - elapsed, () {
-          timer = Timer.periodic(period, sendEvent);
-          sendEvent(null);
-        });
-      };
-  };
-  return controller.stream;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/Stream.value.html b/doc/api/dart-async/Stream/Stream.value.html deleted file mode 100644 index ea82358d..00000000 --- a/doc/api/dart-async/Stream/Stream.value.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - Stream.value constructor - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stream.value
- -
- -
- - - -
-

Stream<T>.value constructor

- -
-
-
    -
  1. @Since("2.5")
  2. -
-
- - Stream<T>.value(T value) -
- -
-

Creates a stream which emits a single data event before completing.

-

This stream emits a single data event of value -and then completes with a done event.

-

Example:

-
Future<void> printThings(Stream<String> data) async {
-  await for (var x in data) {
-    print(x);
-  }
-}
-printThings(Stream<String>.value("ok")); // prints "ok".
-
-

The returned stream is effectively equivalent to one created by -(() async* { yield value; } ()) or Future<T>.value(value).asStream().

-
- -
-

Implementation

-
@Since("2.5")
-factory Stream.value(T value) =>
-    (_AsyncStreamController<T>(null, null, null, null)
-          .._add(value)
-          .._closeUnchecked())
-        .stream;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/any.html b/doc/api/dart-async/Stream/any.html deleted file mode 100644 index 1ae54f7a..00000000 --- a/doc/api/dart-async/Stream/any.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - any method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
any
- -
- -
- - - -
-

any method

- -
- Future<bool> - any -(bool test(T element)) - -
-
-

Checks whether test accepts any element provided by this stream.

-

Calls test on each element of this stream. -If the call returns true, the returned future is completed with true -and processing stops.

-

If this stream ends without finding an element that test accepts, -the returned future is completed with false.

-

If this stream emits an error, or if the call to test throws, -the returned future is completed with that error, -and processing stops.

-
- -
-

Implementation

-
Future<bool> any(bool test(T element)) {
-  _Future<bool> future = new _Future<bool>();
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    future._complete(false);
-  }, cancelOnError: true);
-  subscription.onData((T element) {
-    _runUserCode(() => test(element), (bool isMatch) {
-      if (isMatch) {
-        _cancelAndValue(subscription, future, true);
-      }
-    }, _cancelAndErrorClosure(subscription, future));
-  });
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/asBroadcastStream.html b/doc/api/dart-async/Stream/asBroadcastStream.html deleted file mode 100644 index 4a871005..00000000 --- a/doc/api/dart-async/Stream/asBroadcastStream.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - asBroadcastStream method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
asBroadcastStream
- -
- -
- - - -
-

asBroadcastStream method

- -
- Stream<T> - asBroadcastStream -({void onListen(StreamSubscription<T> subscription) void onCancel(StreamSubscription<T> subscription) }) - -
-
-

Returns a multi-subscription stream that produces the same events as this.

-

The returned stream will subscribe to this stream when its first -subscriber is added, and will stay subscribed until this stream ends, -or a callback cancels the subscription.

-

If onListen is provided, it is called with a subscription-like object -that represents the underlying subscription to this stream. It is -possible to pause, resume or cancel the subscription during the call -to onListen. It is not possible to change the event handlers, including -using StreamSubscription.asFuture.

-

If onCancel is provided, it is called in a similar way to onListen -when the returned stream stops having listener. If it later gets -a new listener, the onListen function is called again.

-

Use the callbacks, for example, for pausing the underlying subscription -while having no subscribers to prevent losing events, or canceling the -subscription when there are no listeners.

-
- -
-

Implementation

-
Stream<T> asBroadcastStream(
-    {void onListen(StreamSubscription<T> subscription)?,
-    void onCancel(StreamSubscription<T> subscription)?}) {
-  return new _AsBroadcastStream<T>(this, onListen, onCancel);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/asyncExpand.html b/doc/api/dart-async/Stream/asyncExpand.html deleted file mode 100644 index dd4e64dd..00000000 --- a/doc/api/dart-async/Stream/asyncExpand.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - asyncExpand method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
asyncExpand
- -
- -
- - - -
-

asyncExpand<E> method

- -
- Stream<E> - asyncExpand -<E>(Stream<E> convert(T event)) - -
-
-

Transforms each element into a sequence of asynchronous events.

-

Returns a new stream and for each event of this stream, do the following:

-
    -
  • If the event is an error event or a done event, it is emitted directly -by the returned stream.
  • -
  • Otherwise it is an element. Then the convert function is called -with the element as argument to produce a convert-stream for the element.
  • -
  • If that call throws, the error is emitted on the returned stream.
  • -
  • If the call returns null, no further action is taken for the elements.
  • -
  • Otherwise, this stream is paused and convert-stream is listened to. -Every data and error event of the convert-stream is emitted on the returned -stream in the order it is produced. -When the convert-stream ends, this stream is resumed.
  • -
-

The returned stream is a broadcast stream if this stream is.

-
- -
-

Implementation

-
Stream<E> asyncExpand<E>(Stream<E>? convert(T event)) {
-  _StreamControllerBase<E> controller;
-  if (isBroadcast) {
-    controller = _SyncBroadcastStreamController<E>(null, null);
-  } else {
-    controller = _SyncStreamController<E>(null, null, null, null);
-  }
-
-  controller.onListen = () {
-    StreamSubscription<T> subscription = this.listen(null,
-        onError: controller._addError, // Avoid Zone error replacement.
-        onDone: controller.close);
-    subscription.onData((T event) {
-      Stream<E>? newStream;
-      try {
-        newStream = convert(event);
-      } catch (e, s) {
-        controller.addError(e, s);
-        return;
-      }
-      if (newStream != null) {
-        subscription.pause();
-        controller.addStream(newStream).whenComplete(subscription.resume);
-      }
-    });
-    controller.onCancel = subscription.cancel;
-    if (!isBroadcast) {
-      controller
-        ..onPause = subscription.pause
-        ..onResume = subscription.resume;
-    }
-  };
-  return controller.stream;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/asyncMap.html b/doc/api/dart-async/Stream/asyncMap.html deleted file mode 100644 index f00d1e65..00000000 --- a/doc/api/dart-async/Stream/asyncMap.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - asyncMap method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
asyncMap
- -
- -
- - - -
-

asyncMap<E> method

- -
- Stream<E> - asyncMap -<E>(FutureOr<E> convert(T event)) - -
-
-

Creates a new stream with each data event of this stream asynchronously -mapped to a new event.

-

This acts like map, except that convert may return a Future, -and in that case, this stream waits for that future to complete before -continuing with its result.

-

The returned stream is a broadcast stream if this stream is.

-
- -
-

Implementation

-
Stream<E> asyncMap<E>(FutureOr<E> convert(T event)) {
-  _StreamControllerBase<E> controller;
-  if (isBroadcast) {
-    controller = _SyncBroadcastStreamController<E>(null, null);
-  } else {
-    controller = _SyncStreamController<E>(null, null, null, null);
-  }
-
-  controller.onListen = () {
-    StreamSubscription<T> subscription = this.listen(null,
-        onError: controller._addError, // Avoid Zone error replacement.
-        onDone: controller.close);
-    FutureOr<Null> add(E value) {
-      controller.add(value);
-    }
-
-    final addError = controller._addError;
-    final resume = subscription.resume;
-    subscription.onData((T event) {
-      FutureOr<E> newValue;
-      try {
-        newValue = convert(event);
-      } catch (e, s) {
-        controller.addError(e, s);
-        return;
-      }
-      if (newValue is Future<E>) {
-        subscription.pause();
-        newValue.then(add, onError: addError).whenComplete(resume);
-      } else {
-        // TODO(40014): Remove cast when type promotion works.
-        controller.add(newValue as dynamic);
-      }
-    });
-    controller.onCancel = subscription.cancel;
-    if (!isBroadcast) {
-      controller
-        ..onPause = subscription.pause
-        ..onResume = resume;
-    }
-  };
-  return controller.stream;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/cast.html b/doc/api/dart-async/Stream/cast.html deleted file mode 100644 index 4a48ba4b..00000000 --- a/doc/api/dart-async/Stream/cast.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - cast method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Stream<R> - cast -<R>() - -
-
-

Adapt this stream to be a Stream<R>.

-

This stream is wrapped as a Stream<R> which checks at run-time that -each data event emitted by this stream is also an instance of R.

-
- -
-

Implementation

-
Stream<R> cast<R>() => Stream.castFrom<T, R>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/castFrom.html b/doc/api/dart-async/Stream/castFrom.html deleted file mode 100644 index 2d728b5c..00000000 --- a/doc/api/dart-async/Stream/castFrom.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - castFrom method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
castFrom
- -
- -
- - - -
-

castFrom<S, T> method

- -
- Stream<T> - castFrom -<S, T>(Stream<S> source) - -
-
-

Adapts source to be a Stream<T>.

-

This allows source to be used at the new type, but at run-time it -must satisfy the requirements of both the new type and its original type.

-

Data events created by the source stream must also be instances of T.

-
- -
-

Implementation

-
static Stream<T> castFrom<S, T>(Stream<S> source) =>
-    new CastStream<S, T>(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/contains.html b/doc/api/dart-async/Stream/contains.html deleted file mode 100644 index 49c1852e..00000000 --- a/doc/api/dart-async/Stream/contains.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - contains method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- Future<bool> - contains -(Object needle) - -
-
-

Returns whether needle occurs in the elements provided by this stream.

-

Compares each element of this stream to needle using Object.==. -If an equal element is found, the returned future is completed with true. -If this stream ends without finding a match, the future is completed with -false.

-

If this stream emits an error, or the call to Object.== throws, -the returned future is completed with that error, -and processing stops.

-
- -
-

Implementation

-
Future<bool> contains(Object? needle) {
-  _Future<bool> future = new _Future<bool>();
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    future._complete(false);
-  }, cancelOnError: true);
-  subscription.onData((T element) {
-    _runUserCode(() => (element == needle), (bool isMatch) {
-      if (isMatch) {
-        _cancelAndValue(subscription, future, true);
-      }
-    }, _cancelAndErrorClosure(subscription, future));
-  });
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/distinct.html b/doc/api/dart-async/Stream/distinct.html deleted file mode 100644 index 9242cc72..00000000 --- a/doc/api/dart-async/Stream/distinct.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - distinct method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
distinct
- -
- -
- - - -
-

distinct method

- -
- Stream<T> - distinct -([bool equals(T previous T next) ]) - -
-
-

Skips data events if they are equal to the previous data event.

-

The returned stream provides the same events as this stream, except -that it never provides two consecutive data events that are equal. -That is, errors are passed through to the returned stream, and -data events are passed through if they are distinct from the most -recently emitted data event.

-

Equality is determined by the provided equals method. If that is -omitted, the '==' operator on the last provided data element is used.

-

If equals throws, the data event is replaced by an error event -containing the thrown error. The behavior is equivalent to the -original stream emitting the error event, and it doesn't change -the what the most recently emitted data event is.

-

The returned stream is a broadcast stream if this stream is. -If a broadcast stream is listened to more than once, each subscription -will individually perform the equals test.

-
- -
-

Implementation

-
Stream<T> distinct([bool equals(T previous, T next)?]) {
-  return new _DistinctStream<T>(this, equals);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/drain.html b/doc/api/dart-async/Stream/drain.html deleted file mode 100644 index cf9fccdf..00000000 --- a/doc/api/dart-async/Stream/drain.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - drain method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
drain
- -
- -
- - - -
-

drain<E> method

- -
- Future<E> - drain -<E>([E futureValue ]) - -
-
-

Discards all data on this stream, but signals when it is done or an error -occurred.

-

When subscribing using drain, cancelOnError will be true. This means -that the future will complete with the first error on this stream and then -cancel the subscription.

-

If this stream emits an error, the returned future is completed with -that error, and processing is stopped.

-

In case of a done event the future completes with the given -futureValue.

-

The futureValue must not be omitted if null is not assignable to E.

-
- -
-

Implementation

-
Future<E> drain<E>([E? futureValue]) {
-  if (futureValue == null) {
-    futureValue = futureValue as E;
-  }
-  return listen(null, cancelOnError: true).asFuture<E>(futureValue);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/elementAt.html b/doc/api/dart-async/Stream/elementAt.html deleted file mode 100644 index b284fd4c..00000000 --- a/doc/api/dart-async/Stream/elementAt.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - elementAt method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
elementAt
- -
- -
- - - -
-

elementAt method

- -
- Future<T> - elementAt -(int index) - -
-
-

Returns the value of the indexth data event of this stream.

-

Stops listening to this stream after the indexth data event has been -received.

-

Internally the method cancels its subscription after these elements. This -means that single-subscription (non-broadcast) streams are closed and -cannot be reused after a call to this method.

-

If an error event occurs before the value is found, the future completes -with this error.

-

If a done event occurs before the value is found, the future completes -with a RangeError.

-
- -
-

Implementation

-
Future<T> elementAt(int index) {
-  RangeError.checkNotNegative(index, "index");
-  _Future<T> result = new _Future<T>();
-  int elementIndex = 0;
-  StreamSubscription<T> subscription;
-  subscription =
-      this.listen(null, onError: result._completeError, onDone: () {
-    result._completeError(
-        new RangeError.index(index, this, "index", null, elementIndex),
-        StackTrace.empty);
-  }, cancelOnError: true);
-  subscription.onData((T value) {
-    if (index == elementIndex) {
-      _cancelAndValue(subscription, result, value);
-      return;
-    }
-    elementIndex += 1;
-  });
-
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/every.html b/doc/api/dart-async/Stream/every.html deleted file mode 100644 index 83dd3213..00000000 --- a/doc/api/dart-async/Stream/every.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - every method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
every
- -
- -
- - - -
-

every method

- -
- Future<bool> - every -(bool test(T element)) - -
-
-

Checks whether test accepts all elements provided by this stream.

-

Calls test on each element of this stream. -If the call returns false, the returned future is completed with false -and processing stops.

-

If this stream ends without finding an element that test rejects, -the returned future is completed with true.

-

If this stream emits an error, or if the call to test throws, -the returned future is completed with that error, -and processing stops.

-
- -
-

Implementation

-
Future<bool> every(bool test(T element)) {
-  _Future<bool> future = new _Future<bool>();
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    future._complete(true);
-  }, cancelOnError: true);
-  subscription.onData((T element) {
-    _runUserCode(() => test(element), (bool isMatch) {
-      if (!isMatch) {
-        _cancelAndValue(subscription, future, false);
-      }
-    }, _cancelAndErrorClosure(subscription, future));
-  });
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/expand.html b/doc/api/dart-async/Stream/expand.html deleted file mode 100644 index 3ce03985..00000000 --- a/doc/api/dart-async/Stream/expand.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - expand method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
expand
- -
- -
- - - -
-

expand<S> method

- -
- Stream<S> - expand -<S>(Iterable<S> convert(T element)) - -
-
-

Transforms each element of this stream into a sequence of elements.

-

Returns a new stream where each element of this stream is replaced -by zero or more data events. -The event values are provided as an Iterable by a call to convert -with the element as argument, and the elements of that iterable is -emitted in iteration order. -If calling convert throws, or if the iteration of the returned values -throws, the error is emitted on the returned stream and iteration ends -for that element of this stream.

-

Error events and the done event of this stream are forwarded directly -to the returned stream.

-

The returned stream is a broadcast stream if this stream is. -If a broadcast stream is listened to more than once, each subscription -will individually call convert and expand the events.

-
- -
-

Implementation

-
Stream<S> expand<S>(Iterable<S> convert(T element)) {
-  return new _ExpandStream<T, S>(this, convert);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/first.html b/doc/api/dart-async/Stream/first.html deleted file mode 100644 index 293b10b3..00000000 --- a/doc/api/dart-async/Stream/first.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - first property - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- Future<T> - first - -
- -
-

The first element of this stream.

-

Stops listening to this stream after the first element has been received.

-

Internally the method cancels its subscription after the first element. -This means that single-subscription (non-broadcast) streams are closed -and cannot be reused after a call to this getter.

-

If an error event occurs before the first data event, the returned future -is completed with that error.

-

If this stream is empty (a done event occurs before the first data event), -the returned future completes with an error.

-

Except for the type of the error, this method is equivalent to -this.elementAt(0).

-
-
-

Implementation

-
Future<T> get first {
-  _Future<T> future = new _Future<T>();
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    try {
-      throw IterableElementError.noElement();
-    } catch (e, s) {
-      _completeWithErrorCallback(future, e, s);
-    }
-  }, cancelOnError: true);
-  subscription.onData((T value) {
-    _cancelAndValue(subscription, future, value);
-  });
-  return future;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/firstWhere.html b/doc/api/dart-async/Stream/firstWhere.html deleted file mode 100644 index 5a29f30a..00000000 --- a/doc/api/dart-async/Stream/firstWhere.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - firstWhere method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstWhere
- -
- -
- - - -
-

firstWhere method

- -
- Future<T> - firstWhere -(bool test(T element), { T orElse() }) - -
-
-

Finds the first element of this stream matching test.

-

Returns a future that is completed with the first element of this stream -that test returns true for.

-

If no such element is found before this stream is done, and a -orElse function is provided, the result of calling orElse -becomes the value of the future. If orElse throws, the returned -future is completed with that error.

-

If this stream emits an error before the first matching element, -the returned future is completed with that error, and processing stops.

-

Stops listening to this stream after the first matching element or error -has been received.

-

Internally the method cancels its subscription after the first element that -matches the predicate. This means that single-subscription (non-broadcast) -streams are closed and cannot be reused after a call to this method.

-

If an error occurs, or if this stream ends without finding a match and -with no orElse function provided, -the returned future is completed with an error.

-
- -
-

Implementation

-
Future<T> firstWhere(bool test(T element), {T orElse()?}) {
-  _Future<T> future = new _Future();
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    if (orElse != null) {
-      _runUserCode(orElse, future._complete, future._completeError);
-      return;
-    }
-    try {
-      // Sets stackTrace on error.
-      throw IterableElementError.noElement();
-    } catch (e, s) {
-      _completeWithErrorCallback(future, e, s);
-    }
-  }, cancelOnError: true);
-
-  subscription.onData((T value) {
-    _runUserCode(() => test(value), (bool isMatch) {
-      if (isMatch) {
-        _cancelAndValue(subscription, future, value);
-      }
-    }, _cancelAndErrorClosure(subscription, future));
-  });
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/fold.html b/doc/api/dart-async/Stream/fold.html deleted file mode 100644 index 0d6863cb..00000000 --- a/doc/api/dart-async/Stream/fold.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - fold method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
fold
- -
- -
- - - -
-

fold<S> method

- -
- Future<S> - fold -<S>(S initialValue, S combine(S previous, T element)) - -
-
-

Combines a sequence of values by repeatedly applying combine.

-

Similar to Iterable.fold, this function maintains a value, -starting with initialValue and updated for each element of -this stream. -For each element, the value is updated to the result of calling -combine with the previous value and the element.

-

When this stream is done, the returned future is completed with -the value at that time. -For an empty stream, the future is completed with initialValue.

-

If this stream emits an error, or the call to combine throws, -the returned future is completed with that error, -and processing is stopped.

-
- -
-

Implementation

-
Future<S> fold<S>(S initialValue, S combine(S previous, T element)) {
-  _Future<S> result = new _Future<S>();
-  S value = initialValue;
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: result._completeError, onDone: () {
-    result._complete(value);
-  }, cancelOnError: true);
-  subscription.onData((T element) {
-    _runUserCode(() => combine(value, element), (S newValue) {
-      value = newValue;
-    }, _cancelAndErrorClosure(subscription, result));
-  });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/forEach.html b/doc/api/dart-async/Stream/forEach.html deleted file mode 100644 index a3b8c24b..00000000 --- a/doc/api/dart-async/Stream/forEach.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - forEach method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- Future - forEach -(void action(T element)) - -
-
-

Executes action on each element of this stream.

-

Completes the returned Future when all elements of this stream -have been processed.

-

If this stream emits an error, or if the call to action throws, -the returned future completes with that error, -and processing stops.

-
- -
-

Implementation

-
Future forEach(void action(T element)) {
-  _Future future = new _Future();
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    future._complete(null);
-  }, cancelOnError: true);
-  subscription.onData((T element) {
-    _runUserCode<void>(() => action(element), (_) {},
-        _cancelAndErrorClosure(subscription, future));
-  });
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/handleError.html b/doc/api/dart-async/Stream/handleError.html deleted file mode 100644 index f2036c3e..00000000 --- a/doc/api/dart-async/Stream/handleError.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - handleError method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
handleError
- -
- -
- - - -
-

handleError method

- -
- Stream<T> - handleError -(Function onError, { bool test(dynamic error) }) - -
-
-

Creates a wrapper Stream that intercepts some errors from this stream.

-

If this stream sends an error that matches test, then it is intercepted -by the onError function.

-

The onError callback must be of type void onError(Object error) or -void onError(Object error, StackTrace stackTrace). -The function type determines whether onError is invoked with a stack -trace argument. -The stack trace argument may be null if this stream received an error -without a stack trace.

-

An asynchronous error error is matched by a test function if -test(error) returns true. If test is omitted, every error is considered -matching.

-

If the error is intercepted, the onError function can decide what to do -with it. It can throw if it wants to raise a new (or the same) error, -or simply return to make this stream forget the error. -If the received error value is thrown again by the onError function, -it acts like a rethrow and it is emitted along with its original -stack trace, not the stack trace of the throw inside onError.

-

If you need to transform an error into a data event, use the more generic -Stream.transform to handle the event by writing a data event to -the output sink.

-

The returned stream is a broadcast stream if this stream is. -If a broadcast stream is listened to more than once, each subscription -will individually perform the test and handle the error.

-
- -
-

Implementation

-
Stream<T> handleError(Function onError, {bool test(error)?}) {
-  return new _HandleErrorStream<T>(this, onError, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/isBroadcast.html b/doc/api/dart-async/Stream/isBroadcast.html deleted file mode 100644 index 7ba78940..00000000 --- a/doc/api/dart-async/Stream/isBroadcast.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - isBroadcast property - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
isBroadcast
- -
- -
- - - -
-

isBroadcast property

- - -
- -
- bool - isBroadcast - -
- -
-

Whether this stream is a broadcast stream.

-
-
-

Implementation

-
bool get isBroadcast => false;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/isEmpty.html b/doc/api/dart-async/Stream/isEmpty.html deleted file mode 100644 index 18ab2845..00000000 --- a/doc/api/dart-async/Stream/isEmpty.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - isEmpty property - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- Future<bool> - isEmpty - -
- -
-

Whether this stream contains any elements.

-

Waits for the first element of this stream, then completes the returned -future with false. -If this stream ends without emitting any elements, the returned future is -completed with true.

-

If the first event is an error, the returned future is completed with that -error.

-

This operation listens to this stream, and a non-broadcast stream cannot -be reused after checking whether it is empty.

-
-
-

Implementation

-
Future<bool> get isEmpty {
-  _Future<bool> future = new _Future<bool>();
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    future._complete(true);
-  }, cancelOnError: true);
-  subscription.onData((_) {
-    _cancelAndValue(subscription, future, false);
-  });
-  return future;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/join.html b/doc/api/dart-async/Stream/join.html deleted file mode 100644 index 402c302d..00000000 --- a/doc/api/dart-async/Stream/join.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - join method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
join
- -
- -
- - - -
-

join method

- -
- Future<String> - join -([String separator = "" ]) - -
-
-

Combines the string representation of elements into a single string.

-

Each element is converted to a string using its Object.toString method. -If separator is provided, it is inserted between element string -representations.

-

The returned future is completed with the combined string when this stream -is done.

-

If this stream emits an error, or the call to Object.toString throws, -the returned future is completed with that error, -and processing stops.

-
- -
-

Implementation

-
Future<String> join([String separator = ""]) {
-  _Future<String> result = new _Future<String>();
-  StringBuffer buffer = new StringBuffer();
-  bool first = true;
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: result._completeError, onDone: () {
-    result._complete(buffer.toString());
-  }, cancelOnError: true);
-  subscription.onData(separator.isEmpty
-      ? (T element) {
-          try {
-            buffer.write(element);
-          } catch (e, s) {
-            _cancelAndErrorWithReplacement(subscription, result, e, s);
-          }
-        }
-      : (T element) {
-          if (!first) {
-            buffer.write(separator);
-          }
-          first = false;
-          try {
-            buffer.write(element);
-          } catch (e, s) {
-            _cancelAndErrorWithReplacement(subscription, result, e, s);
-          }
-        });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/last.html b/doc/api/dart-async/Stream/last.html deleted file mode 100644 index 7fc28a9e..00000000 --- a/doc/api/dart-async/Stream/last.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - last property - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- Future<T> - last - -
- -
-

The last element of this stream.

-

If this stream emits an error event, -the returned future is completed with that error -and processing stops.

-

If this stream is empty (the done event is the first event), -the returned future completes with an error.

-
-
-

Implementation

-
Future<T> get last {
-  _Future<T> future = new _Future<T>();
-  late T result;
-  bool foundResult = false;
-  listen(
-      (T value) {
-        foundResult = true;
-        result = value;
-      },
-      onError: future._completeError,
-      onDone: () {
-        if (foundResult) {
-          future._complete(result);
-          return;
-        }
-        try {
-          throw IterableElementError.noElement();
-        } catch (e, s) {
-          _completeWithErrorCallback(future, e, s);
-        }
-      },
-      cancelOnError: true);
-  return future;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/lastWhere.html b/doc/api/dart-async/Stream/lastWhere.html deleted file mode 100644 index 129bba8c..00000000 --- a/doc/api/dart-async/Stream/lastWhere.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - lastWhere method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastWhere
- -
- -
- - - -
-

lastWhere method

- -
- Future<T> - lastWhere -(bool test(T element), { T orElse() }) - -
-
-

Finds the last element in this stream matching test.

-

If this stream emits an error, the returned future is completed with that -error, and processing stops.

-

Otherwise as firstWhere, except that the last matching element is found -instead of the first. -That means that a non-error result cannot be provided before this stream -is done.

-
- -
-

Implementation

-
Future<T> lastWhere(bool test(T element), {T orElse()?}) {
-  _Future<T> future = new _Future();
-  late T result;
-  bool foundResult = false;
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    if (foundResult) {
-      future._complete(result);
-      return;
-    }
-    if (orElse != null) {
-      _runUserCode(orElse, future._complete, future._completeError);
-      return;
-    }
-    try {
-      throw IterableElementError.noElement();
-    } catch (e, s) {
-      _completeWithErrorCallback(future, e, s);
-    }
-  }, cancelOnError: true);
-
-  subscription.onData((T value) {
-    _runUserCode(() => test(value), (bool isMatch) {
-      if (isMatch) {
-        foundResult = true;
-        result = value;
-      }
-    }, _cancelAndErrorClosure(subscription, future));
-  });
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/length.html b/doc/api/dart-async/Stream/length.html deleted file mode 100644 index 26d46ad0..00000000 --- a/doc/api/dart-async/Stream/length.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - length property - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- Future<int> - length - -
- -
-

The number of elements in this stream.

-

Waits for all elements of this stream. When this stream ends, -the returned future is completed with the number of elements.

-

If this stream emits an error, -the returned future is completed with that error, -and processing stops.

-

This operation listens to this stream, and a non-broadcast stream cannot -be reused after finding its length.

-
-
-

Implementation

-
Future<int> get length {
-  _Future<int> future = new _Future<int>();
-  int count = 0;
-  this.listen(
-      (_) {
-        count++;
-      },
-      onError: future._completeError,
-      onDone: () {
-        future._complete(count);
-      },
-      cancelOnError: true);
-  return future;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/listen.html b/doc/api/dart-async/Stream/listen.html deleted file mode 100644 index d305058f..00000000 --- a/doc/api/dart-async/Stream/listen.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - listen method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
listen
- -
- -
- - - -
-

listen method

- -
- StreamSubscription<T> - listen -(void onData(T event), { Function onError, void onDone(), bool cancelOnError }) - -
-
-

Adds a subscription to this stream.

-

Returns a StreamSubscription which handles events from this stream using -the provided onData, onError and onDone handlers. -The handlers can be changed on the subscription, but they start out -as the provided functions.

-

On each data event from this stream, the subscriber's onData handler -is called. If onData is null, nothing happens.

-

On errors from this stream, the onError handler is called with the -error object and possibly a stack trace.

-

The onError callback must be of type void onError(Object error) or -void onError(Object error, StackTrace stackTrace). If onError accepts -two arguments it is called with the error object and the stack trace -(which could be null if this stream itself received an error without -stack trace). -Otherwise it is called with just the error object. -If onError is omitted, any errors on this stream are considered unhandled, -and will be passed to the current Zone's error handler. -By default unhandled async errors are treated -as if they were uncaught top-level errors.

-

If this stream closes and sends a done event, the onDone handler is -called. If onDone is null, nothing happens.

-

If cancelOnError is true, the subscription is automatically canceled -when the first error event is delivered. The default is false.

-

While a subscription is paused, or when it has been canceled, -the subscription doesn't receive events and none of the -event handler functions are called.

-
- -
-

Implementation

-
StreamSubscription<T> listen(void onData(T event)?,
-    {Function? onError, void onDone()?, bool? cancelOnError});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/map.html b/doc/api/dart-async/Stream/map.html deleted file mode 100644 index ceceed64..00000000 --- a/doc/api/dart-async/Stream/map.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - map method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<S> method

- -
- Stream<S> - map -<S>(S convert(T event)) - -
-
-

Transforms each element of this stream into a new stream event.

-

Creates a new stream that converts each element of this stream -to a new value using the convert function, and emits the result.

-

For each data event, o, in this stream, the returned stream -provides a data event with the value convert(o). -If convert throws, the returned stream reports it as an error -event instead.

-

Error and done events are passed through unchanged to the returned stream.

-

The returned stream is a broadcast stream if this stream is. -The convert function is called once per data event per listener. -If a broadcast stream is listened to more than once, each subscription -will individually call convert on each data event.

-

Unlike transform, this method does not treat the stream as -chunks of a single value. Instead each event is converted independently -of the previous and following events, which may not always be correct. -For example, UTF-8 encoding, or decoding, will give wrong results -if a surrogate pair, or a multibyte UTF-8 encoding, is split into -separate events, and those events are attempted encoded or decoded -independently.

-
- -
-

Implementation

-
Stream<S> map<S>(S convert(T event)) {
-  return new _MapStream<T, S>(this, convert);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/pipe.html b/doc/api/dart-async/Stream/pipe.html deleted file mode 100644 index 01e30a4c..00000000 --- a/doc/api/dart-async/Stream/pipe.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - pipe method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
pipe
- -
- -
- - - -
-

pipe method

- -
- Future - pipe -(StreamConsumer<T> streamConsumer) - -
-
-

Pipes the events of this stream into streamConsumer.

-

All events of this stream are added to streamConsumer using -StreamConsumer.addStream. -The streamConsumer is closed when this stream has been successfully added -to it - when the future returned by addStream completes without an error.

-

Returns a future which completes when this stream has been consumed -and the consumer has been closed.

-

The returned future completes with the same result as the future returned -by StreamConsumer.close. -If the call to StreamConsumer.addStream fails in some way, this -method fails in the same way.

-
- -
-

Implementation

-
Future pipe(StreamConsumer<T> streamConsumer) {
-  return streamConsumer.addStream(this).then((_) => streamConsumer.close());
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/reduce.html b/doc/api/dart-async/Stream/reduce.html deleted file mode 100644 index 377e8d54..00000000 --- a/doc/api/dart-async/Stream/reduce.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - - reduce method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
reduce
- -
- -
- - - -
-

reduce method

- -
- Future<T> - reduce -(T combine(T previous T element)) - -
-
-

Combines a sequence of values by repeatedly applying combine.

-

Similar to Iterable.reduce, this function maintains a value, -starting with the first element of this stream -and updated for each further element of this stream. -For each element after the first, -the value is updated to the result of calling combine -with the previous value and the element.

-

When this stream is done, the returned future is completed with -the value at that time.

-

If this stream is empty, the returned future is completed with -an error. -If this stream emits an error, or the call to combine throws, -the returned future is completed with that error, -and processing is stopped.

-
- -
-

Implementation

-
Future<T> reduce(T combine(T previous, T element)) {
-  _Future<T> result = new _Future<T>();
-  bool seenFirst = false;
-  late T value;
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: result._completeError, onDone: () {
-    if (!seenFirst) {
-      try {
-        // Throw and recatch, instead of just doing
-        //  _completeWithErrorCallback, e, theError, StackTrace.current),
-        // to ensure that the stackTrace is set on the error.
-        throw IterableElementError.noElement();
-      } catch (e, s) {
-        _completeWithErrorCallback(result, e, s);
-      }
-    } else {
-      result._complete(value);
-    }
-  }, cancelOnError: true);
-  subscription.onData((T element) {
-    if (seenFirst) {
-      _runUserCode(() => combine(value, element), (T newValue) {
-        value = newValue;
-      }, _cancelAndErrorClosure(subscription, result));
-    } else {
-      value = element;
-      seenFirst = true;
-    }
-  });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/single.html b/doc/api/dart-async/Stream/single.html deleted file mode 100644 index a3ba8966..00000000 --- a/doc/api/dart-async/Stream/single.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - single property - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- Future<T> - single - -
- -
-

The single element of this stream.

-

If this stream emits an error event, -the returned future is completed with that error -and processing stops.

-

If this is empty or has more than one element, -the returned future completes with an error.

-
-
-

Implementation

-
Future<T> get single {
-  _Future<T> future = new _Future<T>();
-  late T result;
-  bool foundResult = false;
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    if (foundResult) {
-      future._complete(result);
-      return;
-    }
-    try {
-      throw IterableElementError.noElement();
-    } catch (e, s) {
-      _completeWithErrorCallback(future, e, s);
-    }
-  }, cancelOnError: true);
-  subscription.onData((T value) {
-    if (foundResult) {
-      // This is the second element we get.
-      try {
-        throw IterableElementError.tooMany();
-      } catch (e, s) {
-        _cancelAndErrorWithReplacement(subscription, future, e, s);
-      }
-      return;
-    }
-    foundResult = true;
-    result = value;
-  });
-  return future;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/singleWhere.html b/doc/api/dart-async/Stream/singleWhere.html deleted file mode 100644 index 5c6f1ed3..00000000 --- a/doc/api/dart-async/Stream/singleWhere.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - singleWhere method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
singleWhere
- -
- -
- - - -
-

singleWhere method

- -
- Future<T> - singleWhere -(bool test(T element), { T orElse() }) - -
-
-

Finds the single element in this stream matching test.

-

Like lastWhere, except that it is an error if more than one -matching element occurs in this stream.

-
- -
-

Implementation

-
Future<T> singleWhere(bool test(T element), {T orElse()?}) {
-  _Future<T> future = new _Future<T>();
-  late T result;
-  bool foundResult = false;
-  StreamSubscription<T> subscription =
-      this.listen(null, onError: future._completeError, onDone: () {
-    if (foundResult) {
-      future._complete(result);
-      return;
-    }
-    if (orElse != null) {
-      _runUserCode(orElse, future._complete, future._completeError);
-      return;
-    }
-    try {
-      throw IterableElementError.noElement();
-    } catch (e, s) {
-      _completeWithErrorCallback(future, e, s);
-    }
-  }, cancelOnError: true);
-
-  subscription.onData((T value) {
-    _runUserCode(() => test(value), (bool isMatch) {
-      if (isMatch) {
-        if (foundResult) {
-          try {
-            throw IterableElementError.tooMany();
-          } catch (e, s) {
-            _cancelAndErrorWithReplacement(subscription, future, e, s);
-          }
-          return;
-        }
-        foundResult = true;
-        result = value;
-      }
-    }, _cancelAndErrorClosure(subscription, future));
-  });
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/skip.html b/doc/api/dart-async/Stream/skip.html deleted file mode 100644 index 7e2fdbd3..00000000 --- a/doc/api/dart-async/Stream/skip.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - skip method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
skip
- -
- -
- - - -
-

skip method

- -
- Stream<T> - skip -(int count) - -
-
-

Skips the first count data events from this stream.

-

Returns a stream that emits the same events as this stream would -if listened to at the same time, except that the first count -data events are not emitted. -The returned stream is done when this stream is.

-

If this stream emits fewer than count data events -before being done, the returned stream emits no data events.

-

The returned stream is a broadcast stream if this stream is. -For a broadcast stream, the events are only counted from the time -the returned stream is listened to.

-
- -
-

Implementation

-
Stream<T> skip(int count) {
-  return new _SkipStream<T>(this, count);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/skipWhile.html b/doc/api/dart-async/Stream/skipWhile.html deleted file mode 100644 index 32ecf85b..00000000 --- a/doc/api/dart-async/Stream/skipWhile.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - skipWhile method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
skipWhile
- -
- -
- - - -
-

skipWhile method

- -
- Stream<T> - skipWhile -(bool test(T element)) - -
-
-

Skip data events from this stream while they are matched by test.

-

Returns a stream that emits the same events as this stream, -except that data events are not emitted until a data event fails test. -The test fails when called with a data event -if it returns a non-true value or if the call to test throws. -If the call throws, the error is emitted as an error event -on the returned stream instead of the data event, -otherwise the event that made test return non-true is emitted as the -first data event.

-

Error and done events are provided by the returned stream unmodified.

-

The returned stream is a broadcast stream if this stream is. -For a broadcast stream, the events are only tested from the time -the returned stream is listened to.

-
- -
-

Implementation

-
Stream<T> skipWhile(bool test(T element)) {
-  return new _SkipWhileStream<T>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/take.html b/doc/api/dart-async/Stream/take.html deleted file mode 100644 index 67726969..00000000 --- a/doc/api/dart-async/Stream/take.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - take method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
take
- -
- -
- - - -
-

take method

- -
- Stream<T> - take -(int count) - -
-
-

Provides at most the first count data events of this stream.

-

Returns a stream that emits the same events that this stream would -if listened to at the same time, -until either this stream ends or it has emitted count data events, -at which point the returned stream is done.

-

If this stream produces fewer than count data events before it's done, -so will the returned stream.

-

Starts listening to this stream when the returned stream is listened to -and stops listening when the first count data events have been received.

-

This means that if this is a single-subscription (non-broadcast) streams -it cannot be reused after the returned stream has been listened to.

-

If this is a broadcast stream, the returned stream is a broadcast stream. -In that case, the events are only counted from the time -the returned stream is listened to.

-
- -
-

Implementation

-
Stream<T> take(int count) {
-  return new _TakeStream<T>(this, count);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/takeWhile.html b/doc/api/dart-async/Stream/takeWhile.html deleted file mode 100644 index 41a53712..00000000 --- a/doc/api/dart-async/Stream/takeWhile.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - takeWhile method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
takeWhile
- -
- -
- - - -
-

takeWhile method

- -
- Stream<T> - takeWhile -(bool test(T element)) - -
-
-

Forwards data events while test is successful.

-

Returns a stream that provides the same events as this stream -until test fails for a data event. -The returned stream is done when either this stream is done, -or when this stream first emits a data event that fails test.

-

The test call is considered failing if it returns a non-true value -or if it throws. If the test call throws, the error is emitted as the -last event on the returned streams.

-

Stops listening to this stream after the accepted elements.

-

Internally the method cancels its subscription after these elements. This -means that single-subscription (non-broadcast) streams are closed and -cannot be reused after a call to this method.

-

The returned stream is a broadcast stream if this stream is. -For a broadcast stream, the events are only tested from the time -the returned stream is listened to.

-
- -
-

Implementation

-
Stream<T> takeWhile(bool test(T element)) {
-  return new _TakeWhileStream<T>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/timeout.html b/doc/api/dart-async/Stream/timeout.html deleted file mode 100644 index ec5d6532..00000000 --- a/doc/api/dart-async/Stream/timeout.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - timeout method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
timeout
- -
- -
- - - -
-

timeout method

- -
- Stream<T> - timeout -(Duration timeLimit, { void onTimeout(EventSink<T> sink) }) - -
-
-

Creates a new stream with the same events as this stream.

-

Whenever more than timeLimit passes between two events from this stream, -the onTimeout function is called, which can emit further events on -the returned stream.

-

The countdown doesn't start until the returned stream is listened to. -The countdown is reset every time an event is forwarded from this stream, -or when this stream is paused and resumed.

-

The onTimeout function is called with one argument: an -EventSink that allows putting events into the returned stream. -This EventSink is only valid during the call to onTimeout. -Calling EventSink.close on the sink passed to onTimeout closes the -returned stream, and no further events are processed.

-

If onTimeout is omitted, a timeout will just put a TimeoutException -into the error channel of the returned stream. -If the call to onTimeout throws, the error is emitted on the returned -stream.

-

The returned stream is a broadcast stream if this stream is. -If a broadcast stream is listened to more than once, each subscription -will have its individually timer that starts counting on listen, -and the subscriptions' timers can be paused individually.

-
- -
-

Implementation

-
Stream<T> timeout(Duration timeLimit, {void onTimeout(EventSink<T> sink)?}) {
-  _StreamControllerBase<T> controller;
-  if (isBroadcast) {
-    controller = new _SyncBroadcastStreamController<T>(null, null);
-  } else {
-    controller = new _SyncStreamController<T>(null, null, null, null);
-  }
-
-  Zone zone = Zone.current;
-  // Register callback immediately.
-  _TimerCallback timeoutCallback;
-  if (onTimeout == null) {
-    timeoutCallback = () {
-      controller.addError(
-          new TimeoutException("No stream event", timeLimit), null);
-    };
-  } else {
-    // TODO(floitsch): the return type should be 'void', and the type
-    // should be inferred.
-    var registeredOnTimeout =
-        zone.registerUnaryCallback<void, EventSink<T>>(onTimeout);
-    var wrapper = new _ControllerEventSinkWrapper<T>(null);
-    timeoutCallback = () {
-      wrapper._sink = controller; // Only valid during call.
-      zone.runUnaryGuarded(registeredOnTimeout, wrapper);
-      wrapper._sink = null;
-    };
-  }
-
-  // All further setup happens inside `onListen`.
-  controller.onListen = () {
-    Timer timer = zone.createTimer(timeLimit, timeoutCallback);
-    var subscription = this.listen(null);
-    // Set up event forwarding. Each data or error event resets the timer
-    subscription
-      ..onData((T event) {
-        timer.cancel();
-        timer = zone.createTimer(timeLimit, timeoutCallback);
-        // Controller is synchronous, and the call might close the stream
-        // and cancel the timer,
-        // so create the Timer before calling into add();
-        // issue: https://github.com/dart-lang/sdk/issues/37565
-        controller.add(event);
-      })
-      ..onError((Object error, StackTrace stackTrace) {
-        timer.cancel();
-        timer = zone.createTimer(timeLimit, timeoutCallback);
-        controller._addError(
-            error, stackTrace); // Avoid Zone error replacement.
-      })
-      ..onDone(() {
-        timer.cancel();
-        controller.close();
-      });
-    // Set up further controller callbacks.
-    controller.onCancel = () {
-      timer.cancel();
-      return subscription.cancel();
-    };
-    if (!isBroadcast) {
-      controller
-        ..onPause = () {
-          timer.cancel();
-          subscription.pause();
-        }
-        ..onResume = () {
-          subscription.resume();
-          timer = zone.createTimer(timeLimit, timeoutCallback);
-        };
-    }
-  };
-
-  return controller.stream;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/toList.html b/doc/api/dart-async/Stream/toList.html deleted file mode 100644 index fdc69e82..00000000 --- a/doc/api/dart-async/Stream/toList.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - toList method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
toList
- -
- -
- - - -
-

toList method

- -
- Future<List<T>> - toList -() - -
-
-

Collects all elements of this stream in a List.

-

Creates a List<T> and adds all elements of this stream to the list -in the order they arrive. -When this stream ends, the returned future is completed with that list.

-

If this stream emits an error, -the returned future is completed with that error, -and processing stops.

-
- -
-

Implementation

-
Future<List<T>> toList() {
-  List<T> result = <T>[];
-  _Future<List<T>> future = new _Future<List<T>>();
-  this.listen(
-      (T data) {
-        result.add(data);
-      },
-      onError: future._completeError,
-      onDone: () {
-        future._complete(result);
-      },
-      cancelOnError: true);
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/toSet.html b/doc/api/dart-async/Stream/toSet.html deleted file mode 100644 index f486cacf..00000000 --- a/doc/api/dart-async/Stream/toSet.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - toSet method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSet
- -
- -
- - - -
-

toSet method

- -
- Future<Set<T>> - toSet -() - -
-
-

Collects the data of this stream in a Set.

-

Creates a Set<T> and adds all elements of this stream to the set. -in the order they arrive. -When this stream ends, the returned future is completed with that set.

-

The returned set is the same type as returned by new Set<T>(). -If another type of set is needed, either use forEach to add each -element to the set, or use -toList().then((list) => new SomeOtherSet.from(list)) -to create the set.

-

If this stream emits an error, -the returned future is completed with that error, -and processing stops.

-
- -
-

Implementation

-
Future<Set<T>> toSet() {
-  Set<T> result = new Set<T>();
-  _Future<Set<T>> future = new _Future<Set<T>>();
-  this.listen(
-      (T data) {
-        result.add(data);
-      },
-      onError: future._completeError,
-      onDone: () {
-        future._complete(result);
-      },
-      cancelOnError: true);
-  return future;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/transform.html b/doc/api/dart-async/Stream/transform.html deleted file mode 100644 index f1ca60aa..00000000 --- a/doc/api/dart-async/Stream/transform.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - transform method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
transform
- -
- -
- - - -
-

transform<S> method

- -
- Stream<S> - transform -<S>(StreamTransformer<T, S> streamTransformer) - -
-
-

Applies streamTransformer to this stream.

-

Returns the transformed stream, -that is, the result of streamTransformer.bind(this). -This method simply allows writing the call to streamTransformer.bind -in a chained fashion, like

-
stream.map(mapping).transform(transformation).toList()
-
-

which can be more convenient than calling bind directly.

-

The streamTransformer can return any stream. -Whether the returned stream is a broadcast stream or not, -and which elements it will contain, -is entirely up to the transformation.

-

This method should always be used for transformations which treat -the entire stream as representing a single value -which has perhaps been split into several parts for transport, -like a file being read from disk or being fetched over a network. -The transformation will then produce a new stream which -transforms the stream's value incrementally (perhaps using -Converter.startChunkedConversion). The resulting stream -may again be chunks of the result, but does not have to -correspond to specific events from the source string.

-
- -
-

Implementation

-
Stream<S> transform<S>(StreamTransformer<T, S> streamTransformer) {
-  return streamTransformer.bind(this);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Stream/where.html b/doc/api/dart-async/Stream/where.html deleted file mode 100644 index e38ba801..00000000 --- a/doc/api/dart-async/Stream/where.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - where method - Stream class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
where
- -
- -
- - - -
-

where method

- -
- Stream<T> - where -(bool test(T event)) - -
-
-

Creates a new stream from this stream that discards some elements.

-

The new stream sends the same error and done events as this stream, -but it only sends the data events that satisfy the test.

-

If the test function throws, the data event is dropped and the -error is emitted on the returned stream instead.

-

The returned stream is a broadcast stream if this stream is. -If a broadcast stream is listened to more than once, each subscription -will individually perform the test.

-
- -
-

Implementation

-
Stream<T> where(bool test(T event)) {
-  return new _WhereStream<T>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamConsumer-class.html b/doc/api/dart-async/StreamConsumer-class.html deleted file mode 100644 index 6b50a616..00000000 --- a/doc/api/dart-async/StreamConsumer-class.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - StreamConsumer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamConsumer
- -
- -
- - - -
-

StreamConsumer<S> class

- -
-

Abstract interface for a "sink" accepting multiple entire streams.

-

A consumer can accept a number of consecutive streams using addStream, -and when no further data need to be added, the close method tells the -consumer to complete its work and shut down.

-

The Stream.pipe accepts a StreamConsumer and will pass the stream -to the consumer's addStream method. When that completes, it will -call close and then complete its own returned future.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- StreamConsumer() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addStream(Stream<S> stream) - Future - -
-
- Consumes the elements of stream. [...] - -
-
- close() - Future - -
-
- Tells the consumer that no further streams will be added. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamConsumer/StreamConsumer.html b/doc/api/dart-async/StreamConsumer/StreamConsumer.html deleted file mode 100644 index bf109ea3..00000000 --- a/doc/api/dart-async/StreamConsumer/StreamConsumer.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - StreamConsumer constructor - StreamConsumer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamConsumer
- -
- -
- - - -
-

StreamConsumer<S> constructor

- -
- - StreamConsumer<S>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamConsumer/addStream.html b/doc/api/dart-async/StreamConsumer/addStream.html deleted file mode 100644 index e8029454..00000000 --- a/doc/api/dart-async/StreamConsumer/addStream.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - addStream method - StreamConsumer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
addStream
- -
- -
- - - -
-

addStream method

- -
- Future - addStream -(Stream<S> stream) - -
-
-

Consumes the elements of stream.

-

Listens on stream and does something for each event.

-

Returns a future which is completed when the stream is done being added, -and the consumer is ready to accept a new stream. -No further calls to addStream or close should happen before the -returned future has completed.

-

The consumer may stop listening to the stream after an error, -it may consume all the errors and only stop at a done event, -or it may be canceled early if the receiver don't want any further events.

-

If the consumer stops listening because of some error preventing it -from continuing, it may report this error in the returned future, -otherwise it will just complete the future with null.

-
- -
-

Implementation

-
Future addStream(Stream<S> stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamConsumer/close.html b/doc/api/dart-async/StreamConsumer/close.html deleted file mode 100644 index 606bd5b2..00000000 --- a/doc/api/dart-async/StreamConsumer/close.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - close method - StreamConsumer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- Future - close -() - -
-
-

Tells the consumer that no further streams will be added.

-

This allows the consumer to complete any remaining work and release -resources that are no longer needed

-

Returns a future which is completed when the consumer has shut down. -If cleaning up can fail, the error may be reported in the returned future, -otherwise it completes with null.

-
- -
-

Implementation

-
Future close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController-class.html b/doc/api/dart-async/StreamController-class.html deleted file mode 100644 index b6ccb987..00000000 --- a/doc/api/dart-async/StreamController-class.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - - - - - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamController
- -
- -
- - - -
-

StreamController<T> class

- -
-

A controller with the stream it controls.

-

This controller allows sending data, error and done events on -its stream. -This class can be used to create a simple stream that others -can listen on, and to push events to that stream.

-

It's possible to check whether the stream is paused or not, and whether -it has subscribers or not, as well as getting a callback when either of -these change.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- StreamController({void onListen(), void onPause(), void onResume(), FutureOr<void> onCancel(), bool sync: false }) -
-
- A controller with a stream that supports only one single subscriber. [...] -
factory
-
-
- StreamController.broadcast({void onListen(), void onCancel(), bool sync: false }) -
-
- A controller where stream can be listened to more than once. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- done - Future -
-
- A future which is completed when the stream controller is done -sending events. [...] -
read-only, override
-
-
- hasListener - bool -
-
- Whether there is a subscriber on the Stream. -
read-only
-
-
- isClosed - bool -
-
- Whether the stream controller is closed for adding more events. [...] -
read-only
-
-
- isPaused - bool -
-
- Whether the subscription would need to buffer events. [...] -
read-only
-
-
- onCancel - FutureOr<void> Function() -
-
- The callback which is called when the stream is canceled. [...] -
read / write
-
-
- onListen - ↔ void Function() -
-
- The callback which is called when the stream is listened to. [...] -
read / write
-
-
- onPause - ↔ void Function() -
-
- The callback which is called when the stream is paused. [...] -
read / write
-
-
- onResume - ↔ void Function() -
-
- The callback which is called when the stream is resumed. [...] -
read / write
-
-
- sink - StreamSink<T> -
-
- Returns a view of this object that only exposes the StreamSink interface. -
read-only
-
-
- stream - Stream<T> -
-
- The stream that this controller is controlling. -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(T event) - → void - -
-
- Sends a data event. [...] -
override
-
-
- addError(Object error, [ StackTrace stackTrace ]) - → void - -
-
- Sends or enqueues an error event. [...] -
override
-
-
- addStream(Stream<T> source, { bool cancelOnError }) - Future - -
-
- Receives events from source and puts them into this controller's stream. [...] -
override
-
-
- close() - Future - -
-
- Closes the stream. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/StreamController.broadcast.html b/doc/api/dart-async/StreamController/StreamController.broadcast.html deleted file mode 100644 index a3e124bd..00000000 --- a/doc/api/dart-async/StreamController/StreamController.broadcast.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - StreamController.broadcast constructor - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamController.broadcast
- -
- -
- - - -
-

StreamController<T>.broadcast constructor

- -
- - StreamController<T>.broadcast({void onListen(), void onCancel(), bool sync: false }) -
- -
-

A controller where stream can be listened to more than once.

-

The Stream returned by stream is a broadcast stream. -It can be listened to more than once.

-

A Stream should be inert until a subscriber starts listening on it (using -the onListen callback to start producing events). Streams should not -leak resources (like websockets) when no user ever listens on the stream.

-

Broadcast streams do not buffer events when there is no listener.

-

The controller distributes any events to all currently subscribed -listeners at the time when add, addError or close is called. -It is not allowed to call add, addError, or close before a previous -call has returned. The controller does not have any internal queue of -events, and if there are no listeners at the time the event is added, -it will just be dropped, or, if it is an error, be reported as uncaught.

-

Each listener subscription is handled independently, -and if one pauses, only the pausing listener is affected. -A paused listener will buffer events internally until unpaused or canceled.

-

If sync is true, events may be fired directly by the stream's -subscriptions during an add, addError or close call. -The returned stream controller is a SynchronousStreamController, -and must be used with the care and attention necessary to not break -the Stream contract. -See Completer.sync for some explanations on when a synchronous -dispatching can be used. -If in doubt, keep the controller non-sync.

-

If sync is false, the event will always be fired at a later time, -after the code adding the event has completed. -In that case, no guarantees are given with regard to when -multiple listeners get the events, except that each listener will get -all events in the correct order. Each subscription handles the events -individually. -If two events are sent on an async controller with two listeners, -one of the listeners may get both events -before the other listener gets any. -A listener must be subscribed both when the event is initiated -(that is, when add is called) -and when the event is later delivered, -in order to receive the event.

-

The onListen callback is called when the first listener is subscribed, -and the onCancel is called when there are no longer any active listeners. -If a listener is added again later, after the onCancel was called, -the onListen will be called again.

-
- -
-

Implementation

-
factory StreamController.broadcast(
-    {void onListen()?, void onCancel()?, bool sync = false}) {
-  return sync
-      ? _SyncBroadcastStreamController<T>(onListen, onCancel)
-      : _AsyncBroadcastStreamController<T>(onListen, onCancel);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/StreamController.html b/doc/api/dart-async/StreamController/StreamController.html deleted file mode 100644 index 6d0484e4..00000000 --- a/doc/api/dart-async/StreamController/StreamController.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - StreamController constructor - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamController
- -
- -
- - - -
-

StreamController<T> constructor

- -
- - StreamController<T>({void onListen(), void onPause(), void onResume(), FutureOr<void> onCancel(), bool sync: false }) -
- -
-

A controller with a stream that supports only one single subscriber.

-

If sync is true, the returned stream controller is a -SynchronousStreamController, and must be used with the care -and attention necessary to not break the Stream contract. If in doubt, -use the non-sync version.

-

Using an asynchronous controller will never give the wrong -behavior, but using a synchronous controller incorrectly can cause -otherwise correct programs to break.

-

A synchronous controller is only intended for optimizing event -propagation when one asynchronous event immediately triggers another. -It should not be used unless the calls to add or addError -are guaranteed to occur in places where it won't break Stream invariants.

-

Use synchronous controllers only to forward (potentially transformed) -events from another stream or a future.

-

A Stream should be inert until a subscriber starts listening on it (using -the onListen callback to start producing events). Streams should not -leak resources (like websockets) when no user ever listens on the stream.

-

The controller buffers all incoming events until a subscriber is -registered, but this feature should only be used in rare circumstances.

-

The onPause function is called when the stream becomes -paused. onResume is called when the stream resumed.

-

The onListen callback is called when the stream -receives its listener and onCancel when the listener ends -its subscription. If onCancel needs to perform an asynchronous operation, -onCancel should return a future that completes when the cancel operation -is done.

-

If the stream is canceled before the controller needs data the -onResume call might not be executed.

-
- -
-

Implementation

-
factory StreamController(
-    {void onListen()?,
-    void onPause()?,
-    void onResume()?,
-    FutureOr<void> onCancel()?,
-    bool sync = false}) {
-  return sync
-      ? _SyncStreamController<T>(onListen, onPause, onResume, onCancel)
-      : _AsyncStreamController<T>(onListen, onPause, onResume, onCancel);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/add.html b/doc/api/dart-async/StreamController/add.html deleted file mode 100644 index 2b0cba3f..00000000 --- a/doc/api/dart-async/StreamController/add.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - add method - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(T event) -
override
-
-
-

Sends a data event.

-

Listeners receive this event in a later microtask.

-

Note that a synchronous controller (created by passing true to the sync -parameter of the StreamController constructor) delivers events -immediately. Since this behavior violates the contract mentioned here, -synchronous controllers should only be used as described in the -documentation to ensure that the delivered events always appear as if -they were delivered in a separate microtask.

-
- -
-

Implementation

-
void add(T event);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/addError.html b/doc/api/dart-async/StreamController/addError.html deleted file mode 100644 index 43efe41a..00000000 --- a/doc/api/dart-async/StreamController/addError.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - addError method - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
addError
- -
- -
- - - -
-

addError method

- -
- void - addError -(Object error, [ StackTrace stackTrace ]) -
override
-
-
-

Sends or enqueues an error event.

-

If error is null, it is replaced by a NullThrownError.

-

Listeners receive this event at a later microtask. This behavior can be -overridden by using sync controllers. Note, however, that sync -controllers have to satisfy the preconditions mentioned in the -documentation of the constructors.

-
- -
-

Implementation

-
void addError(Object error, [StackTrace? stackTrace]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/addStream.html b/doc/api/dart-async/StreamController/addStream.html deleted file mode 100644 index 42cb2c35..00000000 --- a/doc/api/dart-async/StreamController/addStream.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - addStream method - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
addStream
- -
- -
- - - -
-

addStream method

- -
- Future - addStream -(Stream<T> source, { bool cancelOnError }) -
override
-
-
-

Receives events from source and puts them into this controller's stream.

-

Returns a future which completes when the source stream is done.

-

Events must not be added directly to this controller using add, -addError, close or addStream, until the returned future -is complete.

-

Data and error events are forwarded to this controller's stream. A done -event on the source will end the addStream operation and complete the -returned future.

-

If cancelOnError is true, only the first error on source is -forwarded to the controller's stream, and the addStream ends -after this. If cancelOnError is false, all errors are forwarded -and only a done event will end the addStream. -If cancelOnError is omitted or null, it defaults to false.

-
- -
-

Implementation

-
Future addStream(Stream<T> source, {bool? cancelOnError});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/close.html b/doc/api/dart-async/StreamController/close.html deleted file mode 100644 index 73b85714..00000000 --- a/doc/api/dart-async/StreamController/close.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - close method - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- Future - close -() -
override
-
-
-

Closes the stream.

-

No further events can be added to a closed stream.

-

The returned future is the same future provided by done. -It is completed when the stream listeners is done sending events, -This happens either when the done event has been sent, -or when the subscriber on a single-subscription stream is canceled.

-

A broadcast stream controller will send the done event -even if listeners are paused, so some broadcast events may not have been -received yet when the returned future completes.

-

If noone listens to a non-broadcast stream, -or the listener pauses and never resumes, -the done event will not be sent and this future will never complete.

-
- -
-

Implementation

-
Future close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/done.html b/doc/api/dart-async/StreamController/done.html deleted file mode 100644 index 68a0e132..00000000 --- a/doc/api/dart-async/StreamController/done.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - done property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
done
- -
- -
- - - -
-

done property

- - -
- -
- Future - done -
override
-
- -
-

A future which is completed when the stream controller is done -sending events.

-

This happens either when the done event has been sent, or if the -subscriber on a single-subscription stream is canceled.

-

A broadcast stream controller will send the done event -even if listeners are paused, so some broadcast events may not have been -received yet when the returned future completes.

-

If there is no listener on a non-broadcast stream, -or the listener pauses and never resumes, -the done event will not be sent and this future will never complete.

-
-
-

Implementation

-
Future get done;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/hasListener.html b/doc/api/dart-async/StreamController/hasListener.html deleted file mode 100644 index 900f4070..00000000 --- a/doc/api/dart-async/StreamController/hasListener.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - hasListener property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasListener
- -
- -
- - - -
-

hasListener property

- - -
- -
- bool - hasListener - -
- -
-

Whether there is a subscriber on the Stream.

-
-
-

Implementation

-
bool get hasListener;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/isClosed.html b/doc/api/dart-async/StreamController/isClosed.html deleted file mode 100644 index 4d8a4bf7..00000000 --- a/doc/api/dart-async/StreamController/isClosed.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - isClosed property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
isClosed
- -
- -
- - - -
-

isClosed property

- - -
- -
- bool - isClosed - -
- -
-

Whether the stream controller is closed for adding more events.

-

The controller becomes closed by calling the close method. -New events cannot be added, by calling add or addError, -to a closed controller.

-

If the controller is closed, -the "done" event might not have been delivered yet, -but it has been scheduled, and it is too late to add more events.

-
-
-

Implementation

-
bool get isClosed;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/isPaused.html b/doc/api/dart-async/StreamController/isPaused.html deleted file mode 100644 index 73812e46..00000000 --- a/doc/api/dart-async/StreamController/isPaused.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - isPaused property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
isPaused
- -
- -
- - - -
-

isPaused property

- - -
- -
- bool - isPaused - -
- -
-

Whether the subscription would need to buffer events.

-

This is the case if the controller's stream has a listener and it is -paused, or if it has not received a listener yet. In that case, the -controller is considered paused as well.

-

A broadcast stream controller is never considered paused. It always -forwards its events to all uncanceled subscriptions, if any, -and let the subscriptions handle their own pausing and buffering.

-
-
-

Implementation

-
bool get isPaused;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/onCancel.html b/doc/api/dart-async/StreamController/onCancel.html deleted file mode 100644 index 06b858aa..00000000 --- a/doc/api/dart-async/StreamController/onCancel.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - onCancel property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
onCancel
- -
- -
- - - -
-

onCancel property

- - -
- -
- FutureOr<void> Function() - onCancel - -
- -
-

The callback which is called when the stream is canceled.

-

May be set to null, in which case no callback will happen.

-
-
-

Implementation

-
FutureOr<void> Function()? get onCancel;
-
-
- -
- -
- void - onCancel= -(FutureOr<void> onCancelHandler()) - -
- -
-

Implementation

-
void set onCancel(FutureOr<void> onCancelHandler()?);
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/onListen.html b/doc/api/dart-async/StreamController/onListen.html deleted file mode 100644 index 0a2b6b11..00000000 --- a/doc/api/dart-async/StreamController/onListen.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - onListen property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
onListen
- -
- -
- - - -
-

onListen property

- - -
- -
- void Function() - onListen - -
- -
-

The callback which is called when the stream is listened to.

-

May be set to null, in which case no callback will happen.

-
-
-

Implementation

-
void Function()? get onListen;
-
-
- -
- -
- void - onListen= -(void onListenHandler()) - -
- -
-

Implementation

-
void set onListen(void onListenHandler()?);
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/onPause.html b/doc/api/dart-async/StreamController/onPause.html deleted file mode 100644 index 0951dbdb..00000000 --- a/doc/api/dart-async/StreamController/onPause.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - onPause property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
onPause
- -
- -
- - - -
-

onPause property

- - -
- -
- void Function() - onPause - -
- -
-

The callback which is called when the stream is paused.

-

May be set to null, in which case no callback will happen.

-

Pause related callbacks are not supported on broadcast stream controllers.

-
-
-

Implementation

-
void Function()? get onPause;
-
-
- -
- -
- void - onPause= -(void onPauseHandler()) - -
- -
-

Implementation

-
void set onPause(void onPauseHandler()?);
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/onResume.html b/doc/api/dart-async/StreamController/onResume.html deleted file mode 100644 index 952725c0..00000000 --- a/doc/api/dart-async/StreamController/onResume.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - onResume property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
onResume
- -
- -
- - - -
-

onResume property

- - -
- -
- void Function() - onResume - -
- -
-

The callback which is called when the stream is resumed.

-

May be set to null, in which case no callback will happen.

-

Pause related callbacks are not supported on broadcast stream controllers.

-
-
-

Implementation

-
void Function()? get onResume;
-
-
- -
- -
- void - onResume= -(void onResumeHandler()) - -
- -
-

Implementation

-
void set onResume(void onResumeHandler()?);
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/sink.html b/doc/api/dart-async/StreamController/sink.html deleted file mode 100644 index 1d7dec17..00000000 --- a/doc/api/dart-async/StreamController/sink.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - sink property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
sink
- -
- -
- - - -
-

sink property

- - -
- -
- StreamSink<T> - sink - -
- -
-

Returns a view of this object that only exposes the StreamSink interface.

-
-
-

Implementation

-
StreamSink<T> get sink;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamController/stream.html b/doc/api/dart-async/StreamController/stream.html deleted file mode 100644 index e7fda5d1..00000000 --- a/doc/api/dart-async/StreamController/stream.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - stream property - StreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
stream
- -
- -
- - - -
-

stream property

- - -
- -
- Stream<T> - stream - -
- -
-

The stream that this controller is controlling.

-
-
-

Implementation

-
Stream<T> get stream;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamIterator-class.html b/doc/api/dart-async/StreamIterator-class.html deleted file mode 100644 index 0c6efc2c..00000000 --- a/doc/api/dart-async/StreamIterator-class.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - StreamIterator class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamIterator
- -
- -
- - - -
-

StreamIterator<T> class

- -
-

An Iterator like interface for the values of a Stream.

-

This wraps a Stream and a subscription on the stream. It listens -on the stream, and completes the future returned by moveNext when the -next value becomes available.

-

The stream may be paused between calls to moveNext.

-
- - -
-

Constructors

- -
-
- StreamIterator(Stream<T> stream) -
-
- Create a StreamIterator on stream. -
factory
-
-
-
- -
-

Properties

- -
-
- current - → T -
-
- The current value of the stream. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- cancel() - Future - -
-
- Cancels the stream iterator (and the underlying stream subscription) early. [...] - -
-
- moveNext() - Future<bool> - -
-
- Wait for the next stream value to be available. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamIterator/StreamIterator.html b/doc/api/dart-async/StreamIterator/StreamIterator.html deleted file mode 100644 index c440064a..00000000 --- a/doc/api/dart-async/StreamIterator/StreamIterator.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - StreamIterator constructor - StreamIterator class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamIterator
- -
- -
- - - -
-

StreamIterator<T> constructor

- -
- - StreamIterator<T>(Stream<T> stream) -
- -
-

Create a StreamIterator on stream.

-
- -
-

Implementation

-
factory StreamIterator(Stream<T> stream)
-    // TODO(lrn): use redirecting factory constructor when type
-    // arguments are supported.
-    =>
-    new _StreamIterator<T>(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamIterator/cancel.html b/doc/api/dart-async/StreamIterator/cancel.html deleted file mode 100644 index 2cc32d48..00000000 --- a/doc/api/dart-async/StreamIterator/cancel.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - cancel method - StreamIterator class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
cancel
- -
- -
- - - -
-

cancel method

- -
- Future - cancel -() - -
-
-

Cancels the stream iterator (and the underlying stream subscription) early.

-

The stream iterator is automatically canceled if the moveNext future -completes with either false or an error.

-

If you need to stop listening for values before the stream iterator is -automatically closed, you must call cancel to ensure that the stream -is properly closed.

-

If moveNext has been called when the iterator is canceled, -its returned future will complete with false as value, -as will all further calls to moveNext.

-

Returns a future if the cancel-operation is not completed synchronously. -Otherwise returns null.

-
- -
-

Implementation

-
Future cancel();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamIterator/current.html b/doc/api/dart-async/StreamIterator/current.html deleted file mode 100644 index 26b1d1e9..00000000 --- a/doc/api/dart-async/StreamIterator/current.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - current property - StreamIterator class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
current
- -
- -
- - - -
-

current property

- - -
- -
- T - current - -
- -
-

The current value of the stream.

-

Is null before the first call to moveNext and after a call to -moveNext completes with a false result or an error.

-

When a moveNext call completes with true, the current field holds -the most recent event of the stream, and it stays like that until the next -call to moveNext. -Between a call to moveNext and when its returned future completes, -the value is unspecified.

-
-
-

Implementation

-
T get current;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamIterator/moveNext.html b/doc/api/dart-async/StreamIterator/moveNext.html deleted file mode 100644 index c840f40a..00000000 --- a/doc/api/dart-async/StreamIterator/moveNext.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - moveNext method - StreamIterator class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
moveNext
- -
- -
- - - -
-

moveNext method

- -
- Future<bool> - moveNext -() - -
-
-

Wait for the next stream value to be available.

-

Returns a future which will complete with either true or false. -Completing with true means that another event has been received and -can be read as current. -Completing with false means that the stream iteration is done and -no further events will ever be available. -The future may complete with an error, if the stream produces an error, -which also ends iteration.

-

The function must not be called again until the future returned by a -previous call is completed.

-
- -
-

Implementation

-
Future<bool> moveNext();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSink-class.html b/doc/api/dart-async/StreamSink-class.html deleted file mode 100644 index 695a5a49..00000000 --- a/doc/api/dart-async/StreamSink-class.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - - StreamSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamSink
- -
- -
- - - -
-

StreamSink<S> class

- -
-

A object that accepts stream events both synchronously and asynchronously.

-

A StreamSink combines the methods from StreamConsumer and EventSink.

-

The EventSink methods can't be used while the addStream is called. -As soon as the addStream's Future completes with a value, the -EventSink methods can be used again.

-

If addStream is called after any of the EventSink methods, it'll -be delayed until the underlying system has consumed the data added by the -EventSink methods.

-

When EventSink methods are used, the done Future can be used to -catch any errors.

-

When close is called, it will return the done Future.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- StreamSink() -
-
- -
-
-
- -
-

Properties

- -
-
- done - Future -
-
- Return a future which is completed when the StreamSink is finished. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- close() - Future - -
-
- Tells the stream sink that no further streams will be added. [...] -
override
-
-
- add(S event) - → void - -
-
- Adds a data event to the sink. [...] -
inherited
-
-
- addError(Object error, [ StackTrace stackTrace ]) - → void - -
-
- Adds an error to the sink. [...] -
inherited
-
-
- addStream(Stream<S> stream) - Future - -
-
- Consumes the elements of stream. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSink/StreamSink.html b/doc/api/dart-async/StreamSink/StreamSink.html deleted file mode 100644 index 86fe45f9..00000000 --- a/doc/api/dart-async/StreamSink/StreamSink.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - StreamSink constructor - StreamSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamSink
- -
- -
- - - -
-

StreamSink<S> constructor

- -
- - StreamSink<S>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSink/close.html b/doc/api/dart-async/StreamSink/close.html deleted file mode 100644 index 8fb3f9ac..00000000 --- a/doc/api/dart-async/StreamSink/close.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - close method - StreamSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- Future - close -() -
override
-
-
-

Tells the stream sink that no further streams will be added.

-

This allows the stream sink to complete any remaining work and release -resources that are no longer needed

-

Returns a future which is completed when the stream sink has shut down. -If cleaning up can fail, the error may be reported in the returned future, -otherwise it completes with null.

-

Returns the same future as done.

-

The stream sink may close before the close method is called, either due -to an error or because it is itself providing events to someone who has -stopped listening. In that case, the done future is completed first, -and the close method will return the done future when called.

-

Unifies StreamConsumer.close and EventSink.close which both mark their -object as not expecting any further events.

-
- -
-

Implementation

-
Future close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSink/done.html b/doc/api/dart-async/StreamSink/done.html deleted file mode 100644 index d5019cf7..00000000 --- a/doc/api/dart-async/StreamSink/done.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - done property - StreamSink class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
done
- -
- -
- - - -
-

done property

- - -
- -
- Future - done - -
- -
-

Return a future which is completed when the StreamSink is finished.

-

If the StreamSink fails with an error, -perhaps in response to adding events using add, addError or close, -the done future will complete with that error.

-

Otherwise, the returned future will complete when either:

-
    -
  • all events have been processed and the sink has been closed, or
  • -
  • the sink has otherwise been stopped from handling more events -(for example by canceling a stream subscription).
  • -
-
-
-

Implementation

-
Future get done;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription-class.html b/doc/api/dart-async/StreamSubscription-class.html deleted file mode 100644 index 64c82291..00000000 --- a/doc/api/dart-async/StreamSubscription-class.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - - - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamSubscription
- -
- -
- - - -
-

StreamSubscription<T> class

- -
-

A subscription on events from a Stream.

-

When you listen on a Stream using Stream.listen, -a StreamSubscription object is returned.

-

The subscription provides events to the listener, -and holds the callbacks used to handle the events. -The subscription can also be used to unsubscribe from the events, -or to temporarily pause the events from the stream.

-
- - -
-

Constructors

- -
-
- StreamSubscription() -
-
- -
-
-
- -
-

Properties

- -
-
- isPaused - bool -
-
- Whether the StreamSubscription is currently paused. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- asFuture<E>([E futureValue ]) - Future<E> - -
-
- Returns a future that handles the onDone and onError callbacks. [...] - -
-
- cancel() - Future<void> - -
-
- Cancels this subscription. [...] - -
-
- onData(void handleData(T data)) - → void - -
-
- Replaces the data event handler of this subscription. [...] - -
-
- onDone(void handleDone()) - → void - -
-
- Replaces the done event handler of this subscription. [...] - -
-
- onError(Function handleError) - → void - -
-
- Replaces the error event handler of this subscription. [...] - -
-
- pause([Future<void> resumeSignal ]) - → void - -
-
- Request that the stream pauses events until further notice. [...] - -
-
- resume() - → void - -
-
- Resume after a pause. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/StreamSubscription.html b/doc/api/dart-async/StreamSubscription/StreamSubscription.html deleted file mode 100644 index 9b7f17d3..00000000 --- a/doc/api/dart-async/StreamSubscription/StreamSubscription.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - StreamSubscription constructor - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamSubscription
- -
- -
- - - -
-

StreamSubscription<T> constructor

- -
- - StreamSubscription<T>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/asFuture.html b/doc/api/dart-async/StreamSubscription/asFuture.html deleted file mode 100644 index 713edfb6..00000000 --- a/doc/api/dart-async/StreamSubscription/asFuture.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - asFuture method - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
asFuture
- -
- -
- - - -
-

asFuture<E> method

- -
- Future<E> - asFuture -<E>([E futureValue ]) - -
-
-

Returns a future that handles the onDone and onError callbacks.

-

This method overwrites the existing onDone and onError callbacks -with new ones that complete the returned future.

-

In case of an error the subscription will automatically cancel (even -when it was listening with cancelOnError set to false).

-

In case of a done event the future completes with the given -futureValue.

-

If futureValue is omitted, the value null as E is used as a default. -If E is not nullable, this will throw immediately when asFuture -is called.

-
- -
-

Implementation

-
Future<E> asFuture<E>([E? futureValue]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/cancel.html b/doc/api/dart-async/StreamSubscription/cancel.html deleted file mode 100644 index 6e2e8c8c..00000000 --- a/doc/api/dart-async/StreamSubscription/cancel.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - cancel method - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
cancel
- -
- -
- - - -
-

cancel method

- -
- Future<void> - cancel -() - -
-
-

Cancels this subscription.

-

After this call, the subscription no longer receives events.

-

The stream may need to shut down the source of events and clean up after -the subscription is canceled.

-

Returns a future that is completed once the stream has finished -its cleanup.

-

Typically, cleanup happens when the stream needs to release resources. -For example, a stream might need to close an open file (as an asynchronous -operation). If the listener wants to delete the file after having -canceled the subscription, it must wait for the cleanup future to complete.

-

If the cleanup throws, which it really shouldn't, the returned future -completes with that error.

-
- -
-

Implementation

-
Future<void> cancel();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/isPaused.html b/doc/api/dart-async/StreamSubscription/isPaused.html deleted file mode 100644 index 1e895772..00000000 --- a/doc/api/dart-async/StreamSubscription/isPaused.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - isPaused property - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
isPaused
- -
- -
- - - -
-

isPaused property

- - -
- -
- bool - isPaused - -
- -
-

Whether the StreamSubscription is currently paused.

-

If there have been more calls to pause than to resume on this -stream subscription, the subscription is paused, and this getter -returns true.

-

Returns false if the stream can currently emit events, or if -the subscription has completed or been cancelled.

-
-
-

Implementation

-
bool get isPaused;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/onData.html b/doc/api/dart-async/StreamSubscription/onData.html deleted file mode 100644 index 772f77af..00000000 --- a/doc/api/dart-async/StreamSubscription/onData.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - onData method - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
onData
- -
- -
- - - -
-

onData method

- -
- void - onData -(void handleData(T data)) - -
-
-

Replaces the data event handler of this subscription.

-

The handleData function is called for each element of the stream -after this function is called. -If handleData is null, further elements are ignored.

-

This method replaces the current handler set by the invocation of -Stream.listen or by a previous call to onData.

-
- -
-

Implementation

-
void onData(void handleData(T data)?);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/onDone.html b/doc/api/dart-async/StreamSubscription/onDone.html deleted file mode 100644 index 30be1ce2..00000000 --- a/doc/api/dart-async/StreamSubscription/onDone.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - onDone method - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
onDone
- -
- -
- - - -
-

onDone method

- -
- void - onDone -(void handleDone()) - -
-
-

Replaces the done event handler of this subscription.

-

The handleDone function is called when the stream closes. -The value may be null, in which case no function is called.

-

This method replaces the current handler set by the invocation of -Stream.listen, by calling asFuture, or by a previous call to onDone.

-
- -
-

Implementation

-
void onDone(void handleDone()?);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/onError.html b/doc/api/dart-async/StreamSubscription/onError.html deleted file mode 100644 index 9df2ab73..00000000 --- a/doc/api/dart-async/StreamSubscription/onError.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - onError method - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
onError
- -
- -
- - - -
-

onError method

- -
- void - onError -(Function handleError) - -
-
-

Replaces the error event handler of this subscription.

-

The handleError function must be able to be called with either -one positional argument, or with two positional arguments -where the seconds is always a StackTrace.

-

The handleError argument may be null, in which case further -error events are considered unhandled, and will be reported to -Zone.handleUncaughtError.

-

The provided function is called for all error events from the -stream subscription.

-

This method replaces the current handler set by the invocation of -Stream.listen, by calling asFuture, or by a previous call to onError.

-
- -
-

Implementation

-
void onError(Function? handleError);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/pause.html b/doc/api/dart-async/StreamSubscription/pause.html deleted file mode 100644 index 998a486f..00000000 --- a/doc/api/dart-async/StreamSubscription/pause.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - pause method - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
pause
- -
- -
- - - -
-

pause method

- -
- void - pause -([Future<void> resumeSignal ]) - -
-
-

Request that the stream pauses events until further notice.

-

While paused, the subscription will not fire any events. -If it receives events from its source, they will be buffered until -the subscription is resumed. -For non-broadcast streams, the underlying source is usually informed -about the pause, -so it can stop generating events until the subscription is resumed.

-

To avoid buffering events on a broadcast stream, it is better to -cancel this subscription, and start to listen again when events -are needed, if the intermediate events are not important.

-

If resumeSignal is provided, the stream subscription will undo the pause -when the future completes, as if by a call to resume. -If the future completes with an error, -the stream will still resume, but the error will be considered unhandled -and is passed to Zone.handleUncaughtError.

-

A call to resume will also undo a pause.

-

If the subscription is paused more than once, an equal number -of resumes must be performed to resume the stream. -Calls to resume and the completion of a resumeSignal are -interchangeable - the pause which was passed a resumeSignal may be -ended by a call to resume, and completing the resumeSignal may end a -different pause.

-

It is safe to resume or complete a resumeSignal even when the -subscription is not paused, and the resume will have no effect.

-

Currently DOM streams silently drop events when the stream is paused. This -is a bug and will be fixed.

-
- -
-

Implementation

-
void pause([Future<void>? resumeSignal]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamSubscription/resume.html b/doc/api/dart-async/StreamSubscription/resume.html deleted file mode 100644 index f65db56d..00000000 --- a/doc/api/dart-async/StreamSubscription/resume.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - resume method - StreamSubscription class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
resume
- -
- -
- - - -
-

resume method

- -
- void - resume -() - -
-
-

Resume after a pause.

-

This undoes one previous call to pause. -When all previously calls to pause have been matched by a calls to -resume, possibly through a resumeSignal passed to pause, -the stream subscription may emit events again.

-

It is safe to resume even when the subscription is not paused, and the -resume will have no effect.

-
- -
-

Implementation

-
void resume();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformer-class.html b/doc/api/dart-async/StreamTransformer-class.html deleted file mode 100644 index 44ddfe45..00000000 --- a/doc/api/dart-async/StreamTransformer-class.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - - - StreamTransformer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamTransformer
- -
- -
- - - -
-

StreamTransformer<S, T> class

- -
-

Transforms a Stream.

-

When a stream's Stream.transform method is invoked with a -StreamTransformer, the stream calls the bind method on the provided -transformer. The resulting stream is then returned from the -Stream.transform method.

-

Conceptually, a transformer is simply a function from Stream to Stream -that is encapsulated into a class.

-

It is good practice to write transformers that can be used multiple times.

-

All other transforming methods on Stream, such as Stream.map, -Stream.where or Stream.expand can be implemented using -Stream.transform. A StreamTransformer is thus very powerful but often -also a bit more complicated to use.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- StreamTransformer(StreamSubscription<T> onListen(Stream<S> stream, bool cancelOnError)) -
-
- Creates a StreamTransformer based on the given onListen callback. [...] -
const
-
factory
-
-
- StreamTransformer.fromBind(Stream<T> bind(Stream<S>)) -
-
- Creates a StreamTransformer based on a bind callback. [...] -
factory
-
-
- StreamTransformer.fromHandlers({void handleData(S data, EventSink<T> sink), void handleError(Object error, StackTrace stackTrace, EventSink<T> sink), void handleDone(EventSink<T> sink) }) -
-
- Creates a StreamTransformer that delegates events to the given functions. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<S> stream) - Stream<T> - -
-
- Transforms the provided stream. [...] - -
-
- cast<RS, RT>() - StreamTransformer<RS, RT> - -
-
- Provides a StreamTransformer<RS, RT> view of this stream transformer. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- castFrom<SS, ST, TS, TT>(StreamTransformer<SS, ST> source) - StreamTransformer<TS, TT> - -
-
- Adapts source to be a StreamTransformer<TS, TT>. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformer/StreamTransformer.fromBind.html b/doc/api/dart-async/StreamTransformer/StreamTransformer.fromBind.html deleted file mode 100644 index de4053a6..00000000 --- a/doc/api/dart-async/StreamTransformer/StreamTransformer.fromBind.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - StreamTransformer.fromBind constructor - StreamTransformer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamTransformer.fromBind
- -
- -
- - - -
-

StreamTransformer<S, T>.fromBind constructor

- -
-
-
    -
  1. @Since("2.1")
  2. -
-
- - StreamTransformer<S, T>.fromBind(Stream<T> bind(Stream<S>)) -
- -
-

Creates a StreamTransformer based on a bind callback.

-

The returned stream transformer uses the bind argument to implement the -StreamTransformer.bind API and can be used when the transformation is -available as a stream-to-stream function.

-
final splitDecoded = StreamTransformer<List<int>, String>.fromBind(
-    (stream) => stream.transform(utf8.decoder).transform(LineSplitter()));
-
-
- -
-

Implementation

-
@Since("2.1")
-factory StreamTransformer.fromBind(Stream<T> Function(Stream<S>) bind) =
-    _StreamBindTransformer<S, T>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformer/StreamTransformer.fromHandlers.html b/doc/api/dart-async/StreamTransformer/StreamTransformer.fromHandlers.html deleted file mode 100644 index 96fcc62c..00000000 --- a/doc/api/dart-async/StreamTransformer/StreamTransformer.fromHandlers.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - StreamTransformer.fromHandlers constructor - StreamTransformer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamTransformer.fromHandlers
- -
- -
- - - -
-

StreamTransformer<S, T>.fromHandlers constructor

- -
- - StreamTransformer<S, T>.fromHandlers({void handleData(S data, EventSink<T> sink), void handleError(Object error, StackTrace stackTrace, EventSink<T> sink), void handleDone(EventSink<T> sink) }) -
- -
-

Creates a StreamTransformer that delegates events to the given functions.

-

Example use of a duplicating transformer:

-
stringStream.transform(new StreamTransformer<String, String>.fromHandlers(
-    handleData: (String value, EventSink<String> sink) {
-      sink.add(value);
-      sink.add(value);  // Duplicate the incoming events.
-    }));
-
-

Transformers that are constructed this way cannot use captured state if -they are used in streams that can be listened to multiple times.

-
StreamController<String> controller;
-controller = new StreamController.broadcast(onListen: () {
-  scheduleMicrotask(() {
-    controller.addError("Bad");
-    controller.addError("Worse");
-    controller.addError("Worst");
-  });
-});
-var sharedState = 0;
-var transformedStream = controller.stream.transform(
-    new StreamTransformer<String>.fromHandlers(
-        handleError: (error, stackTrace, sink) {
-  sharedState++; // Increment shared error-counter.
-  sink.add("Error $sharedState: $error");
-}));
-
-transformedStream.listen(print);
-transformedStream.listen(print); // Listen twice.
-// Listening twice to the same stream makes the transformer share the same
-// state. Instead of having "Error 1: Bad", "Error 2: Worse",
-// "Error 3: Worst" as output (each twice for the separate subscriptions),
-// this program emits:
-// Error 1: Bad
-// Error 2: Bad
-// Error 3: Worse
-// Error 4: Worse
-// Error 5: Worst
-// Error 6: Worst
-
-
- -
-

Implementation

-
factory StreamTransformer.fromHandlers(
-    {void handleData(S data, EventSink<T> sink)?,
-    void handleError(Object error, StackTrace stackTrace, EventSink<T> sink)?,
-    void handleDone(EventSink<T> sink)?}) = _StreamHandlerTransformer<S, T>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformer/StreamTransformer.html b/doc/api/dart-async/StreamTransformer/StreamTransformer.html deleted file mode 100644 index 9861decb..00000000 --- a/doc/api/dart-async/StreamTransformer/StreamTransformer.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - StreamTransformer constructor - StreamTransformer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamTransformer
- -
- -
- - - -
-

StreamTransformer<S, T> constructor

- -
- const - StreamTransformer<S, T>(StreamSubscription<T> onListen(Stream<S> stream, bool cancelOnError)) -
- -
-

Creates a StreamTransformer based on the given onListen callback.

-

The returned stream transformer uses the provided onListen callback -when a transformed stream is listened to. At that time, the callback -receives the input stream (the one passed to bind) and a -boolean flag cancelOnError to create a StreamSubscription.

-

If the transformed stream is a broadcast stream, so is the stream -returned by the StreamTransformer.bind method by this transformer.

-

If the transformed stream is listened to multiple times, the onListen -callback is called again for each new Stream.listen call. -This happens whether the stream is a broadcast stream or not, -but the call will usually fail for non-broadcast streams.

-

The onListen callback does not receive the handlers that were passed -to Stream.listen. These are automatically set after the call to the -onListen callback (using StreamSubscription.onData, -StreamSubscription.onError and StreamSubscription.onDone).

-

Most commonly, an onListen callback will first call Stream.listen on -the provided stream (with the corresponding cancelOnError flag), and then -return a new StreamSubscription.

-

There are two common ways to create a StreamSubscription:

-
    -
  1. by allocating a StreamController and to return the result of -listening to its stream. It's important to forward pause, resume and -cancel events (unless the transformer intentionally wants to change -this behavior).
  2. -
  3. by creating a new class that implements StreamSubscription. -Note that the subscription should run callbacks in the Zone the -stream was listened to (see Zone and Zone.bindCallback).
  4. -
-

Example:

-
/// Starts listening to [input] and duplicates all non-error events.
-StreamSubscription<int> _onListen(Stream<int> input, bool cancelOnError) {
-  StreamSubscription<String> subscription;
-  // Create controller that forwards pause, resume and cancel events.
-  var controller = new StreamController<String>(
-      onPause: () {
-        subscription.pause();
-      },
-      onResume: () {
-        subscription.resume();
-      },
-      onCancel: () => subscription.cancel(),
-      sync: true); // "sync" is correct here, since events are forwarded.
-
-  // Listen to the provided stream using `cancelOnError`.
-  subscription = input.listen((data) {
-    // Duplicate the data.
-    controller.add(data);
-    controller.add(data);
-  },
-      onError: controller.addError,
-      onDone: controller.close,
-      cancelOnError: cancelOnError);
-
-  // Return a new [StreamSubscription] by listening to the controller's
-  // stream.
-  return controller.stream.listen(null);
-}
-
-// Instantiate a transformer:
-var duplicator = const StreamTransformer<int, int>(_onListen);
-
-// Use as follows:
-intStream.transform(duplicator);
-
-
- -
-

Implementation

-
const factory StreamTransformer(
-        StreamSubscription<T> onListen(
-            Stream<S> stream, bool cancelOnError)) =
-    _StreamSubscriptionTransformer<S, T>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformer/bind.html b/doc/api/dart-async/StreamTransformer/bind.html deleted file mode 100644 index 013374b5..00000000 --- a/doc/api/dart-async/StreamTransformer/bind.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - bind method - StreamTransformer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<T> - bind -(Stream<S> stream) - -
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<T> bind(Stream<S> stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformer/cast.html b/doc/api/dart-async/StreamTransformer/cast.html deleted file mode 100644 index 52972b05..00000000 --- a/doc/api/dart-async/StreamTransformer/cast.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - cast method - StreamTransformer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<RS, RT> method

- -
- StreamTransformer<RS, RT> - cast -<RS, RT>() - -
-
-

Provides a StreamTransformer<RS, RT> view of this stream transformer.

-

The resulting transformer will check at run-time that all data events -of the stream it transforms are actually instances of S, -and it will check that all data events produced by this transformer -are actually instances of RT.

-
- -
-

Implementation

-
StreamTransformer<RS, RT> cast<RS, RT>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformer/castFrom.html b/doc/api/dart-async/StreamTransformer/castFrom.html deleted file mode 100644 index 5fa64ab5..00000000 --- a/doc/api/dart-async/StreamTransformer/castFrom.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - castFrom method - StreamTransformer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
castFrom
- -
- -
- - - -
-

castFrom<SS, ST, TS, TT> method

- -
- StreamTransformer<TS, TT> - castFrom -<SS, ST, TS, TT>(StreamTransformer<SS, ST> source) - -
-
-

Adapts source to be a StreamTransformer<TS, TT>.

-

This allows source to be used at the new type, but at run-time it -must satisfy the requirements of both the new type and its original type.

-

Data events passed into the returned transformer must also be instances -of SS, and data events produced by source for those events must -also be instances of TT.

-
- -
-

Implementation

-
static StreamTransformer<TS, TT> castFrom<SS, ST, TS, TT>(
-    StreamTransformer<SS, ST> source) {
-  return new CastStreamTransformer<SS, ST, TS, TT>(source);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformerBase-class.html b/doc/api/dart-async/StreamTransformerBase-class.html deleted file mode 100644 index 00fa5557..00000000 --- a/doc/api/dart-async/StreamTransformerBase-class.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - StreamTransformerBase class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamTransformerBase
- -
- -
- - - -
-

StreamTransformerBase<S, T> class

- -
-

Base class for implementing StreamTransformer.

-

Contains default implementations of every method except bind.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- StreamTransformerBase() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- cast<RS, RT>() - StreamTransformer<RS, RT> - -
-
- Provides a StreamTransformer<RS, RT> view of this stream transformer. [...] -
override
-
-
- bind(Stream<S> stream) - Stream<T> - -
-
- Transforms the provided stream. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformerBase/StreamTransformerBase.html b/doc/api/dart-async/StreamTransformerBase/StreamTransformerBase.html deleted file mode 100644 index fa67fcfb..00000000 --- a/doc/api/dart-async/StreamTransformerBase/StreamTransformerBase.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - StreamTransformerBase constructor - StreamTransformerBase class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamTransformerBase
- -
- -
- - - -
-

StreamTransformerBase<S, T> constructor

- -
- const - StreamTransformerBase<S, T>() -
- - -
-

Implementation

-
const StreamTransformerBase();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamTransformerBase/cast.html b/doc/api/dart-async/StreamTransformerBase/cast.html deleted file mode 100644 index 8c663336..00000000 --- a/doc/api/dart-async/StreamTransformerBase/cast.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - cast method - StreamTransformerBase class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<RS, RT> method

- -
- StreamTransformer<RS, RT> - cast -<RS, RT>() -
override
-
-
-

Provides a StreamTransformer<RS, RT> view of this stream transformer.

-

The resulting transformer will check at run-time that all data events -of the stream it transforms are actually instances of S, -and it will check that all data events produced by this transformer -are actually instances of RT.

-
- -
-

Implementation

-
StreamTransformer<RS, RT> cast<RS, RT>() =>
-    StreamTransformer.castFrom<S, T, RS, RT>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamView-class.html b/doc/api/dart-async/StreamView-class.html deleted file mode 100644 index 362238c0..00000000 --- a/doc/api/dart-async/StreamView-class.html +++ /dev/null @@ -1,628 +0,0 @@ - - - - - - - - StreamView class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamView
- -
- -
- - - -
-

StreamView<T> class

- -
-

Stream wrapper that only exposes the Stream interface.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- StreamView(Stream<T> stream) -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- isBroadcast - bool -
-
- Whether this stream is a broadcast stream. -
read-only, override
-
-
- first - Future<T> -
-
- The first element of this stream. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - Future<bool> -
-
- Whether this stream contains any elements. [...] -
read-only, inherited
-
-
- last - Future<T> -
-
- The last element of this stream. [...] -
read-only, inherited
-
-
- length - Future<int> -
-
- The number of elements in this stream. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - Future<T> -
-
- The single element of this stream. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- asBroadcastStream({void onListen(StreamSubscription<T> subscription) void onCancel(StreamSubscription<T> subscription) }) - Stream<T> - -
-
- Returns a multi-subscription stream that produces the same events as this. [...] -
override
-
-
- listen(void onData(T value), { Function onError, void onDone(), bool cancelOnError }) - StreamSubscription<T> - -
-
- Adds a subscription to this stream. [...] -
override
-
-
- any(bool test(T element)) - Future<bool> - -
-
- Checks whether test accepts any element provided by this stream. [...] -
inherited
-
-
- asyncExpand<E>(Stream<E> convert(T event)) - Stream<E> - -
-
- Transforms each element into a sequence of asynchronous events. [...] -
inherited
-
-
- asyncMap<E>(FutureOr<E> convert(T event)) - Stream<E> - -
-
- Creates a new stream with each data event of this stream asynchronously -mapped to a new event. [...] -
inherited
-
-
- cast<R>() - Stream<R> - -
-
- Adapt this stream to be a Stream<R>. [...] -
inherited
-
-
- contains(Object needle) - Future<bool> - -
-
- Returns whether needle occurs in the elements provided by this stream. [...] -
inherited
-
-
- distinct([bool equals(T previous T next) ]) - Stream<T> - -
-
- Skips data events if they are equal to the previous data event. [...] -
inherited
-
-
- drain<E>([E futureValue ]) - Future<E> - -
-
- Discards all data on this stream, but signals when it is done or an error -occurred. [...] -
inherited
-
-
- elementAt(int index) - Future<T> - -
-
- Returns the value of the indexth data event of this stream. [...] -
inherited
-
-
- every(bool test(T element)) - Future<bool> - -
-
- Checks whether test accepts all elements provided by this stream. [...] -
inherited
-
-
- expand<S>(Iterable<S> convert(T element)) - Stream<S> - -
-
- Transforms each element of this stream into a sequence of elements. [...] -
inherited
-
-
- firstWhere(bool test(T element), { T orElse() }) - Future<T> - -
-
- Finds the first element of this stream matching test. [...] -
inherited
-
-
- fold<S>(S initialValue, S combine(S previous, T element)) - Future<S> - -
-
- Combines a sequence of values by repeatedly applying combine. [...] -
inherited
-
-
- forEach(void action(T element)) - Future - -
-
- Executes action on each element of this stream. [...] -
inherited
-
-
- handleError(Function onError, { bool test(dynamic error) }) - Stream<T> - -
-
- Creates a wrapper Stream that intercepts some errors from this stream. [...] -
inherited
-
-
- join([String separator = "" ]) - Future<String> - -
-
- Combines the string representation of elements into a single string. [...] -
inherited
-
-
- lastWhere(bool test(T element), { T orElse() }) - Future<T> - -
-
- Finds the last element in this stream matching test. [...] -
inherited
-
-
- map<S>(S convert(T event)) - Stream<S> - -
-
- Transforms each element of this stream into a new stream event. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- pipe(StreamConsumer<T> streamConsumer) - Future - -
-
- Pipes the events of this stream into streamConsumer. [...] -
inherited
-
-
- reduce(T combine(T previous T element)) - Future<T> - -
-
- Combines a sequence of values by repeatedly applying combine. [...] -
inherited
-
-
- singleWhere(bool test(T element), { T orElse() }) - Future<T> - -
-
- Finds the single element in this stream matching test. [...] -
inherited
-
-
- skip(int count) - Stream<T> - -
-
- Skips the first count data events from this stream. [...] -
inherited
-
-
- skipWhile(bool test(T element)) - Stream<T> - -
-
- Skip data events from this stream while they are matched by test. [...] -
inherited
-
-
- take(int count) - Stream<T> - -
-
- Provides at most the first count data events of this stream. [...] -
inherited
-
-
- takeWhile(bool test(T element)) - Stream<T> - -
-
- Forwards data events while test is successful. [...] -
inherited
-
-
- timeout(Duration timeLimit, { void onTimeout(EventSink<T> sink) }) - Stream<T> - -
-
- Creates a new stream with the same events as this stream. [...] -
inherited
-
-
- toList() - Future<List<T>> - -
-
- Collects all elements of this stream in a List. [...] -
inherited
-
-
- toSet() - Future<Set<T>> - -
-
- Collects the data of this stream in a Set. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- transform<S>(StreamTransformer<T, S> streamTransformer) - Stream<S> - -
-
- Applies streamTransformer to this stream. [...] -
inherited
-
-
- where(bool test(T event)) - Stream<T> - -
-
- Creates a new stream from this stream that discards some elements. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamView/StreamView.html b/doc/api/dart-async/StreamView/StreamView.html deleted file mode 100644 index 73c7a8a0..00000000 --- a/doc/api/dart-async/StreamView/StreamView.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - StreamView constructor - StreamView class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
StreamView
- -
- -
- - - -
-

StreamView<T> constructor

- -
- const - StreamView<T>(Stream<T> stream) -
- - -
-

Implementation

-
const StreamView(Stream<T> stream)
-    : _stream = stream,
-      super._internal();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamView/asBroadcastStream.html b/doc/api/dart-async/StreamView/asBroadcastStream.html deleted file mode 100644 index 3d314db8..00000000 --- a/doc/api/dart-async/StreamView/asBroadcastStream.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - asBroadcastStream method - StreamView class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
asBroadcastStream
- -
- -
- - - -
-

asBroadcastStream method

- -
- Stream<T> - asBroadcastStream -({void onListen(StreamSubscription<T> subscription) void onCancel(StreamSubscription<T> subscription) }) -
override
-
-
-

Returns a multi-subscription stream that produces the same events as this.

-

The returned stream will subscribe to this stream when its first -subscriber is added, and will stay subscribed until this stream ends, -or a callback cancels the subscription.

-

If onListen is provided, it is called with a subscription-like object -that represents the underlying subscription to this stream. It is -possible to pause, resume or cancel the subscription during the call -to onListen. It is not possible to change the event handlers, including -using StreamSubscription.asFuture.

-

If onCancel is provided, it is called in a similar way to onListen -when the returned stream stops having listener. If it later gets -a new listener, the onListen function is called again.

-

Use the callbacks, for example, for pausing the underlying subscription -while having no subscribers to prevent losing events, or canceling the -subscription when there are no listeners.

-
- -
-

Implementation

-
Stream<T> asBroadcastStream(
-        {void onListen(StreamSubscription<T> subscription)?,
-        void onCancel(StreamSubscription<T> subscription)?}) =>
-    _stream.asBroadcastStream(onListen: onListen, onCancel: onCancel);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamView/isBroadcast.html b/doc/api/dart-async/StreamView/isBroadcast.html deleted file mode 100644 index 022f9126..00000000 --- a/doc/api/dart-async/StreamView/isBroadcast.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - isBroadcast property - StreamView class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
isBroadcast
- -
- -
- - - -
-

isBroadcast property

- - -
- -
- bool - isBroadcast -
override
-
- -
-

Whether this stream is a broadcast stream.

-
-
-

Implementation

-
bool get isBroadcast => _stream.isBroadcast;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/StreamView/listen.html b/doc/api/dart-async/StreamView/listen.html deleted file mode 100644 index 40deb9d8..00000000 --- a/doc/api/dart-async/StreamView/listen.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - listen method - StreamView class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
listen
- -
- -
- - - -
-

listen method

- -
- StreamSubscription<T> - listen -(void onData(T value), { Function onError, void onDone(), bool cancelOnError }) -
override
-
-
-

Adds a subscription to this stream.

-

Returns a StreamSubscription which handles events from this stream using -the provided onData, onError and onDone handlers. -The handlers can be changed on the subscription, but they start out -as the provided functions.

-

On each data event from this stream, the subscriber's onData handler -is called. If onData is null, nothing happens.

-

On errors from this stream, the onError handler is called with the -error object and possibly a stack trace.

-

The onError callback must be of type void onError(Object error) or -void onError(Object error, StackTrace stackTrace). If onError accepts -two arguments it is called with the error object and the stack trace -(which could be null if this stream itself received an error without -stack trace). -Otherwise it is called with just the error object. -If onError is omitted, any errors on this stream are considered unhandled, -and will be passed to the current Zone's error handler. -By default unhandled async errors are treated -as if they were uncaught top-level errors.

-

If this stream closes and sends a done event, the onDone handler is -called. If onDone is null, nothing happens.

-

If cancelOnError is true, the subscription is automatically canceled -when the first error event is delivered. The default is false.

-

While a subscription is paused, or when it has been canceled, -the subscription doesn't receive events and none of the -event handler functions are called.

-
- -
-

Implementation

-
StreamSubscription<T> listen(void onData(T value)?,
-    {Function? onError, void onDone()?, bool? cancelOnError}) {
-  return _stream.listen(onData,
-      onError: onError, onDone: onDone, cancelOnError: cancelOnError);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/SynchronousStreamController-class.html b/doc/api/dart-async/SynchronousStreamController-class.html deleted file mode 100644 index 5c893819..00000000 --- a/doc/api/dart-async/SynchronousStreamController-class.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - - - SynchronousStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
SynchronousStreamController
- -
- -
- - - -
-

SynchronousStreamController<T> class

- -
-

A stream controller that delivers its events synchronously.

-

A synchronous stream controller is intended for cases where -an already asynchronous event triggers an event on a stream.

-

Instead of adding the event to the stream in a later microtask, -causing extra latency, the event is instead fired immediately by the -synchronous stream controller, as if the stream event was -the current event or microtask.

-

The synchronous stream controller can be used to break the contract -on Stream, and it must be used carefully to avoid doing so.

-

The only advantage to using a SynchronousStreamController over a -normal StreamController is the improved latency. -Only use the synchronous version if the improvement is significant, -and if its use is safe. Otherwise just use a normal stream controller, -which will always have the correct behavior for a Stream, and won't -accidentally break other code.

-

Adding events to a synchronous controller should only happen as the -very last part of the handling of the original event. -At that point, adding an event to the stream is equivalent to -returning to the event loop and adding the event in the next microtask.

-

Each listener callback will be run as if it was a top-level event -or microtask. This means that if it throws, the error will be reported as -uncaught as soon as possible. -This is one reason to add the event as the last thing in the original event -handler - any action done after adding the event will delay the report of -errors in the event listener callbacks.

-

If an event is added in a setting that isn't known to be another event, -it may cause the stream's listener to get that event before the listener -is ready to handle it. We promise that after calling Stream.listen, -you won't get any events until the code doing the listen has completed. -Calling add in response to a function call of unknown origin may break -that promise.

-

An onListen callback from the controller is not an asynchronous event, -and adding events to the controller in the onListen callback is always -wrong. The events will be delivered before the listener has even received -the subscription yet.

-

The synchronous broadcast stream controller also has a restrictions that a -normal stream controller does not: -The add, addError, close and addStream methods must not be -called while an event is being delivered. -That is, if a callback on a subscription on the controller's stream causes -a call to any of the functions above, the call will fail. -A broadcast stream may have more than one listener, and if an -event is added synchronously while another is being also in the process -of being added, the latter event might reach some listeners before -the former. To prevent that, an event cannot be added while a previous -event is being fired. -This guarantees that an event is fully delivered when the -first add, addError or close returns, -and further events will be delivered in the correct order.

-

This still only guarantees that the event is delivered to the subscription. -If the subscription is paused, the actual callback may still happen later, -and the event will instead be buffered by the subscription. -Barring pausing, and the following buffered events that haven't been -delivered yet, callbacks will be called synchronously when an event is added.

-

Adding an event to a synchronous non-broadcast stream controller while -another event is in progress may cause the second event to be delayed -and not be delivered synchronously, and until that event is delivered, -the controller will not act synchronously.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- SynchronousStreamController() -
-
- -
-
-
- -
-

Properties

- -
-
- done - Future -
-
- A future which is completed when the stream controller is done -sending events. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- hasListener - bool -
-
- Whether there is a subscriber on the Stream. -
read-only, inherited
-
-
- isClosed - bool -
-
- Whether the stream controller is closed for adding more events. [...] -
read-only, inherited
-
-
- isPaused - bool -
-
- Whether the subscription would need to buffer events. [...] -
read-only, inherited
-
-
- onCancel - FutureOr<void> Function() -
-
- The callback which is called when the stream is canceled. [...] -
read / write, inherited
-
-
- onListen - ↔ void Function() -
-
- The callback which is called when the stream is listened to. [...] -
read / write, inherited
-
-
- onPause - ↔ void Function() -
-
- The callback which is called when the stream is paused. [...] -
read / write, inherited
-
-
- onResume - ↔ void Function() -
-
- The callback which is called when the stream is resumed. [...] -
read / write, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- sink - StreamSink<T> -
-
- Returns a view of this object that only exposes the StreamSink interface. -
read-only, inherited
-
-
- stream - Stream<T> -
-
- The stream that this controller is controlling. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(T data) - → void - -
-
- Adds event to the controller's stream. [...] -
override
-
-
- addError(Object error, [ StackTrace stackTrace ]) - → void - -
-
- Adds error to the controller's stream. [...] -
override
-
-
- close() - Future - -
-
- Closes the controller's stream. [...] -
override
-
-
- addStream(Stream<T> source, { bool cancelOnError }) - Future - -
-
- Receives events from source and puts them into this controller's stream. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/SynchronousStreamController/SynchronousStreamController.html b/doc/api/dart-async/SynchronousStreamController/SynchronousStreamController.html deleted file mode 100644 index ae05b8b6..00000000 --- a/doc/api/dart-async/SynchronousStreamController/SynchronousStreamController.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - SynchronousStreamController constructor - SynchronousStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
SynchronousStreamController
- -
- -
- - - -
-

SynchronousStreamController<T> constructor

- -
- - SynchronousStreamController<T>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/SynchronousStreamController/add.html b/doc/api/dart-async/SynchronousStreamController/add.html deleted file mode 100644 index 61080bdf..00000000 --- a/doc/api/dart-async/SynchronousStreamController/add.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - add method - SynchronousStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(T data) -
override
-
-
-

Adds event to the controller's stream.

-

As StreamController.add, but must not be called while an event is -being added by add, addError or close.

-
- -
-

Implementation

-
void add(T data);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/SynchronousStreamController/addError.html b/doc/api/dart-async/SynchronousStreamController/addError.html deleted file mode 100644 index 12d5600e..00000000 --- a/doc/api/dart-async/SynchronousStreamController/addError.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - addError method - SynchronousStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
addError
- -
- -
- - - -
-

addError method

- -
- void - addError -(Object error, [ StackTrace stackTrace ]) -
override
-
-
-

Adds error to the controller's stream.

-

As StreamController.addError, but must not be called while an event is -being added by add, addError or close.

-
- -
-

Implementation

-
void addError(Object error, [StackTrace? stackTrace]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/SynchronousStreamController/close.html b/doc/api/dart-async/SynchronousStreamController/close.html deleted file mode 100644 index 9d3c512b..00000000 --- a/doc/api/dart-async/SynchronousStreamController/close.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - close method - SynchronousStreamController class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- Future - close -() -
override
-
-
-

Closes the controller's stream.

-

As StreamController.close, but must not be called while an event is -being added by add, addError or close.

-
- -
-

Implementation

-
Future close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/TimeoutException-class.html b/doc/api/dart-async/TimeoutException-class.html deleted file mode 100644 index 3e254e10..00000000 --- a/doc/api/dart-async/TimeoutException-class.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - TimeoutException class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
TimeoutException
- -
- -
- - - -
-

TimeoutException class

- -
-

Thrown when a scheduled timeout happens while waiting for an async result.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- TimeoutException(String message, [ Duration duration ]) -
-
- -
-
-
- -
-

Properties

- -
-
- duration - Duration -
-
- The duration that was exceeded. -
final
-
-
- message - String -
-
- Description of the cause of the timeout. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/TimeoutException/TimeoutException.html b/doc/api/dart-async/TimeoutException/TimeoutException.html deleted file mode 100644 index 4a85d8bb..00000000 --- a/doc/api/dart-async/TimeoutException/TimeoutException.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - TimeoutException constructor - TimeoutException class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
TimeoutException
- -
- -
- - - -
-

TimeoutException constructor

- -
- - TimeoutException(String message, [ Duration duration ]) -
- - -
-

Implementation

-
TimeoutException(this.message, [this.duration]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/TimeoutException/duration.html b/doc/api/dart-async/TimeoutException/duration.html deleted file mode 100644 index 25b1a4c1..00000000 --- a/doc/api/dart-async/TimeoutException/duration.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - duration property - TimeoutException class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
duration
- -
- -
- - - -
-

duration property

- -
- Duration - duration -
final
-
-
-

The duration that was exceeded.

-
-
-

Implementation

-
final Duration? duration
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/TimeoutException/message.html b/doc/api/dart-async/TimeoutException/message.html deleted file mode 100644 index 430843ee..00000000 --- a/doc/api/dart-async/TimeoutException/message.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - message property - TimeoutException class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- -
- String - message -
final
-
-
-

Description of the cause of the timeout.

-
-
-

Implementation

-
final String? message
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/TimeoutException/toString.html b/doc/api/dart-async/TimeoutException/toString.html deleted file mode 100644 index 4d42df27..00000000 --- a/doc/api/dart-async/TimeoutException/toString.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - toString method - TimeoutException class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() {
-  String result = "TimeoutException";
-  if (duration != null) result = "TimeoutException after $duration";
-  if (message != null) result = "$result: $message";
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Timer-class.html b/doc/api/dart-async/Timer-class.html deleted file mode 100644 index 6389b292..00000000 --- a/doc/api/dart-async/Timer-class.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - Timer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Timer
- -
- -
- - - -
-

Timer class

- -
-

A count-down timer that can be configured to fire once or repeatedly.

-

The timer counts down from the specified duration to 0. -When the timer reaches 0, the timer invokes the specified callback function. -Use a periodic timer to repeatedly count down the same interval.

-

A negative duration is treated the same as a duration of 0. -If the duration is statically known to be 0, consider using run.

-

Frequently the duration is either a constant or computed as in the -following example (taking advantage of the multiplication operator of -the Duration class):

-
const timeout = const Duration(seconds: 3);
-const ms = const Duration(milliseconds: 1);
-
-startTimeout([int milliseconds]) {
-  var duration = milliseconds == null ? timeout : ms * milliseconds;
-  return new Timer(duration, handleTimeout);
-}
-...
-void handleTimeout() {  // callback function
-  ...
-}
-
-

Note: If Dart code using Timer is compiled to JavaScript, the finest -granularity available in the browser is 4 milliseconds.

-

See Stopwatch for measuring elapsed time.

-
- - -
-

Constructors

- -
-
- Timer(Duration duration, void callback()) -
-
- Creates a new timer. [...] -
factory
-
-
- Timer.periodic(Duration duration, void callback(Timer timer)) -
-
- Creates a new repeating timer. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- isActive - bool -
-
- Returns whether the timer is still active. [...] -
read-only
-
-
- tick - int -
-
- The number of durations preceding the most recent timer event. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- cancel() - → void - -
-
- Cancels the timer. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- run(void callback()) - → void - -
-
- Runs the given callback asynchronously as soon as possible. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Timer/Timer.html b/doc/api/dart-async/Timer/Timer.html deleted file mode 100644 index 43937080..00000000 --- a/doc/api/dart-async/Timer/Timer.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - Timer constructor - Timer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Timer
- -
- -
- - - -
-

Timer constructor

- -
- - Timer(Duration duration, void callback()) -
- -
-

Creates a new timer.

-

The callback function is invoked after the given duration.

-
- -
-

Implementation

-
factory Timer(Duration duration, void Function() callback) {
-  if (Zone.current == Zone.root) {
-    // No need to bind the callback. We know that the root's timer will
-    // be invoked in the root zone.
-    return Zone.current.createTimer(duration, callback);
-  }
-  return Zone.current
-      .createTimer(duration, Zone.current.bindCallbackGuarded(callback));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Timer/Timer.periodic.html b/doc/api/dart-async/Timer/Timer.periodic.html deleted file mode 100644 index be4fbb55..00000000 --- a/doc/api/dart-async/Timer/Timer.periodic.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - Timer.periodic constructor - Timer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Timer.periodic
- -
- -
- - - -
-

Timer.periodic constructor

- -
- - Timer.periodic(Duration duration, void callback(Timer timer)) -
- -
-

Creates a new repeating timer.

-

The callback is invoked repeatedly with duration intervals until -canceled with the cancel function.

-

The exact timing depends on the underlying timer implementation. -No more than n callbacks will be made in duration * n time, -but the time between two consecutive callbacks -can be shorter and longer than duration.

-

In particular, an implementation may schedule the next callback, e.g., -a duration after either when the previous callback ended, -when the previous callback started, or when the previous callback was -scheduled for - even if the actual callback was delayed.

-

duration must a non-negative Duration.

-
- -
-

Implementation

-
factory Timer.periodic(Duration duration, void callback(Timer timer)) {
-  if (Zone.current == Zone.root) {
-    // No need to bind the callback. We know that the root's timer will
-    // be invoked in the root zone.
-    return Zone.current.createPeriodicTimer(duration, callback);
-  }
-  var boundCallback = Zone.current.bindUnaryCallbackGuarded<Timer>(callback);
-  return Zone.current.createPeriodicTimer(duration, boundCallback);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Timer/cancel.html b/doc/api/dart-async/Timer/cancel.html deleted file mode 100644 index 94db3970..00000000 --- a/doc/api/dart-async/Timer/cancel.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - cancel method - Timer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
cancel
- -
- -
- - - -
-

cancel method

- -
- void - cancel -() - -
-
-

Cancels the timer.

-

Once a Timer has been canceled, the callback function will not be called -by the timer. Calling cancel more than once on a Timer is allowed, and -will have no further effect.

-
- -
-

Implementation

-
void cancel();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Timer/isActive.html b/doc/api/dart-async/Timer/isActive.html deleted file mode 100644 index 3affbd7b..00000000 --- a/doc/api/dart-async/Timer/isActive.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - isActive property - Timer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
isActive
- -
- -
- - - -
-

isActive property

- - -
- -
- bool - isActive - -
- -
-

Returns whether the timer is still active.

-

A non-periodic timer is active if the callback has not been executed, -and the timer has not been canceled.

-

A periodic timer is active if it has not been canceled.

-
-
-

Implementation

-
bool get isActive;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Timer/run.html b/doc/api/dart-async/Timer/run.html deleted file mode 100644 index 56870440..00000000 --- a/doc/api/dart-async/Timer/run.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - run method - Timer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
run
- -
- -
- - - -
-

run method

- -
- void - run -(void callback()) - -
-
-

Runs the given callback asynchronously as soon as possible.

-

This function is equivalent to new Timer(Duration.zero, callback).

-
- -
-

Implementation

-
static void run(void Function() callback) {
-  new Timer(Duration.zero, callback);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Timer/tick.html b/doc/api/dart-async/Timer/tick.html deleted file mode 100644 index a8fa1923..00000000 --- a/doc/api/dart-async/Timer/tick.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - tick property - Timer class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
tick
- -
- -
- - - -
-

tick property

- - -
- -
- int - tick - -
- -
-

The number of durations preceding the most recent timer event.

-

The value starts at zero and is incremented each time a timer event -occurs, so each callback will see a larger value than the previous one.

-

If a periodic timer with a non-zero duration is delayed too much, -so more than one tick should have happened, -all but the last tick in the past are considered "missed", -and no callback is invoked for them. -The tick count reflects the number of durations that have passed and -not the number of callback invocations that have happened.

-
-
-

Implementation

-
int get tick;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone-class.html b/doc/api/dart-async/Zone-class.html deleted file mode 100644 index cd4cc15b..00000000 --- a/doc/api/dart-async/Zone-class.html +++ /dev/null @@ -1,575 +0,0 @@ - - - - - - - - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
Zone
- -
- -
- - - -
-

Zone class

- -
-

A zone represents an environment that remains stable across asynchronous -calls.

-

Code is always executed in the context of a zone, available as -Zone.current. The initial main function runs in the context of the -default zone (Zone.root). Code can be run in a different zone using either -runZoned, to create a new zone, or Zone.run to run code in the context of -an existing zone likely created using Zone.fork.

-

Developers can create a new zone that overrides some of the functionality of -an existing zone. For example, custom zones can replace of modify the -behavior of print, timers, microtasks or how uncaught errors are handled.

-

The Zone class is not subclassable, but users can provide custom zones by -forking an existing zone (usually Zone.current) with a ZoneSpecification. -This is similar to creating a new class that extends the base Zone class -and that overrides some methods, except without actually creating a new -class. Instead the overriding methods are provided as functions that -explicitly take the equivalent of their own class, the "super" class and the -this object as parameters.

-

Asynchronous callbacks always run in the context of the zone where they were -scheduled. This is implemented using two steps:

-
    -
  1. the callback is first registered using one of registerCallback, - registerUnaryCallback, or registerBinaryCallback. This allows the zone - to record that a callback exists and potentially modify it (by returning a - different callback). The code doing the registration (e.g., Future.then) - also remembers the current zone so that it can later run the callback in - that zone.
  2. -
  3. At a later point the registered callback is run in the remembered zone.
  4. -
-

This is all handled internally by the platform code and most users don't need -to worry about it. However, developers of new asynchronous operations, -provided by the underlying system or through native extensions, must follow -the protocol to be zone compatible.

-

For convenience, zones provide bindCallback (and the corresponding -bindUnaryCallback and bindBinaryCallback) to make it easier to respect -the zone contract: these functions first invoke the corresponding register -functions and then wrap the returned function so that it runs in the current -zone when it is later asynchronously invoked.

-

Similarly, zones provide bindCallbackGuarded (and the corresponding -bindUnaryCallbackGuarded and bindBinaryCallbackGuarded), when the -callback should be invoked through Zone.runGuarded.

-
- - - -
-

Properties

- -
-
- errorZone - Zone -
-
- The error zone is the one that is responsible for dealing with uncaught -errors. [...] -
read-only
-
-
- parent - Zone -
-
- The parent zone of the this zone. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bindBinaryCallback<R, T1, T2>(R callback(T1 argument1, T2 argument2)) - ZoneBinaryCallback<R, T1, T2> - -
-
- Registers the provided callback and returns a function that will - execute in this zone. [...] - -
-
- bindBinaryCallbackGuarded<T1, T2>(void callback(T1 argument1, T2 argument2)) - → void Function(T1, T2) - -
-
- Registers the provided callback and returns a function that will - execute in this zone. [...] - -
-
- bindCallback<R>(R callback()) - ZoneCallback<R> - -
-
- Registers the provided callback and returns a function that will - execute in this zone. [...] - -
-
- bindCallbackGuarded(void callback()) - → void Function() - -
-
- Registers the provided callback and returns a function that will -execute in this zone. [...] - -
-
- bindUnaryCallback<R, T>(R callback(T argument)) - ZoneUnaryCallback<R, T> - -
-
- Registers the provided callback and returns a function that will - execute in this zone. [...] - -
-
- bindUnaryCallbackGuarded<T>(void callback(T argument)) - → void Function(T) - -
-
- Registers the provided callback and returns a function that will -execute in this zone. [...] - -
-
- createPeriodicTimer(Duration period, void callback(Timer timer)) - Timer - -
-
- Creates a periodic Timer where the callback is executed in this zone. - -
-
- createTimer(Duration duration, void callback()) - Timer - -
-
- Creates a Timer where the callback is executed in this zone. - -
-
- errorCallback(Object error, StackTrace stackTrace) - AsyncError - -
-
- Intercepts errors when added programmatically to a Future or Stream. [...] - -
-
- fork({ZoneSpecification specification, Map<Object, Object> zoneValues }) - Zone - -
-
- Creates a new zone as a child of this. [...] - -
-
- handleUncaughtError(Object error, StackTrace stackTrace) - → void - -
-
- Handles uncaught asynchronous errors. [...] - -
-
- inSameErrorZone(Zone otherZone) - bool - -
-
- Returns true if this and otherZone are in the same error zone. [...] - -
-
- print(String line) - → void - -
-
- Prints the given line. [...] - -
-
- registerBinaryCallback<R, T1, T2>(R callback(T1 arg1, T2 arg2)) - ZoneBinaryCallback<R, T1, T2> - -
-
- Registers the given callback in this zone. [...] - -
-
- registerCallback<R>(R callback()) - ZoneCallback<R> - -
-
- Registers the given callback in this zone. [...] - -
-
- registerUnaryCallback<R, T>(R callback(T arg)) - ZoneUnaryCallback<R, T> - -
-
- Registers the given callback in this zone. [...] - -
-
- run<R>(R action()) - → R - -
-
- Executes action in this zone. [...] - -
-
- runBinary<R, T1, T2>(R action(T1 argument1, T2 argument2), T1 argument1, T2 argument2) - → R - -
-
- Executes the given action with argument1 and argument2 in this -zone. [...] - -
-
- runBinaryGuarded<T1, T2>(void action(T1 argument1, T2 argument2), T1 argument1, T2 argument2) - → void - -
-
- Executes the given action with argument1 and argument2 in this -zone and catches synchronous errors. [...] - -
-
- runGuarded(void action()) - → void - -
-
- Executes the given action in this zone and catches synchronous -errors. [...] - -
-
- runUnary<R, T>(R action(T argument), T argument) - → R - -
-
- Executes the given action with argument in this zone. [...] - -
-
- runUnaryGuarded<T>(void action(T argument), T argument) - → void - -
-
- Executes the given action with argument in this zone and -catches synchronous errors. [...] - -
-
- scheduleMicrotask(void callback()) - → void - -
-
- Runs callback asynchronously in this zone. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator [](Object key) - → dynamic - -
-
- Retrieves the zone-value associated with key. [...] - -
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- -
-

Static Properties

- -
-
- current - Zone -
-
- The zone that is currently active. -
read-only
-
-
-
- - -
-

Constants

- -
-
- root - → const Zone -
-
- The root zone. [...] - -
- _rootZone -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/bindBinaryCallback.html b/doc/api/dart-async/Zone/bindBinaryCallback.html deleted file mode 100644 index 0932efe7..00000000 --- a/doc/api/dart-async/Zone/bindBinaryCallback.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - bindBinaryCallback method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
bindBinaryCallback
- -
- -
- - - -
-

bindBinaryCallback<R, T1, T2> method

- -
- ZoneBinaryCallback<R, T1, T2> - bindBinaryCallback -<R, T1, T2>(R callback(T1 argument1, T2 argument2)) - -
-
-

Registers the provided callback and returns a function that will - execute in this zone.

-

Equivalent to:

-
 ZoneCallback registered = registerBinaryCallback(callback);
- return (arg1, arg2) => thin.runBinary(registered, arg1, arg2);
-
-
- -
-

Implementation

-
ZoneBinaryCallback<R, T1, T2> bindBinaryCallback<R, T1, T2>(
-    R callback(T1 argument1, T2 argument2));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/bindBinaryCallbackGuarded.html b/doc/api/dart-async/Zone/bindBinaryCallbackGuarded.html deleted file mode 100644 index c35e6d91..00000000 --- a/doc/api/dart-async/Zone/bindBinaryCallbackGuarded.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - bindBinaryCallbackGuarded method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
bindBinaryCallbackGuarded
- -
- -
- - - -
-

bindBinaryCallbackGuarded<T1, T2> method

- -
- void Function(T1, T2) - bindBinaryCallbackGuarded -<T1, T2>(void callback(T1 argument1, T2 argument2)) - -
-
-

Registers the provided callback and returns a function that will - execute in this zone.

-

Equivalent to:

-
 ZoneCallback registered = registerBinaryCallback(callback);
- return (arg1, arg2) => this.runBinaryGuarded(registered, arg1, arg2);
-
-
- -
-

Implementation

-
void Function(T1, T2) bindBinaryCallbackGuarded<T1, T2>(
-    void callback(T1 argument1, T2 argument2));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/bindCallback.html b/doc/api/dart-async/Zone/bindCallback.html deleted file mode 100644 index 5de79382..00000000 --- a/doc/api/dart-async/Zone/bindCallback.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - bindCallback method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
bindCallback
- -
- -
- - - -
-

bindCallback<R> method

- -
- ZoneCallback<R> - bindCallback -<R>(R callback()) - -
-
-

Registers the provided callback and returns a function that will - execute in this zone.

-

Equivalent to:

-
 ZoneCallback registered = this.registerCallback(callback);
- return () => this.run(registered);
-
-
- -
-

Implementation

-
ZoneCallback<R> bindCallback<R>(R callback());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/bindCallbackGuarded.html b/doc/api/dart-async/Zone/bindCallbackGuarded.html deleted file mode 100644 index 59b68986..00000000 --- a/doc/api/dart-async/Zone/bindCallbackGuarded.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - bindCallbackGuarded method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
bindCallbackGuarded
- -
- -
- - - -
-

bindCallbackGuarded method

- -
- void Function() - bindCallbackGuarded -(void callback()) - -
-
-

Registers the provided callback and returns a function that will -execute in this zone.

-

When the function executes, errors are caught and treated as uncaught -errors.

-

Equivalent to:

-
ZoneCallback registered = this.registerCallback(callback);
-return () => this.runGuarded(registered);
-
-
- -
-

Implementation

-
void Function() bindCallbackGuarded(void Function() callback);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/bindUnaryCallback.html b/doc/api/dart-async/Zone/bindUnaryCallback.html deleted file mode 100644 index 4503096f..00000000 --- a/doc/api/dart-async/Zone/bindUnaryCallback.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - bindUnaryCallback method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
bindUnaryCallback
- -
- -
- - - -
-

bindUnaryCallback<R, T> method

- -
- ZoneUnaryCallback<R, T> - bindUnaryCallback -<R, T>(R callback(T argument)) - -
-
-

Registers the provided callback and returns a function that will - execute in this zone.

-

Equivalent to:

-
 ZoneCallback registered = this.registerUnaryCallback(callback);
- return (arg) => thin.runUnary(registered, arg);
-
-
- -
-

Implementation

-
ZoneUnaryCallback<R, T> bindUnaryCallback<R, T>(R callback(T argument));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/bindUnaryCallbackGuarded.html b/doc/api/dart-async/Zone/bindUnaryCallbackGuarded.html deleted file mode 100644 index ee3b2b78..00000000 --- a/doc/api/dart-async/Zone/bindUnaryCallbackGuarded.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - bindUnaryCallbackGuarded method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
bindUnaryCallbackGuarded
- -
- -
- - - -
-

bindUnaryCallbackGuarded<T> method

- -
- void Function(T) - bindUnaryCallbackGuarded -<T>(void callback(T argument)) - -
-
-

Registers the provided callback and returns a function that will -execute in this zone.

-

When the function executes, errors are caught and treated as uncaught -errors.

-

Equivalent to:

-
ZoneCallback registered = this.registerUnaryCallback(callback);
-return (arg) => this.runUnaryGuarded(registered, arg);
-
-
- -
-

Implementation

-
void Function(T) bindUnaryCallbackGuarded<T>(void callback(T argument));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/createPeriodicTimer.html b/doc/api/dart-async/Zone/createPeriodicTimer.html deleted file mode 100644 index 5df3a2a9..00000000 --- a/doc/api/dart-async/Zone/createPeriodicTimer.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - createPeriodicTimer method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
createPeriodicTimer
- -
- -
- - - -
-

createPeriodicTimer method

- -
- Timer - createPeriodicTimer -(Duration period, void callback(Timer timer)) - -
-
-

Creates a periodic Timer where the callback is executed in this zone.

-
- -
-

Implementation

-
Timer createPeriodicTimer(Duration period, void callback(Timer timer));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/createTimer.html b/doc/api/dart-async/Zone/createTimer.html deleted file mode 100644 index 2263e5b6..00000000 --- a/doc/api/dart-async/Zone/createTimer.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - createTimer method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
createTimer
- -
- -
- - - -
-

createTimer method

- -
- Timer - createTimer -(Duration duration, void callback()) - -
-
-

Creates a Timer where the callback is executed in this zone.

-
- -
-

Implementation

-
Timer createTimer(Duration duration, void Function() callback);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/current.html b/doc/api/dart-async/Zone/current.html deleted file mode 100644 index 11ec8611..00000000 --- a/doc/api/dart-async/Zone/current.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - current property - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
current
- -
- -
- - - -
-

current property

- - -
- -
- Zone - current - -
- -
-

The zone that is currently active.

-
-
-

Implementation

-
static Zone get current => _current;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/errorCallback.html b/doc/api/dart-async/Zone/errorCallback.html deleted file mode 100644 index 83743e2e..00000000 --- a/doc/api/dart-async/Zone/errorCallback.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - errorCallback method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
errorCallback
- -
- -
- - - -
-

errorCallback method

- -
- AsyncError - errorCallback -(Object error, StackTrace stackTrace) - -
-
-

Intercepts errors when added programmatically to a Future or Stream.

-

When calling Completer.completeError, StreamController.addError, -or some Future constructors, the current zone is allowed to intercept -and replace the error.

-

Future constructors invoke this function when the error is received -directly, for example with Future.error, or when the error is caught -synchronously, for example with Future.sync.

-

There is no guarantee that an error is only sent through errorCallback -once. Libraries that use intermediate controllers or completers might -end up invoking errorCallback multiple times.

-

Returns null if no replacement is desired. Otherwise returns an instance -of AsyncError holding the new pair of error and stack trace.

-

Although not recommended, the returned instance may have its error member -(AsyncError.error) be equal to null in which case the error should be -replaced by a NullThrownError.

-

Custom zones may intercept this operation.

-

Implementations of a new asynchronous primitive that converts synchronous -errors to asynchronous errors rarely need to invoke errorCallback, since -errors are usually reported through future completers or stream -controllers.

-
- -
-

Implementation

-
AsyncError? errorCallback(Object error, StackTrace? stackTrace);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/errorZone.html b/doc/api/dart-async/Zone/errorZone.html deleted file mode 100644 index d301d415..00000000 --- a/doc/api/dart-async/Zone/errorZone.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - errorZone property - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
errorZone
- -
- -
- - - -
-

errorZone property

- - -
- -
- Zone - errorZone - -
- -
-

The error zone is the one that is responsible for dealing with uncaught -errors.

-

This is the closest parent zone of this zone that provides a -handleUncaughtError method.

-

Asynchronous errors never cross zone boundaries between zones with -different error handlers.

-

Example:

-
import 'dart:async';
-
-main() {
-  var future;
-  runZoned(() {
-    // The asynchronous error is caught by the custom zone which prints
-    // 'asynchronous error'.
-    future = Future.error("asynchronous error");
-  }, onError: (e) { print(e); });  // Creates a zone with an error handler.
-  // The following `catchError` handler is never invoked, because the
-  // custom zone created by the call to `runZoned` provides an
-  // error handler.
-  future.catchError((e) { throw "is never reached"; });
-}
-
-

Note that errors cannot enter a child zone with a different error handler -either:

-
import 'dart:async';
-
-main() {
-  runZoned(() {
-    // The following asynchronous error is *not* caught by the `catchError`
-    // in the nested zone, since errors are not to cross zone boundaries
-    // with different error handlers.
-    // Instead the error is handled by the current error handler,
-    // printing "Caught by outer zone: asynchronous error".
-    var future = Future.error("asynchronous error");
-    runZoned(() {
-      future.catchError((e) { throw "is never reached"; });
-    }, onError: (e) { throw "is never reached"; });
-  }, onError: (e) { print("Caught by outer zone: $e"); });
-}
-
-
-
-

Implementation

-
Zone get errorZone;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/fork.html b/doc/api/dart-async/Zone/fork.html deleted file mode 100644 index 37f2ea50..00000000 --- a/doc/api/dart-async/Zone/fork.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - fork method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
fork
- -
- -
- - - -
-

fork method

- -
- Zone - fork -({ZoneSpecification specification, Map<Object, Object> zoneValues }) - -
-
-

Creates a new zone as a child of this.

-

The new zone uses the closures in the given specification to override -the current's zone behavior. All specification entries that are null -inherit the behavior from the parent zone (this).

-

The new zone inherits the stored values (accessed through operator []) -of this zone and updates them with values from zoneValues, which either -adds new values or overrides existing ones.

-

Note that the fork operation is interceptible. A zone can thus change -the zone specification (or zone values), giving the forking zone full -control over the child zone.

-
- -
-

Implementation

-
Zone fork(
-    {ZoneSpecification? specification, Map<Object?, Object?>? zoneValues});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/handleUncaughtError.html b/doc/api/dart-async/Zone/handleUncaughtError.html deleted file mode 100644 index 508c241a..00000000 --- a/doc/api/dart-async/Zone/handleUncaughtError.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - handleUncaughtError method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
handleUncaughtError
- -
- -
- - - -
-

handleUncaughtError method

- -
- void - handleUncaughtError -(Object error, StackTrace stackTrace) - -
-
-

Handles uncaught asynchronous errors.

-

There are two kind of asynchronous errors that are handled by this -function:

-
    -
  1. Uncaught errors that were thrown in asynchronous callbacks, for example, -a throw in the function passed to Timer.run.
  2. -
  3. Asynchronous errors that are pushed through Future and Stream - chains, but for which no child registered an error handler. - Most asynchronous classes, like Future or Stream push errors to their - listeners. Errors are propagated this way until either a listener handles - the error (for example with Future.catchError), or no listener is - available anymore. In the latter case, futures and streams invoke the - zone's handleUncaughtError.
  4. -
-

By default, when handled by the root zone, uncaught asynchronous errors are -treated like uncaught synchronous exceptions.

-
- -
-

Implementation

-
void handleUncaughtError(Object error, StackTrace stackTrace);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/inSameErrorZone.html b/doc/api/dart-async/Zone/inSameErrorZone.html deleted file mode 100644 index 3b57bf84..00000000 --- a/doc/api/dart-async/Zone/inSameErrorZone.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - inSameErrorZone method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
inSameErrorZone
- -
- -
- - - -
-

inSameErrorZone method

- -
- bool - inSameErrorZone -(Zone otherZone) - -
-
-

Returns true if this and otherZone are in the same error zone.

-

Two zones are in the same error zone if they have the same errorZone.

-
- -
-

Implementation

-
bool inSameErrorZone(Zone otherZone);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/operator_get.html b/doc/api/dart-async/Zone/operator_get.html deleted file mode 100644 index c7095a04..00000000 --- a/doc/api/dart-async/Zone/operator_get.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - operator [] method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- dynamic - operator [] -(Object key) - -
-
-

Retrieves the zone-value associated with key.

-

If this zone does not contain the value looks up the same key in the -parent zone. If the key is not found returns null.

-

Any object can be used as key, as long as it has compatible operator == -and hashCode implementations. -By controlling access to the key, a zone can grant or deny access to the -zone value.

-
- -
-

Implementation

-
dynamic operator [](Object? key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/parent.html b/doc/api/dart-async/Zone/parent.html deleted file mode 100644 index fe1a7675..00000000 --- a/doc/api/dart-async/Zone/parent.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - parent property - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
parent
- -
- -
- - - -
-

parent property

- - -
- -
- Zone - parent - -
- -
-

The parent zone of the this zone.

-

Is null if this is the root zone.

-

Zones are created by fork on an existing zone, or by runZoned which -forks the current zone. The new zone's parent zone is the zone it was -forked from.

-
-
-

Implementation

-
Zone? get parent;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/print.html b/doc/api/dart-async/Zone/print.html deleted file mode 100644 index 18c1f7f6..00000000 --- a/doc/api/dart-async/Zone/print.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - print method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
print
- -
- -
- - - -
-

print method

- -
- void - print -(String line) - -
-
-

Prints the given line.

-

The global print function delegates to the current zone's print -function which makes it possible to intercept printing.

-

Example:

-
import 'dart:async';
-
-main() {
-  runZoned(() {
-    // Ends up printing: "Intercepted: in zone".
-    print("in zone");
-  }, zoneSpecification: new ZoneSpecification(
-      print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
-    parent.print(zone, "Intercepted: $line");
-  }));
-}
-
-
- -
-

Implementation

-
void print(String line);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/registerBinaryCallback.html b/doc/api/dart-async/Zone/registerBinaryCallback.html deleted file mode 100644 index 563974b0..00000000 --- a/doc/api/dart-async/Zone/registerBinaryCallback.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - registerBinaryCallback method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerBinaryCallback
- -
- -
- - - -
-

registerBinaryCallback<R, T1, T2> method

- -
- ZoneBinaryCallback<R, T1, T2> - registerBinaryCallback -<R, T1, T2>(R callback(T1 arg1, T2 arg2)) - -
-
-

Registers the given callback in this zone.

-

Similar to registerCallback but with a unary callback.

-
- -
-

Implementation

-
ZoneBinaryCallback<R, T1, T2> registerBinaryCallback<R, T1, T2>(
-    R callback(T1 arg1, T2 arg2));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/registerCallback.html b/doc/api/dart-async/Zone/registerCallback.html deleted file mode 100644 index 290df607..00000000 --- a/doc/api/dart-async/Zone/registerCallback.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - registerCallback method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerCallback
- -
- -
- - - -
-

registerCallback<R> method

- -
- ZoneCallback<R> - registerCallback -<R>(R callback()) - -
-
-

Registers the given callback in this zone.

-

When implementing an asynchronous primitive that uses callbacks, the -callback must be registered using registerCallback at the point where the -user provides the callback. This allows zones to record other information -that they need at the same time, perhaps even wrapping the callback, so -that the callback is prepared when it is later run in the same zones -(using run). For example, a zone may decide -to store the stack trace (at the time of the registration) with the -callback.

-

Returns the callback that should be used in place of the provided -callback. Frequently zones simply return the original callback.

-

Custom zones may intercept this operation. The default implementation in -Zone.root returns the original callback unchanged.

-
- -
-

Implementation

-
ZoneCallback<R> registerCallback<R>(R callback());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/registerUnaryCallback.html b/doc/api/dart-async/Zone/registerUnaryCallback.html deleted file mode 100644 index 6e6ef14e..00000000 --- a/doc/api/dart-async/Zone/registerUnaryCallback.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - registerUnaryCallback method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerUnaryCallback
- -
- -
- - - -
-

registerUnaryCallback<R, T> method

- -
- ZoneUnaryCallback<R, T> - registerUnaryCallback -<R, T>(R callback(T arg)) - -
-
-

Registers the given callback in this zone.

-

Similar to registerCallback but with a unary callback.

-
- -
-

Implementation

-
ZoneUnaryCallback<R, T> registerUnaryCallback<R, T>(R callback(T arg));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/root-constant.html b/doc/api/dart-async/Zone/root-constant.html deleted file mode 100644 index cd77ef5f..00000000 --- a/doc/api/dart-async/Zone/root-constant.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - root constant - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
root
- -
- -
- - - -
-

root constant

- -
- Zone - const root - = - _rootZone -
- -
-

The root zone.

-

All isolate entry functions (main or spawned functions) start running in -the root zone (that is, Zone.current is identical to Zone.root when the -entry function is called). If no custom zone is created, the rest of the -program always runs in the root zone.

-

The root zone implements the default behavior of all zone operations. -Many methods, like registerCallback do the bare minimum required of the -function, and are only provided as a hook for custom zones. Others, like -scheduleMicrotask, interact with the underlying system to implement the -desired behavior.

-
-
-

Implementation

-
static const Zone root = _rootZone
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/run.html b/doc/api/dart-async/Zone/run.html deleted file mode 100644 index 3b59eaa3..00000000 --- a/doc/api/dart-async/Zone/run.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - run method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
run
- -
- -
- - - -
-

run<R> method

- -
- R - run -<R>(R action()) - -
-
-

Executes action in this zone.

-

By default (as implemented in the root zone), runs action -with current set to this zone.

-

If action throws, the synchronous exception is not caught by the zone's -error handler. Use runGuarded to achieve that.

-

Since the root zone is the only zone that can modify the value of -current, custom zones intercepting run should always delegate to their -parent zone. They may take actions before and after the call.

-
- -
-

Implementation

-
R run<R>(R action());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/runBinary.html b/doc/api/dart-async/Zone/runBinary.html deleted file mode 100644 index 161c284a..00000000 --- a/doc/api/dart-async/Zone/runBinary.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - runBinary method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runBinary
- -
- -
- - - -
-

runBinary<R, T1, T2> method

- -
- R - runBinary -<R, T1, T2>(R action(T1 argument1, T2 argument2), T1 argument1, T2 argument2) - -
-
-

Executes the given action with argument1 and argument2 in this -zone.

-

As run except that action is called with two arguments instead of none.

-
- -
-

Implementation

-
R runBinary<R, T1, T2>(
-    R action(T1 argument1, T2 argument2), T1 argument1, T2 argument2);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/runBinaryGuarded.html b/doc/api/dart-async/Zone/runBinaryGuarded.html deleted file mode 100644 index 1153513e..00000000 --- a/doc/api/dart-async/Zone/runBinaryGuarded.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - runBinaryGuarded method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runBinaryGuarded
- -
- -
- - - -
-

runBinaryGuarded<T1, T2> method

- -
- void - runBinaryGuarded -<T1, T2>(void action(T1 argument1, T2 argument2), T1 argument1, T2 argument2) - -
-
-

Executes the given action with argument1 and argument2 in this -zone and catches synchronous errors.

-

See runGuarded.

-
- -
-

Implementation

-
void runBinaryGuarded<T1, T2>(
-    void action(T1 argument1, T2 argument2), T1 argument1, T2 argument2);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/runGuarded.html b/doc/api/dart-async/Zone/runGuarded.html deleted file mode 100644 index b452043b..00000000 --- a/doc/api/dart-async/Zone/runGuarded.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - runGuarded method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runGuarded
- -
- -
- - - -
-

runGuarded method

- -
- void - runGuarded -(void action()) - -
-
-

Executes the given action in this zone and catches synchronous -errors.

-

This function is equivalent to:

-
try {
-  this.run(action);
-} catch (e, s) {
-  this.handleUncaughtError(e, s);
-}
-
-

See run.

-
- -
-

Implementation

-
void runGuarded(void action());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/runUnary.html b/doc/api/dart-async/Zone/runUnary.html deleted file mode 100644 index 7477de67..00000000 --- a/doc/api/dart-async/Zone/runUnary.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - runUnary method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runUnary
- -
- -
- - - -
-

runUnary<R, T> method

- -
- R - runUnary -<R, T>(R action(T argument), T argument) - -
-
-

Executes the given action with argument in this zone.

-

As run except that action is called with one argument instead of -none.

-
- -
-

Implementation

-
R runUnary<R, T>(R action(T argument), T argument);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/runUnaryGuarded.html b/doc/api/dart-async/Zone/runUnaryGuarded.html deleted file mode 100644 index 47478d3f..00000000 --- a/doc/api/dart-async/Zone/runUnaryGuarded.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - runUnaryGuarded method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runUnaryGuarded
- -
- -
- - - -
-

runUnaryGuarded<T> method

- -
- void - runUnaryGuarded -<T>(void action(T argument), T argument) - -
-
-

Executes the given action with argument in this zone and -catches synchronous errors.

-

See runGuarded.

-
- -
-

Implementation

-
void runUnaryGuarded<T>(void action(T argument), T argument);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/Zone/scheduleMicrotask.html b/doc/api/dart-async/Zone/scheduleMicrotask.html deleted file mode 100644 index d9f9df0e..00000000 --- a/doc/api/dart-async/Zone/scheduleMicrotask.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - scheduleMicrotask method - Zone class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
scheduleMicrotask
- -
- -
- - - -
-

scheduleMicrotask method

- -
- void - scheduleMicrotask -(void callback()) - -
-
-

Runs callback asynchronously in this zone.

-

The global scheduleMicrotask delegates to the current zone's -scheduleMicrotask. The root zone's implementation interacts with the -underlying system to schedule the given callback as a microtask.

-

Custom zones may intercept this operation (for example to wrap the given -callback).

-
- -
-

Implementation

-
void scheduleMicrotask(void Function() callback);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneBinaryCallback.html b/doc/api/dart-async/ZoneBinaryCallback.html deleted file mode 100644 index 5c04c78c..00000000 --- a/doc/api/dart-async/ZoneBinaryCallback.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - ZoneBinaryCallback typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ZoneBinaryCallback
- -
- -
- - - -
-

ZoneBinaryCallback<R, T1, T2> typedef

- -
- R - ZoneBinaryCallback -(T1 arg1, T2 arg2) -
- -
-

Implementation

-
typedef R ZoneBinaryCallback<R, T1, T2>(T1 arg1, T2 arg2);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneCallback.html b/doc/api/dart-async/ZoneCallback.html deleted file mode 100644 index 6a94175d..00000000 --- a/doc/api/dart-async/ZoneCallback.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - ZoneCallback typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ZoneCallback
- -
- -
- - - -
-

ZoneCallback<R> typedef

- -
- R - ZoneCallback -() -
- -
-

Implementation

-
typedef R ZoneCallback<R>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate-class.html b/doc/api/dart-async/ZoneDelegate-class.html deleted file mode 100644 index 4420712f..00000000 --- a/doc/api/dart-async/ZoneDelegate-class.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ZoneDelegate
- -
- -
- - - -
-

ZoneDelegate class

- -
-

An adapted view of the parent zone.

-

This class allows the implementation of a zone method to invoke methods on -the parent zone while retaining knowledge of the originating zone.

-

Custom zones (created through Zone.fork or runZoned) can provide -implementations of most methods of zones. This is similar to overriding -methods on Zone, except that this mechanism doesn't require subclassing.

-

A custom zone function (provided through a ZoneSpecification) typically -records or wraps its parameters and then delegates the operation to its -parent zone using the provided ZoneDelegate.

-

While zones have access to their parent zone (through Zone.parent) it is -recommended to call the methods on the provided parent delegate for two -reasons:

-
    -
  1. the delegate methods take an additional zone argument which is the - zone the action has been initiated in.
  2. -
  3. delegate calls are more efficient, since the implementation knows how -to skip zones that would just delegate to their parents.
  4. -
-
- - -
-

Constructors

- -
-
- ZoneDelegate() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- createPeriodicTimer(Zone zone, Duration period, void f(Timer timer)) - Timer - -
-
- - -
-
- createTimer(Zone zone, Duration duration, void f()) - Timer - -
-
- - -
-
- errorCallback(Zone zone, Object error, StackTrace stackTrace) - AsyncError - -
-
- - -
-
- fork(Zone zone, ZoneSpecification specification, Map zoneValues) - Zone - -
-
- - -
-
- handleUncaughtError(Zone zone, Object error, StackTrace stackTrace) - → void - -
-
- - -
-
- print(Zone zone, String line) - → void - -
-
- - -
-
- registerBinaryCallback<R, T1, T2>(Zone zone, R f(T1 arg1, T2 arg2)) - ZoneBinaryCallback<R, T1, T2> - -
-
- - -
-
- registerCallback<R>(Zone zone, R f()) - ZoneCallback<R> - -
-
- - -
-
- registerUnaryCallback<R, T>(Zone zone, R f(T arg)) - ZoneUnaryCallback<R, T> - -
-
- - -
-
- run<R>(Zone zone, R f()) - → R - -
-
- - -
-
- runBinary<R, T1, T2>(Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2) - → R - -
-
- - -
-
- runUnary<R, T>(Zone zone, R f(T arg), T arg) - → R - -
-
- - -
-
- scheduleMicrotask(Zone zone, void f()) - → void - -
-
- - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/ZoneDelegate.html b/doc/api/dart-async/ZoneDelegate/ZoneDelegate.html deleted file mode 100644 index 7f3442a4..00000000 --- a/doc/api/dart-async/ZoneDelegate/ZoneDelegate.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - ZoneDelegate constructor - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ZoneDelegate
- -
- -
- - - -
-

ZoneDelegate constructor

- -
- - ZoneDelegate() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/createPeriodicTimer.html b/doc/api/dart-async/ZoneDelegate/createPeriodicTimer.html deleted file mode 100644 index ea74fc7c..00000000 --- a/doc/api/dart-async/ZoneDelegate/createPeriodicTimer.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - createPeriodicTimer method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
createPeriodicTimer
- -
- -
- - - -
-

createPeriodicTimer method

- -
- Timer - createPeriodicTimer -(Zone zone, Duration period, void f(Timer timer)) - -
- -
-

Implementation

-
Timer createPeriodicTimer(Zone zone, Duration period, void f(Timer timer));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/createTimer.html b/doc/api/dart-async/ZoneDelegate/createTimer.html deleted file mode 100644 index 3c3f5b79..00000000 --- a/doc/api/dart-async/ZoneDelegate/createTimer.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - createTimer method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
createTimer
- -
- -
- - - -
-

createTimer method

- -
- Timer - createTimer -(Zone zone, Duration duration, void f()) - -
- -
-

Implementation

-
Timer createTimer(Zone zone, Duration duration, void f());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/errorCallback.html b/doc/api/dart-async/ZoneDelegate/errorCallback.html deleted file mode 100644 index fce6d437..00000000 --- a/doc/api/dart-async/ZoneDelegate/errorCallback.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - errorCallback method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
errorCallback
- -
- -
- - - -
-

errorCallback method

- -
- AsyncError - errorCallback -(Zone zone, Object error, StackTrace stackTrace) - -
- -
-

Implementation

-
AsyncError? errorCallback(Zone zone, Object error, StackTrace? stackTrace);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/fork.html b/doc/api/dart-async/ZoneDelegate/fork.html deleted file mode 100644 index 799ebdb7..00000000 --- a/doc/api/dart-async/ZoneDelegate/fork.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - fork method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
fork
- -
- -
- - - -
-

fork method

- -
- Zone - fork -(Zone zone, ZoneSpecification specification, Map zoneValues) - -
- -
-

Implementation

-
Zone fork(Zone zone, ZoneSpecification? specification, Map? zoneValues);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/handleUncaughtError.html b/doc/api/dart-async/ZoneDelegate/handleUncaughtError.html deleted file mode 100644 index cf02c1f9..00000000 --- a/doc/api/dart-async/ZoneDelegate/handleUncaughtError.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - handleUncaughtError method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
handleUncaughtError
- -
- -
- - - -
-

handleUncaughtError method

- -
- void - handleUncaughtError -(Zone zone, Object error, StackTrace stackTrace) - -
- -
-

Implementation

-
void handleUncaughtError(Zone zone, Object error, StackTrace stackTrace);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/print.html b/doc/api/dart-async/ZoneDelegate/print.html deleted file mode 100644 index b48ca0c6..00000000 --- a/doc/api/dart-async/ZoneDelegate/print.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - print method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
print
- -
- -
- - - -
-

print method

- -
- void - print -(Zone zone, String line) - -
- -
-

Implementation

-
void print(Zone zone, String line);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/registerBinaryCallback.html b/doc/api/dart-async/ZoneDelegate/registerBinaryCallback.html deleted file mode 100644 index 7dac65b6..00000000 --- a/doc/api/dart-async/ZoneDelegate/registerBinaryCallback.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - registerBinaryCallback method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerBinaryCallback
- -
- -
- - - -
-

registerBinaryCallback<R, T1, T2> method

- -
- ZoneBinaryCallback<R, T1, T2> - registerBinaryCallback -<R, T1, T2>(Zone zone, R f(T1 arg1, T2 arg2)) - -
- -
-

Implementation

-
ZoneBinaryCallback<R, T1, T2> registerBinaryCallback<R, T1, T2>(
-    Zone zone, R f(T1 arg1, T2 arg2));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/registerCallback.html b/doc/api/dart-async/ZoneDelegate/registerCallback.html deleted file mode 100644 index 453961fd..00000000 --- a/doc/api/dart-async/ZoneDelegate/registerCallback.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - registerCallback method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerCallback
- -
- -
- - - -
-

registerCallback<R> method

- -
- ZoneCallback<R> - registerCallback -<R>(Zone zone, R f()) - -
- -
-

Implementation

-
ZoneCallback<R> registerCallback<R>(Zone zone, R f());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/registerUnaryCallback.html b/doc/api/dart-async/ZoneDelegate/registerUnaryCallback.html deleted file mode 100644 index 9bc7c8f9..00000000 --- a/doc/api/dart-async/ZoneDelegate/registerUnaryCallback.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - registerUnaryCallback method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerUnaryCallback
- -
- -
- - - -
-

registerUnaryCallback<R, T> method

- -
- ZoneUnaryCallback<R, T> - registerUnaryCallback -<R, T>(Zone zone, R f(T arg)) - -
- -
-

Implementation

-
ZoneUnaryCallback<R, T> registerUnaryCallback<R, T>(Zone zone, R f(T arg));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/run.html b/doc/api/dart-async/ZoneDelegate/run.html deleted file mode 100644 index 42d95f7a..00000000 --- a/doc/api/dart-async/ZoneDelegate/run.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - run method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
run
- -
- -
- - - -
-

run<R> method

- -
- R - run -<R>(Zone zone, R f()) - -
- -
-

Implementation

-
R run<R>(Zone zone, R f());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/runBinary.html b/doc/api/dart-async/ZoneDelegate/runBinary.html deleted file mode 100644 index 5cfc36e5..00000000 --- a/doc/api/dart-async/ZoneDelegate/runBinary.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - runBinary method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runBinary
- -
- -
- - - -
-

runBinary<R, T1, T2> method

- -
- R - runBinary -<R, T1, T2>(Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2) - -
- -
-

Implementation

-
R runBinary<R, T1, T2>(Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/runUnary.html b/doc/api/dart-async/ZoneDelegate/runUnary.html deleted file mode 100644 index 34d75d2e..00000000 --- a/doc/api/dart-async/ZoneDelegate/runUnary.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - runUnary method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runUnary
- -
- -
- - - -
-

runUnary<R, T> method

- -
- R - runUnary -<R, T>(Zone zone, R f(T arg), T arg) - -
- -
-

Implementation

-
R runUnary<R, T>(Zone zone, R f(T arg), T arg);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneDelegate/scheduleMicrotask.html b/doc/api/dart-async/ZoneDelegate/scheduleMicrotask.html deleted file mode 100644 index b148d7b9..00000000 --- a/doc/api/dart-async/ZoneDelegate/scheduleMicrotask.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - scheduleMicrotask method - ZoneDelegate class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
scheduleMicrotask
- -
- -
- - - -
-

scheduleMicrotask method

- -
- void - scheduleMicrotask -(Zone zone, void f()) - -
- -
-

Implementation

-
void scheduleMicrotask(Zone zone, void f());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification-class.html b/doc/api/dart-async/ZoneSpecification-class.html deleted file mode 100644 index f4d264ce..00000000 --- a/doc/api/dart-async/ZoneSpecification-class.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ZoneSpecification
- -
- -
- - - -
-

ZoneSpecification class

- -
-

This class provides the specification for a forked zone.

-

When forking a new zone (see Zone.fork) one can override the default -behavior of the zone by providing callbacks. These callbacks must be -given in an instance of this class.

-

Handlers have the same signature as the same-named methods on Zone but -receive three additional arguments:

-
    -
  1. the zone the handlers are attached to (the "self" zone).
  2. -
  3. a ZoneDelegate to the parent zone.
  4. -
  5. the zone that first received the request (before the request was -bubbled up).
  6. -
-

Handlers can either stop propagation the request (by simply not calling the -parent handler), or forward to the parent zone, potentially modifying the -arguments on the way.

-
- - -
-

Constructors

- -
-
- ZoneSpecification({HandleUncaughtErrorHandler handleUncaughtError, R run(Zone self, ZoneDelegate parent, Zone zone, R f()), R runUnary(Zone self, ZoneDelegate parent, Zone zone, R f(T arg), T arg), R runBinary(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2), ZoneCallback<R> registerCallback(Zone self, ZoneDelegate parent, Zone zone, R f()), ZoneUnaryCallback<R, T> registerUnaryCallback(Zone self, ZoneDelegate parent, Zone zone, R f(T arg)), ZoneBinaryCallback<R, T1, T2> registerBinaryCallback(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)), ErrorCallbackHandler errorCallback, ScheduleMicrotaskHandler scheduleMicrotask, CreateTimerHandler createTimer, CreatePeriodicTimerHandler createPeriodicTimer, PrintHandler print, ForkHandler fork }) -
-
- Creates a specification with the provided handlers. -
const
-
factory
-
-
- ZoneSpecification.from(ZoneSpecification other, { HandleUncaughtErrorHandler handleUncaughtError, R run(Zone self, ZoneDelegate parent, Zone zone, R f()), R runUnary(Zone self, ZoneDelegate parent, Zone zone, R f(T arg), T arg), R runBinary(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2), ZoneCallback<R> registerCallback(Zone self, ZoneDelegate parent, Zone zone, R f()), ZoneUnaryCallback<R, T> registerUnaryCallback(Zone self, ZoneDelegate parent, Zone zone, R f(T arg)), ZoneBinaryCallback<R, T1, T2> registerBinaryCallback(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)), ErrorCallbackHandler errorCallback, ScheduleMicrotaskHandler scheduleMicrotask, CreateTimerHandler createTimer, CreatePeriodicTimerHandler createPeriodicTimer, PrintHandler print, ForkHandler fork }) -
-
- Creates a specification from other with the provided handlers overriding -the ones in other. -
factory
-
-
-
- -
-

Properties

- -
-
- createPeriodicTimer - CreatePeriodicTimerHandler -
-
- -
read-only
-
-
- createTimer - CreateTimerHandler -
-
- -
read-only
-
-
- errorCallback - ErrorCallbackHandler -
-
- -
read-only
-
-
- fork - ForkHandler -
-
- -
read-only
-
-
- handleUncaughtError - HandleUncaughtErrorHandler -
-
- -
read-only
-
-
- print - PrintHandler -
-
- -
read-only
-
-
- registerBinaryCallback - ZoneBinaryCallback<R, T1, T2> Function<R, T1, T2>(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)) -
-
- -
read-only
-
-
- registerCallback - ZoneCallback<R> Function<R>(Zone self, ZoneDelegate parent, Zone zone, R f()) -
-
- -
read-only
-
-
- registerUnaryCallback - ZoneUnaryCallback<R, T> Function<R, T>(Zone self, ZoneDelegate parent, Zone zone, R f(T arg)) -
-
- -
read-only
-
-
- run - → R Function<R>(Zone self, ZoneDelegate parent, Zone zone, R f()) -
-
- -
read-only
-
-
- runBinary - → R Function<R, T1, T2>(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2) -
-
- -
read-only
-
-
- runUnary - → R Function<R, T>(Zone self, ZoneDelegate parent, Zone zone, R f(T arg), T arg) -
-
- -
read-only
-
-
- scheduleMicrotask - ScheduleMicrotaskHandler -
-
- -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/ZoneSpecification.from.html b/doc/api/dart-async/ZoneSpecification/ZoneSpecification.from.html deleted file mode 100644 index 36d563ad..00000000 --- a/doc/api/dart-async/ZoneSpecification/ZoneSpecification.from.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - ZoneSpecification.from constructor - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ZoneSpecification.from
- -
- -
- - - -
-

ZoneSpecification.from constructor

- -
- - ZoneSpecification.from(ZoneSpecification other, { HandleUncaughtErrorHandler handleUncaughtError, R run(Zone self, ZoneDelegate parent, Zone zone, R f()), R runUnary(Zone self, ZoneDelegate parent, Zone zone, R f(T arg), T arg), R runBinary(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2), ZoneCallback<R> registerCallback(Zone self, ZoneDelegate parent, Zone zone, R f()), ZoneUnaryCallback<R, T> registerUnaryCallback(Zone self, ZoneDelegate parent, Zone zone, R f(T arg)), ZoneBinaryCallback<R, T1, T2> registerBinaryCallback(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)), ErrorCallbackHandler errorCallback, ScheduleMicrotaskHandler scheduleMicrotask, CreateTimerHandler createTimer, CreatePeriodicTimerHandler createPeriodicTimer, PrintHandler print, ForkHandler fork }) -
- -
-

Creates a specification from other with the provided handlers overriding -the ones in other.

-
- -
-

Implementation

-
factory ZoneSpecification.from(ZoneSpecification other,
-    {HandleUncaughtErrorHandler? handleUncaughtError,
-    RunHandler? run,
-    RunUnaryHandler? runUnary,
-    RunBinaryHandler? runBinary,
-    RegisterCallbackHandler? registerCallback,
-    RegisterUnaryCallbackHandler? registerUnaryCallback,
-    RegisterBinaryCallbackHandler? registerBinaryCallback,
-    ErrorCallbackHandler? errorCallback,
-    ScheduleMicrotaskHandler? scheduleMicrotask,
-    CreateTimerHandler? createTimer,
-    CreatePeriodicTimerHandler? createPeriodicTimer,
-    PrintHandler? print,
-    ForkHandler? fork}) {
-  return new ZoneSpecification(
-      handleUncaughtError: handleUncaughtError ?? other.handleUncaughtError,
-      run: run ?? other.run,
-      runUnary: runUnary ?? other.runUnary,
-      runBinary: runBinary ?? other.runBinary,
-      registerCallback: registerCallback ?? other.registerCallback,
-      registerUnaryCallback:
-          registerUnaryCallback ?? other.registerUnaryCallback,
-      registerBinaryCallback:
-          registerBinaryCallback ?? other.registerBinaryCallback,
-      errorCallback: errorCallback ?? other.errorCallback,
-      scheduleMicrotask: scheduleMicrotask ?? other.scheduleMicrotask,
-      createTimer: createTimer ?? other.createTimer,
-      createPeriodicTimer: createPeriodicTimer ?? other.createPeriodicTimer,
-      print: print ?? other.print,
-      fork: fork ?? other.fork);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/ZoneSpecification.html b/doc/api/dart-async/ZoneSpecification/ZoneSpecification.html deleted file mode 100644 index 8ff50fdb..00000000 --- a/doc/api/dart-async/ZoneSpecification/ZoneSpecification.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - ZoneSpecification constructor - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ZoneSpecification
- -
- -
- - - -
-

ZoneSpecification constructor

- -
- const - ZoneSpecification({HandleUncaughtErrorHandler handleUncaughtError, R run(Zone self, ZoneDelegate parent, Zone zone, R f()), R runUnary(Zone self, ZoneDelegate parent, Zone zone, R f(T arg), T arg), R runBinary(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2), ZoneCallback<R> registerCallback(Zone self, ZoneDelegate parent, Zone zone, R f()), ZoneUnaryCallback<R, T> registerUnaryCallback(Zone self, ZoneDelegate parent, Zone zone, R f(T arg)), ZoneBinaryCallback<R, T1, T2> registerBinaryCallback(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)), ErrorCallbackHandler errorCallback, ScheduleMicrotaskHandler scheduleMicrotask, CreateTimerHandler createTimer, CreatePeriodicTimerHandler createPeriodicTimer, PrintHandler print, ForkHandler fork }) -
- -
-

Creates a specification with the provided handlers.

-
- -
-

Implementation

-
const factory ZoneSpecification(
-    {HandleUncaughtErrorHandler? handleUncaughtError,
-    RunHandler? run,
-    RunUnaryHandler? runUnary,
-    RunBinaryHandler? runBinary,
-    RegisterCallbackHandler? registerCallback,
-    RegisterUnaryCallbackHandler? registerUnaryCallback,
-    RegisterBinaryCallbackHandler? registerBinaryCallback,
-    ErrorCallbackHandler? errorCallback,
-    ScheduleMicrotaskHandler? scheduleMicrotask,
-    CreateTimerHandler? createTimer,
-    CreatePeriodicTimerHandler? createPeriodicTimer,
-    PrintHandler? print,
-    ForkHandler? fork}) = _ZoneSpecification;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/createPeriodicTimer.html b/doc/api/dart-async/ZoneSpecification/createPeriodicTimer.html deleted file mode 100644 index 2b9017ab..00000000 --- a/doc/api/dart-async/ZoneSpecification/createPeriodicTimer.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - createPeriodicTimer property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
createPeriodicTimer
- -
- -
- - - -
-

createPeriodicTimer property

- - -
- -
- CreatePeriodicTimerHandler - createPeriodicTimer - -
- -
-

Implementation

-
CreatePeriodicTimerHandler? get createPeriodicTimer;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/createTimer.html b/doc/api/dart-async/ZoneSpecification/createTimer.html deleted file mode 100644 index 1fafd33b..00000000 --- a/doc/api/dart-async/ZoneSpecification/createTimer.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - createTimer property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
createTimer
- -
- -
- - - -
-

createTimer property

- - -
- -
- CreateTimerHandler - createTimer - -
- -
-

Implementation

-
CreateTimerHandler? get createTimer;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/errorCallback.html b/doc/api/dart-async/ZoneSpecification/errorCallback.html deleted file mode 100644 index 0b7b1e1a..00000000 --- a/doc/api/dart-async/ZoneSpecification/errorCallback.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - errorCallback property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
errorCallback
- -
- -
- - - -
-

errorCallback property

- - -
- -
- ErrorCallbackHandler - errorCallback - -
- -
-

Implementation

-
ErrorCallbackHandler? get errorCallback;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/fork.html b/doc/api/dart-async/ZoneSpecification/fork.html deleted file mode 100644 index 76e8c7b6..00000000 --- a/doc/api/dart-async/ZoneSpecification/fork.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - fork property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
fork
- -
- -
- - - -
-

fork property

- - -
- -
- ForkHandler - fork - -
- -
-

Implementation

-
ForkHandler? get fork;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/handleUncaughtError.html b/doc/api/dart-async/ZoneSpecification/handleUncaughtError.html deleted file mode 100644 index 01810283..00000000 --- a/doc/api/dart-async/ZoneSpecification/handleUncaughtError.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - handleUncaughtError property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
handleUncaughtError
- -
- -
- - - -
-

handleUncaughtError property

- - -
- -
- HandleUncaughtErrorHandler - handleUncaughtError - -
- -
-

Implementation

-
HandleUncaughtErrorHandler? get handleUncaughtError;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/print.html b/doc/api/dart-async/ZoneSpecification/print.html deleted file mode 100644 index e3072a0c..00000000 --- a/doc/api/dart-async/ZoneSpecification/print.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - print property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
print
- -
- -
- - - -
-

print property

- - -
- -
- PrintHandler - print - -
- -
-

Implementation

-
PrintHandler? get print;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/registerBinaryCallback.html b/doc/api/dart-async/ZoneSpecification/registerBinaryCallback.html deleted file mode 100644 index d192034d..00000000 --- a/doc/api/dart-async/ZoneSpecification/registerBinaryCallback.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - registerBinaryCallback property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerBinaryCallback
- -
- -
- - - -
-

registerBinaryCallback property

- - -
- -
- ZoneBinaryCallback<R, T1, T2> Function<R, T1, T2>(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)) - registerBinaryCallback - -
- -
-

Implementation

-
RegisterBinaryCallbackHandler? get registerBinaryCallback;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/registerCallback.html b/doc/api/dart-async/ZoneSpecification/registerCallback.html deleted file mode 100644 index 2cd479b8..00000000 --- a/doc/api/dart-async/ZoneSpecification/registerCallback.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - registerCallback property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerCallback
- -
- -
- - - -
-

registerCallback property

- - -
- -
- ZoneCallback<R> Function<R>(Zone self, ZoneDelegate parent, Zone zone, R f()) - registerCallback - -
- -
-

Implementation

-
RegisterCallbackHandler? get registerCallback;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/registerUnaryCallback.html b/doc/api/dart-async/ZoneSpecification/registerUnaryCallback.html deleted file mode 100644 index e313814f..00000000 --- a/doc/api/dart-async/ZoneSpecification/registerUnaryCallback.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - registerUnaryCallback property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerUnaryCallback
- -
- -
- - - -
-

registerUnaryCallback property

- - -
- -
- ZoneUnaryCallback<R, T> Function<R, T>(Zone self, ZoneDelegate parent, Zone zone, R f(T arg)) - registerUnaryCallback - -
- -
-

Implementation

-
RegisterUnaryCallbackHandler? get registerUnaryCallback;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/run.html b/doc/api/dart-async/ZoneSpecification/run.html deleted file mode 100644 index 546c160b..00000000 --- a/doc/api/dart-async/ZoneSpecification/run.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - run property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
run
- -
- -
- - - -
-

run property

- - -
- -
- R Function<R>(Zone self, ZoneDelegate parent, Zone zone, R f()) - run - -
- -
-

Implementation

-
RunHandler? get run;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/runBinary.html b/doc/api/dart-async/ZoneSpecification/runBinary.html deleted file mode 100644 index d583f0d2..00000000 --- a/doc/api/dart-async/ZoneSpecification/runBinary.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - runBinary property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runBinary
- -
- -
- - - -
-

runBinary property

- - -
- -
- R Function<R, T1, T2>(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2) - runBinary - -
- -
-

Implementation

-
RunBinaryHandler? get runBinary;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/runUnary.html b/doc/api/dart-async/ZoneSpecification/runUnary.html deleted file mode 100644 index 81b8a11f..00000000 --- a/doc/api/dart-async/ZoneSpecification/runUnary.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - runUnary property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runUnary
- -
- -
- - - -
-

runUnary property

- - -
- -
- R Function<R, T>(Zone self, ZoneDelegate parent, Zone zone, R f(T arg), T arg) - runUnary - -
- -
-

Implementation

-
RunUnaryHandler? get runUnary;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneSpecification/scheduleMicrotask.html b/doc/api/dart-async/ZoneSpecification/scheduleMicrotask.html deleted file mode 100644 index c6dfec12..00000000 --- a/doc/api/dart-async/ZoneSpecification/scheduleMicrotask.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - scheduleMicrotask property - ZoneSpecification class - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
scheduleMicrotask
- -
- -
- - - -
-

scheduleMicrotask property

- - -
- -
- ScheduleMicrotaskHandler - scheduleMicrotask - -
- -
-

Implementation

-
ScheduleMicrotaskHandler? get scheduleMicrotask;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/ZoneUnaryCallback.html b/doc/api/dart-async/ZoneUnaryCallback.html deleted file mode 100644 index 3f14b5f5..00000000 --- a/doc/api/dart-async/ZoneUnaryCallback.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - ZoneUnaryCallback typedef - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
ZoneUnaryCallback
- -
- -
- - - -
-

ZoneUnaryCallback<R, T> typedef

- -
- R - ZoneUnaryCallback -(T arg) -
- -
-

Implementation

-
typedef R ZoneUnaryCallback<R, T>(T arg);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/dart-async-library.html b/doc/api/dart-async/dart-async-library.html deleted file mode 100644 index 40ccebda..00000000 --- a/doc/api/dart-async/dart-async-library.html +++ /dev/null @@ -1,605 +0,0 @@ - - - - - - - - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
dart:async
- -
- -
- - - -
-

dart:async library

- -
-

Support for asynchronous programming, -with classes such as Future and Stream.

-

Understanding Futures and Streams is a prerequisite for -writing just about any Dart program.

-

To use this library in your code:

-
import 'dart:async';
-
-

Future

-

A Future object represents a computation whose return value -might not yet be available. -The Future returns the value of the computation -when it completes at some time in the future. -Futures are often used for potentially lengthy computations -such as I/O and interaction with users.

-

Many methods in the Dart libraries return Futures when -performing tasks. For example, when binding an HttpServer -to a host and port, the bind() method returns a Future.

-
 HttpServer.bind('127.0.0.1', 4444)
-     .then((server) => print('${server.isBroadcast}'))
-     .catchError(print);
-
-

Future.then registers a callback function that runs -when the Future's operation, in this case the bind() method, -completes successfully. -The value returned by the operation -is passed into the callback function. -In this example, the bind() method returns the HttpServer -object. The callback function prints one of its properties. -Future.catchError registers a callback function that -runs if an error occurs within the Future.

-

Stream

-

A Stream provides an asynchronous sequence of data. -Examples of data sequences include individual events, like mouse clicks, -or sequential chunks of larger data, like multiple byte lists with the -contents of a file -such as mouse clicks, and a stream of byte lists read from a file. -The following example opens a file for reading. -Stream.listen registers a callback function that runs -each time more data is available.

-
Stream<List<int>> stream = new File('quotes.txt').openRead();
-stream.transform(utf8.decoder).listen(print);
-
-

The stream emits a sequence of a list of bytes. -The program must interpret the bytes or handle the raw byte data. -Here, the code uses a UTF-8 decoder (provided in the dart:convert library) -to convert the sequence of bytes into a sequence -of Dart strings.

-

Another common use of streams is for user-generated events -in a web app: The following code listens for mouse clicks on a button.

-
querySelector('#myButton').onClick.listen((_) => print('Click.'));
-
-

Other resources

- -
- -
-

Classes

- -
-
- Completer<T> -
-
- A way to produce Future objects and to complete them later -with a value or error. [...] -
-
- DeferredLibrary -
-
- Indicates that loading of libraryName is deferred. [...] -
-
- EventSink<T> -
-
- A Sink that supports adding errors. [...] -
-
- Future<T> -
-
- An object representing a delayed computation. [...] -
-
- FutureOr<T> -
-
- A type representing values that are either Future<T> or T. [...] -
-
- MultiStreamController<T> -
-
- An enhanced stream controller provided by Stream.multi. [...] -
-
- Stream<T> -
-
- A source of asynchronous data events. [...] -
-
- StreamConsumer<S> -
-
- Abstract interface for a "sink" accepting multiple entire streams. [...] -
-
- StreamController<T> -
-
- A controller with the stream it controls. [...] -
-
- StreamIterator<T> -
-
- An Iterator like interface for the values of a Stream. [...] -
-
- StreamSink<S> -
-
- A object that accepts stream events both synchronously and asynchronously. [...] -
-
- StreamSubscription<T> -
-
- A subscription on events from a Stream. [...] -
-
- StreamTransformer<S, T> -
-
- Transforms a Stream. [...] -
-
- StreamTransformerBase<S, T> -
-
- Base class for implementing StreamTransformer. [...] -
-
- StreamView<T> -
-
- Stream wrapper that only exposes the Stream interface. -
-
- SynchronousStreamController<T> -
-
- A stream controller that delivers its events synchronously. [...] -
-
- Timer -
-
- A count-down timer that can be configured to fire once or repeatedly. [...] -
-
- Zone -
-
- A zone represents an environment that remains stable across asynchronous -calls. [...] -
-
- ZoneDelegate -
-
- An adapted view of the parent zone. [...] -
-
- ZoneSpecification -
-
- This class provides the specification for a forked zone. [...] -
-
-
- - - - - -
-

Functions

- -
-
- runZoned<R>(R body(), { Map<Object, Object> zoneValues, ZoneSpecification zoneSpecification, Function onError }) - → R - -
-
- Runs body in its own zone. [...] - -
-
- runZonedGuarded<R>(R body(), void onError(Object error, StackTrace stack), { Map<Object, Object> zoneValues, ZoneSpecification zoneSpecification }) - → R - -
-
- Runs body in its own error zone. [...] -
@Since("2.8")
-
-
- scheduleMicrotask(void callback()) - → void - -
-
- Runs a function asynchronously. [...] - -
-
-
- - -
-

Typedefs

- -
-
- ControllerCallback() - → void - -
-
- Type of a stream controller's onListen, onPause and onResume callbacks. - -
-
- ControllerCancelCallback() - FutureOr<void> - -
-
- Type of stream controller onCancel callbacks. - -
-
- CreatePeriodicTimerHandler(Zone self, ZoneDelegate parent, Zone zone, Duration period, void f(Timer timer)) - Timer - -
-
- - -
-
- CreateTimerHandler(Zone self, ZoneDelegate parent, Zone zone, Duration duration, void f()) - Timer - -
-
- - -
-
- ErrorCallbackHandler(Zone self, ZoneDelegate parent, Zone zone, Object error, StackTrace stackTrace) - AsyncError - -
-
- - -
-
- ForkHandler(Zone self, ZoneDelegate parent, Zone zone, ZoneSpecification specification, Map<Object, Object> zoneValues) - Zone - -
-
- - -
-
- HandleUncaughtErrorHandler(Zone self, ZoneDelegate parent, Zone zone, Object error, StackTrace stackTrace) - → void - -
-
- - -
-
- PrintHandler(Zone self, ZoneDelegate parent, Zone zone, String line) - → void - -
-
- - -
-
- RegisterBinaryCallbackHandler(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)) - ZoneBinaryCallback<R, T1, T2> - -
-
- - -
-
- RegisterCallbackHandler(Zone self, ZoneDelegate parent, Zone zone, R f()) - ZoneCallback<R> - -
-
- - -
-
- RegisterUnaryCallbackHandler(Zone self, ZoneDelegate parent, Zone zone, R f(T arg)) - ZoneUnaryCallback<R, T> - -
-
- - -
-
- RunBinaryHandler(Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2), T1 arg1, T2 arg2) - → R - -
-
- - -
-
- RunHandler(Zone self, ZoneDelegate parent, Zone zone, R f()) - → R - -
-
- - -
-
- RunUnaryHandler(Zone self, ZoneDelegate parent, Zone zone, R f(T arg), T arg) - → R - -
-
- - -
-
- ScheduleMicrotaskHandler(Zone self, ZoneDelegate parent, Zone zone, void f()) - → void - -
-
- - -
-
- ZoneBinaryCallback<R, T1, T2>(T1 arg1, T2 arg2) - → R - -
-
- - -
-
- ZoneCallback<R>() - → R - -
-
- - -
-
- ZoneUnaryCallback<R, T>(T arg) - → R - -
-
- - -
-
-
- -
-

Exceptions / Errors

- -
-
- AsyncError -
-
- Pair of error and stack trace. Returned by Zone.errorCallback. -
-
- DeferredLoadException -
-
- Thrown when a deferred library fails to load. -
-
- TimeoutException -
-
- Thrown when a scheduled timeout happens while waiting for an async result. -
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/runZoned.html b/doc/api/dart-async/runZoned.html deleted file mode 100644 index 5eaf2d88..00000000 --- a/doc/api/dart-async/runZoned.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - runZoned function - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runZoned
- -
- -
- - - -
-

runZoned<R> function

- -
- R - runZoned -<R>(R body(), { Map<Object, Object> zoneValues, ZoneSpecification zoneSpecification, @Deprecated("Use runZonedGuarded instead") Function onError }) -
-
-

Runs body in its own zone.

-

Creates a new zone using Zone.fork based on zoneSpecification and -zoneValues, then runs body in that zone and returns the result.

-

If onError is provided, it must have one of the types

-
    -
  • void Function(Object)
  • -
  • void Function(Object, StackTrace) -and the onError handler is used both to handle asynchronous errors -by overriding ZoneSpecification.handleUncaughtError in zoneSpecification, -if any, and to handle errors thrown synchronously by the call to body.
  • -
-

If an error occurs synchronously in body, -then throwing in the onError handler -makes the call to runZone throw that error, -and otherwise the call to runZoned attempt to return null.

-

If the zone specification has a handleUncaughtError value or the onError -parameter is provided, the zone becomes an error-zone.

-

Errors will never cross error-zone boundaries by themselves. -Errors that try to cross error-zone boundaries are considered uncaught in -their originating error zone.

-
var future = new Future.value(499);
-runZoned(() {
-  var future2 = future.then((_) { throw "error in first error-zone"; });
-  runZoned(() {
-    var future3 = future2.catchError((e) { print("Never reached!"); });
-  }, onError: (e, s) { print("unused error handler"); });
-}, onError: (e, s) { print("catches error of first error-zone."); });
-
-

Example:

-
runZoned(() {
-  new Future(() { throw "asynchronous error"; });
-}, onError: (e, s) => print(e));  // Will print "asynchronous error".
-
-

It is possible to manually pass an error from one error zone to another -by re-throwing it in the new zone. If onError throws, that error will -occur in the original zone where runZoned was called.

-
- -
-

Implementation

-
R runZoned<R>(R body(),
-    {Map<Object?, Object?>? zoneValues,
-    ZoneSpecification? zoneSpecification,
-    @Deprecated("Use runZonedGuarded instead") Function? onError}) {
-  ArgumentError.checkNotNull(body, "body");
-  if (onError != null) {
-    // TODO: Remove this when code have been migrated off using [onError].
-    if (onError is! void Function(Object, StackTrace)) {
-      if (onError is void Function(Object)) {
-        var originalOnError = onError;
-        onError = (Object error, StackTrace stack) => originalOnError(error);
-      } else {
-        throw ArgumentError.value(onError, "onError",
-            "Must be Function(Object) or Function(Object, StackTrace)");
-      }
-    }
-    return runZonedGuarded(body, onError,
-        zoneSpecification: zoneSpecification, zoneValues: zoneValues) as R;
-  }
-  return _runZoned<R>(body, zoneValues, zoneSpecification);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/runZonedGuarded.html b/doc/api/dart-async/runZonedGuarded.html deleted file mode 100644 index 91d7d1b4..00000000 --- a/doc/api/dart-async/runZonedGuarded.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - - runZonedGuarded function - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
runZonedGuarded
- -
- -
- - - -
-

runZonedGuarded<R> function

- -
-
-
    -
  1. @Since("2.8")
  2. -
-
- R - runZonedGuarded -<R>(R body(), void onError(Object error, StackTrace stack), { Map<Object, Object> zoneValues, ZoneSpecification zoneSpecification }) -
-
-

Runs body in its own error zone.

-

Creates a new zone using Zone.fork based on zoneSpecification and -zoneValues, then runs body in that zone and returns the result.

-

The onError function is used both to handle asynchronous errors -by overriding ZoneSpecification.handleUncaughtError in zoneSpecification, -if any, and to handle errors thrown synchronously by the call to body.

-

If an error occurs synchronously in body, -then throwing in the onError handler -makes the call to runZonedGuarded throw that error, -and otherwise the call to runZonedGuarded returns null.

-

The zone will always be an error-zone.

-

Errors will never cross error-zone boundaries by themselves. -Errors that try to cross error-zone boundaries are considered uncaught in -their originating error zone.

-
var future = Future.value(499);
-runZonedGuarded(() {
-  var future2 = future.then((_) { throw "error in first error-zone"; });
-  runZonedGuarded(() {
-    var future3 = future2.catchError((e) { print("Never reached!"); });
-  }, (e, s) { print("unused error handler"); });
-}, (e, s) { print("catches error of first error-zone."); });
-
-

Example:

-
runZonedGuarded(() {
-  new Future(() { throw "asynchronous error"; });
-}, (e, s) => print(e));  // Will print "asynchronous error".
-
-

It is possible to manually pass an error from one error zone to another -by re-throwing it in the new zone. If onError throws, that error will -occur in the original zone where runZoned was called.

-
- -
-

Implementation

-
@Since("2.8")
-R? runZonedGuarded<R>(R body(), void onError(Object error, StackTrace stack),
-    {Map<Object?, Object?>? zoneValues, ZoneSpecification? zoneSpecification}) {
-  ArgumentError.checkNotNull(body, "body");
-  ArgumentError.checkNotNull(onError, "onError");
-  _Zone parentZone = Zone._current;
-  HandleUncaughtErrorHandler errorHandler = (Zone self, ZoneDelegate parent,
-      Zone zone, Object error, StackTrace stackTrace) {
-    try {
-      parentZone.runBinary(onError, error, stackTrace);
-    } catch (e, s) {
-      if (identical(e, error)) {
-        parent.handleUncaughtError(zone, error, stackTrace);
-      } else {
-        parent.handleUncaughtError(zone, e, s);
-      }
-    }
-  };
-  if (zoneSpecification == null) {
-    zoneSpecification =
-        new ZoneSpecification(handleUncaughtError: errorHandler);
-  } else {
-    zoneSpecification = ZoneSpecification.from(zoneSpecification,
-        handleUncaughtError: errorHandler);
-  }
-  try {
-    return _runZoned<R>(body, zoneValues, zoneSpecification);
-  } catch (error, stackTrace) {
-    onError(error, stackTrace);
-  }
-  return null;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-async/scheduleMicrotask.html b/doc/api/dart-async/scheduleMicrotask.html deleted file mode 100644 index 438899d8..00000000 --- a/doc/api/dart-async/scheduleMicrotask.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - scheduleMicrotask function - dart:async library - Dart API - - - - - - - - - - - - - -
- -
- - -
scheduleMicrotask
- -
- -
- - - -
-

scheduleMicrotask function

- -
- void - scheduleMicrotask -(void callback()) -
-
-

Runs a function asynchronously.

-

Callbacks registered through this function are always executed in order and -are guaranteed to run before other asynchronous events (like Timer events, -or DOM events).

-

Warning: it is possible to starve the DOM by registering asynchronous -callbacks through this method. For example the following program runs -the callbacks without ever giving the Timer callback a chance to execute:

-
main() {
-  Timer.run(() { print("executed"); });  // Will never be executed.
-  foo() {
-    scheduleMicrotask(foo);  // Schedules [foo] in front of other events.
-  }
-  foo();
-}
-
-

Other resources

-
    -
  • The Event Loop and Dart: -Learn how Dart handles the event queue and microtask queue, so you can write -better asynchronous code with fewer surprises.
  • -
-
- -
-

Implementation

-
void scheduleMicrotask(void Function() callback) {
-  _Zone currentZone = Zone._current;
-  if (identical(_rootZone, currentZone)) {
-    // No need to bind the callback. We know that the root's scheduleMicrotask
-    // will be invoked in the root zone.
-    _rootScheduleMicrotask(null, null, _rootZone, callback);
-    return;
-  }
-  _ZoneFunction implementation = currentZone._scheduleMicrotask;
-  if (identical(_rootZone, implementation.zone) &&
-      _rootZone.inSameErrorZone(currentZone)) {
-    _rootScheduleMicrotask(
-        null, null, currentZone, currentZone.registerCallback(callback));
-    return;
-  }
-  Zone.current.scheduleMicrotask(Zone.current.bindCallbackGuarded(callback));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue-class.html b/doc/api/dart-collection/DoubleLinkedQueue-class.html deleted file mode 100644 index 68235619..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue-class.html +++ /dev/null @@ -1,692 +0,0 @@ - - - - - - - - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
DoubleLinkedQueue
- -
- -
- - - -
-

DoubleLinkedQueue<E> class

- -
-

A Queue implementation based on a double-linked list.

-

Allows constant time add, remove-at-ends and peek operations.

-
- -
-
-
Inheritance
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- DoubleLinkedQueue() -
-
- -
-
- DoubleLinkedQueue.from(Iterable elements) -
-
- Creates a double-linked queue containing all elements. [...] -
factory
-
-
- DoubleLinkedQueue.of(Iterable<E> elements) -
-
- Creates a double-linked queue from elements. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only, override
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, override
-
-
- iterator - → _DoubleLinkedQueueIterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, override
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, override
-
-
- length - int -
-
- Returns the number of elements in this. [...] -
read-only, override
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E value) - → void - -
-
- Adds value at the end of the queue. -
override
-
-
- addAll(Iterable<E> iterable) - → void - -
-
- Adds all elements of iterable at the end of the queue. The -length of the queue is extended by the length of iterable. -
override
-
-
- addFirst(E value) - → void - -
-
- Adds value at the beginning of the queue. -
override
-
-
- addLast(E value) - → void - -
-
- Adds value at the end of the queue. -
override
-
-
- cast<R>() - Queue<R> - -
-
- Provides a view of this iterable as an iterable of R instances. [...] -
override
-
-
- clear() - → void - -
-
- Removes all elements in the queue. The size of the queue becomes zero. -
override
-
-
- firstEntry() - DoubleLinkedQueueEntry<E> - -
-
- The entry object of the first element in the queue. [...] - -
-
- forEachEntry(void action(DoubleLinkedQueueEntry<E> element)) - → void - -
-
- Calls action for each entry object of this double-linked queue. [...] - -
-
- lastEntry() - DoubleLinkedQueueEntry<E> - -
-
- The entry object of the last element in the queue. [...] - -
-
- remove(Object o) - bool - -
-
- Remove a single instance of value from the queue. [...] -
override
-
-
- removeFirst() - → E - -
-
- Removes and returns the first element of this queue. [...] -
override
-
-
- removeLast() - → E - -
-
- Removes and returns the last element of the queue. [...] -
override
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all elements matched by test from the queue. [...] -
override
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all elements not matched by test from the queue. [...] -
override
-
-
- toString() - String - -
-
- Returns a string representation of (some of) the elements of this. [...] -
override
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.from.html b/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.from.html deleted file mode 100644 index 3a52e9a9..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.from.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - DoubleLinkedQueue.from constructor - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
DoubleLinkedQueue.from
- -
- -
- - - -
-

DoubleLinkedQueue<E>.from constructor

- -
- - DoubleLinkedQueue<E>.from(Iterable elements) -
- -
-

Creates a double-linked queue containing all elements.

-

The element order in the queue is as if the elements were added using -addLast in the order provided by elements.iterator.

-

All the elements should be instances of E. -The elements iterable itself may have any element type, so this -constructor can be used to down-cast a Queue, for example as:

-
Queue<SuperType> superQueue = ...;
-Queue<SubType> subQueue =
-    new DoubleLinkedQueue<SubType>.from(superQueue.whereType<SubType>());
-
-
- -
-

Implementation

-
factory DoubleLinkedQueue.from(Iterable<dynamic> elements) {
-  DoubleLinkedQueue<E> list = DoubleLinkedQueue<E>();
-  for (final e in elements) {
-    list.addLast(e as E);
-  }
-  return list;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.html b/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.html deleted file mode 100644 index c23c4ff4..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - DoubleLinkedQueue constructor - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
DoubleLinkedQueue
- -
- -
- - - -
-

DoubleLinkedQueue<E> constructor

- -
- - DoubleLinkedQueue<E>() -
- - -
-

Implementation

-
DoubleLinkedQueue();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.of.html b/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.of.html deleted file mode 100644 index e494c446..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/DoubleLinkedQueue.of.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - DoubleLinkedQueue.of constructor - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
DoubleLinkedQueue.of
- -
- -
- - - -
-

DoubleLinkedQueue<E>.of constructor

- -
- - DoubleLinkedQueue<E>.of(Iterable<E> elements) -
- -
-

Creates a double-linked queue from elements.

-

The element order in the queue is as if the elements were added using -addLast in the order provided by elements.iterator.

-
- -
-

Implementation

-
factory DoubleLinkedQueue.of(Iterable<E> elements) =>
-    DoubleLinkedQueue<E>()..addAll(elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/add.html b/doc/api/dart-collection/DoubleLinkedQueue/add.html deleted file mode 100644 index 978e3492..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/add.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - add method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(E value) -
override
-
-
-

Adds value at the end of the queue.

-
- -
-

Implementation

-
void add(E value) {
-  _sentinel._prepend(value);
-  _elementCount++;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/addAll.html b/doc/api/dart-collection/DoubleLinkedQueue/addAll.html deleted file mode 100644 index 466162e2..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/addAll.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - addAll method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> iterable) -
override
-
-
-

Adds all elements of iterable at the end of the queue. The -length of the queue is extended by the length of iterable.

-
- -
-

Implementation

-
void addAll(Iterable<E> iterable) {
-  for (final E value in iterable) {
-    _sentinel._prepend(value);
-    _elementCount++;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/addFirst.html b/doc/api/dart-collection/DoubleLinkedQueue/addFirst.html deleted file mode 100644 index f769ea54..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/addFirst.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - addFirst method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addFirst
- -
- -
- - - -
-

addFirst method

- -
- void - addFirst -(E value) -
override
-
-
-

Adds value at the beginning of the queue.

-
- -
-

Implementation

-
void addFirst(E value) {
-  _sentinel._append(value);
-  _elementCount++;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/addLast.html b/doc/api/dart-collection/DoubleLinkedQueue/addLast.html deleted file mode 100644 index 989f8cbd..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/addLast.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - addLast method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addLast
- -
- -
- - - -
-

addLast method

- -
- void - addLast -(E value) -
override
-
-
-

Adds value at the end of the queue.

-
- -
-

Implementation

-
void addLast(E value) {
-  _sentinel._prepend(value);
-  _elementCount++;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/cast.html b/doc/api/dart-collection/DoubleLinkedQueue/cast.html deleted file mode 100644 index 1b0417de..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/cast.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - cast method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Queue<R> - cast -<R>() -
override
-
-
-

Provides a view of this iterable as an iterable of R instances.

-

If this iterable only contains instances of R, all operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

When the returned iterable creates a new object that depends on -the type R, e.g., from toList, it will have exactly the type R.

-
- -
-

Implementation

-
Queue<R> cast<R>() => Queue.castFrom<E, R>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/clear.html b/doc/api/dart-collection/DoubleLinkedQueue/clear.html deleted file mode 100644 index 3ce451b3..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/clear.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - clear method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
override
-
-
-

Removes all elements in the queue. The size of the queue becomes zero.

-
- -
-

Implementation

-
void clear() {
-  _sentinel._nextLink = _sentinel;
-  _sentinel._previousLink = _sentinel;
-  _elementCount = 0;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/first.html b/doc/api/dart-collection/DoubleLinkedQueue/first.html deleted file mode 100644 index 6027f3d3..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/first.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - first property - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first -
override
-
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  DoubleLinkedQueueEntry<E> firstEntry = _sentinel._nextLink!;
-  return firstEntry._element as E;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/firstEntry.html b/doc/api/dart-collection/DoubleLinkedQueue/firstEntry.html deleted file mode 100644 index bb1169a8..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/firstEntry.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - firstEntry method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstEntry
- -
- -
- - - -
-

firstEntry method

- -
- DoubleLinkedQueueEntry<E> - firstEntry -() - -
-
-

The entry object of the first element in the queue.

-

Each element of the queue has an associated DoubleLinkedQueueEntry.

-

Returns the entry object corresponding to the first element of the queue, -or null if the queue is empty.

-

The entry objects can also be accessed using lastEntry, -and they can be iterated using DoubleLinkedQueueEntry.nextEntry and -DoubleLinkedQueueEntry.previousEntry.

-
- -
-

Implementation

-
DoubleLinkedQueueEntry<E>? firstEntry() {
-  return _sentinel.nextEntry();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/forEachEntry.html b/doc/api/dart-collection/DoubleLinkedQueue/forEachEntry.html deleted file mode 100644 index 08011e14..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/forEachEntry.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - forEachEntry method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEachEntry
- -
- -
- - - -
-

forEachEntry method

- -
- void - forEachEntry -(void action(DoubleLinkedQueueEntry<E> element)) - -
-
-

Calls action for each entry object of this double-linked queue.

-

Each element of the queue has an associated DoubleLinkedQueueEntry. -This method iterates the entry objects from first to last and calls -action with each object in turn.

-

The entry objects can also be accessed using firstEntry and lastEntry, -and iterated using DoubleLinkedQueueEntry.nextEntry() and -DoubleLinkedQueueEntry.previousEntry().

-

The action function can use methods on DoubleLinkedQueueEntry to -remove the entry or it can insert elements before or after then entry. -If the current entry is removed, iteration continues with the entry that -was following the current entry when action was called. Any elements -inserted after the current element before it is removed will not be -visited by the iteration.

-
- -
-

Implementation

-
void forEachEntry(void action(DoubleLinkedQueueEntry<E> element)) {
-  _DoubleLinkedQueueEntry<E> entry =
-      _sentinel._nextLink as _DoubleLinkedQueueEntry<E>;
-  while (!identical(entry, _sentinel)) {
-    _DoubleLinkedQueueElement<E> element =
-        entry as _DoubleLinkedQueueElement<E>;
-    _DoubleLinkedQueueEntry<E> next =
-        element._nextLink as _DoubleLinkedQueueEntry<E>;
-    // Remember both entry and entry._nextLink.
-    // If someone calls `element.remove()` we continue from `next`.
-    // Otherwise we use the value of entry._nextLink which may have been
-    // updated.
-    action(element);
-    if (identical(this, entry._queue)) {
-      next = entry._nextLink as _DoubleLinkedQueueEntry<E>;
-    } else if (!identical(this, next._queue)) {
-      throw ConcurrentModificationError(this);
-    }
-    entry = next;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/isEmpty.html b/doc/api/dart-collection/DoubleLinkedQueue/isEmpty.html deleted file mode 100644 index bf0b368f..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/isEmpty.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - isEmpty property - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there are no elements in this collection.

-

May be computed by checking if iterator.moveNext() returns false.

-
-
-

Implementation

-
bool get isEmpty {
-  return (identical(_sentinel._nextLink, _sentinel));
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/iterator.html b/doc/api/dart-collection/DoubleLinkedQueue/iterator.html deleted file mode 100644 index 9ca42b5e..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/iterator.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - iterator property - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- _DoubleLinkedQueueIterator<E> - iterator -
override
-
- -
-

Returns a new Iterator that allows iterating the elements of this -Iterable.

-

Iterable classes may specify the iteration order of their elements -(for example List always iterate in index order), -or they may leave it unspecified (for example a hash-based Set -may iterate in any order).

-

Each time iterator is read, it returns a new iterator, -which can be used to iterate through all the elements again. -The iterators of the same iterable can be stepped through independently, -but should return the same elements in the same order, -as long as the underlying collection isn't changed.

-

Modifying the collection may cause new iterators to produce -different elements, and may change the order of existing elements. -A List specifies its iteration order precisely, -so modifying the list changes the iteration order predictably. -A hash-based Set may change its iteration order completely -when adding a new element to the set.

-

Modifying the underlying collection after creating the new iterator -may cause an error the next time Iterator.moveNext is called -on that iterator. -Any modifiable iterable class should specify which operations will -break iteration.

-
-
-

Implementation

-
_DoubleLinkedQueueIterator<E> get iterator {
-  return _DoubleLinkedQueueIterator<E>(_sentinel);
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/last.html b/doc/api/dart-collection/DoubleLinkedQueue/last.html deleted file mode 100644 index d68485bf..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/last.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - last property - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last -
override
-
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  DoubleLinkedQueueEntry<E> lastEntry = _sentinel._previousLink!;
-  return lastEntry._element as E;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/lastEntry.html b/doc/api/dart-collection/DoubleLinkedQueue/lastEntry.html deleted file mode 100644 index 3abda77d..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/lastEntry.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - lastEntry method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastEntry
- -
- -
- - - -
-

lastEntry method

- -
- DoubleLinkedQueueEntry<E> - lastEntry -() - -
-
-

The entry object of the last element in the queue.

-

Each element of the queue has an associated DoubleLinkedQueueEntry.

-

Returns the entry object corresponding to the last element of the queue, -or null if the queue is empty.

-

The entry objects can also be accessed using firstEntry, -and they can be iterated using DoubleLinkedQueueEntry.nextEntry and -DoubleLinkedQueueEntry.previousEntry.

-
- -
-

Implementation

-
DoubleLinkedQueueEntry<E>? lastEntry() {
-  return _sentinel.previousEntry();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/length.html b/doc/api/dart-collection/DoubleLinkedQueue/length.html deleted file mode 100644 index 3e39b70d..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/length.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - length property - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
override
-
- -
-

Returns the number of elements in this.

-

Counting all elements may involve iterating through all elements and can -therefore be slow. -Some iterables have a more efficient way to find the number of elements.

-
-
-

Implementation

-
int get length => _elementCount;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/remove.html b/doc/api/dart-collection/DoubleLinkedQueue/remove.html deleted file mode 100644 index caa80e59..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/remove.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - remove method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object o) -
override
-
-
-

Remove a single instance of value from the queue.

-

Returns true if a value was removed, or false if the queue -contained no element equal to value.

-
- -
-

Implementation

-
bool remove(Object? o) {
-  _DoubleLinkedQueueEntry<E> entry =
-      _sentinel._nextLink as _DoubleLinkedQueueEntry<E>;
-  while (!identical(entry, _sentinel)) {
-    bool equals = (entry._element == o);
-    if (!identical(this, entry._queue)) {
-      // Entry must still be in the queue.
-      throw ConcurrentModificationError(this);
-    }
-    if (equals) {
-      entry._remove();
-      _elementCount--;
-      return true;
-    }
-    entry = entry._nextLink as _DoubleLinkedQueueEntry<E>;
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/removeFirst.html b/doc/api/dart-collection/DoubleLinkedQueue/removeFirst.html deleted file mode 100644 index d311ff9d..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/removeFirst.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - removeFirst method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeFirst
- -
- -
- - - -
-

removeFirst method

- -
- E - removeFirst -() -
override
-
-
-

Removes and returns the first element of this queue.

-

The queue must not be empty when this method is called.

-
- -
-

Implementation

-
E removeFirst() {
-  _DoubleLinkedQueueEntry<E> firstEntry =
-      _sentinel._nextLink as _DoubleLinkedQueueEntry<E>;
-  E result = firstEntry._remove();
-  _elementCount--;
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/removeLast.html b/doc/api/dart-collection/DoubleLinkedQueue/removeLast.html deleted file mode 100644 index 05531b9f..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/removeLast.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - removeLast method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeLast
- -
- -
- - - -
-

removeLast method

- -
- E - removeLast -() -
override
-
-
-

Removes and returns the last element of the queue.

-

The queue must not be empty when this method is called.

-
- -
-

Implementation

-
E removeLast() {
-  _DoubleLinkedQueueEntry<E> lastEntry =
-      _sentinel._previousLink as _DoubleLinkedQueueEntry<E>;
-  E result = lastEntry._remove();
-  _elementCount--;
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/removeWhere.html b/doc/api/dart-collection/DoubleLinkedQueue/removeWhere.html deleted file mode 100644 index a6361007..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/removeWhere.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - removeWhere method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(E element)) -
override
-
-
-

Removes all elements matched by test from the queue.

-

The test function must not throw or modify the queue.

-
- -
-

Implementation

-
void removeWhere(bool test(E element)) {
-  _filter(test, true);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/retainWhere.html b/doc/api/dart-collection/DoubleLinkedQueue/retainWhere.html deleted file mode 100644 index 60272f19..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/retainWhere.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - retainWhere method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainWhere
- -
- -
- - - -
-

retainWhere method

- -
- void - retainWhere -(bool test(E element)) -
override
-
-
-

Removes all elements not matched by test from the queue.

-

The test function must not throw or modify the queue.

-
- -
-

Implementation

-
void retainWhere(bool test(E element)) {
-  _filter(test, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/single.html b/doc/api/dart-collection/DoubleLinkedQueue/single.html deleted file mode 100644 index 52591b0e..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/single.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - single property - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- E - single -
override
-
- -
-

Checks that this iterable has only one element, and returns that element.

-

Throws a StateError if this is empty or has more than one element.

-
-
-

Implementation

-
E get single {
-  // Note that this throws correctly if the queue is empty
-  // because reading the element of the sentinel throws.
-  if (identical(_sentinel._nextLink, _sentinel._previousLink)) {
-    DoubleLinkedQueueEntry<E> entry = _sentinel._nextLink!;
-    return entry._element as E;
-  }
-  throw IterableElementError.tooMany();
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueue/toString.html b/doc/api/dart-collection/DoubleLinkedQueue/toString.html deleted file mode 100644 index 815ab39c..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueue/toString.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - toString method - DoubleLinkedQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of (some of) the elements of this.

-

Elements are represented by their own toString results.

-

The default representation always contains the first three elements. -If there are less than a hundred elements in the iterable, it also -contains the last two elements.

-

If the resulting string isn't above 80 characters, more elements are -included from the start of the iterable.

-

The conversion may omit calling toString on some elements if they -are known to not occur in the output, and it may stop iterating after -a hundred elements.

-
- -
-

Implementation

-
String toString() => IterableBase.iterableToFullString(this, '{', '}');
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueueEntry-class.html b/doc/api/dart-collection/DoubleLinkedQueueEntry-class.html deleted file mode 100644 index 15f77e3f..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueueEntry-class.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - - DoubleLinkedQueueEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
DoubleLinkedQueueEntry
- -
- -
- - - -
-

DoubleLinkedQueueEntry<E> class

- -
-

An entry in a doubly linked list. It contains a pointer to the next -entry, the previous entry, and the boxed element.

-
- - -
-

Constructors

- -
-
- DoubleLinkedQueueEntry(E _element) -
-
- -
-
-
- -
-

Properties

- -
-
- element - ↔ E -
-
- The element in the queue. -
read / write
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- append(E e) - → void - -
-
- Appends the given e as entry just after this entry. - -
-
- nextEntry() - DoubleLinkedQueueEntry<E> - -
-
- Returns the next entry or null if there is none. - -
-
- prepend(E e) - → void - -
-
- Prepends the given e as entry just before this entry. - -
-
- previousEntry() - DoubleLinkedQueueEntry<E> - -
-
- Returns the previous entry or null if there is none. - -
-
- remove() - → E - -
-
- - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueueEntry/DoubleLinkedQueueEntry.html b/doc/api/dart-collection/DoubleLinkedQueueEntry/DoubleLinkedQueueEntry.html deleted file mode 100644 index f35d2b4f..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueueEntry/DoubleLinkedQueueEntry.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - DoubleLinkedQueueEntry constructor - DoubleLinkedQueueEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
DoubleLinkedQueueEntry
- -
- -
- - - -
-

DoubleLinkedQueueEntry<E> constructor

- -
- - DoubleLinkedQueueEntry<E>(E _element) -
- - -
-

Implementation

-
DoubleLinkedQueueEntry(this._element);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueueEntry/append.html b/doc/api/dart-collection/DoubleLinkedQueueEntry/append.html deleted file mode 100644 index c3ef097f..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueueEntry/append.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - append method - DoubleLinkedQueueEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
append
- -
- -
- - - -
-

append method

- -
- void - append -(E e) - -
-
-

Appends the given e as entry just after this entry.

-
- -
-

Implementation

-
void append(E e) {
-  DoubleLinkedQueueEntry<E>(e)._link(this, _nextLink);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueueEntry/element.html b/doc/api/dart-collection/DoubleLinkedQueueEntry/element.html deleted file mode 100644 index 01a3b1ec..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueueEntry/element.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - element property - DoubleLinkedQueueEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
element
- -
- -
- - - -
-

element property

- - -
- -
- E - element - -
- -
-

The element in the queue.

-
-
-

Implementation

-
E get element => _element as E;
-
-
- -
- -
- void - element= -(E element) - -
- -
-

Implementation

-
set element(E element) {
-  _element = element;
-}
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueueEntry/nextEntry.html b/doc/api/dart-collection/DoubleLinkedQueueEntry/nextEntry.html deleted file mode 100644 index 04535b03..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueueEntry/nextEntry.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - nextEntry method - DoubleLinkedQueueEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
nextEntry
- -
- -
- - - -
-

nextEntry method

- -
- DoubleLinkedQueueEntry<E> - nextEntry -() - -
-
-

Returns the next entry or null if there is none.

-
- -
-

Implementation

-
DoubleLinkedQueueEntry<E>? nextEntry() => _nextLink;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueueEntry/prepend.html b/doc/api/dart-collection/DoubleLinkedQueueEntry/prepend.html deleted file mode 100644 index dffedb99..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueueEntry/prepend.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - prepend method - DoubleLinkedQueueEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
prepend
- -
- -
- - - -
-

prepend method

- -
- void - prepend -(E e) - -
-
-

Prepends the given e as entry just before this entry.

-
- -
-

Implementation

-
void prepend(E e) {
-  DoubleLinkedQueueEntry<E>(e)._link(_previousLink, this);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueueEntry/previousEntry.html b/doc/api/dart-collection/DoubleLinkedQueueEntry/previousEntry.html deleted file mode 100644 index 457db7a7..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueueEntry/previousEntry.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - previousEntry method - DoubleLinkedQueueEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
previousEntry
- -
- -
- - - -
-

previousEntry method

- -
- DoubleLinkedQueueEntry<E> - previousEntry -() - -
-
-

Returns the previous entry or null if there is none.

-
- -
-

Implementation

-
DoubleLinkedQueueEntry<E>? previousEntry() => _previousLink;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/DoubleLinkedQueueEntry/remove.html b/doc/api/dart-collection/DoubleLinkedQueueEntry/remove.html deleted file mode 100644 index 20d8aa95..00000000 --- a/doc/api/dart-collection/DoubleLinkedQueueEntry/remove.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - remove method - DoubleLinkedQueueEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- E - remove -() - -
- -
-

Implementation

-
E remove() {
-  _unlink();
-  return element;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HasNextIterator-class.html b/doc/api/dart-collection/HasNextIterator-class.html deleted file mode 100644 index 059ee578..00000000 --- a/doc/api/dart-collection/HasNextIterator-class.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - HasNextIterator class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HasNextIterator
- -
- -
- - - -
-

HasNextIterator<E> class

- -
-

The HasNextIterator class wraps an Iterator and provides methods to -iterate over an object using hasNext and next.

-

An HasNextIterator does not implement the Iterator interface.

-
- - -
-

Constructors

- -
-
- HasNextIterator(Iterator<E> _iterator) -
-
- -
-
-
- -
-

Properties

- -
-
- hasNext - bool -
-
- -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- next() - → E - -
-
- - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HasNextIterator/HasNextIterator.html b/doc/api/dart-collection/HasNextIterator/HasNextIterator.html deleted file mode 100644 index 6c88b6c1..00000000 --- a/doc/api/dart-collection/HasNextIterator/HasNextIterator.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - HasNextIterator constructor - HasNextIterator class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HasNextIterator
- -
- -
- - - -
-

HasNextIterator<E> constructor

- -
- - HasNextIterator<E>(Iterator<E> _iterator) -
- - -
-

Implementation

-
HasNextIterator(this._iterator);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HasNextIterator/hasNext.html b/doc/api/dart-collection/HasNextIterator/hasNext.html deleted file mode 100644 index 6caa26e9..00000000 --- a/doc/api/dart-collection/HasNextIterator/hasNext.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - hasNext property - HasNextIterator class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasNext
- -
- -
- - - -
-

hasNext property

- - -
- -
- bool - hasNext - -
- -
-

Implementation

-
bool get hasNext {
-  if (_state == _NOT_MOVED_YET) _move();
-  return _state == _HAS_NEXT_AND_NEXT_IN_CURRENT;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HasNextIterator/next.html b/doc/api/dart-collection/HasNextIterator/next.html deleted file mode 100644 index 50256152..00000000 --- a/doc/api/dart-collection/HasNextIterator/next.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - next method - HasNextIterator class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
next
- -
- -
- - - -
-

next method

- -
- E - next -() - -
- -
-

Implementation

-
E next() {
-  // Call to hasNext is necessary to make sure we are positioned at the first
-  // element when we start iterating.
-  if (!hasNext) throw StateError("No more elements");
-  assert(_state == _HAS_NEXT_AND_NEXT_IN_CURRENT);
-  E result = _iterator.current;
-  _move();
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashMap-class.html b/doc/api/dart-collection/HashMap-class.html deleted file mode 100644 index 88e757d5..00000000 --- a/doc/api/dart-collection/HashMap-class.html +++ /dev/null @@ -1,507 +0,0 @@ - - - - - - - - HashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashMap
- -
- -
- - - -
-

HashMap<K, V> class

- -
-

A hash-table based implementation of Map.

-

The keys of a HashMap must have consistent Object.== -and Object.hashCode implementations. This means that the == operator -must define a stable equivalence relation on the keys (reflexive, -symmetric, transitive, and consistent over time), and that hashCode -must be the same for objects that are considered equal by ==.

-

The map allows null as a key.

-

Iterating the map's keys, values or entries (through forEach) -may happen in any order. -The iteration order only changes when the map is modified. -Values are iterated in the same order as their associated keys, -so iterating the keys and values in parallel -will give matching key and value pairs.

-
- -
-
- -
Implemented types
-
-
    -
  • Map<K, V>
  • -
-
- - - - -
-
- -
-

Constructors

- -
-
- HashMap({bool equals(K K), int hashCode(K), bool isValidKey(dynamic) }) -
-
- Creates an unordered hash-table based Map. [...] -
factory
-
-
- HashMap.from(Map other) -
-
- Creates a HashMap that contains all key/value pairs of other. [...] -
factory
-
-
- HashMap.fromEntries(Iterable<MapEntry<K, V>> entries) -
-
- Creates a HashMap containing the entries of entries. [...] -
factory
-
-
- HashMap.fromIterable(Iterable iterable, { K key(dynamic element), V value(dynamic element) }) -
-
- Creates a HashMap where the keys and values are computed from the -iterable. [...] -
factory
-
-
- HashMap.fromIterables(Iterable<K> keys, Iterable<V> values) -
-
- Creates a HashMap associating the given keys to values. [...] -
factory
-
-
- HashMap.identity() -
-
- Creates an unordered identity-based map. [...] -
factory
-
-
- HashMap.of(Map<K, V> other) -
-
- Creates a HashMap that contains all key/value pairs of other. -
factory
-
-
-
- -
-

Properties

- -
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only, inherited
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only, inherited
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addAll(Map<K, V> other) - → void - -
-
- Adds all key/value pairs of other to this map. [...] -
inherited
-
-
- addEntries(Iterable<MapEntry<K, V>> newEntries) - → void - -
-
- Adds all key/value pairs of newEntries to this map. [...] -
inherited
-
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] -
inherited
-
-
- clear() - → void - -
-
- Removes all pairs from the map. [...] -
inherited
-
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] -
inherited
-
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] -
inherited
-
-
- forEach(void f(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] -
inherited
-
-
- map<K2, V2>(MapEntry<K2, V2> f(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- Look up the value of key, or add a new value if it isn't there. [...] -
inherited
-
-
- remove(Object key) - → V - -
-
- Removes key and its associated value, if present, from the map. [...] -
inherited
-
-
- removeWhere(bool predicate(K key, V value)) - → void - -
-
- Removes all entries of this map that satisfy the given predicate. -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- Updates the value for the provided key. [...] -
inherited
-
-
- updateAll(V update(K key, V value)) - → void - -
-
- Updates all values. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] -
inherited
-
-
- operator []=(K key, V value) - → void - -
-
- Associates the key with the given value. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashMap/HashMap.from.html b/doc/api/dart-collection/HashMap/HashMap.from.html deleted file mode 100644 index 039e059a..00000000 --- a/doc/api/dart-collection/HashMap/HashMap.from.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - HashMap.from constructor - HashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashMap.from
- -
- -
- - - -
-

HashMap<K, V>.from constructor

- -
- - HashMap<K, V>.from(Map other) -
- -
-

Creates a HashMap that contains all key/value pairs of other.

-

The keys must all be instances of K and the values of V. -The other map itself can have any type.

-
- -
-

Implementation

-
factory HashMap.from(Map<dynamic, dynamic> other) {
-  HashMap<K, V> result = HashMap<K, V>();
-  other.forEach((dynamic k, dynamic v) {
-    result[k as K] = v as V;
-  });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashMap/HashMap.fromEntries.html b/doc/api/dart-collection/HashMap/HashMap.fromEntries.html deleted file mode 100644 index 3b418a39..00000000 --- a/doc/api/dart-collection/HashMap/HashMap.fromEntries.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - HashMap.fromEntries constructor - HashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashMap.fromEntries
- -
- -
- - - -
-

HashMap<K, V>.fromEntries constructor

- -
-
-
    -
  1. @Since("2.1")
  2. -
-
- - HashMap<K, V>.fromEntries(Iterable<MapEntry<K, V>> entries) -
- -
-

Creates a HashMap containing the entries of entries.

-

Returns a new HashMap<K, V> where all entries of entries -have been added in iteration order.

-

If multiple entries have the same key, -later occurrences overwrite the earlier ones.

-
- -
-

Implementation

-
@Since("2.1")
-factory HashMap.fromEntries(Iterable<MapEntry<K, V>> entries) =>
-    HashMap<K, V>()..addEntries(entries);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashMap/HashMap.fromIterable.html b/doc/api/dart-collection/HashMap/HashMap.fromIterable.html deleted file mode 100644 index f909507b..00000000 --- a/doc/api/dart-collection/HashMap/HashMap.fromIterable.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - HashMap.fromIterable constructor - HashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashMap.fromIterable
- -
- -
- - - -
-

HashMap<K, V>.fromIterable constructor

- -
- - HashMap<K, V>.fromIterable(Iterable iterable, { K key(dynamic element), V value(dynamic element) }) -
- -
-

Creates a HashMap where the keys and values are computed from the -iterable.

-

For each element of the iterable this constructor computes a key/value -pair, by applying key and value respectively.

-

The keys of the key/value pairs do not need to be unique. The last -occurrence of a key will simply overwrite any previous value.

-

If no values are specified for key and value the default is the -identity function.

-
- -
-

Implementation

-
factory HashMap.fromIterable(Iterable iterable,
-    {K Function(dynamic element)? key, V Function(dynamic element)? value}) {
-  HashMap<K, V> map = HashMap<K, V>();
-  MapBase._fillMapWithMappedIterable(map, iterable, key, value);
-  return map;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashMap/HashMap.fromIterables.html b/doc/api/dart-collection/HashMap/HashMap.fromIterables.html deleted file mode 100644 index 33c2b725..00000000 --- a/doc/api/dart-collection/HashMap/HashMap.fromIterables.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - HashMap.fromIterables constructor - HashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashMap.fromIterables
- -
- -
- - - -
-

HashMap<K, V>.fromIterables constructor

- -
- - HashMap<K, V>.fromIterables(Iterable<K> keys, Iterable<V> values) -
- -
-

Creates a HashMap associating the given keys to values.

-

This constructor iterates over keys and values and maps each element -of keys to the corresponding element of values.

-

If keys contains the same object multiple times, the last occurrence -overwrites the previous value.

-

It is an error if the two Iterables don't have the same length.

-
- -
-

Implementation

-
factory HashMap.fromIterables(Iterable<K> keys, Iterable<V> values) {
-  HashMap<K, V> map = HashMap<K, V>();
-  MapBase._fillMapWithIterables(map, keys, values);
-  return map;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashMap/HashMap.html b/doc/api/dart-collection/HashMap/HashMap.html deleted file mode 100644 index dca26d7b..00000000 --- a/doc/api/dart-collection/HashMap/HashMap.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - HashMap constructor - HashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashMap
- -
- -
- - - -
-

HashMap<K, V> constructor

- -
- - HashMap<K, V>({bool equals(K K), int hashCode(K), bool isValidKey(dynamic) }) -
- -
-

Creates an unordered hash-table based Map.

-

The created map is not ordered in any way. When iterating the keys or -values, the iteration order is unspecified except that it will stay the -same as long as the map isn't changed.

-

If equals is provided, it is used to compare the keys in the table with -new keys. If equals is omitted, the key's own Object.== is used -instead.

-

Similar, if hashCode is provided, it is used to produce a hash value -for keys in order to place them in the hash table. If it is omitted, the -key's own Object.hashCode is used.

-

If using methods like operator [], remove and containsKey together -with a custom equality and hashcode, an extra isValidKey function -can be supplied. This function is called before calling equals or -hashCode with an argument that may not be a K instance, and if the -call returns false, the key is assumed to not be in the set. -The isValidKey function defaults to just testing if the object is a -K instance.

-

Example:

-
new HashMap<int,int>(equals: (int a, int b) => (b - a) % 5 == 0,
-                     hashCode: (int e) => e % 5)
-
-

This example map does not need an isValidKey function to be passed. -The default function accepts only int values, which can safely be -passed to both the equals and hashCode functions.

-

If neither equals, hashCode, nor isValidKey is provided, -the default isValidKey instead accepts all keys. -The default equality and hashcode operations are assumed to work on all -objects.

-

Likewise, if equals is identical, hashCode is identityHashCode -and isValidKey is omitted, the resulting map is identity based, -and the isValidKey defaults to accepting all keys. -Such a map can be created directly using HashMap.identity.

-

The used equals and hashCode method should always be consistent, -so that if equals(a, b) then hashCode(a) == hashCode(b). The hash -of an object, or what it compares equal to, should not change while the -object is a key in the map. If it does change, the result is -unpredictable.

-

If you supply one of equals and hashCode, -you should generally also to supply the other.

-
- -
-

Implementation

-
external factory HashMap(
-    {bool Function(K, K)? equals,
-    int Function(K)? hashCode,
-    bool Function(dynamic)? isValidKey});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashMap/HashMap.identity.html b/doc/api/dart-collection/HashMap/HashMap.identity.html deleted file mode 100644 index c6dcead0..00000000 --- a/doc/api/dart-collection/HashMap/HashMap.identity.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - HashMap.identity constructor - HashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashMap.identity
- -
- -
- - - -
-

HashMap<K, V>.identity constructor

- -
- - HashMap<K, V>.identity() -
- -
-

Creates an unordered identity-based map.

-

Effectively a shorthand for:

-
new HashMap<K, V>(equals: identical,
-                  hashCode: identityHashCode)
-
-
- -
-

Implementation

-
external factory HashMap.identity();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashMap/HashMap.of.html b/doc/api/dart-collection/HashMap/HashMap.of.html deleted file mode 100644 index fc89d04b..00000000 --- a/doc/api/dart-collection/HashMap/HashMap.of.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - HashMap.of constructor - HashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashMap.of
- -
- -
- - - -
-

HashMap<K, V>.of constructor

- -
- - HashMap<K, V>.of(Map<K, V> other) -
- -
-

Creates a HashMap that contains all key/value pairs of other.

-
- -
-

Implementation

-
factory HashMap.of(Map<K, V> other) => HashMap<K, V>()..addAll(other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashSet-class.html b/doc/api/dart-collection/HashSet-class.html deleted file mode 100644 index 2486d2bb..00000000 --- a/doc/api/dart-collection/HashSet-class.html +++ /dev/null @@ -1,708 +0,0 @@ - - - - - - - - HashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashSet
- -
- -
- - - -
-

HashSet<E> class

- -
-

An unordered hash-table based Set implementation.

-

The elements of a HashSet must have consistent equality -and hashCode implementations. This means that the equals operation -must define a stable equivalence relation on the elements (reflexive, -symmetric, transitive, and consistent over time), and that the hashCode -must consistent with equality, so that the same for objects that are -considered equal.

-

The set allows null as an element.

-

Most simple operations on HashSet are done in (potentially amortized) -constant time: add, contains, remove, and length, provided the hash -codes of objects are well distributed.

-

The iteration order of the set is not specified and depends on -the hashcodes of the provided elements. However, the order is stable: -multiple iterations over the same set produce the same order, as long as -the set is not modified.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- HashSet({bool equals(E E), int hashCode(E), bool isValidKey(dynamic) }) -
-
- Create a hash set using the provided equals as equality. [...] -
factory
-
-
- HashSet.from(Iterable elements) -
-
- Create a hash set containing all elements. [...] -
factory
-
-
- HashSet.identity() -
-
- Creates an unordered identity-based set. [...] -
factory
-
-
- HashSet.of(Iterable<E> elements) -
-
- Create a hash set containing all elements. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- iterator - Iterator<E> -
-
- Provides an iterator that iterates over the elements of this set. [...] -
read-only, override
-
-
- first - → E -
-
- Returns the first element. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, inherited
-
-
- length - int -
-
- Returns the number of elements in the iterable. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E value) - bool - -
-
- Adds value to the set. [...] -
inherited
-
-
- addAll(Iterable<E> elements) - → void - -
-
- Adds all elements to this Set. [...] -
inherited
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- cast<R>() - Set<R> - -
-
- Provides a view of this set as a set of R instances. [...] -
inherited
-
-
- clear() - → void - -
-
- Removes all elements in the set. -
inherited
-
-
- contains(Object value) - bool - -
-
- Returns true if value is in the set. -
inherited
-
-
- containsAll(Iterable<Object> other) - bool - -
-
- Returns whether this Set contains all the elements of other. -
inherited
-
-
- difference(Set<Object> other) - Set<E> - -
-
- Returns a new set with the elements of this that are not in other. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- intersection(Set<Object> other) - Set<E> - -
-
- Returns a new set which is the intersection between this set and other. [...] -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- lookup(Object object) - → E - -
-
- If an object equal to object is in the set, return it. [...] -
inherited
-
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- remove(Object value) - bool - -
-
- Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set. -
inherited
-
-
- removeAll(Iterable<Object> elements) - → void - -
-
- Removes each element of elements from this set. -
inherited
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that satisfy test. -
inherited
-
-
- retainAll(Iterable<Object> elements) - → void - -
-
- Removes all elements of this set that are not elements in elements. [...] -
inherited
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that fail to satisfy test. -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- union(Set<E> other) - Set<E> - -
-
- Returns a new set which contains all the elements of this set and other. [...] -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashSet/HashSet.from.html b/doc/api/dart-collection/HashSet/HashSet.from.html deleted file mode 100644 index 350341c3..00000000 --- a/doc/api/dart-collection/HashSet/HashSet.from.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - HashSet.from constructor - HashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashSet.from
- -
- -
- - - -
-

HashSet<E>.from constructor

- -
- - HashSet<E>.from(Iterable elements) -
- -
-

Create a hash set containing all elements.

-

Creates a hash set as by HashSet<E>() and adds all given elements -to the set. The elements are added in order. If elements contains -two entries that are equal, but not identical, then the first one is -the one in the resulting set.

-

All the elements should be instances of E. -The elements iterable itself may have any element type, so this -constructor can be used to down-cast a Set, for example as:

-
Set<SuperType> superSet = ...;
-Set<SubType> subSet =
-    HashSet<SubType>.from(superSet.whereType<SubType>());
-
-
- -
-

Implementation

-
factory HashSet.from(Iterable<dynamic> elements) {
-  HashSet<E> result = HashSet<E>();
-  for (final e in elements) {
-    result.add(e as E);
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashSet/HashSet.html b/doc/api/dart-collection/HashSet/HashSet.html deleted file mode 100644 index 272bc7b7..00000000 --- a/doc/api/dart-collection/HashSet/HashSet.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - HashSet constructor - HashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashSet
- -
- -
- - - -
-

HashSet<E> constructor

- -
- - HashSet<E>({bool equals(E E), int hashCode(E), bool isValidKey(dynamic) }) -
- -
-

Create a hash set using the provided equals as equality.

-

The provided equals must define a stable equivalence relation, and -hashCode must be consistent with equals. If the equals or hashCode -methods won't work on all objects, but only on some instances of E, the -isValidKey predicate can be used to restrict the keys that the functions -are applied to. -Any key for which isValidKey returns false is automatically assumed -to not be in the set when asking contains.

-

If equals or hashCode are omitted, the set uses -the elements' intrinsic Object.== and Object.hashCode.

-

If you supply one of equals and hashCode, -you should generally also to supply the other.

-

If the supplied equals or hashCode functions won't work on all E -objects, and the map will be used in a setting where a non-E object -is passed to, e.g., contains, then the isValidKey function should -also be supplied.

-

If isValidKey is omitted, it defaults to testing if the object is an -E instance. That means that:

-
new HashSet<int>(equals: (int e1, int e2) => (e1 - e2) % 5 == 0,
-                 hashCode: (int e) => e % 5)
-
-

does not need an isValidKey argument, because it defaults to only -accepting int values which are accepted by both equals and hashCode.

-

If neither equals, hashCode, nor isValidKey is provided, -the default isValidKey instead accepts all values. -The default equality and hashcode operations are assumed to work on all -objects.

-

Likewise, if equals is identical, hashCode is identityHashCode -and isValidKey is omitted, the resulting set is identity based, -and the isValidKey defaults to accepting all keys. -Such a map can be created directly using HashSet.identity.

-
- -
-

Implementation

-
external factory HashSet(
-    {bool Function(E, E)? equals,
-    int Function(E)? hashCode,
-    bool Function(dynamic)? isValidKey});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashSet/HashSet.identity.html b/doc/api/dart-collection/HashSet/HashSet.identity.html deleted file mode 100644 index 1223585d..00000000 --- a/doc/api/dart-collection/HashSet/HashSet.identity.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - HashSet.identity constructor - HashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashSet.identity
- -
- -
- - - -
-

HashSet<E>.identity constructor

- -
- - HashSet<E>.identity() -
- -
-

Creates an unordered identity-based set.

-

Effectively a shorthand for:

-
new HashSet<E>(equals: identical,
-               hashCode: identityHashCode)
-
-
- -
-

Implementation

-
external factory HashSet.identity();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashSet/HashSet.of.html b/doc/api/dart-collection/HashSet/HashSet.of.html deleted file mode 100644 index 4c3bd79a..00000000 --- a/doc/api/dart-collection/HashSet/HashSet.of.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - HashSet.of constructor - HashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
HashSet.of
- -
- -
- - - -
-

HashSet<E>.of constructor

- -
- - HashSet<E>.of(Iterable<E> elements) -
- -
-

Create a hash set containing all elements.

-

Creates a hash set as by new HashSet<E>() and adds all given elements -to the set. The elements are added in order. If elements contains -two entries that are equal, but not identical, then the first one is -the one in the resulting set.

-
- -
-

Implementation

-
factory HashSet.of(Iterable<E> elements) => HashSet<E>()..addAll(elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashSet/iterator.html b/doc/api/dart-collection/HashSet/iterator.html deleted file mode 100644 index d63f4756..00000000 --- a/doc/api/dart-collection/HashSet/iterator.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - iterator property - HashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator -
override
-
- -
-

Provides an iterator that iterates over the elements of this set.

-

The order of iteration is unspecified, -but consistent between changes to the set.

-
-
-

Implementation

-
Iterator<E> get iterator;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/HashSet/length.html b/doc/api/dart-collection/HashSet/length.html deleted file mode 100644 index cdff0667..00000000 --- a/doc/api/dart-collection/HashSet/length.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - length property - HashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
inherited
-
- -
-

Returns the number of elements in the iterable.

-

This is an efficient operation that doesn't require iterating through -the elements.

-
-
-

Implementation

-
int get length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableBase-class.html b/doc/api/dart-collection/IterableBase-class.html deleted file mode 100644 index 57779390..00000000 --- a/doc/api/dart-collection/IterableBase-class.html +++ /dev/null @@ -1,571 +0,0 @@ - - - - - - - - IterableBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
IterableBase
- -
- -
- - - -
-

IterableBase<E> class

- -
-

Base class for implementing Iterable.

-

This class implements all methods of Iterable, except Iterable.iterator, -in terms of iterator.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- IterableBase() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, inherited
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, inherited
-
-
- length - int -
-
- Returns the number of elements in this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- cast<R>() - Iterable<R> - -
-
- Provides a view of this iterable as an iterable of R instances. [...] -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of (some of) the elements of this. [...] -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- iterableToFullString(Iterable iterable, [ String leftDelimiter = '(' String rightDelimiter = ')' ]) - String - -
-
- Converts an Iterable to a string. [...] - -
-
- iterableToShortString(Iterable iterable, [ String leftDelimiter = '(' String rightDelimiter = ')' ]) - String - -
-
- Convert an Iterable to a string like IterableBase.toString. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableBase/IterableBase.html b/doc/api/dart-collection/IterableBase/IterableBase.html deleted file mode 100644 index 485ef0c1..00000000 --- a/doc/api/dart-collection/IterableBase/IterableBase.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - IterableBase constructor - IterableBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
IterableBase
- -
- -
- - - -
-

IterableBase<E> constructor

- -
- const - IterableBase<E>() -
- - -
-

Implementation

-
const IterableBase();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableBase/iterableToFullString.html b/doc/api/dart-collection/IterableBase/iterableToFullString.html deleted file mode 100644 index a5d2aead..00000000 --- a/doc/api/dart-collection/IterableBase/iterableToFullString.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - iterableToFullString method - IterableBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterableToFullString
- -
- -
- - - -
-

iterableToFullString method

- -
- String - iterableToFullString -(Iterable iterable, [ String leftDelimiter = '(' String rightDelimiter = ')' ]) - -
-
-

Converts an Iterable to a string.

-

Converts each elements to a string, and separates the results by ", ". -Then wraps the result in leftDelimiter and rightDelimiter.

-

Unlike iterableToShortString, this conversion doesn't omit any -elements or puts any limit on the size of the result.

-

Handles circular references where converting one of the elements -to a string ends up converting iterable to a string again.

-
- -
-

Implementation

-
static String iterableToFullString(Iterable iterable,
-    [String leftDelimiter = '(', String rightDelimiter = ')']) {
-  if (_isToStringVisiting(iterable)) {
-    return "$leftDelimiter...$rightDelimiter";
-  }
-  StringBuffer buffer = StringBuffer(leftDelimiter);
-  _toStringVisiting.add(iterable);
-  try {
-    buffer.writeAll(iterable, ", ");
-  } finally {
-    assert(identical(_toStringVisiting.last, iterable));
-    _toStringVisiting.removeLast();
-  }
-  buffer.write(rightDelimiter);
-  return buffer.toString();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableBase/iterableToShortString.html b/doc/api/dart-collection/IterableBase/iterableToShortString.html deleted file mode 100644 index 8f22b625..00000000 --- a/doc/api/dart-collection/IterableBase/iterableToShortString.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - iterableToShortString method - IterableBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterableToShortString
- -
- -
- - - -
-

iterableToShortString method

- -
- String - iterableToShortString -(Iterable iterable, [ String leftDelimiter = '(' String rightDelimiter = ')' ]) - -
-
-

Convert an Iterable to a string like IterableBase.toString.

-

Allows using other delimiters than '(' and ')'.

-

Handles circular references where converting one of the elements -to a string ends up converting iterable to a string again.

-
- -
-

Implementation

-
static String iterableToShortString(Iterable iterable,
-    [String leftDelimiter = '(', String rightDelimiter = ')']) {
-  if (_isToStringVisiting(iterable)) {
-    if (leftDelimiter == "(" && rightDelimiter == ")") {
-      // Avoid creating a new string in the "common" case.
-      return "(...)";
-    }
-    return "$leftDelimiter...$rightDelimiter";
-  }
-  List<String> parts = <String>[];
-  _toStringVisiting.add(iterable);
-  try {
-    _iterablePartsToStrings(iterable, parts);
-  } finally {
-    assert(identical(_toStringVisiting.last, iterable));
-    _toStringVisiting.removeLast();
-  }
-  return (StringBuffer(leftDelimiter)
-        ..writeAll(parts, ", ")
-        ..write(rightDelimiter))
-      .toString();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin-class.html b/doc/api/dart-collection/IterableMixin-class.html deleted file mode 100644 index c4daa481..00000000 --- a/doc/api/dart-collection/IterableMixin-class.html +++ /dev/null @@ -1,543 +0,0 @@ - - - - - - - - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
IterableMixin
- -
- -
- - - -
-

IterableMixin<E> class

- -
-

This Iterable mixin implements all Iterable members except iterator.

-

All other methods are implemented in terms of iterator.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- IterableMixin() -
-
- -
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only, override
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, override
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, override
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, override
-
-
- length - int -
-
- Returns the number of elements in this. [...] -
read-only, override
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
override
-
-
- cast<R>() - Iterable<R> - -
-
- Provides a view of this iterable as an iterable of R instances. [...] -
override
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
override
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
override
-
-
- every(bool f(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
override
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
override
-
-
- firstWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
override
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
override
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
override
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
override
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
override
-
-
- lastWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
override
-
-
- map<T>(T f(E element)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
override
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
override
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
override
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
override
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
override
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
override
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
override
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
override
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
override
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- where(bool f(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
override
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/IterableMixin.html b/doc/api/dart-collection/IterableMixin/IterableMixin.html deleted file mode 100644 index 9d5126c9..00000000 --- a/doc/api/dart-collection/IterableMixin/IterableMixin.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - IterableMixin constructor - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
IterableMixin
- -
- -
- - - -
-

IterableMixin<E> constructor

- -
- - IterableMixin<E>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/any.html b/doc/api/dart-collection/IterableMixin/any.html deleted file mode 100644 index aabbe561..00000000 --- a/doc/api/dart-collection/IterableMixin/any.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - any method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
any
- -
- -
- - - -
-

any method

- -
- bool - any -(bool test(E element)) -
override
-
-
-

Checks whether any element of this iterable satisfies test.

-

Checks every element in iteration order, and returns true if -any of them make test return true, otherwise returns false.

-
- -
-

Implementation

-
bool any(bool test(E element)) {
-  for (E element in this) {
-    if (test(element)) return true;
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/cast.html b/doc/api/dart-collection/IterableMixin/cast.html deleted file mode 100644 index aa9a27be..00000000 --- a/doc/api/dart-collection/IterableMixin/cast.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - cast method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Iterable<R> - cast -<R>() -
override
-
-
-

Provides a view of this iterable as an iterable of R instances.

-

If this iterable only contains instances of R, all operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

When the returned iterable creates a new object that depends on -the type R, e.g., from toList, it will have exactly the type R.

-
- -
-

Implementation

-
Iterable<R> cast<R>() => Iterable.castFrom<E, R>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/contains.html b/doc/api/dart-collection/IterableMixin/contains.html deleted file mode 100644 index 0c371945..00000000 --- a/doc/api/dart-collection/IterableMixin/contains.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - contains method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- bool - contains -(Object element) -
override
-
-
-

Returns true if the collection contains an element equal to element.

-

This operation will check each element in order for being equal to -element, unless it has a more efficient way to find an element -equal to element.

-

The equality used to determine whether element is equal to an element of -the iterable defaults to the Object.== of the element.

-

Some types of iterable may have a different equality used for its elements. -For example, a Set may have a custom equality -(see Set.identity) that its contains uses. -Likewise the Iterable returned by a Map.keys call -should use the same equality that the Map uses for keys.

-
- -
-

Implementation

-
bool contains(Object? element) {
-  for (E e in this) {
-    if (e == element) return true;
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/elementAt.html b/doc/api/dart-collection/IterableMixin/elementAt.html deleted file mode 100644 index b314056c..00000000 --- a/doc/api/dart-collection/IterableMixin/elementAt.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - elementAt method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
elementAt
- -
- -
- - - -
-

elementAt method

- -
- E - elementAt -(int index) -
override
-
-
-

Returns the indexth element.

-

The index must be non-negative and less than length. -Index zero represents the first element (so iterable.elementAt(0) is -equivalent to iterable.first).

-

May iterate through the elements in iteration order, ignoring the -first index elements and then returning the next. -Some iterables may have a more efficient way to find the element.

-
- -
-

Implementation

-
E elementAt(int index) {
-  ArgumentError.checkNotNull(index, "index");
-  RangeError.checkNotNegative(index, "index");
-  int elementIndex = 0;
-  for (E element in this) {
-    if (index == elementIndex) return element;
-    elementIndex++;
-  }
-  throw RangeError.index(index, this, "index", null, elementIndex);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/every.html b/doc/api/dart-collection/IterableMixin/every.html deleted file mode 100644 index 8f7b1258..00000000 --- a/doc/api/dart-collection/IterableMixin/every.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - every method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
every
- -
- -
- - - -
-

every method

- -
- bool - every -(bool f(E element)) -
override
-
-
-

Checks whether every element of this iterable satisfies test.

-

Checks every element in iteration order, and returns false if -any of them make test return false, otherwise returns true.

-
- -
-

Implementation

-
bool every(bool f(E element)) {
-  for (E element in this) {
-    if (!f(element)) return false;
-  }
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/expand.html b/doc/api/dart-collection/IterableMixin/expand.html deleted file mode 100644 index 6a367312..00000000 --- a/doc/api/dart-collection/IterableMixin/expand.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - expand method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
expand
- -
- -
- - - -
-

expand<T> method

- -
- Iterable<T> - expand -<T>(Iterable<T> f(E element)) -
override
-
-
-

Expands each element of this Iterable into zero or more elements.

-

The resulting Iterable runs through the elements returned -by f for each element of this, in iteration order.

-

The returned Iterable is lazy, and calls f for each element -of this every time it's iterated.

-

Example:

-
var pairs = [[1, 2], [3, 4]];
-var flattened = pairs.expand((pair) => pair).toList();
-print(flattened); // => [1, 2, 3, 4];
-
-var input = [1, 2, 3];
-var duplicated = input.expand((i) => [i, i]).toList();
-print(duplicated); // => [1, 1, 2, 2, 3, 3]
-
-
- -
-

Implementation

-
Iterable<T> expand<T>(Iterable<T> f(E element)) =>
-    ExpandIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/first.html b/doc/api/dart-collection/IterableMixin/first.html deleted file mode 100644 index 3bd61f31..00000000 --- a/doc/api/dart-collection/IterableMixin/first.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - first property - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first -
override
-
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  return it.current;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/firstWhere.html b/doc/api/dart-collection/IterableMixin/firstWhere.html deleted file mode 100644 index cf5d14b8..00000000 --- a/doc/api/dart-collection/IterableMixin/firstWhere.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - firstWhere method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstWhere
- -
- -
- - - -
-

firstWhere method

- -
- E - firstWhere -(bool test(E value), { E orElse() }) -
override
-
-
-

Returns the first element that satisfies the given predicate test.

-

Iterates through elements and returns the first to satisfy test.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E firstWhere(bool test(E value), {E Function()? orElse}) {
-  for (E element in this) {
-    if (test(element)) return element;
-  }
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/fold.html b/doc/api/dart-collection/IterableMixin/fold.html deleted file mode 100644 index c6f0d94a..00000000 --- a/doc/api/dart-collection/IterableMixin/fold.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - fold method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
fold
- -
- -
- - - -
-

fold<T> method

- -
- T - fold -<T>(T initialValue, T combine(T previousValue, E element)) -
override
-
-
-

Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value

-

Uses initialValue as the initial value, -then iterates through the elements and updates the value with -each element using the combine function, as if by:

-
var value = initialValue;
-for (E element in this) {
-  value = combine(value, element);
-}
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.fold(0, (prev, element) => prev + element);
-
-
- -
-

Implementation

-
T fold<T>(T initialValue, T combine(T previousValue, E element)) {
-  var value = initialValue;
-  for (E element in this) value = combine(value, element);
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/followedBy.html b/doc/api/dart-collection/IterableMixin/followedBy.html deleted file mode 100644 index 27ae0cc6..00000000 --- a/doc/api/dart-collection/IterableMixin/followedBy.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - followedBy method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
followedBy
- -
- -
- - - -
-

followedBy method

- -
- Iterable<E> - followedBy -(Iterable<E> other) -
override
-
-
-

Returns the lazy concatentation of this iterable and other.

-

The returned iterable will provide the same elements as this iterable, -and, after that, the elements of other, in the same order as in the -original iterables.

-
- -
-

Implementation

-
Iterable<E> followedBy(Iterable<E> other) {
-  // Type workaround because IterableMixin<E> doesn't promote
-  // to EfficientLengthIterable<E>.
-  Iterable<E> self = this;
-  if (self is EfficientLengthIterable<E>) {
-    return FollowedByIterable<E>.firstEfficient(self, other);
-  }
-  return FollowedByIterable<E>(this, other);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/forEach.html b/doc/api/dart-collection/IterableMixin/forEach.html deleted file mode 100644 index 98c1d306..00000000 --- a/doc/api/dart-collection/IterableMixin/forEach.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - forEach method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void f(E element)) -
override
-
-
-

Applies the function f to each element of this collection in iteration -order.

-
- -
-

Implementation

-
void forEach(void f(E element)) {
-  for (E element in this) f(element);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/isEmpty.html b/doc/api/dart-collection/IterableMixin/isEmpty.html deleted file mode 100644 index f3bb7e3d..00000000 --- a/doc/api/dart-collection/IterableMixin/isEmpty.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - isEmpty property - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there are no elements in this collection.

-

May be computed by checking if iterator.moveNext() returns false.

-
-
-

Implementation

-
bool get isEmpty => !iterator.moveNext();
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/isNotEmpty.html b/doc/api/dart-collection/IterableMixin/isNotEmpty.html deleted file mode 100644 index f3e903cf..00000000 --- a/doc/api/dart-collection/IterableMixin/isNotEmpty.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - isNotEmpty property - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty -
override
-
- -
-

Returns true if there is at least one element in this collection.

-

May be computed by checking if iterator.moveNext() returns true.

-
-
-

Implementation

-
bool get isNotEmpty => !isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/join.html b/doc/api/dart-collection/IterableMixin/join.html deleted file mode 100644 index ad3166f5..00000000 --- a/doc/api/dart-collection/IterableMixin/join.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - join method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
join
- -
- -
- - - -
-

join method

- -
- String - join -([String separator = "" ]) -
override
-
-
-

Converts each element to a String and concatenates the strings.

-

Iterates through elements of this iterable, -converts each one to a String by calling Object.toString, -and then concatenates the strings, with the -separator string interleaved between the elements.

-
- -
-

Implementation

-
String join([String separator = ""]) {
-  Iterator<E> iterator = this.iterator;
-  if (!iterator.moveNext()) return "";
-  StringBuffer buffer = StringBuffer();
-  if (separator == null || separator == "") {
-    do {
-      buffer.write("${iterator.current}");
-    } while (iterator.moveNext());
-  } else {
-    buffer.write("${iterator.current}");
-    while (iterator.moveNext()) {
-      buffer.write(separator);
-      buffer.write("${iterator.current}");
-    }
-  }
-  return buffer.toString();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/last.html b/doc/api/dart-collection/IterableMixin/last.html deleted file mode 100644 index 1a021bec..00000000 --- a/doc/api/dart-collection/IterableMixin/last.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - last property - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last -
override
-
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  E result;
-  do {
-    result = it.current;
-  } while (it.moveNext());
-  return result;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/lastWhere.html b/doc/api/dart-collection/IterableMixin/lastWhere.html deleted file mode 100644 index 4d0ba5e4..00000000 --- a/doc/api/dart-collection/IterableMixin/lastWhere.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - lastWhere method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastWhere
- -
- -
- - - -
-

lastWhere method

- -
- E - lastWhere -(bool test(E value), { E orElse() }) -
override
-
-
-

Returns the last element that satisfies the given predicate test.

-

An iterable that can access its elements directly may check its -elements in any order (for example a list starts by checking the -last element and then moves towards the start of the list). -The default implementation iterates elements in iteration order, -checks test(element) for each, -and finally returns that last one that matched.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E lastWhere(bool test(E value), {E Function()? orElse}) {
-  late E result;
-  bool foundMatching = false;
-  for (E element in this) {
-    if (test(element)) {
-      result = element;
-      foundMatching = true;
-    }
-  }
-  if (foundMatching) return result;
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/length.html b/doc/api/dart-collection/IterableMixin/length.html deleted file mode 100644 index 5128a159..00000000 --- a/doc/api/dart-collection/IterableMixin/length.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - length property - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
override
-
- -
-

Returns the number of elements in this.

-

Counting all elements may involve iterating through all elements and can -therefore be slow. -Some iterables have a more efficient way to find the number of elements.

-
-
-

Implementation

-
int get length {
-  assert(this is! EfficientLengthIterable);
-  int count = 0;
-  Iterator it = iterator;
-  while (it.moveNext()) {
-    count++;
-  }
-  return count;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/map.html b/doc/api/dart-collection/IterableMixin/map.html deleted file mode 100644 index e6c2bb80..00000000 --- a/doc/api/dart-collection/IterableMixin/map.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - map method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<T> method

- -
- Iterable<T> - map -<T>(T f(E element)) -
override
-
-
-

Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order.

-

This method returns a view of the mapped elements. As long as the -returned Iterable is not iterated over, the supplied function f will -not be invoked. The transformed elements will not be cached. Iterating -multiple times over the returned Iterable will invoke the supplied -function f multiple times on the same element.

-

Methods on the returned iterable are allowed to omit calling f -on any element where the result isn't needed. -For example, elementAt may call f only once.

-
- -
-

Implementation

-
Iterable<T> map<T>(T f(E element)) => MappedIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/reduce.html b/doc/api/dart-collection/IterableMixin/reduce.html deleted file mode 100644 index 70ad33db..00000000 --- a/doc/api/dart-collection/IterableMixin/reduce.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - reduce method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
reduce
- -
- -
- - - -
-

reduce method

- -
- E - reduce -(E combine(E value E element)) -
override
-
-
-

Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function.

-

The iterable must have at least one element. -If it has only one element, that element is returned.

-

Otherwise this method starts with the first element from the iterator, -and then combines it with the remaining elements in iteration order, -as if by:

-
E value = iterable.first;
-iterable.skip(1).forEach((element) {
-  value = combine(value, element);
-});
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.reduce((value, element) => value + element);
-
-
- -
-

Implementation

-
E reduce(E combine(E value, E element)) {
-  Iterator<E> iterator = this.iterator;
-  if (!iterator.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  E value = iterator.current;
-  while (iterator.moveNext()) {
-    value = combine(value, iterator.current);
-  }
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/single.html b/doc/api/dart-collection/IterableMixin/single.html deleted file mode 100644 index 6f435349..00000000 --- a/doc/api/dart-collection/IterableMixin/single.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - single property - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- E - single -
override
-
- -
-

Checks that this iterable has only one element, and returns that element.

-

Throws a StateError if this is empty or has more than one element.

-
-
-

Implementation

-
E get single {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) throw IterableElementError.noElement();
-  E result = it.current;
-  if (it.moveNext()) throw IterableElementError.tooMany();
-  return result;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/singleWhere.html b/doc/api/dart-collection/IterableMixin/singleWhere.html deleted file mode 100644 index 2cb36f80..00000000 --- a/doc/api/dart-collection/IterableMixin/singleWhere.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - singleWhere method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
singleWhere
- -
- -
- - - -
-

singleWhere method

- -
- E - singleWhere -(bool test(E element), { E orElse() }) -
override
-
-
-

Returns the single element that satisfies test.

-

Checks elements to see if test(element) returns true. -If exactly one element satisfies test, that element is returned. -If more than one matching element is found, throws StateError. -If no matching element is found, returns the result of orElse. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E singleWhere(bool test(E element), {E Function()? orElse}) {
-  late E result;
-  bool foundMatching = false;
-  for (E element in this) {
-    if (test(element)) {
-      if (foundMatching) {
-        throw IterableElementError.tooMany();
-      }
-      result = element;
-      foundMatching = true;
-    }
-  }
-  if (foundMatching) return result;
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/skip.html b/doc/api/dart-collection/IterableMixin/skip.html deleted file mode 100644 index 7488998e..00000000 --- a/doc/api/dart-collection/IterableMixin/skip.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - skip method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
skip
- -
- -
- - - -
-

skip method

- -
- Iterable<E> - skip -(int count) -
override
-
-
-

Returns an Iterable that provides all but the first count elements.

-

When the returned iterable is iterated, it starts iterating over this, -first skipping past the initial count elements. -If this has fewer than count elements, then the resulting Iterable is -empty. -After that, the remaining elements are iterated in the same order as -in this iterable.

-

Some iterables may be able to find later elements without first iterating -through earlier elements, for example when iterating a List. -Such iterables are allowed to ignore the initial skipped elements.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> skip(int count) {
-  return SkipIterable<E>(this, count);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/skipWhile.html b/doc/api/dart-collection/IterableMixin/skipWhile.html deleted file mode 100644 index 04bf7b68..00000000 --- a/doc/api/dart-collection/IterableMixin/skipWhile.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - skipWhile method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
skipWhile
- -
- -
- - - -
-

skipWhile method

- -
- Iterable<E> - skipWhile -(bool test(E value)) -
override
-
-
-

Returns an Iterable that skips leading elements while test is satisfied.

-

The filtering happens lazily. Every new Iterator of the returned -iterable iterates over all elements of this.

-

The returned iterable provides elements by iterating this iterable, -but skipping over all initial elements where test(element) returns -true. If all elements satisfy test the resulting iterable is empty, -otherwise it iterates the remaining elements in their original order, -starting with the first element for which test(element) returns false.

-
- -
-

Implementation

-
Iterable<E> skipWhile(bool test(E value)) {
-  return SkipWhileIterable<E>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/take.html b/doc/api/dart-collection/IterableMixin/take.html deleted file mode 100644 index 4536fefa..00000000 --- a/doc/api/dart-collection/IterableMixin/take.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - take method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
take
- -
- -
- - - -
-

take method

- -
- Iterable<E> - take -(int count) -
override
-
-
-

Returns a lazy iterable of the count first elements of this iterable.

-

The returned Iterable may contain fewer than count elements, if this -contains fewer than count elements.

-

The elements can be computed by stepping through iterator until count -elements have been seen.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> take(int count) {
-  return TakeIterable<E>(this, count);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/takeWhile.html b/doc/api/dart-collection/IterableMixin/takeWhile.html deleted file mode 100644 index b853b2d7..00000000 --- a/doc/api/dart-collection/IterableMixin/takeWhile.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - takeWhile method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
takeWhile
- -
- -
- - - -
-

takeWhile method

- -
- Iterable<E> - takeWhile -(bool test(E value)) -
override
-
-
-

Returns a lazy iterable of the leading elements satisfying test.

-

The filtering happens lazily. Every new iterator of the returned -iterable starts iterating over the elements of this.

-

The elements can be computed by stepping through iterator until an -element is found where test(element) is false. At that point, -the returned iterable stops (its moveNext() returns false).

-
- -
-

Implementation

-
Iterable<E> takeWhile(bool test(E value)) {
-  return TakeWhileIterable<E>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/toList.html b/doc/api/dart-collection/IterableMixin/toList.html deleted file mode 100644 index 5e990d27..00000000 --- a/doc/api/dart-collection/IterableMixin/toList.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - toList method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toList
- -
- -
- - - -
-

toList method

- -
- List<E> - toList -({bool growable: true }) -
override
-
-
-

Creates a List containing the elements of this Iterable.

-

The elements are in iteration order. -The list is fixed-length if growable is false.

-
- -
-

Implementation

-
List<E> toList({bool growable = true}) =>
-    List<E>.from(this, growable: growable);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/toSet.html b/doc/api/dart-collection/IterableMixin/toSet.html deleted file mode 100644 index a896fb01..00000000 --- a/doc/api/dart-collection/IterableMixin/toSet.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - toSet method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSet
- -
- -
- - - -
-

toSet method

- -
- Set<E> - toSet -() -
override
-
-
-

Creates a Set containing the same elements as this iterable.

-

The set may contain fewer elements than the iterable, -if the iterable contains an element more than once, -or it contains one or more elements that are equal. -The order of the elements in the set is not guaranteed to be the same -as for the iterable.

-
- -
-

Implementation

-
Set<E> toSet() => Set<E>.from(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/toString.html b/doc/api/dart-collection/IterableMixin/toString.html deleted file mode 100644 index d84b1397..00000000 --- a/doc/api/dart-collection/IterableMixin/toString.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - toString method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => IterableBase.iterableToShortString(this, '(', ')');
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/where.html b/doc/api/dart-collection/IterableMixin/where.html deleted file mode 100644 index 99c79627..00000000 --- a/doc/api/dart-collection/IterableMixin/where.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - where method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
where
- -
- -
- - - -
-

where method

- -
- Iterable<E> - where -(bool f(E element)) -
override
-
-
-

Returns a new lazy Iterable with all elements that satisfy the -predicate test.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -As long as the returned Iterable is not iterated over, -the supplied function test will not be invoked. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may invoke the supplied -function test multiple times on the same element.

-
- -
-

Implementation

-
Iterable<E> where(bool f(E element)) => WhereIterable<E>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/IterableMixin/whereType.html b/doc/api/dart-collection/IterableMixin/whereType.html deleted file mode 100644 index 6c5b57cf..00000000 --- a/doc/api/dart-collection/IterableMixin/whereType.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - whereType method - IterableMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
whereType
- -
- -
- - - -
-

whereType<T> method

- -
- Iterable<T> - whereType -<T>() -
override
-
-
-

Returns a new lazy Iterable with all elements that have type T.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may yield different results, -if the underlying elements change between iterations.

-
- -
-

Implementation

-
Iterable<T> whereType<T>() => WhereTypeIterable<T>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashMap-class.html b/doc/api/dart-collection/LinkedHashMap-class.html deleted file mode 100644 index 826971cd..00000000 --- a/doc/api/dart-collection/LinkedHashMap-class.html +++ /dev/null @@ -1,508 +0,0 @@ - - - - - - - - LinkedHashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashMap
- -
- -
- - - -
-

LinkedHashMap<K, V> class

- -
-

A hash-table based implementation of Map.

-

The insertion order of keys is remembered, -and keys are iterated in the order they were inserted into the map. -Values are iterated in their corresponding key's order. -Changing a key's value, when the key is already in the map, -does not change the iteration order, -but removing the key and adding it again -will make it be last in the iteration order.

-

The keys of a LinkedHashMap must have consistent Object.== -and Object.hashCode implementations. This means that the == operator -must define a stable equivalence relation on the keys (reflexive, -symmetric, transitive, and consistent over time), and that hashCode -must be the same for objects that are considered equal by ==.

-

The map allows null as a key.

-
- -
-
- -
Implemented types
-
-
    -
  • Map<K, V>
  • -
-
- - - - -
-
- -
-

Constructors

- -
-
- LinkedHashMap({bool equals(K K), int hashCode(K), bool isValidKey(dynamic) }) -
-
- Creates an insertion-ordered hash-table based Map. [...] -
factory
-
-
- LinkedHashMap.from(Map other) -
-
- Creates a LinkedHashMap that contains all key value pairs of other. [...] -
factory
-
-
- LinkedHashMap.fromEntries(Iterable<MapEntry<K, V>> entries) -
-
- Creates a LinkedHashMap containing the entries of entries. [...] -
factory
-
-
- LinkedHashMap.fromIterable(Iterable iterable, { K key(dynamic element), V value(dynamic element) }) -
-
- Creates a LinkedHashMap where the keys and values are computed from the -iterable. [...] -
factory
-
-
- LinkedHashMap.fromIterables(Iterable<K> keys, Iterable<V> values) -
-
- Creates a LinkedHashMap associating the given keys to values. [...] -
factory
-
-
- LinkedHashMap.identity() -
-
- Creates an insertion-ordered identity-based map. [...] -
factory
-
-
- LinkedHashMap.of(Map<K, V> other) -
-
- Creates a LinkedHashMap that contains all key value pairs of other. -
factory
-
-
-
- -
-

Properties

- -
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only, inherited
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only, inherited
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addAll(Map<K, V> other) - → void - -
-
- Adds all key/value pairs of other to this map. [...] -
inherited
-
-
- addEntries(Iterable<MapEntry<K, V>> newEntries) - → void - -
-
- Adds all key/value pairs of newEntries to this map. [...] -
inherited
-
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] -
inherited
-
-
- clear() - → void - -
-
- Removes all pairs from the map. [...] -
inherited
-
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] -
inherited
-
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] -
inherited
-
-
- forEach(void f(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] -
inherited
-
-
- map<K2, V2>(MapEntry<K2, V2> f(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- Look up the value of key, or add a new value if it isn't there. [...] -
inherited
-
-
- remove(Object key) - → V - -
-
- Removes key and its associated value, if present, from the map. [...] -
inherited
-
-
- removeWhere(bool predicate(K key, V value)) - → void - -
-
- Removes all entries of this map that satisfy the given predicate. -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- Updates the value for the provided key. [...] -
inherited
-
-
- updateAll(V update(K key, V value)) - → void - -
-
- Updates all values. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] -
inherited
-
-
- operator []=(K key, V value) - → void - -
-
- Associates the key with the given value. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.from.html b/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.from.html deleted file mode 100644 index 5b9f27af..00000000 --- a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.from.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - LinkedHashMap.from constructor - LinkedHashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashMap.from
- -
- -
- - - -
-

LinkedHashMap<K, V>.from constructor

- -
- - LinkedHashMap<K, V>.from(Map other) -
- -
-

Creates a LinkedHashMap that contains all key value pairs of other.

-

The keys must all be instances of K and the values to V. -The other map itself can have any type.

-
- -
-

Implementation

-
factory LinkedHashMap.from(Map<dynamic, dynamic> other) {
-  LinkedHashMap<K, V> result = LinkedHashMap<K, V>();
-  other.forEach((dynamic k, dynamic v) {
-    result[k as K] = v as V;
-  });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromEntries.html b/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromEntries.html deleted file mode 100644 index e89601d2..00000000 --- a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromEntries.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - LinkedHashMap.fromEntries constructor - LinkedHashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashMap.fromEntries
- -
- -
- - - -
-

LinkedHashMap<K, V>.fromEntries constructor

- -
-
-
    -
  1. @Since("2.1")
  2. -
-
- - LinkedHashMap<K, V>.fromEntries(Iterable<MapEntry<K, V>> entries) -
- -
-

Creates a LinkedHashMap containing the entries of entries.

-

Returns a new LinkedHashMap<K, V> where all entries of entries -have been added in iteration order.

-

If multiple entries have the same key, -later occurrences overwrite the earlier ones.

-
- -
-

Implementation

-
@Since("2.1")
-factory LinkedHashMap.fromEntries(Iterable<MapEntry<K, V>> entries) =>
-    LinkedHashMap<K, V>()..addEntries(entries);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromIterable.html b/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromIterable.html deleted file mode 100644 index 0f36b826..00000000 --- a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromIterable.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - LinkedHashMap.fromIterable constructor - LinkedHashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashMap.fromIterable
- -
- -
- - - -
-

LinkedHashMap<K, V>.fromIterable constructor

- -
- - LinkedHashMap<K, V>.fromIterable(Iterable iterable, { K key(dynamic element), V value(dynamic element) }) -
- -
-

Creates a LinkedHashMap where the keys and values are computed from the -iterable.

-

For each element of the iterable this constructor computes a key/value -pair, by applying key and value respectively.

-

The keys of the key/value pairs do not need to be unique. The last -occurrence of a key will simply overwrite any previous value.

-

If no values are specified for key and value the default is the -identity function.

-
- -
-

Implementation

-
factory LinkedHashMap.fromIterable(Iterable iterable,
-    {K Function(dynamic element)? key, V Function(dynamic element)? value}) {
-  LinkedHashMap<K, V> map = LinkedHashMap<K, V>();
-  MapBase._fillMapWithMappedIterable(map, iterable, key, value);
-  return map;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromIterables.html b/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromIterables.html deleted file mode 100644 index b99a9b7f..00000000 --- a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.fromIterables.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - LinkedHashMap.fromIterables constructor - LinkedHashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashMap.fromIterables
- -
- -
- - - -
-

LinkedHashMap<K, V>.fromIterables constructor

- -
- - LinkedHashMap<K, V>.fromIterables(Iterable<K> keys, Iterable<V> values) -
- -
-

Creates a LinkedHashMap associating the given keys to values.

-

This constructor iterates over keys and values and maps each element of -keys to the corresponding element of values.

-

If keys contains the same object multiple times, the last occurrence -overwrites the previous value.

-

It is an error if the two Iterables don't have the same length.

-
- -
-

Implementation

-
factory LinkedHashMap.fromIterables(Iterable<K> keys, Iterable<V> values) {
-  LinkedHashMap<K, V> map = LinkedHashMap<K, V>();
-  MapBase._fillMapWithIterables(map, keys, values);
-  return map;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.html b/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.html deleted file mode 100644 index 10c21c8e..00000000 --- a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - LinkedHashMap constructor - LinkedHashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashMap
- -
- -
- - - -
-

LinkedHashMap<K, V> constructor

- -
- - LinkedHashMap<K, V>({bool equals(K K), int hashCode(K), bool isValidKey(dynamic) }) -
- -
-

Creates an insertion-ordered hash-table based Map.

-

If equals is provided, it is used to compare the keys in the table with -new keys. If equals is omitted, the key's own Object.== is used -instead.

-

Similar, if hashCode is provided, it is used to produce a hash value -for keys in order to place them in the hash table. If it is omitted, the -key's own Object.hashCode is used.

-

If using methods like operator [], remove and containsKey together -with a custom equality and hashcode, an extra isValidKey function -can be supplied. This function is called before calling equals or -hashCode with an argument that may not be a K instance, and if the -call returns false, the key is assumed to not be in the set. -The isValidKey function defaults to just testing if the object is a -K instance.

-

Example:

-
new LinkedHashMap<int,int>(equals: (int a, int b) => (b - a) % 5 == 0,
-                           hashCode: (int e) => e % 5)
-
-

This example map does not need an isValidKey function to be passed. -The default function accepts only int values, which can safely be -passed to both the equals and hashCode functions.

-

If neither equals, hashCode, nor isValidKey is provided, -the default isValidKey instead accepts all keys. -The default equality and hashcode operations are assumed to work on all -objects.

-

Likewise, if equals is identical, hashCode is identityHashCode -and isValidKey is omitted, the resulting map is identity based, -and the isValidKey defaults to accepting all keys. -Such a map can be created directly using LinkedHashMap.identity.

-

The used equals and hashCode method should always be consistent, -so that if equals(a, b) then hashCode(a) == hashCode(b). The hash -of an object, or what it compares equal to, should not change while the -object is in the table. If it does change, the result is unpredictable.

-

If you supply one of equals and hashCode, -you should generally also to supply the other.

-
- -
-

Implementation

-
external factory LinkedHashMap(
-    {bool Function(K, K)? equals,
-    int Function(K)? hashCode,
-    bool Function(dynamic)? isValidKey});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.identity.html b/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.identity.html deleted file mode 100644 index 1c8b1fb3..00000000 --- a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.identity.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - LinkedHashMap.identity constructor - LinkedHashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashMap.identity
- -
- -
- - - -
-

LinkedHashMap<K, V>.identity constructor

- -
- - LinkedHashMap<K, V>.identity() -
- -
-

Creates an insertion-ordered identity-based map.

-

Effectively a shorthand for:

-
new LinkedHashMap<K, V>(equals: identical,
-                        hashCode: identityHashCode)
-
-
- -
-

Implementation

-
external factory LinkedHashMap.identity();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.of.html b/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.of.html deleted file mode 100644 index 49f83e20..00000000 --- a/doc/api/dart-collection/LinkedHashMap/LinkedHashMap.of.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - LinkedHashMap.of constructor - LinkedHashMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashMap.of
- -
- -
- - - -
-

LinkedHashMap<K, V>.of constructor

- -
- - LinkedHashMap<K, V>.of(Map<K, V> other) -
- -
-

Creates a LinkedHashMap that contains all key value pairs of other.

-
- -
-

Implementation

-
factory LinkedHashMap.of(Map<K, V> other) =>
-    LinkedHashMap<K, V>()..addAll(other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashSet-class.html b/doc/api/dart-collection/LinkedHashSet-class.html deleted file mode 100644 index a8270b4a..00000000 --- a/doc/api/dart-collection/LinkedHashSet-class.html +++ /dev/null @@ -1,711 +0,0 @@ - - - - - - - - LinkedHashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashSet
- -
- -
- - - -
-

LinkedHashSet<E> class

- -
-

A LinkedHashSet is a hash-table based Set implementation.

-

The LinkedHashSet also keep track of the order that elements were inserted -in, and iteration happens in first-to-last insertion order.

-

The elements of a LinkedHashSet must have consistent Object.== -and Object.hashCode implementations. This means that the == operator -must define a stable equivalence relation on the elements (reflexive, -symmetric, transitive, and consistent over time), and that hashCode -must be the same for objects that are considered equal by ==.

-

The set allows null as an element.

-

Iteration of elements is done in element insertion order. -An element that was added after another will occur later in the iteration. -Adding an element that is already in the set -does not change its position in the iteration order, -but removing an element and adding it again, -will make it the last element of an iteration.

-

Most simple operations on HashSet are done in (potentially amortized) -constant time: add, contains, remove, and length, provided the hash -codes of objects are well distributed..

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- LinkedHashSet({bool equals(E E), int hashCode(E), bool isValidKey(dynamic) }) -
-
- Create an insertion-ordered hash set using the provided -equals and hashCode. [...] -
factory
-
-
- LinkedHashSet.from(Iterable elements) -
-
- Create a linked hash set containing all elements. [...] -
factory
-
-
- LinkedHashSet.identity() -
-
- Creates an insertion-ordered identity-based set. [...] -
factory
-
-
- LinkedHashSet.of(Iterable<E> elements) -
-
- Create a linked hash set from elements. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- iterator - Iterator<E> -
-
- Provides an iterator that iterates over the elements in insertion order. -
read-only, override
-
-
- first - → E -
-
- Returns the first element. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, inherited
-
-
- length - int -
-
- Returns the number of elements in the iterable. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- forEach(void action(E element)) - → void - -
-
- Executes a function on each element of the set. [...] -
override
-
-
- add(E value) - bool - -
-
- Adds value to the set. [...] -
inherited
-
-
- addAll(Iterable<E> elements) - → void - -
-
- Adds all elements to this Set. [...] -
inherited
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- cast<R>() - Set<R> - -
-
- Provides a view of this set as a set of R instances. [...] -
inherited
-
-
- clear() - → void - -
-
- Removes all elements in the set. -
inherited
-
-
- contains(Object value) - bool - -
-
- Returns true if value is in the set. -
inherited
-
-
- containsAll(Iterable<Object> other) - bool - -
-
- Returns whether this Set contains all the elements of other. -
inherited
-
-
- difference(Set<Object> other) - Set<E> - -
-
- Returns a new set with the elements of this that are not in other. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- intersection(Set<Object> other) - Set<E> - -
-
- Returns a new set which is the intersection between this set and other. [...] -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- lookup(Object object) - → E - -
-
- If an object equal to object is in the set, return it. [...] -
inherited
-
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- remove(Object value) - bool - -
-
- Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set. -
inherited
-
-
- removeAll(Iterable<Object> elements) - → void - -
-
- Removes each element of elements from this set. -
inherited
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that satisfy test. -
inherited
-
-
- retainAll(Iterable<Object> elements) - → void - -
-
- Removes all elements of this set that are not elements in elements. [...] -
inherited
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that fail to satisfy test. -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- union(Set<E> other) - Set<E> - -
-
- Returns a new set which contains all the elements of this set and other. [...] -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.from.html b/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.from.html deleted file mode 100644 index e3e8cd43..00000000 --- a/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.from.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - LinkedHashSet.from constructor - LinkedHashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashSet.from
- -
- -
- - - -
-

LinkedHashSet<E>.from constructor

- -
- - LinkedHashSet<E>.from(Iterable elements) -
- -
-

Create a linked hash set containing all elements.

-

Creates a linked hash set as by new LinkedHashSet<E>() and adds each -element of elements to this set in the order they are iterated.

-

All the elements should be instances of E. -The elements iterable itself may have any element type, -so this constructor can be used to down-cast a Set, for example as:

-
Set<SuperType> superSet = ...;
-Iterable<SuperType> tmp = superSet.where((e) => e is SubType);
-Set<SubType> subSet = new LinkedHashSet<SubType>.from(tmp);
-
-
- -
-

Implementation

-
factory LinkedHashSet.from(Iterable<dynamic> elements) {
-  LinkedHashSet<E> result = LinkedHashSet<E>();
-  for (final element in elements) {
-    result.add(element as E);
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.html b/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.html deleted file mode 100644 index 26c396af..00000000 --- a/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - LinkedHashSet constructor - LinkedHashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashSet
- -
- -
- - - -
-

LinkedHashSet<E> constructor

- -
- - LinkedHashSet<E>({bool equals(E E), int hashCode(E), bool isValidKey(dynamic) }) -
- -
-

Create an insertion-ordered hash set using the provided -equals and hashCode.

-

The provided equals must define a stable equivalence relation, and -hashCode must be consistent with equals. If the equals or hashCode -methods won't work on all objects, but only on some instances of E, the -isValidKey predicate can be used to restrict the keys that the functions -are applied to. -Any key for which isValidKey returns false is automatically assumed -to not be in the set when asking contains.

-

If equals or hashCode are omitted, the set uses -the elements' intrinsic Object.== and Object.hashCode, -and isValidKey is ignored since these operations are assumed -to work on all objects.

-

If you supply one of equals and hashCode, -you should generally also to supply the other.

-

If the supplied equals or hashCode functions won't work on all E -objects, and the map will be used in a setting where a non-E object -is passed to, e.g., contains, then the isValidKey function should -also be supplied.

-

If isValidKey is omitted, it defaults to testing if the object is an -E instance. That means that:

-
new LinkedHashSet<int>(equals: (int e1, int e2) => (e1 - e2) % 5 == 0,
-                       hashCode: (int e) => e % 5)
-
-

does not need an isValidKey argument, because it defaults to only -accepting int values which are accepted by both equals and hashCode.

-

If neither equals, hashCode, nor isValidKey is provided, -the default isValidKey instead accepts all values. -The default equality and hashcode operations are assumed to work on all -objects.

-

Likewise, if equals is identical, hashCode is identityHashCode -and isValidKey is omitted, the resulting set is identity based, -and the isValidKey defaults to accepting all keys. -Such a map can be created directly using LinkedHashSet.identity.

-
- -
-

Implementation

-
external factory LinkedHashSet(
-    {bool Function(E, E)? equals,
-    int Function(E)? hashCode,
-    bool Function(dynamic)? isValidKey});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.identity.html b/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.identity.html deleted file mode 100644 index 74ffe04f..00000000 --- a/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.identity.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - LinkedHashSet.identity constructor - LinkedHashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashSet.identity
- -
- -
- - - -
-

LinkedHashSet<E>.identity constructor

- -
- - LinkedHashSet<E>.identity() -
- -
-

Creates an insertion-ordered identity-based set.

-

Effectively a shorthand for:

-
new LinkedHashSet<E>(equals: identical,
-                     hashCode: identityHashCode)
-
-
- -
-

Implementation

-
external factory LinkedHashSet.identity();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.of.html b/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.of.html deleted file mode 100644 index 65ae8911..00000000 --- a/doc/api/dart-collection/LinkedHashSet/LinkedHashSet.of.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - LinkedHashSet.of constructor - LinkedHashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedHashSet.of
- -
- -
- - - -
-

LinkedHashSet<E>.of constructor

- -
- - LinkedHashSet<E>.of(Iterable<E> elements) -
- -
-

Create a linked hash set from elements.

-

Creates a linked hash set as by new LinkedHashSet<E>() and adds each -element of elements to this set in the order they are iterated.

-
- -
-

Implementation

-
factory LinkedHashSet.of(Iterable<E> elements) =>
-    LinkedHashSet<E>()..addAll(elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashSet/forEach.html b/doc/api/dart-collection/LinkedHashSet/forEach.html deleted file mode 100644 index a3ed82a4..00000000 --- a/doc/api/dart-collection/LinkedHashSet/forEach.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - forEach method - LinkedHashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void action(E element)) -
override
-
-
-

Executes a function on each element of the set.

-

The elements are iterated in insertion order.

-
- -
-

Implementation

-
void forEach(void action(E element));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashSet/iterator.html b/doc/api/dart-collection/LinkedHashSet/iterator.html deleted file mode 100644 index 618439c0..00000000 --- a/doc/api/dart-collection/LinkedHashSet/iterator.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - iterator property - LinkedHashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator -
override
-
- -
-

Provides an iterator that iterates over the elements in insertion order.

-
-
-

Implementation

-
Iterator<E> get iterator;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedHashSet/length.html b/doc/api/dart-collection/LinkedHashSet/length.html deleted file mode 100644 index 3e9cdc81..00000000 --- a/doc/api/dart-collection/LinkedHashSet/length.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - length property - LinkedHashSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
inherited
-
- -
-

Returns the number of elements in the iterable.

-

This is an efficient operation that doesn't require iterating through -the elements.

-
-
-

Implementation

-
int get length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList-class.html b/doc/api/dart-collection/LinkedList-class.html deleted file mode 100644 index 19f224ce..00000000 --- a/doc/api/dart-collection/LinkedList-class.html +++ /dev/null @@ -1,602 +0,0 @@ - - - - - - - - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedList
- -
- -
- - - -
-

LinkedList<E extends LinkedListEntry<E>> class

- -
-

A specialized double-linked list of elements that extends LinkedListEntry.

-

This is not a generic data structure. It only accepts elements that extend -the LinkedListEntry class. See the Queue implementations for generic -collections that allow constant time adding and removing at the ends.

-

This is not a List implementation. Despite its name, this class does not -implement the List interface. It does not allow constant time lookup by -index.

-

Because the elements themselves contain the links of this linked list, -each element can be in only one list at a time. To add an element to another -list, it must first be removed from its current list (if any).

-

In return, each element knows its own place in the linked list, as well as -which list it is in. This allows constant time -LinkedListEntry.insertAfter, LinkedListEntry.insertBefore and -LinkedListEntry.unlink operations when all you have is the element.

-

A LinkedList also allows constant time adding and removing at either end, -and a constant time length getter.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- LinkedList() -
-
- Construct a new empty linked list. -
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only, override
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, override
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, override
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, override
-
-
- length - int -
-
- Returns the number of elements in this. [...] -
read-only, override
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E entry) - → void - -
-
- Add entry to the end of the linked list. - -
-
- addAll(Iterable<E> entries) - → void - -
-
- Add entries to the end of the linked list. - -
-
- addFirst(E entry) - → void - -
-
- Add entry to the beginning of the linked list. - -
-
- clear() - → void - -
-
- Remove all elements from this linked list. - -
-
- forEach(void action(E entry)) - → void - -
-
- Call action with each entry in this linked list. [...] -
override
-
-
- remove(E entry) - bool - -
-
- Remove entry from the linked list. [...] - -
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- cast<R>() - Iterable<R> - -
-
- Provides a view of this iterable as an iterable of R instances. [...] -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of (some of) the elements of this. [...] -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/LinkedList.html b/doc/api/dart-collection/LinkedList/LinkedList.html deleted file mode 100644 index 0706a49f..00000000 --- a/doc/api/dart-collection/LinkedList/LinkedList.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - LinkedList constructor - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedList
- -
- -
- - - -
-

LinkedList<E extends LinkedListEntry<E>> constructor

- -
- - LinkedList<E extends LinkedListEntry<E>>() -
- -
-

Construct a new empty linked list.

-
- -
-

Implementation

-
LinkedList();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/add.html b/doc/api/dart-collection/LinkedList/add.html deleted file mode 100644 index 0ab6e6e8..00000000 --- a/doc/api/dart-collection/LinkedList/add.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - add method - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(E entry) - -
-
-

Add entry to the end of the linked list.

-
- -
-

Implementation

-
void add(E entry) {
-  _insertBefore(_first, entry, updateFirst: false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/addAll.html b/doc/api/dart-collection/LinkedList/addAll.html deleted file mode 100644 index 57245d91..00000000 --- a/doc/api/dart-collection/LinkedList/addAll.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - addAll method - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> entries) - -
-
-

Add entries to the end of the linked list.

-
- -
-

Implementation

-
void addAll(Iterable<E> entries) {
-  entries.forEach(add);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/addFirst.html b/doc/api/dart-collection/LinkedList/addFirst.html deleted file mode 100644 index d4b0d243..00000000 --- a/doc/api/dart-collection/LinkedList/addFirst.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - addFirst method - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addFirst
- -
- -
- - - -
-

addFirst method

- -
- void - addFirst -(E entry) - -
-
-

Add entry to the beginning of the linked list.

-
- -
-

Implementation

-
void addFirst(E entry) {
-  _insertBefore(_first, entry, updateFirst: true);
-  _first = entry;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/clear.html b/doc/api/dart-collection/LinkedList/clear.html deleted file mode 100644 index b9d4f1b7..00000000 --- a/doc/api/dart-collection/LinkedList/clear.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - clear method - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() - -
-
-

Remove all elements from this linked list.

-
- -
-

Implementation

-
void clear() {
-  _modificationCount++;
-  if (isEmpty) return;
-
-  E next = _first!;
-  do {
-    E entry = next;
-    next = entry._next!;
-    entry._next = entry._previous = entry._list = null;
-  } while (!identical(next, _first));
-
-  _first = null;
-  _length = 0;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/first.html b/doc/api/dart-collection/LinkedList/first.html deleted file mode 100644 index 8da6dc36..00000000 --- a/doc/api/dart-collection/LinkedList/first.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - first property - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first -
override
-
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  if (isEmpty) {
-    throw StateError('No such element');
-  }
-  return _first!;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/forEach.html b/doc/api/dart-collection/LinkedList/forEach.html deleted file mode 100644 index aa841080..00000000 --- a/doc/api/dart-collection/LinkedList/forEach.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - forEach method - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void action(E entry)) -
override
-
-
-

Call action with each entry in this linked list.

-

It's an error if action modifies the linked list.

-
- -
-

Implementation

-
void forEach(void action(E entry)) {
-  int modificationCount = _modificationCount;
-  if (isEmpty) return;
-
-  E current = _first!;
-  do {
-    action(current);
-    if (modificationCount != _modificationCount) {
-      throw ConcurrentModificationError(this);
-    }
-    current = current._next!;
-  } while (!identical(current, _first));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/isEmpty.html b/doc/api/dart-collection/LinkedList/isEmpty.html deleted file mode 100644 index 02bbfe84..00000000 --- a/doc/api/dart-collection/LinkedList/isEmpty.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - isEmpty property - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there are no elements in this collection.

-

May be computed by checking if iterator.moveNext() returns false.

-
-
-

Implementation

-
bool get isEmpty => _length == 0;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/iterator.html b/doc/api/dart-collection/LinkedList/iterator.html deleted file mode 100644 index b80a2946..00000000 --- a/doc/api/dart-collection/LinkedList/iterator.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - iterator property - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator -
override
-
- -
-

Returns a new Iterator that allows iterating the elements of this -Iterable.

-

Iterable classes may specify the iteration order of their elements -(for example List always iterate in index order), -or they may leave it unspecified (for example a hash-based Set -may iterate in any order).

-

Each time iterator is read, it returns a new iterator, -which can be used to iterate through all the elements again. -The iterators of the same iterable can be stepped through independently, -but should return the same elements in the same order, -as long as the underlying collection isn't changed.

-

Modifying the collection may cause new iterators to produce -different elements, and may change the order of existing elements. -A List specifies its iteration order precisely, -so modifying the list changes the iteration order predictably. -A hash-based Set may change its iteration order completely -when adding a new element to the set.

-

Modifying the underlying collection after creating the new iterator -may cause an error the next time Iterator.moveNext is called -on that iterator. -Any modifiable iterable class should specify which operations will -break iteration.

-
-
-

Implementation

-
Iterator<E> get iterator => _LinkedListIterator<E>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/last.html b/doc/api/dart-collection/LinkedList/last.html deleted file mode 100644 index 0234e81b..00000000 --- a/doc/api/dart-collection/LinkedList/last.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - last property - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last -
override
-
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  if (isEmpty) {
-    throw StateError('No such element');
-  }
-  return _first!._previous!;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/length.html b/doc/api/dart-collection/LinkedList/length.html deleted file mode 100644 index acdc346d..00000000 --- a/doc/api/dart-collection/LinkedList/length.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - length property - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
override
-
- -
-

Returns the number of elements in this.

-

Counting all elements may involve iterating through all elements and can -therefore be slow. -Some iterables have a more efficient way to find the number of elements.

-
-
-

Implementation

-
int get length => _length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/remove.html b/doc/api/dart-collection/LinkedList/remove.html deleted file mode 100644 index 33b9b427..00000000 --- a/doc/api/dart-collection/LinkedList/remove.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - remove method - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(E entry) - -
-
-

Remove entry from the linked list.

-

Returns false and does nothing if entry is not in this linked list.

-

This is equivalent to calling entry.unlink() if the entry is in this -list.

-
- -
-

Implementation

-
bool remove(E entry) {
-  if (entry._list != this) return false;
-  _unlink(entry); // Unlink will decrement length.
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedList/single.html b/doc/api/dart-collection/LinkedList/single.html deleted file mode 100644 index 1381e179..00000000 --- a/doc/api/dart-collection/LinkedList/single.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - single property - LinkedList class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- E - single -
override
-
- -
-

Checks that this iterable has only one element, and returns that element.

-

Throws a StateError if this is empty or has more than one element.

-
-
-

Implementation

-
E get single {
-  if (isEmpty) {
-    throw StateError('No such element');
-  }
-  if (_length > 1) {
-    throw StateError('Too many elements');
-  }
-  return _first!;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedListEntry-class.html b/doc/api/dart-collection/LinkedListEntry-class.html deleted file mode 100644 index 76529e8f..00000000 --- a/doc/api/dart-collection/LinkedListEntry-class.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - - - LinkedListEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedListEntry
- -
- -
- - - -
-

LinkedListEntry<E extends LinkedListEntry<E>> class

- -
-

An object that can be an element in a LinkedList.

-

All elements of a LinkedList must extend this class. -The class provides the internal links that link elements together -in the LinkedList, and a reference to the linked list itself -that an element is currently part of.

-

An entry can be in at most one linked list at a time. -While an entry is in a linked list, the list property points to that -linked list, and otherwise the list property is null.

-

When created, an entry is not in any linked list.

-
- - -
-

Constructors

- -
-
- LinkedListEntry() -
-
- -
-
-
- -
-

Properties

- -
-
- list - LinkedList<E> -
-
- Get the linked list containing this element. [...] -
read-only
-
-
- next - → E -
-
- Return the successor of this element in its linked list. [...] -
read-only
-
-
- previous - → E -
-
- Return the predecessor of this element in its linked list. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- insertAfter(E entry) - → void - -
-
- Insert an element after this element in this element's linked list. [...] - -
-
- insertBefore(E entry) - → void - -
-
- Insert an element before this element in this element's linked list. [...] - -
- -
- Unlink the element from its linked list. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedListEntry/LinkedListEntry.html b/doc/api/dart-collection/LinkedListEntry/LinkedListEntry.html deleted file mode 100644 index 91583c41..00000000 --- a/doc/api/dart-collection/LinkedListEntry/LinkedListEntry.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - LinkedListEntry constructor - LinkedListEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
LinkedListEntry
- -
- -
- - - -
-

LinkedListEntry<E extends LinkedListEntry<E>> constructor

- -
- - LinkedListEntry<E extends LinkedListEntry<E>>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedListEntry/insertAfter.html b/doc/api/dart-collection/LinkedListEntry/insertAfter.html deleted file mode 100644 index c46d2f11..00000000 --- a/doc/api/dart-collection/LinkedListEntry/insertAfter.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - insertAfter method - LinkedListEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
insertAfter
- -
- -
- - - -
-

insertAfter method

- -
- void - insertAfter -(E entry) - -
-
-

Insert an element after this element in this element's linked list.

-

This entry must be in a linked list when this method is called. -The entry must not be in a linked list.

-
- -
-

Implementation

-
void insertAfter(E entry) {
-  _list!._insertBefore(_next, entry, updateFirst: false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedListEntry/insertBefore.html b/doc/api/dart-collection/LinkedListEntry/insertBefore.html deleted file mode 100644 index f8c00180..00000000 --- a/doc/api/dart-collection/LinkedListEntry/insertBefore.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - insertBefore method - LinkedListEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
insertBefore
- -
- -
- - - -
-

insertBefore method

- -
- void - insertBefore -(E entry) - -
-
-

Insert an element before this element in this element's linked list.

-

This entry must be in a linked list when this method is called. -The entry must not be in a linked list.

-
- -
-

Implementation

-
void insertBefore(E entry) {
-  _list!._insertBefore(this as E, entry, updateFirst: true);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedListEntry/list.html b/doc/api/dart-collection/LinkedListEntry/list.html deleted file mode 100644 index 848ae6e6..00000000 --- a/doc/api/dart-collection/LinkedListEntry/list.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - list property - LinkedListEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
list
- -
- -
- - - -
-

list property

- - -
- -
- LinkedList<E> - list - -
- -
-

Get the linked list containing this element.

-

Returns null if this entry is not currently in any list.

-
-
-

Implementation

-
LinkedList<E>? get list => _list;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedListEntry/next.html b/doc/api/dart-collection/LinkedListEntry/next.html deleted file mode 100644 index 88a04227..00000000 --- a/doc/api/dart-collection/LinkedListEntry/next.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - next property - LinkedListEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
next
- -
- -
- - - -
-

next property

- - -
- -
- E - next - -
- -
-

Return the successor of this element in its linked list.

-

Returns null if there is no successor in the linked list, or if this -entry is not currently in any list.

-
-
-

Implementation

-
E? get next {
-  if (_list == null || identical(_list!.first, _next)) return null;
-  return _next;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedListEntry/previous.html b/doc/api/dart-collection/LinkedListEntry/previous.html deleted file mode 100644 index e68dce96..00000000 --- a/doc/api/dart-collection/LinkedListEntry/previous.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - previous property - LinkedListEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
previous
- -
- -
- - - -
-

previous property

- - -
- -
- E - previous - -
- -
-

Return the predecessor of this element in its linked list.

-

Returns null if there is no predecessor in the linked list, or if this -entry is not currently in any list.

-
-
-

Implementation

-
E? get previous {
-  if (_list == null || identical(this, _list!.first)) return null;
-  return _previous;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/LinkedListEntry/unlink.html b/doc/api/dart-collection/LinkedListEntry/unlink.html deleted file mode 100644 index fd02d43c..00000000 --- a/doc/api/dart-collection/LinkedListEntry/unlink.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - unlink method - LinkedListEntry class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
unlink
- -
- -
- - - -
-

unlink method

- -
- void - unlink -() - -
-
-

Unlink the element from its linked list.

-

The entry must currently be in a linked list when this method is called.

-
- -
-

Implementation

-
void unlink() {
-  _list!._unlink(this as E);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListBase-class.html b/doc/api/dart-collection/ListBase-class.html deleted file mode 100644 index 12052d16..00000000 --- a/doc/api/dart-collection/ListBase-class.html +++ /dev/null @@ -1,865 +0,0 @@ - - - - - - - - ListBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
ListBase
- -
- -
- - - -
-

ListBase<E> class

- -
-

Abstract implementation of a list.

-

ListBase can be used as a base class for implementing the List -interface.

-

This class implements all read operations using only the length and -operator[] and members. It implements write operations using those and -add, length= and operator[]= -Classes using this base classs should implement those five operations.

-

NOTICE: For backwards compatability reasons, -there is a default implementation of add -which only works for lists with a nullable element type. -For list with a non-nullable element type, -the add method must be implemented.

-

NOTICE: Forwarding just the four length and [] read/write operations -to a normal growable List (as created by a [] literal) -will give very bad performance for add and addAll operations -of ListBase. -These operations are implemented by -increasing the length of the list by one for each add operation, -and repeatedly increasing the length of a growable list is not efficient. -To avoid this, override 'add' and 'addAll' to also forward directly -to the growable list, or, if possible, use DelegatingList from -"package:collection/collection.dart" instead of a ListMixin.

-
- -
-
- - -
Mixed in types
-
- -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- ListBase() -
-
- -
-
-
- -
-

Properties

- -
-
- first - ↔ E -
-
- Returns the first element. [...] -
read / write, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, inherited
-
-
- last - ↔ E -
-
- Returns the last element. [...] -
read / write, inherited
-
-
- length - int -
-
- The number of objects in this list. [...] -
read / write, inherited
-
-
- reversed - Iterable<E> -
-
- Returns an Iterable of the objects in this list in reverse order. -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E element) - → void - -
-
- Adds value to the end of this list, -extending the length by one. [...] -
inherited
-
-
- addAll(Iterable<E> iterable) - → void - -
-
- Appends all objects of iterable to the end of this list. [...] -
inherited
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- asMap() - Map<int, E> - -
-
- Returns an unmodifiable Map view of this. [...] -
inherited
-
-
- cast<R>() - List<R> - -
-
- Returns a view of this list as a list of R instances. [...] -
inherited
-
-
- clear() - → void - -
-
- Removes all objects from this list; -the length of the list becomes zero. [...] -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- fillRange(int start, [ int end, [ E fill ]) - → void - -
-
- Sets the objects in the range start inclusive to end exclusive -to the given fillValue. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void action(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- getRange(int start int end) - Iterable<E> - -
-
- Returns an Iterable that iterates over the objects in the range -start inclusive to end exclusive. [...] -
inherited
-
-
- indexOf(Object element, [ int start = 0 ]) - int - -
-
- Returns the first index of element in this list. [...] -
inherited
-
-
- indexWhere(bool test(E element), [ int start = 0 ]) - int - -
-
- Returns the first index in the list that satisfies the provided test. [...] -
inherited
-
-
- insert(int index, E element) - → void - -
-
- Inserts the object at position index in this list. [...] -
inherited
-
-
- insertAll(int index, Iterable<E> iterable) - → void - -
-
- Inserts all objects of iterable at position index in this list. [...] -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastIndexOf(Object element, [ int start ]) - int - -
-
- Returns the last index of element in this list. [...] -
inherited
-
-
- lastIndexWhere(bool test(E element), [ int start ]) - int - -
-
- Returns the last index in the list that satisfies the provided test. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E element)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E previousValue E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- remove(Object element) - bool - -
-
- Removes the first occurrence of value from this list. [...] -
inherited
-
-
- removeAt(int index) - → E - -
-
- Removes the object at position index from this list. [...] -
inherited
-
-
- removeLast() - → E - -
-
- Pops and returns the last object in this list. [...] -
inherited
-
-
- removeRange(int start int end) - → void - -
-
- Removes the objects in the range start inclusive to end exclusive. [...] -
inherited
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all objects from this list that satisfy test. [...] -
inherited
-
-
- replaceRange(int start, int end, Iterable<E> newContents) - → void - -
-
- Removes the objects in the range start inclusive to end exclusive -and inserts the contents of replacement in its place. [...] -
inherited
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all objects from this list that fail to satisfy test. [...] -
inherited
-
-
- setAll(int index, Iterable<E> iterable) - → void - -
-
- Overwrites objects of this with the objects of iterable, starting -at position index in this list. [...] -
inherited
-
-
- setRange(int start, int end, Iterable<E> iterable, [ int skipCount = 0 ]) - → void - -
-
- Copies the objects of iterable, skipping skipCount objects first, -into the range start, inclusive, to end, exclusive, of the list. [...] -
inherited
-
-
- shuffle([Random random ]) - → void - -
-
- Shuffles the elements of this list randomly. -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E element)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- sort([int compare(E a E b) ]) - → void - -
-
- Sorts this list according to the order specified by the compare function. [...] -
inherited
-
-
- sublist(int start, [ int end ]) - List<E> - -
-
- Returns a new list containing the elements between start and end. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E element)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator +(List<E> other) - List<E> - -
-
- Returns the concatenation of this list and other. [...] -
inherited
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator [](int index) - → E - -
-
- Returns the object at the given index in the list -or throws a RangeError if index is out of bounds. -
inherited
-
-
- operator []=(int index, E value) - → void - -
-
- Sets the value at the given index in the list to value -or throws a RangeError if index is out of bounds. -
inherited
-
-
-
- - -
-

Static Methods

-
-
- listToString(List list) - String - -
-
- Converts a List to a String. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListBase/ListBase.html b/doc/api/dart-collection/ListBase/ListBase.html deleted file mode 100644 index bf76d108..00000000 --- a/doc/api/dart-collection/ListBase/ListBase.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - ListBase constructor - ListBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
ListBase
- -
- -
- - - -
-

ListBase<E> constructor

- -
- - ListBase<E>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListBase/listToString.html b/doc/api/dart-collection/ListBase/listToString.html deleted file mode 100644 index f2567945..00000000 --- a/doc/api/dart-collection/ListBase/listToString.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - listToString method - ListBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
listToString
- -
- -
- - - -
-

listToString method

- -
- String - listToString -(List list) - -
-
-

Converts a List to a String.

-

Converts list to a string by converting each element to a string (by -calling Object.toString), joining them with ", ", and wrapping the -result in "" and "".

-

Handles circular references where converting one of the elements -to a string ends up converting list to a string again.

-
- -
-

Implementation

-
static String listToString(List list) =>
-    IterableBase.iterableToFullString(list, '[', ']');
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin-class.html b/doc/api/dart-collection/ListMixin-class.html deleted file mode 100644 index 0758f0b8..00000000 --- a/doc/api/dart-collection/ListMixin-class.html +++ /dev/null @@ -1,864 +0,0 @@ - - - - - - - - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
ListMixin
- -
- -
- - - -
-

ListMixin<E> class

- -
-

Base implementation of a List class.

-

ListMixin can be used as a mixin to make a class implement -the List interface.

-

This mixin implements all read operations using only the length and -operator[] and members. It implements write operations using those and -add, length= and operator[]=. -Classes using this mixin should implement those five operations.

-

NOTICE: For backwards compatability reasons, -there is a default implementation of add -which only works for lists with a nullable element type. -For lists with a non-nullable element type, -the add method must be implemented.

-

NOTICE: Forwarding just the four length and [] read/write operations -to a normal growable List (as created by a [] literal) -will give very bad performance for add and addAll operations -of ListMixin. -These operations are implemented by -increasing the length of the list by one for each add operation, -and repeatedly increasing the length of a growable list is not efficient. -To avoid this, override 'add' and 'addAll' to also forward directly -to the growable list, or, if possible, use DelegatingList from -"package:collection/collection.dart" instead of a ListMixin.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- ListMixin() -
-
- -
-
-
- -
-

Properties

- -
-
- first - ↔ E -
-
- Returns the first element. [...] -
read / write, override
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, override
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, override
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, override
-
-
- last - ↔ E -
-
- Returns the last element. [...] -
read / write, override
-
-
- reversed - Iterable<E> -
-
- Returns an Iterable of the objects in this list in reverse order. -
read-only, override
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- length - int -
-
- The number of objects in this list. [...] -
read / write, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E element) - → void - -
-
- Adds value to the end of this list, -extending the length by one. [...] -
override
-
-
- addAll(Iterable<E> iterable) - → void - -
-
- Appends all objects of iterable to the end of this list. [...] -
override
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
override
-
-
- asMap() - Map<int, E> - -
-
- Returns an unmodifiable Map view of this. [...] -
override
-
-
- cast<R>() - List<R> - -
-
- Returns a view of this list as a list of R instances. [...] -
override
-
-
- clear() - → void - -
-
- Removes all objects from this list; -the length of the list becomes zero. [...] -
override
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
override
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
override
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
override
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
override
-
-
- fillRange(int start, [ int end, [ E fill ]) - → void - -
-
- Sets the objects in the range start inclusive to end exclusive -to the given fillValue. [...] -
override
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
override
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
override
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
override
-
-
- forEach(void action(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
override
-
-
- getRange(int start int end) - Iterable<E> - -
-
- Returns an Iterable that iterates over the objects in the range -start inclusive to end exclusive. [...] -
override
-
-
- indexOf(Object element, [ int start = 0 ]) - int - -
-
- Returns the first index of element in this list. [...] -
override
-
-
- indexWhere(bool test(E element), [ int start = 0 ]) - int - -
-
- Returns the first index in the list that satisfies the provided test. [...] -
override
-
-
- insert(int index, E element) - → void - -
-
- Inserts the object at position index in this list. [...] -
override
-
-
- insertAll(int index, Iterable<E> iterable) - → void - -
-
- Inserts all objects of iterable at position index in this list. [...] -
override
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
override
-
-
- lastIndexOf(Object element, [ int start ]) - int - -
-
- Returns the last index of element in this list. [...] -
override
-
-
- lastIndexWhere(bool test(E element), [ int start ]) - int - -
-
- Returns the last index in the list that satisfies the provided test. [...] -
override
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
override
-
-
- map<T>(T f(E element)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
override
-
-
- reduce(E combine(E previousValue E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
override
-
-
- remove(Object element) - bool - -
-
- Removes the first occurrence of value from this list. [...] -
override
-
-
- removeAt(int index) - → E - -
-
- Removes the object at position index from this list. [...] -
override
-
-
- removeLast() - → E - -
-
- Pops and returns the last object in this list. [...] -
override
-
-
- removeRange(int start int end) - → void - -
-
- Removes the objects in the range start inclusive to end exclusive. [...] -
override
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all objects from this list that satisfy test. [...] -
override
-
-
- replaceRange(int start, int end, Iterable<E> newContents) - → void - -
-
- Removes the objects in the range start inclusive to end exclusive -and inserts the contents of replacement in its place. [...] -
override
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all objects from this list that fail to satisfy test. [...] -
override
-
-
- setAll(int index, Iterable<E> iterable) - → void - -
-
- Overwrites objects of this with the objects of iterable, starting -at position index in this list. [...] -
override
-
-
- setRange(int start, int end, Iterable<E> iterable, [ int skipCount = 0 ]) - → void - -
-
- Copies the objects of iterable, skipping skipCount objects first, -into the range start, inclusive, to end, exclusive, of the list. [...] -
override
-
-
- shuffle([Random random ]) - → void - -
-
- Shuffles the elements of this list randomly. -
override
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
override
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
override
-
-
- skipWhile(bool test(E element)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
override
-
-
- sort([int compare(E a E b) ]) - → void - -
-
- Sorts this list according to the order specified by the compare function. [...] -
override
-
-
- sublist(int start, [ int end ]) - List<E> - -
-
- Returns a new list containing the elements between start and end. [...] -
override
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
override
-
-
- takeWhile(bool test(E element)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
override
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
override
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
override
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
override
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator +(List<E> other) - List<E> - -
-
- Returns the concatenation of this list and other. [...] -
override
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator [](int index) - → E - -
-
- Returns the object at the given index in the list -or throws a RangeError if index is out of bounds. -
inherited
-
-
- operator []=(int index, E value) - → void - -
-
- Sets the value at the given index in the list to value -or throws a RangeError if index is out of bounds. -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/ListMixin.html b/doc/api/dart-collection/ListMixin/ListMixin.html deleted file mode 100644 index d2014b61..00000000 --- a/doc/api/dart-collection/ListMixin/ListMixin.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - ListMixin constructor - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
ListMixin
- -
- -
- - - -
-

ListMixin<E> constructor

- -
- - ListMixin<E>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/add.html b/doc/api/dart-collection/ListMixin/add.html deleted file mode 100644 index 2e0aeed0..00000000 --- a/doc/api/dart-collection/ListMixin/add.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - add method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(E element) -
override
-
-
-

Adds value to the end of this list, -extending the length by one.

-

Throws an UnsupportedError if the list is fixed-length.

-
- -
-

Implementation

-
void add(E element) {
-  // This implementation only works for lists which allow `null` as element.
-  this[this.length++] = element;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/addAll.html b/doc/api/dart-collection/ListMixin/addAll.html deleted file mode 100644 index 80ad099f..00000000 --- a/doc/api/dart-collection/ListMixin/addAll.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - addAll method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> iterable) -
override
-
-
-

Appends all objects of iterable to the end of this list.

-

Extends the length of the list by the number of objects in iterable. -Throws an UnsupportedError if this list is fixed-length.

-
- -
-

Implementation

-
void addAll(Iterable<E> iterable) {
-  int i = this.length;
-  for (E element in iterable) {
-    assert(this.length == i || (throw ConcurrentModificationError(this)));
-    add(element);
-    i++;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/any.html b/doc/api/dart-collection/ListMixin/any.html deleted file mode 100644 index c95d2d87..00000000 --- a/doc/api/dart-collection/ListMixin/any.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - any method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
any
- -
- -
- - - -
-

any method

- -
- bool - any -(bool test(E element)) -
override
-
-
-

Checks whether any element of this iterable satisfies test.

-

Checks every element in iteration order, and returns true if -any of them make test return true, otherwise returns false.

-
- -
-

Implementation

-
bool any(bool test(E element)) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    if (test(this[i])) return true;
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/asMap.html b/doc/api/dart-collection/ListMixin/asMap.html deleted file mode 100644 index 7c84c719..00000000 --- a/doc/api/dart-collection/ListMixin/asMap.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - asMap method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
asMap
- -
- -
- - - -
-

asMap method

- -
- Map<int, E> - asMap -() -
override
-
-
-

Returns an unmodifiable Map view of this.

-

The map uses the indices of this list as keys and the corresponding objects -as values. The Map.keys Iterable iterates the indices of this list -in numerical order.

-
List<String> words = ['fee', 'fi', 'fo', 'fum'];
-Map<int, String> map = words.asMap();
-map[0] + map[1];   // 'feefi';
-map.keys.toList(); // [0, 1, 2, 3]
-
-
- -
-

Implementation

-
Map<int, E> asMap() {
-  return ListMapView<E>(this);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/cast.html b/doc/api/dart-collection/ListMixin/cast.html deleted file mode 100644 index 965521c1..00000000 --- a/doc/api/dart-collection/ListMixin/cast.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - cast method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- List<R> - cast -<R>() -
override
-
-
-

Returns a view of this list as a list of R instances.

-

If this list contains only instances of R, all read operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

Elements added to the list (e.g., by using add or addAll) -must be instance of R to be valid arguments to the adding function, -and they must be instances of E as well to be accepted by -this list as well.

-

Typically implemented as List.castFrom<E, R>(this).

-
- -
-

Implementation

-
List<R> cast<R>() => List.castFrom<E, R>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/clear.html b/doc/api/dart-collection/ListMixin/clear.html deleted file mode 100644 index 3aa5a6ad..00000000 --- a/doc/api/dart-collection/ListMixin/clear.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - clear method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
override
-
-
-

Removes all objects from this list; -the length of the list becomes zero.

-

Throws an UnsupportedError, and retains all objects, if this -is a fixed-length list.

-
- -
-

Implementation

-
void clear() {
-  this.length = 0;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/contains.html b/doc/api/dart-collection/ListMixin/contains.html deleted file mode 100644 index 57e221a8..00000000 --- a/doc/api/dart-collection/ListMixin/contains.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - contains method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- bool - contains -(Object element) -
override
-
-
-

Returns true if the collection contains an element equal to element.

-

This operation will check each element in order for being equal to -element, unless it has a more efficient way to find an element -equal to element.

-

The equality used to determine whether element is equal to an element of -the iterable defaults to the Object.== of the element.

-

Some types of iterable may have a different equality used for its elements. -For example, a Set may have a custom equality -(see Set.identity) that its contains uses. -Likewise the Iterable returned by a Map.keys call -should use the same equality that the Map uses for keys.

-
- -
-

Implementation

-
bool contains(Object? element) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    if (this[i] == element) return true;
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/elementAt.html b/doc/api/dart-collection/ListMixin/elementAt.html deleted file mode 100644 index ffce6b64..00000000 --- a/doc/api/dart-collection/ListMixin/elementAt.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - elementAt method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
elementAt
- -
- -
- - - -
-

elementAt method

- -
- E - elementAt -(int index) -
override
-
-
-

Returns the indexth element.

-

The index must be non-negative and less than length. -Index zero represents the first element (so iterable.elementAt(0) is -equivalent to iterable.first).

-

May iterate through the elements in iteration order, ignoring the -first index elements and then returning the next. -Some iterables may have a more efficient way to find the element.

-
- -
-

Implementation

-
E elementAt(int index) => this[index];
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/every.html b/doc/api/dart-collection/ListMixin/every.html deleted file mode 100644 index e4911259..00000000 --- a/doc/api/dart-collection/ListMixin/every.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - every method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
every
- -
- -
- - - -
-

every method

- -
- bool - every -(bool test(E element)) -
override
-
-
-

Checks whether every element of this iterable satisfies test.

-

Checks every element in iteration order, and returns false if -any of them make test return false, otherwise returns true.

-
- -
-

Implementation

-
bool every(bool test(E element)) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    if (!test(this[i])) return false;
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/expand.html b/doc/api/dart-collection/ListMixin/expand.html deleted file mode 100644 index 35e6fc22..00000000 --- a/doc/api/dart-collection/ListMixin/expand.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - expand method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
expand
- -
- -
- - - -
-

expand<T> method

- -
- Iterable<T> - expand -<T>(Iterable<T> f(E element)) -
override
-
-
-

Expands each element of this Iterable into zero or more elements.

-

The resulting Iterable runs through the elements returned -by f for each element of this, in iteration order.

-

The returned Iterable is lazy, and calls f for each element -of this every time it's iterated.

-

Example:

-
var pairs = [[1, 2], [3, 4]];
-var flattened = pairs.expand((pair) => pair).toList();
-print(flattened); // => [1, 2, 3, 4];
-
-var input = [1, 2, 3];
-var duplicated = input.expand((i) => [i, i]).toList();
-print(duplicated); // => [1, 1, 2, 2, 3, 3]
-
-
- -
-

Implementation

-
Iterable<T> expand<T>(Iterable<T> f(E element)) =>
-    ExpandIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/fillRange.html b/doc/api/dart-collection/ListMixin/fillRange.html deleted file mode 100644 index ccd2ca83..00000000 --- a/doc/api/dart-collection/ListMixin/fillRange.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - fillRange method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
fillRange
- -
- -
- - - -
-

fillRange method

- -
- void - fillRange -(int start, [ int end, [ E fill ]) -
override
-
-
-

Sets the objects in the range start inclusive to end exclusive -to the given fillValue.

-

The provided range, given by start and end, must be valid. -A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

Example:

-
 List<int> list = new List(3);
-    list.fillRange(0, 2, 1);
-    print(list); //  [1, 1, null]
-
-

If the element type is not nullable, omitting fillValue or passing null -as fillValue will make the fillRange fail.

-
- -
-

Implementation

-
void fillRange(int start, int end, [E? fill]) {
-  // Hoist the case to fail eagerly if the user provides an invalid `null`
-  // value (or omits it) when E is a non-nullable type.
-  E value = fill as E;
-  RangeError.checkValidRange(start, end, this.length);
-  for (int i = start; i < end; i++) {
-    this[i] = value;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/first.html b/doc/api/dart-collection/ListMixin/first.html deleted file mode 100644 index 92e66f2a..00000000 --- a/doc/api/dart-collection/ListMixin/first.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - first property - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first -
override
-
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  if (length == 0) throw IterableElementError.noElement();
-  return this[0];
-}
-
-
- -
- -
- void - first= -(E value) -
override
-
- -
-

Updates the first position of the list to contain value.

-

Equivalent to theList[0] = value;.

-

The list must be non-empty.

-
-
-

Implementation

-
void set first(E value) {
-  if (length == 0) throw IterableElementError.noElement();
-  this[0] = value;
-}
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/firstWhere.html b/doc/api/dart-collection/ListMixin/firstWhere.html deleted file mode 100644 index 4853fd0f..00000000 --- a/doc/api/dart-collection/ListMixin/firstWhere.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - firstWhere method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstWhere
- -
- -
- - - -
-

firstWhere method

- -
- E - firstWhere -(bool test(E element), { E orElse() }) -
override
-
-
-

Returns the first element that satisfies the given predicate test.

-

Iterates through elements and returns the first to satisfy test.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E firstWhere(bool test(E element), {E Function()? orElse}) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    E element = this[i];
-    if (test(element)) return element;
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/fold.html b/doc/api/dart-collection/ListMixin/fold.html deleted file mode 100644 index 5b973aab..00000000 --- a/doc/api/dart-collection/ListMixin/fold.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - fold method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
fold
- -
- -
- - - -
-

fold<T> method

- -
- T - fold -<T>(T initialValue, T combine(T previousValue, E element)) -
override
-
-
-

Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value

-

Uses initialValue as the initial value, -then iterates through the elements and updates the value with -each element using the combine function, as if by:

-
var value = initialValue;
-for (E element in this) {
-  value = combine(value, element);
-}
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.fold(0, (prev, element) => prev + element);
-
-
- -
-

Implementation

-
T fold<T>(T initialValue, T combine(T previousValue, E element)) {
-  var value = initialValue;
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    value = combine(value, this[i]);
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/followedBy.html b/doc/api/dart-collection/ListMixin/followedBy.html deleted file mode 100644 index 94d05bca..00000000 --- a/doc/api/dart-collection/ListMixin/followedBy.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - followedBy method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
followedBy
- -
- -
- - - -
-

followedBy method

- -
- Iterable<E> - followedBy -(Iterable<E> other) -
override
-
-
-

Returns the lazy concatentation of this iterable and other.

-

The returned iterable will provide the same elements as this iterable, -and, after that, the elements of other, in the same order as in the -original iterables.

-
- -
-

Implementation

-
Iterable<E> followedBy(Iterable<E> other) =>
-    FollowedByIterable<E>.firstEfficient(this, other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/forEach.html b/doc/api/dart-collection/ListMixin/forEach.html deleted file mode 100644 index 83be955c..00000000 --- a/doc/api/dart-collection/ListMixin/forEach.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - forEach method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void action(E element)) -
override
-
-
-

Applies the function f to each element of this collection in iteration -order.

-
- -
-

Implementation

-
void forEach(void action(E element)) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    action(this[i]);
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/getRange.html b/doc/api/dart-collection/ListMixin/getRange.html deleted file mode 100644 index 6557a563..00000000 --- a/doc/api/dart-collection/ListMixin/getRange.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - getRange method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
getRange
- -
- -
- - - -
-

getRange method

- -
- Iterable<E> - getRange -(int start int end) -
override
-
-
-

Returns an Iterable that iterates over the objects in the range -start inclusive to end exclusive.

-

The provided range, given by start and end, must be valid at the time -of the call.

-

A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

The returned Iterable behaves like skip(start).take(end - start). -That is, it does not throw if this list changes size.

-
List<String> colors = ['red', 'green', 'blue', 'orange', 'pink'];
-Iterable<String> range = colors.getRange(1, 4);
-range.join(', ');  // 'green, blue, orange'
-colors.length = 3;
-range.join(', ');  // 'green, blue'
-
-
- -
-

Implementation

-
Iterable<E> getRange(int start, int end) {
-  RangeError.checkValidRange(start, end, this.length);
-  return SubListIterable<E>(this, start, end);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/indexOf.html b/doc/api/dart-collection/ListMixin/indexOf.html deleted file mode 100644 index a9758999..00000000 --- a/doc/api/dart-collection/ListMixin/indexOf.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - indexOf method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
indexOf
- -
- -
- - - -
-

indexOf method

- -
- int - indexOf -(Object element, [ int start = 0 ]) -
override
-
-
-

Returns the first index of element in this list.

-

Searches the list from index start to the end of the list. -The first time an object o is encountered so that o == element, -the index of o is returned.

-
List<String> notes = ['do', 're', 'mi', 're'];
-notes.indexOf('re');    // 1
-notes.indexOf('re', 2); // 3
-
-

Returns -1 if element is not found.

-
notes.indexOf('fa');    // -1
-
-
- -
-

Implementation

-
int indexOf(Object? element, [int start = 0]) {
-  if (start < 0) start = 0;
-  for (int i = start; i < this.length; i++) {
-    if (this[i] == element) return i;
-  }
-  return -1;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/indexWhere.html b/doc/api/dart-collection/ListMixin/indexWhere.html deleted file mode 100644 index d5c1899c..00000000 --- a/doc/api/dart-collection/ListMixin/indexWhere.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - indexWhere method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
indexWhere
- -
- -
- - - -
-

indexWhere method

- -
- int - indexWhere -(bool test(E element), [ int start = 0 ]) -
override
-
-
-

Returns the first index in the list that satisfies the provided test.

-

Searches the list from index start to the end of the list. -The first time an object o is encountered so that test(o) is true, -the index of o is returned.

-
List<String> notes = ['do', 're', 'mi', 're'];
-notes.indexWhere((note) => note.startsWith('r'));       // 1
-notes.indexWhere((note) => note.startsWith('r'), 2);    // 3
-
-

Returns -1 if element is not found.

-
notes.indexWhere((note) => note.startsWith('k'));    // -1
-
-
- -
-

Implementation

-
int indexWhere(bool test(E element), [int start = 0]) {
-  if (start < 0) start = 0;
-  for (int i = start; i < this.length; i++) {
-    if (test(this[i])) return i;
-  }
-  return -1;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/insert.html b/doc/api/dart-collection/ListMixin/insert.html deleted file mode 100644 index 6cffe570..00000000 --- a/doc/api/dart-collection/ListMixin/insert.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - insert method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
insert
- -
- -
- - - -
-

insert method

- -
- void - insert -(int index, E element) -
override
-
-
-

Inserts the object at position index in this list.

-

This increases the length of the list by one and shifts all objects -at or after the index towards the end of the list.

-

The list must be growable. -The index value must be non-negative and no greater than length.

-
- -
-

Implementation

-
void insert(int index, E element) {
-  ArgumentError.checkNotNull(index, "index");
-  var length = this.length;
-  RangeError.checkValueInInterval(index, 0, length, "index");
-  add(element);
-  if (index != length) {
-    setRange(index + 1, length + 1, this, index);
-    this[index] = element;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/insertAll.html b/doc/api/dart-collection/ListMixin/insertAll.html deleted file mode 100644 index c9da179e..00000000 --- a/doc/api/dart-collection/ListMixin/insertAll.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - insertAll method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
insertAll
- -
- -
- - - -
-

insertAll method

- -
- void - insertAll -(int index, Iterable<E> iterable) -
override
-
-
-

Inserts all objects of iterable at position index in this list.

-

This increases the length of the list by the length of iterable and -shifts all later objects towards the end of the list.

-

The list must be growable. -The index value must be non-negative and no greater than length.

-
- -
-

Implementation

-
void insertAll(int index, Iterable<E> iterable) {
-  RangeError.checkValueInInterval(index, 0, length, "index");
-  if (index == length) {
-    addAll(iterable);
-    return;
-  }
-  if (iterable is! EfficientLengthIterable || identical(iterable, this)) {
-    iterable = iterable.toList();
-  }
-  int insertionLength = iterable.length;
-  if (insertionLength == 0) {
-    return;
-  }
-  // There might be errors after the length change, in which case the list
-  // will end up being modified but the operation not complete. Unless we
-  // always go through a "toList" we can't really avoid that.
-  int oldLength = length;
-  for (int i = oldLength - insertionLength; i < oldLength; ++i) {
-    add(this[i > 0 ? i : 0]);
-  }
-  if (iterable.length != insertionLength) {
-    // If the iterable's length is linked to this list's length somehow,
-    // we can't insert one in the other.
-    this.length -= insertionLength;
-    throw ConcurrentModificationError(iterable);
-  }
-  int oldCopyStart = index + insertionLength;
-  if (oldCopyStart < oldLength) {
-    setRange(oldCopyStart, oldLength, this, index);
-  }
-  setAll(index, iterable);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/isEmpty.html b/doc/api/dart-collection/ListMixin/isEmpty.html deleted file mode 100644 index 732b3da5..00000000 --- a/doc/api/dart-collection/ListMixin/isEmpty.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - isEmpty property - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there are no elements in this collection.

-

May be computed by checking if iterator.moveNext() returns false.

-
-
-

Implementation

-
@pragma("vm:prefer-inline")
-bool get isEmpty => length == 0;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/isNotEmpty.html b/doc/api/dart-collection/ListMixin/isNotEmpty.html deleted file mode 100644 index 1d55efb0..00000000 --- a/doc/api/dart-collection/ListMixin/isNotEmpty.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - isNotEmpty property - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty -
override
-
- -
-

Returns true if there is at least one element in this collection.

-

May be computed by checking if iterator.moveNext() returns true.

-
-
-

Implementation

-
bool get isNotEmpty => !isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/iterator.html b/doc/api/dart-collection/ListMixin/iterator.html deleted file mode 100644 index 1b6b59ee..00000000 --- a/doc/api/dart-collection/ListMixin/iterator.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - iterator property - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator -
override
-
- -
-

Returns a new Iterator that allows iterating the elements of this -Iterable.

-

Iterable classes may specify the iteration order of their elements -(for example List always iterate in index order), -or they may leave it unspecified (for example a hash-based Set -may iterate in any order).

-

Each time iterator is read, it returns a new iterator, -which can be used to iterate through all the elements again. -The iterators of the same iterable can be stepped through independently, -but should return the same elements in the same order, -as long as the underlying collection isn't changed.

-

Modifying the collection may cause new iterators to produce -different elements, and may change the order of existing elements. -A List specifies its iteration order precisely, -so modifying the list changes the iteration order predictably. -A hash-based Set may change its iteration order completely -when adding a new element to the set.

-

Modifying the underlying collection after creating the new iterator -may cause an error the next time Iterator.moveNext is called -on that iterator. -Any modifiable iterable class should specify which operations will -break iteration.

-
-
-

Implementation

-
Iterator<E> get iterator => ListIterator<E>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/join.html b/doc/api/dart-collection/ListMixin/join.html deleted file mode 100644 index 84d2ac19..00000000 --- a/doc/api/dart-collection/ListMixin/join.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - join method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
join
- -
- -
- - - -
-

join method

- -
- String - join -([String separator = "" ]) -
override
-
-
-

Converts each element to a String and concatenates the strings.

-

Iterates through elements of this iterable, -converts each one to a String by calling Object.toString, -and then concatenates the strings, with the -separator string interleaved between the elements.

-
- -
-

Implementation

-
String join([String separator = ""]) {
-  if (length == 0) return "";
-  StringBuffer buffer = StringBuffer()..writeAll(this, separator);
-  return buffer.toString();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/last.html b/doc/api/dart-collection/ListMixin/last.html deleted file mode 100644 index 2de9f376..00000000 --- a/doc/api/dart-collection/ListMixin/last.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - last property - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last -
override
-
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  if (length == 0) throw IterableElementError.noElement();
-  return this[length - 1];
-}
-
-
- -
- -
- void - last= -(E value) -
override
-
- -
-

Updates the last position of the list to contain value.

-

Equivalent to theList[theList.length - 1] = value;.

-

The list must be non-empty.

-
-
-

Implementation

-
void set last(E value) {
-  if (length == 0) throw IterableElementError.noElement();
-  this[length - 1] = value;
-}
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/lastIndexOf.html b/doc/api/dart-collection/ListMixin/lastIndexOf.html deleted file mode 100644 index 64ccf3c5..00000000 --- a/doc/api/dart-collection/ListMixin/lastIndexOf.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - lastIndexOf method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastIndexOf
- -
- -
- - - -
-

lastIndexOf method

- -
- int - lastIndexOf -(Object element, [ int start ]) -
override
-
-
-

Returns the last index of element in this list.

-

Searches the list backwards from index start to 0.

-

The first time an object o is encountered so that o == element, -the index of o is returned.

-
List<String> notes = ['do', 're', 'mi', 're'];
-notes.lastIndexOf('re', 2); // 1
-
-

If start is not provided, this method searches from the end of the -list.

-
notes.lastIndexOf('re');  // 3
-
-

Returns -1 if element is not found.

-
notes.lastIndexOf('fa');  // -1
-
-
- -
-

Implementation

-
int lastIndexOf(Object? element, [int? start]) {
-  if (start == null || start >= this.length) start = this.length - 1;
-
-  // TODO(38493): The previous line should promote.
-  if (start == null) throw "!";
-
-  for (int i = start; i >= 0; i--) {
-    if (this[i] == element) return i;
-  }
-  return -1;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/lastIndexWhere.html b/doc/api/dart-collection/ListMixin/lastIndexWhere.html deleted file mode 100644 index 8067eb65..00000000 --- a/doc/api/dart-collection/ListMixin/lastIndexWhere.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - lastIndexWhere method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastIndexWhere
- -
- -
- - - -
-

lastIndexWhere method

- -
- int - lastIndexWhere -(bool test(E element), [ int start ]) -
override
-
-
-

Returns the last index in the list that satisfies the provided test.

-

Searches the list from index start to 0. -The first time an object o is encountered so that test(o) is true, -the index of o is returned. -If start is omitted, it defaults to the length of the list.

-
List<String> notes = ['do', 're', 'mi', 're'];
-notes.lastIndexWhere((note) => note.startsWith('r'));       // 3
-notes.lastIndexWhere((note) => note.startsWith('r'), 2);    // 1
-
-

Returns -1 if element is not found.

-
notes.lastIndexWhere((note) => note.startsWith('k'));    // -1
-
-
- -
-

Implementation

-
int lastIndexWhere(bool test(E element), [int? start]) {
-  if (start == null || start >= this.length) start = this.length - 1;
-
-  // TODO(38493): The previous line should promote.
-  if (start == null) throw "!";
-
-  for (int i = start; i >= 0; i--) {
-    if (test(this[i])) return i;
-  }
-  return -1;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/lastWhere.html b/doc/api/dart-collection/ListMixin/lastWhere.html deleted file mode 100644 index b6238415..00000000 --- a/doc/api/dart-collection/ListMixin/lastWhere.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - lastWhere method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastWhere
- -
- -
- - - -
-

lastWhere method

- -
- E - lastWhere -(bool test(E element), { E orElse() }) -
override
-
-
-

Returns the last element that satisfies the given predicate test.

-

An iterable that can access its elements directly may check its -elements in any order (for example a list starts by checking the -last element and then moves towards the start of the list). -The default implementation iterates elements in iteration order, -checks test(element) for each, -and finally returns that last one that matched.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E lastWhere(bool test(E element), {E Function()? orElse}) {
-  int length = this.length;
-  for (int i = length - 1; i >= 0; i--) {
-    E element = this[i];
-    if (test(element)) return element;
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/map.html b/doc/api/dart-collection/ListMixin/map.html deleted file mode 100644 index 80113567..00000000 --- a/doc/api/dart-collection/ListMixin/map.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - map method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<T> method

- -
- Iterable<T> - map -<T>(T f(E element)) -
override
-
-
-

Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order.

-

This method returns a view of the mapped elements. As long as the -returned Iterable is not iterated over, the supplied function f will -not be invoked. The transformed elements will not be cached. Iterating -multiple times over the returned Iterable will invoke the supplied -function f multiple times on the same element.

-

Methods on the returned iterable are allowed to omit calling f -on any element where the result isn't needed. -For example, elementAt may call f only once.

-
- -
-

Implementation

-
Iterable<T> map<T>(T f(E element)) => MappedListIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/operator_plus.html b/doc/api/dart-collection/ListMixin/operator_plus.html deleted file mode 100644 index d8090e6b..00000000 --- a/doc/api/dart-collection/ListMixin/operator_plus.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - operator + method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator +
- -
- -
- - - -
-

operator + method

- -
- List<E> - operator + -(List<E> other) -
override
-
-
-

Returns the concatenation of this list and other.

-

Returns a new list containing the elements of this list followed by -the elements of other.

-

The default behavior is to return a normal growable list. -Some list types may choose to return a list of the same type as themselves -(see Uint8List.+);

-
- -
-

Implementation

-
List<E> operator +(List<E> other) => [...this, ...other];
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/reduce.html b/doc/api/dart-collection/ListMixin/reduce.html deleted file mode 100644 index e9b34517..00000000 --- a/doc/api/dart-collection/ListMixin/reduce.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - reduce method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
reduce
- -
- -
- - - -
-

reduce method

- -
- E - reduce -(E combine(E previousValue E element)) -
override
-
-
-

Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function.

-

The iterable must have at least one element. -If it has only one element, that element is returned.

-

Otherwise this method starts with the first element from the iterator, -and then combines it with the remaining elements in iteration order, -as if by:

-
E value = iterable.first;
-iterable.skip(1).forEach((element) {
-  value = combine(value, element);
-});
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.reduce((value, element) => value + element);
-
-
- -
-

Implementation

-
E reduce(E combine(E previousValue, E element)) {
-  int length = this.length;
-  if (length == 0) throw IterableElementError.noElement();
-  E value = this[0];
-  for (int i = 1; i < length; i++) {
-    value = combine(value, this[i]);
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/remove.html b/doc/api/dart-collection/ListMixin/remove.html deleted file mode 100644 index b5b10e2a..00000000 --- a/doc/api/dart-collection/ListMixin/remove.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - remove method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object element) -
override
-
-
-

Removes the first occurrence of value from this list.

-

Returns true if value was in the list, false otherwise.

-
List<String> parts = ['head', 'shoulders', 'knees', 'toes'];
-parts.remove('head'); // true
-parts.join(', ');     // 'shoulders, knees, toes'
-
-

The method has no effect if value was not in the list.

-
// Note: 'head' has already been removed.
-parts.remove('head'); // false
-parts.join(', ');     // 'shoulders, knees, toes'
-
-

An UnsupportedError occurs if the list is fixed-length.

-
- -
-

Implementation

-
bool remove(Object? element) {
-  for (int i = 0; i < this.length; i++) {
-    if (this[i] == element) {
-      this._closeGap(i, i + 1);
-      return true;
-    }
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/removeAt.html b/doc/api/dart-collection/ListMixin/removeAt.html deleted file mode 100644 index f99950b6..00000000 --- a/doc/api/dart-collection/ListMixin/removeAt.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - removeAt method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeAt
- -
- -
- - - -
-

removeAt method

- -
- E - removeAt -(int index) -
override
-
-
-

Removes the object at position index from this list.

-

This method reduces the length of this by one and moves all later objects -down by one position.

-

Returns the removed object.

-

The index must be in the range 0 ≤ index < length.

-

Throws an UnsupportedError if this is a fixed-length list. In that case -the list is not modified.

-
- -
-

Implementation

-
E removeAt(int index) {
-  E result = this[index];
-  _closeGap(index, index + 1);
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/removeLast.html b/doc/api/dart-collection/ListMixin/removeLast.html deleted file mode 100644 index 520942b6..00000000 --- a/doc/api/dart-collection/ListMixin/removeLast.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - removeLast method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeLast
- -
- -
- - - -
-

removeLast method

- -
- E - removeLast -() -
override
-
-
-

Pops and returns the last object in this list.

-

The list must not be empty.

-

Throws an UnsupportedError if this is a fixed-length list.

-
- -
-

Implementation

-
E removeLast() {
-  if (length == 0) {
-    throw IterableElementError.noElement();
-  }
-  E result = this[length - 1];
-  length--;
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/removeRange.html b/doc/api/dart-collection/ListMixin/removeRange.html deleted file mode 100644 index 61abaaed..00000000 --- a/doc/api/dart-collection/ListMixin/removeRange.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - removeRange method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeRange
- -
- -
- - - -
-

removeRange method

- -
- void - removeRange -(int start int end) -
override
-
-
-

Removes the objects in the range start inclusive to end exclusive.

-

The provided range, given by start and end, must be valid. -A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

Throws an UnsupportedError if this is a fixed-length list. In that case -the list is not modified.

-
- -
-

Implementation

-
void removeRange(int start, int end) {
-  RangeError.checkValidRange(start, end, this.length);
-  if (end > start) {
-    _closeGap(start, end);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/removeWhere.html b/doc/api/dart-collection/ListMixin/removeWhere.html deleted file mode 100644 index 94d30614..00000000 --- a/doc/api/dart-collection/ListMixin/removeWhere.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - removeWhere method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(E element)) -
override
-
-
-

Removes all objects from this list that satisfy test.

-

An object o satisfies test if test(o) is true.

-
List<String> numbers = ['one', 'two', 'three', 'four'];
-numbers.removeWhere((item) => item.length == 3);
-numbers.join(', '); // 'three, four'
-
-

Throws an UnsupportedError if this is a fixed-length list.

-
- -
-

Implementation

-
void removeWhere(bool test(E element)) {
-  _filter(test, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/replaceRange.html b/doc/api/dart-collection/ListMixin/replaceRange.html deleted file mode 100644 index 8c4e2795..00000000 --- a/doc/api/dart-collection/ListMixin/replaceRange.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - - replaceRange method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
replaceRange
- -
- -
- - - -
-

replaceRange method

- -
- void - replaceRange -(int start, int end, Iterable<E> newContents) -
override
-
-
-

Removes the objects in the range start inclusive to end exclusive -and inserts the contents of replacement in its place.

-
List<int> list = [1, 2, 3, 4, 5];
-list.replaceRange(1, 4, [6, 7]);
-list.join(', '); // '1, 6, 7, 5'
-
-

The provided range, given by start and end, must be valid. -A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

This method does not work on fixed-length lists, even when replacement -has the same number of elements as the replaced range. In that case use -setRange instead.

-
- -
-

Implementation

-
void replaceRange(int start, int end, Iterable<E> newContents) {
-  RangeError.checkValidRange(start, end, this.length);
-  if (start == this.length) {
-    addAll(newContents);
-    return;
-  }
-  if (newContents is! EfficientLengthIterable) {
-    newContents = newContents.toList();
-  }
-  int removeLength = end - start;
-  int insertLength = newContents.length;
-  if (removeLength >= insertLength) {
-    int insertEnd = start + insertLength;
-    this.setRange(start, insertEnd, newContents);
-    if (removeLength > insertLength) {
-      _closeGap(insertEnd, end);
-    }
-  } else if (end == this.length) {
-    int i = start;
-    for (E element in newContents) {
-      if (i < end) {
-        this[i] = element;
-      } else {
-        add(element);
-      }
-      i++;
-    }
-  } else {
-    int delta = insertLength - removeLength;
-    int oldLength = this.length;
-    int insertEnd = start + insertLength; // aka. end + delta.
-    for (int i = oldLength - delta; i < oldLength; ++i) {
-      add(this[i > 0 ? i : 0]);
-    }
-    if (insertEnd < oldLength) {
-      this.setRange(insertEnd, oldLength, this, end);
-    }
-    this.setRange(start, insertEnd, newContents);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/retainWhere.html b/doc/api/dart-collection/ListMixin/retainWhere.html deleted file mode 100644 index 58521aba..00000000 --- a/doc/api/dart-collection/ListMixin/retainWhere.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - retainWhere method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainWhere
- -
- -
- - - -
-

retainWhere method

- -
- void - retainWhere -(bool test(E element)) -
override
-
-
-

Removes all objects from this list that fail to satisfy test.

-

An object o satisfies test if test(o) is true.

-
List<String> numbers = ['one', 'two', 'three', 'four'];
-numbers.retainWhere((item) => item.length == 3);
-numbers.join(', '); // 'one, two'
-
-

Throws an UnsupportedError if this is a fixed-length list.

-
- -
-

Implementation

-
void retainWhere(bool test(E element)) {
-  _filter(test, true);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/reversed.html b/doc/api/dart-collection/ListMixin/reversed.html deleted file mode 100644 index be2ad40b..00000000 --- a/doc/api/dart-collection/ListMixin/reversed.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - reversed property - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
reversed
- -
- -
- - - -
-

reversed property

- - -
- -
- Iterable<E> - reversed -
override
-
- -
-

Returns an Iterable of the objects in this list in reverse order.

-
-
-

Implementation

-
Iterable<E> get reversed => ReversedListIterable<E>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/setAll.html b/doc/api/dart-collection/ListMixin/setAll.html deleted file mode 100644 index 1e4316e3..00000000 --- a/doc/api/dart-collection/ListMixin/setAll.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - setAll method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
setAll
- -
- -
- - - -
-

setAll method

- -
- void - setAll -(int index, Iterable<E> iterable) -
override
-
-
-

Overwrites objects of this with the objects of iterable, starting -at position index in this list.

-
List<String> list = ['a', 'b', 'c'];
-list.setAll(1, ['bee', 'sea']);
-list.join(', '); // 'a, bee, sea'
-
-

This operation does not increase the length of this.

-

The index must be non-negative and no greater than length.

-

The iterable must not have more elements than what can fit from index -to length.

-

If iterable is based on this list, its values may change /during/ the -setAll operation.

-
- -
-

Implementation

-
void setAll(int index, Iterable<E> iterable) {
-  if (iterable is List) {
-    setRange(index, index + iterable.length, iterable);
-  } else {
-    for (E element in iterable) {
-      this[index++] = element;
-    }
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/setRange.html b/doc/api/dart-collection/ListMixin/setRange.html deleted file mode 100644 index 55b58a1c..00000000 --- a/doc/api/dart-collection/ListMixin/setRange.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - setRange method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
setRange
- -
- -
- - - -
-

setRange method

- -
- void - setRange -(int start, int end, Iterable<E> iterable, [ int skipCount = 0 ]) -
override
-
-
-

Copies the objects of iterable, skipping skipCount objects first, -into the range start, inclusive, to end, exclusive, of the list.

-
List<int> list1 = [1, 2, 3, 4];
-List<int> list2 = [5, 6, 7, 8, 9];
-// Copies the 4th and 5th items in list2 as the 2nd and 3rd items
-// of list1.
-list1.setRange(1, 3, list2, 3);
-list1.join(', '); // '1, 8, 9, 4'
-
-

The provided range, given by start and end, must be valid. -A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

The iterable must have enough objects to fill the range from start -to end after skipping skipCount objects.

-

If iterable is this list, the operation copies the elements -originally in the range from skipCount to skipCount + (end - start) to -the range start to end, even if the two ranges overlap.

-

If iterable depends on this list in some other way, no guarantees are -made.

-
- -
-

Implementation

-
void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
-  RangeError.checkValidRange(start, end, this.length);
-  int length = end - start;
-  if (length == 0) return;
-  RangeError.checkNotNegative(skipCount, "skipCount");
-
-  List<E> otherList;
-  int otherStart;
-  // TODO(floitsch): Make this accept more.
-  if (iterable is List<E>) {
-    otherList = iterable;
-    otherStart = skipCount;
-  } else {
-    otherList = iterable.skip(skipCount).toList(growable: false);
-    otherStart = 0;
-  }
-  if (otherStart + length > otherList.length) {
-    throw IterableElementError.tooFew();
-  }
-  if (otherStart < start) {
-    // Copy backwards to ensure correct copy if [from] is this.
-    for (int i = length - 1; i >= 0; i--) {
-      this[start + i] = otherList[otherStart + i];
-    }
-  } else {
-    for (int i = 0; i < length; i++) {
-      this[start + i] = otherList[otherStart + i];
-    }
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/shuffle.html b/doc/api/dart-collection/ListMixin/shuffle.html deleted file mode 100644 index 0b226a9e..00000000 --- a/doc/api/dart-collection/ListMixin/shuffle.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - shuffle method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
shuffle
- -
- -
- - - -
-

shuffle method

- -
- void - shuffle -([Random random ]) -
override
-
-
-

Shuffles the elements of this list randomly.

-
- -
-

Implementation

-
void shuffle([Random? random]) {
-  random ??= Random();
-  if (random == null) throw "!"; // TODO(38493): The `??=` should promote.
-
-  int length = this.length;
-  while (length > 1) {
-    int pos = random.nextInt(length);
-    length -= 1;
-    var tmp = this[length];
-    this[length] = this[pos];
-    this[pos] = tmp;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/single.html b/doc/api/dart-collection/ListMixin/single.html deleted file mode 100644 index 0615a2dd..00000000 --- a/doc/api/dart-collection/ListMixin/single.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - single property - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- E - single -
override
-
- -
-

Checks that this iterable has only one element, and returns that element.

-

Throws a StateError if this is empty or has more than one element.

-
-
-

Implementation

-
E get single {
-  if (length == 0) throw IterableElementError.noElement();
-  if (length > 1) throw IterableElementError.tooMany();
-  return this[0];
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/singleWhere.html b/doc/api/dart-collection/ListMixin/singleWhere.html deleted file mode 100644 index ca2a8ecd..00000000 --- a/doc/api/dart-collection/ListMixin/singleWhere.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - singleWhere method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
singleWhere
- -
- -
- - - -
-

singleWhere method

- -
- E - singleWhere -(bool test(E element), { E orElse() }) -
override
-
-
-

Returns the single element that satisfies test.

-

Checks elements to see if test(element) returns true. -If exactly one element satisfies test, that element is returned. -If more than one matching element is found, throws StateError. -If no matching element is found, returns the result of orElse. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E singleWhere(bool test(E element), {E Function()? orElse}) {
-  int length = this.length;
-  late E match;
-  bool matchFound = false;
-  for (int i = 0; i < length; i++) {
-    E element = this[i];
-    if (test(element)) {
-      if (matchFound) {
-        throw IterableElementError.tooMany();
-      }
-      matchFound = true;
-      match = element;
-    }
-    if (length != this.length) {
-      throw ConcurrentModificationError(this);
-    }
-  }
-  if (matchFound) return match;
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/skip.html b/doc/api/dart-collection/ListMixin/skip.html deleted file mode 100644 index b5569230..00000000 --- a/doc/api/dart-collection/ListMixin/skip.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - skip method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
skip
- -
- -
- - - -
-

skip method

- -
- Iterable<E> - skip -(int count) -
override
-
-
-

Returns an Iterable that provides all but the first count elements.

-

When the returned iterable is iterated, it starts iterating over this, -first skipping past the initial count elements. -If this has fewer than count elements, then the resulting Iterable is -empty. -After that, the remaining elements are iterated in the same order as -in this iterable.

-

Some iterables may be able to find later elements without first iterating -through earlier elements, for example when iterating a List. -Such iterables are allowed to ignore the initial skipped elements.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> skip(int count) => SubListIterable<E>(this, count, null);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/skipWhile.html b/doc/api/dart-collection/ListMixin/skipWhile.html deleted file mode 100644 index 16a5ad33..00000000 --- a/doc/api/dart-collection/ListMixin/skipWhile.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - skipWhile method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
skipWhile
- -
- -
- - - -
-

skipWhile method

- -
- Iterable<E> - skipWhile -(bool test(E element)) -
override
-
-
-

Returns an Iterable that skips leading elements while test is satisfied.

-

The filtering happens lazily. Every new Iterator of the returned -iterable iterates over all elements of this.

-

The returned iterable provides elements by iterating this iterable, -but skipping over all initial elements where test(element) returns -true. If all elements satisfy test the resulting iterable is empty, -otherwise it iterates the remaining elements in their original order, -starting with the first element for which test(element) returns false.

-
- -
-

Implementation

-
Iterable<E> skipWhile(bool test(E element)) {
-  return SkipWhileIterable<E>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/sort.html b/doc/api/dart-collection/ListMixin/sort.html deleted file mode 100644 index 8c74e4eb..00000000 --- a/doc/api/dart-collection/ListMixin/sort.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - sort method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
sort
- -
- -
- - - -
-

sort method

- -
- void - sort -([int compare(E a E b) ]) -
override
-
-
-

Sorts this list according to the order specified by the compare function.

-

The compare function must act as a Comparator.

-
List<String> numbers = ['two', 'three', 'four'];
-// Sort from shortest to longest.
-numbers.sort((a, b) => a.length.compareTo(b.length));
-print(numbers);  // [two, four, three]
-
-

The default List implementations use Comparable.compare if -compare is omitted.

-
List<int> nums = [13, 2, -11];
-nums.sort();
-print(nums);  // [-11, 2, 13]
-
-

A Comparator may compare objects as equal (return zero), even if they -are distinct objects. -The sort function is not guaranteed to be stable, so distinct objects -that compare as equal may occur in any order in the result:

-
List<String> numbers = ['one', 'two', 'three', 'four'];
-numbers.sort((a, b) => a.length.compareTo(b.length));
-print(numbers);  // [one, two, four, three] OR [two, one, four, three]
-
-
- -
-

Implementation

-
void sort([int Function(E a, E b)? compare]) {
-  Sort.sort(this, compare ?? _compareAny);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/sublist.html b/doc/api/dart-collection/ListMixin/sublist.html deleted file mode 100644 index 27812db5..00000000 --- a/doc/api/dart-collection/ListMixin/sublist.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - sublist method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
sublist
- -
- -
- - - -
-

sublist method

- -
- List<E> - sublist -(int start, [ int end ]) -
override
-
-
-

Returns a new list containing the elements between start and end.

-

The new list is a List<E> containing the elements of this list at -positions greater than or equal to start and less than end in the same -order as they occur in this list.

-
var colors = ["red", "green", "blue", "orange", "pink"];
-print(colors.sublist(1, 3)); // [green, blue]
-
-

If end is omitted, it defaults to the length of this list.

-
print(colors.sublist(1)); // [green, blue, orange, pink]
-
-

The start and end positions must satisfy the relations -0 ≤ startendthis.length -If end is equal to start, then the returned list is empty.

-
- -
-

Implementation

-
List<E> sublist(int start, [int? end]) {
-  int listLength = this.length;
-  end ??= listLength;
-  if (end == null) throw "!"; // TODO(38493): The `??=` should promote.
-
-  RangeError.checkValidRange(start, end, listLength);
-  return List.from(getRange(start, end));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/take.html b/doc/api/dart-collection/ListMixin/take.html deleted file mode 100644 index a3713a38..00000000 --- a/doc/api/dart-collection/ListMixin/take.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - take method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
take
- -
- -
- - - -
-

take method

- -
- Iterable<E> - take -(int count) -
override
-
-
-

Returns a lazy iterable of the count first elements of this iterable.

-

The returned Iterable may contain fewer than count elements, if this -contains fewer than count elements.

-

The elements can be computed by stepping through iterator until count -elements have been seen.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> take(int count) => SubListIterable<E>(this, 0, count);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/takeWhile.html b/doc/api/dart-collection/ListMixin/takeWhile.html deleted file mode 100644 index 21ddfb1d..00000000 --- a/doc/api/dart-collection/ListMixin/takeWhile.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - takeWhile method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
takeWhile
- -
- -
- - - -
-

takeWhile method

- -
- Iterable<E> - takeWhile -(bool test(E element)) -
override
-
-
-

Returns a lazy iterable of the leading elements satisfying test.

-

The filtering happens lazily. Every new iterator of the returned -iterable starts iterating over the elements of this.

-

The elements can be computed by stepping through iterator until an -element is found where test(element) is false. At that point, -the returned iterable stops (its moveNext() returns false).

-
- -
-

Implementation

-
Iterable<E> takeWhile(bool test(E element)) {
-  return TakeWhileIterable<E>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/toList.html b/doc/api/dart-collection/ListMixin/toList.html deleted file mode 100644 index 9c1a503c..00000000 --- a/doc/api/dart-collection/ListMixin/toList.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - toList method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toList
- -
- -
- - - -
-

toList method

- -
- List<E> - toList -({bool growable: true }) -
override
-
-
-

Creates a List containing the elements of this Iterable.

-

The elements are in iteration order. -The list is fixed-length if growable is false.

-
- -
-

Implementation

-
List<E> toList({bool growable = true}) {
-  if (this.isEmpty) return List<E>.empty(growable: growable);
-  var first = this[0];
-  var result = List<E>.filled(this.length, first, growable: growable);
-  for (int i = 1; i < this.length; i++) {
-    result[i] = this[i];
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/toSet.html b/doc/api/dart-collection/ListMixin/toSet.html deleted file mode 100644 index 2f8a5191..00000000 --- a/doc/api/dart-collection/ListMixin/toSet.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - toSet method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSet
- -
- -
- - - -
-

toSet method

- -
- Set<E> - toSet -() -
override
-
-
-

Creates a Set containing the same elements as this iterable.

-

The set may contain fewer elements than the iterable, -if the iterable contains an element more than once, -or it contains one or more elements that are equal. -The order of the elements in the set is not guaranteed to be the same -as for the iterable.

-
- -
-

Implementation

-
Set<E> toSet() {
-  Set<E> result = Set<E>();
-  for (int i = 0; i < length; i++) {
-    result.add(this[i]);
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/toString.html b/doc/api/dart-collection/ListMixin/toString.html deleted file mode 100644 index 51cb7ee1..00000000 --- a/doc/api/dart-collection/ListMixin/toString.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - toString method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => IterableBase.iterableToFullString(this, '[', ']');
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/where.html b/doc/api/dart-collection/ListMixin/where.html deleted file mode 100644 index b7ff1d64..00000000 --- a/doc/api/dart-collection/ListMixin/where.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - where method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
where
- -
- -
- - - -
-

where method

- -
- Iterable<E> - where -(bool test(E element)) -
override
-
-
-

Returns a new lazy Iterable with all elements that satisfy the -predicate test.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -As long as the returned Iterable is not iterated over, -the supplied function test will not be invoked. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may invoke the supplied -function test multiple times on the same element.

-
- -
-

Implementation

-
Iterable<E> where(bool test(E element)) => WhereIterable<E>(this, test);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListMixin/whereType.html b/doc/api/dart-collection/ListMixin/whereType.html deleted file mode 100644 index 14d54016..00000000 --- a/doc/api/dart-collection/ListMixin/whereType.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - whereType method - ListMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
whereType
- -
- -
- - - -
-

whereType<T> method

- -
- Iterable<T> - whereType -<T>() -
override
-
-
-

Returns a new lazy Iterable with all elements that have type T.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may yield different results, -if the underlying elements change between iterations.

-
- -
-

Implementation

-
Iterable<T> whereType<T>() => WhereTypeIterable<T>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue-class.html b/doc/api/dart-collection/ListQueue-class.html deleted file mode 100644 index 61b0b679..00000000 --- a/doc/api/dart-collection/ListQueue-class.html +++ /dev/null @@ -1,665 +0,0 @@ - - - - - - - - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
ListQueue
- -
- -
- - - -
-

ListQueue<E> class

- -
-

List based Queue.

-

Keeps a cyclic buffer of elements, and grows to a larger buffer when -it fills up. This guarantees constant time peek and remove operations, and -amortized constant time add operations.

-

The structure is efficient for any queue or stack usage.

-
- -
-
-
Inheritance
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- ListQueue([int initialCapacity ]) -
-
- Create an empty queue. [...] -
-
- ListQueue.from(Iterable elements) -
-
- Create a ListQueue containing all elements. [...] -
factory
-
-
- ListQueue.of(Iterable<E> elements) -
-
- Create a ListQueue from elements. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only
-
-
- length - int -
-
- Returns the number of elements in the iterable. [...] -
read-only
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E value) - → void - -
-
- Adds value at the end of the queue. -
override
-
-
- addAll(Iterable<E> elements) - → void - -
-
- Adds all elements of iterable at the end of the queue. The -length of the queue is extended by the length of iterable. -
override
-
-
- addFirst(E value) - → void - -
-
- Adds value at the beginning of the queue. -
override
-
-
- addLast(E value) - → void - -
-
- Adds value at the end of the queue. -
override
-
-
- cast<R>() - Queue<R> - -
-
- Provides a view of this queue as a queue of R instances, if necessary. [...] -
override
-
-
- clear() - → void - -
-
- Removes all elements in the queue. The size of the queue becomes zero. -
override
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] - -
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. - -
-
- remove(Object value) - bool - -
-
- Remove a single instance of value from the queue. [...] -
override
-
-
- removeFirst() - → E - -
-
- Removes and returns the first element of this queue. [...] -
override
-
-
- removeLast() - → E - -
-
- Removes and returns the last element of the queue. [...] -
override
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Remove all elements matched by test. [...] -
override
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Remove all elements not matched by test. [...] -
override
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] - -
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E element)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E element)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E element)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/ListQueue.from.html b/doc/api/dart-collection/ListQueue/ListQueue.from.html deleted file mode 100644 index c24b7eb8..00000000 --- a/doc/api/dart-collection/ListQueue/ListQueue.from.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - ListQueue.from constructor - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
ListQueue.from
- -
- -
- - - -
-

ListQueue<E>.from constructor

- -
- - ListQueue<E>.from(Iterable elements) -
- -
-

Create a ListQueue containing all elements.

-

The elements are added to the queue, as by addLast, in the order given -by elements.iterator.

-

All the elements should be instances of E. -The elements iterable itself may have any element type, so this -constructor can be used to down-cast a Queue, for example as:

-
Queue<SuperType> superQueue = ...;
-Queue<SubType> subQueue =
-    new ListQueue<SubType>.from(superQueue.whereType<SubType>());
-
-
- -
-

Implementation

-
factory ListQueue.from(Iterable<dynamic> elements) {
-  if (elements is List<dynamic>) {
-    int length = elements.length;
-    ListQueue<E> queue = ListQueue<E>(length + 1);
-    assert(queue._table.length > length);
-    for (int i = 0; i < length; i++) {
-      queue._table[i] = elements[i] as E;
-    }
-    queue._tail = length;
-    return queue;
-  } else {
-    int capacity = _INITIAL_CAPACITY;
-    if (elements is EfficientLengthIterable) {
-      capacity = elements.length;
-    }
-    ListQueue<E> result = ListQueue<E>(capacity);
-    for (final element in elements) {
-      result.addLast(element as E);
-    }
-    return result;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/ListQueue.html b/doc/api/dart-collection/ListQueue/ListQueue.html deleted file mode 100644 index 591319b9..00000000 --- a/doc/api/dart-collection/ListQueue/ListQueue.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - ListQueue constructor - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
ListQueue
- -
- -
- - - -
-

ListQueue<E> constructor

- -
- - ListQueue<E>([int initialCapacity ]) -
- -
-

Create an empty queue.

-

If initialCapacity is given, prepare the queue for at least that many -elements.

-
- -
-

Implementation

-
ListQueue([int? initialCapacity])
-    : _head = 0,
-      _tail = 0,
-      _table = List<E?>.filled(_calculateCapacity(initialCapacity), null);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/ListQueue.of.html b/doc/api/dart-collection/ListQueue/ListQueue.of.html deleted file mode 100644 index 878e48e4..00000000 --- a/doc/api/dart-collection/ListQueue/ListQueue.of.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - ListQueue.of constructor - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
ListQueue.of
- -
- -
- - - -
-

ListQueue<E>.of constructor

- -
- - ListQueue<E>.of(Iterable<E> elements) -
- -
-

Create a ListQueue from elements.

-

The elements are added to the queue, as by addLast, in the order given -by elements.iterator.

-
- -
-

Implementation

-
factory ListQueue.of(Iterable<E> elements) =>
-    ListQueue<E>()..addAll(elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/add.html b/doc/api/dart-collection/ListQueue/add.html deleted file mode 100644 index bf7a3348..00000000 --- a/doc/api/dart-collection/ListQueue/add.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - add method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(E value) -
override
-
-
-

Adds value at the end of the queue.

-
- -
-

Implementation

-
void add(E value) {
-  _add(value);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/addAll.html b/doc/api/dart-collection/ListQueue/addAll.html deleted file mode 100644 index f846d0b0..00000000 --- a/doc/api/dart-collection/ListQueue/addAll.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - addAll method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> elements) -
override
-
-
-

Adds all elements of iterable at the end of the queue. The -length of the queue is extended by the length of iterable.

-
- -
-

Implementation

-
void addAll(Iterable<E> elements) {
-  if (elements is List<E>) {
-    List<E> list = elements;
-    int addCount = list.length;
-    int length = this.length;
-    if (length + addCount >= _table.length) {
-      _preGrow(length + addCount);
-      // After preGrow, all elements are at the start of the list.
-      _table.setRange(length, length + addCount, list, 0);
-      _tail += addCount;
-    } else {
-      // Adding addCount elements won't reach _head.
-      int endSpace = _table.length - _tail;
-      if (addCount < endSpace) {
-        _table.setRange(_tail, _tail + addCount, list, 0);
-        _tail += addCount;
-      } else {
-        int preSpace = addCount - endSpace;
-        _table.setRange(_tail, _tail + endSpace, list, 0);
-        _table.setRange(0, preSpace, list, endSpace);
-        _tail = preSpace;
-      }
-    }
-    _modificationCount++;
-  } else {
-    for (E element in elements) _add(element);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/addFirst.html b/doc/api/dart-collection/ListQueue/addFirst.html deleted file mode 100644 index 1f5f38c3..00000000 --- a/doc/api/dart-collection/ListQueue/addFirst.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - addFirst method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addFirst
- -
- -
- - - -
-

addFirst method

- -
- void - addFirst -(E value) -
override
-
-
-

Adds value at the beginning of the queue.

-
- -
-

Implementation

-
void addFirst(E value) {
-  _head = (_head - 1) & (_table.length - 1);
-  _table[_head] = value;
-  if (_head == _tail) _grow();
-  _modificationCount++;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/addLast.html b/doc/api/dart-collection/ListQueue/addLast.html deleted file mode 100644 index db7175fe..00000000 --- a/doc/api/dart-collection/ListQueue/addLast.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - addLast method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addLast
- -
- -
- - - -
-

addLast method

- -
- void - addLast -(E value) -
override
-
-
-

Adds value at the end of the queue.

-
- -
-

Implementation

-
void addLast(E value) {
-  _add(value);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/any.html b/doc/api/dart-collection/ListQueue/any.html deleted file mode 100644 index dc7c3678..00000000 --- a/doc/api/dart-collection/ListQueue/any.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - any method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
any
- -
- -
- - - -
-

any method

- -
- bool - any -(bool test(E element)) -
inherited
-
-
-

Checks whether any element of this iterable satisfies test.

-

Checks every element in iteration order, and returns true if -any of them make test return true, otherwise returns false.

-
- -
-

Implementation

-
bool any(bool test(E element)) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    if (test(elementAt(i))) return true;
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/cast.html b/doc/api/dart-collection/ListQueue/cast.html deleted file mode 100644 index bcb7f566..00000000 --- a/doc/api/dart-collection/ListQueue/cast.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - cast method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Queue<R> - cast -<R>() -
override
-
-
-

Provides a view of this queue as a queue of R instances, if necessary.

-

If this queue contains only instances of R, all read operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

Elements added to the queue (e.g., by using addFirst or addAll) -must be instance of R to be valid arguments to the adding function, -and they must be instances of E as well to be accepted by -this queue as well.

-
- -
-

Implementation

-
Queue<R> cast<R>() => Queue.castFrom<E, R>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/clear.html b/doc/api/dart-collection/ListQueue/clear.html deleted file mode 100644 index 2f39d671..00000000 --- a/doc/api/dart-collection/ListQueue/clear.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - clear method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
override
-
-
-

Removes all elements in the queue. The size of the queue becomes zero.

-
- -
-

Implementation

-
void clear() {
-  if (_head != _tail) {
-    for (int i = _head; i != _tail; i = (i + 1) & (_table.length - 1)) {
-      _table[i] = null;
-    }
-    _head = _tail = 0;
-    _modificationCount++;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/contains.html b/doc/api/dart-collection/ListQueue/contains.html deleted file mode 100644 index 780c9580..00000000 --- a/doc/api/dart-collection/ListQueue/contains.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - contains method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- bool - contains -(Object element) -
inherited
-
-
-

Returns true if the collection contains an element equal to element.

-

This operation will check each element in order for being equal to -element, unless it has a more efficient way to find an element -equal to element.

-

The equality used to determine whether element is equal to an element of -the iterable defaults to the Object.== of the element.

-

Some types of iterable may have a different equality used for its elements. -For example, a Set may have a custom equality -(see Set.identity) that its contains uses. -Likewise the Iterable returned by a Map.keys call -should use the same equality that the Map uses for keys.

-
- -
-

Implementation

-
bool contains(Object? element) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    if (elementAt(i) == element) return true;
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/elementAt.html b/doc/api/dart-collection/ListQueue/elementAt.html deleted file mode 100644 index 33b2ad64..00000000 --- a/doc/api/dart-collection/ListQueue/elementAt.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - elementAt method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
elementAt
- -
- -
- - - -
-

elementAt method

- -
- E - elementAt -(int index) - -
-
-

Returns the indexth element.

-

The index must be non-negative and less than length. -Index zero represents the first element (so iterable.elementAt(0) is -equivalent to iterable.first).

-

May iterate through the elements in iteration order, ignoring the -first index elements and then returning the next. -Some iterables may have a more efficient way to find the element.

-
- -
-

Implementation

-
E elementAt(int index) {
-  RangeError.checkValidIndex(index, this);
-  return _table[(_head + index) & (_table.length - 1)] as E;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/every.html b/doc/api/dart-collection/ListQueue/every.html deleted file mode 100644 index 8cd7b6f3..00000000 --- a/doc/api/dart-collection/ListQueue/every.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - every method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
every
- -
- -
- - - -
-

every method

- -
- bool - every -(bool test(E element)) -
inherited
-
-
-

Checks whether every element of this iterable satisfies test.

-

Checks every element in iteration order, and returns false if -any of them make test return false, otherwise returns true.

-
- -
-

Implementation

-
bool every(bool test(E element)) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    if (!test(elementAt(i))) return false;
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-  }
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/first.html b/doc/api/dart-collection/ListQueue/first.html deleted file mode 100644 index a4862129..00000000 --- a/doc/api/dart-collection/ListQueue/first.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - first property - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first - -
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  if (_head == _tail) throw IterableElementError.noElement();
-  return _table[_head] as E;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/firstWhere.html b/doc/api/dart-collection/ListQueue/firstWhere.html deleted file mode 100644 index c86d70b5..00000000 --- a/doc/api/dart-collection/ListQueue/firstWhere.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - firstWhere method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstWhere
- -
- -
- - - -
-

firstWhere method

- -
- E - firstWhere -(bool test(E element), { E orElse() }) -
inherited
-
-
-

Returns the first element that satisfies the given predicate test.

-

Iterates through elements and returns the first to satisfy test.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E firstWhere(bool test(E element), {E Function()? orElse}) {
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    E element = elementAt(i);
-    if (test(element)) return element;
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-  }
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/fold.html b/doc/api/dart-collection/ListQueue/fold.html deleted file mode 100644 index 23d44b18..00000000 --- a/doc/api/dart-collection/ListQueue/fold.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - fold method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
fold
- -
- -
- - - -
-

fold<T> method

- -
- T - fold -<T>(T initialValue, T combine(T previousValue, E element)) -
inherited
-
-
-

Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value

-

Uses initialValue as the initial value, -then iterates through the elements and updates the value with -each element using the combine function, as if by:

-
var value = initialValue;
-for (E element in this) {
-  value = combine(value, element);
-}
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.fold(0, (prev, element) => prev + element);
-
-
- -
-

Implementation

-
T fold<T>(T initialValue, T combine(T previousValue, E element)) {
-  var value = initialValue;
-  int length = this.length;
-  for (int i = 0; i < length; i++) {
-    value = combine(value, elementAt(i));
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-  }
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/forEach.html b/doc/api/dart-collection/ListQueue/forEach.html deleted file mode 100644 index 4654f602..00000000 --- a/doc/api/dart-collection/ListQueue/forEach.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - forEach method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void f(E element)) - -
-
-

Applies the function f to each element of this collection in iteration -order.

-
- -
-

Implementation

-
void forEach(void f(E element)) {
-  int modificationCount = _modificationCount;
-  for (int i = _head; i != _tail; i = (i + 1) & (_table.length - 1)) {
-    f(_table[i] as E);
-    _checkModification(modificationCount);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/isEmpty.html b/doc/api/dart-collection/ListQueue/isEmpty.html deleted file mode 100644 index 80603b63..00000000 --- a/doc/api/dart-collection/ListQueue/isEmpty.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - isEmpty property - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty - -
- -
-

Returns true if there are no elements in this collection.

-

May be computed by checking if iterator.moveNext() returns false.

-
-
-

Implementation

-
bool get isEmpty => _head == _tail;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/iterator.html b/doc/api/dart-collection/ListQueue/iterator.html deleted file mode 100644 index cb02b4aa..00000000 --- a/doc/api/dart-collection/ListQueue/iterator.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - iterator property - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator - -
- -
-

Returns a new Iterator that allows iterating the elements of this -Iterable.

-

Iterable classes may specify the iteration order of their elements -(for example List always iterate in index order), -or they may leave it unspecified (for example a hash-based Set -may iterate in any order).

-

Each time iterator is read, it returns a new iterator, -which can be used to iterate through all the elements again. -The iterators of the same iterable can be stepped through independently, -but should return the same elements in the same order, -as long as the underlying collection isn't changed.

-

Modifying the collection may cause new iterators to produce -different elements, and may change the order of existing elements. -A List specifies its iteration order precisely, -so modifying the list changes the iteration order predictably. -A hash-based Set may change its iteration order completely -when adding a new element to the set.

-

Modifying the underlying collection after creating the new iterator -may cause an error the next time Iterator.moveNext is called -on that iterator. -Any modifiable iterable class should specify which operations will -break iteration.

-
-
-

Implementation

-
Iterator<E> get iterator => _ListQueueIterator<E>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/join.html b/doc/api/dart-collection/ListQueue/join.html deleted file mode 100644 index 6d24cda7..00000000 --- a/doc/api/dart-collection/ListQueue/join.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - join method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
join
- -
- -
- - - -
-

join method

- -
- String - join -([String separator = "" ]) -
inherited
-
-
-

Converts each element to a String and concatenates the strings.

-

Iterates through elements of this iterable, -converts each one to a String by calling Object.toString, -and then concatenates the strings, with the -separator string interleaved between the elements.

-
- -
-

Implementation

-
String join([String separator = ""]) {
-  int length = this.length;
-  if (!separator.isEmpty) {
-    if (length == 0) return "";
-    String first = "${elementAt(0)}";
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-    StringBuffer buffer = new StringBuffer(first);
-    for (int i = 1; i < length; i++) {
-      buffer.write(separator);
-      buffer.write(elementAt(i));
-      if (length != this.length) {
-        throw new ConcurrentModificationError(this);
-      }
-    }
-    return buffer.toString();
-  } else {
-    StringBuffer buffer = new StringBuffer();
-    for (int i = 0; i < length; i++) {
-      buffer.write(elementAt(i));
-      if (length != this.length) {
-        throw new ConcurrentModificationError(this);
-      }
-    }
-    return buffer.toString();
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/last.html b/doc/api/dart-collection/ListQueue/last.html deleted file mode 100644 index 4bdb177c..00000000 --- a/doc/api/dart-collection/ListQueue/last.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - last property - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last - -
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  if (_head == _tail) throw IterableElementError.noElement();
-  return _table[(_tail - 1) & (_table.length - 1)] as E;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/lastWhere.html b/doc/api/dart-collection/ListQueue/lastWhere.html deleted file mode 100644 index e34e1e51..00000000 --- a/doc/api/dart-collection/ListQueue/lastWhere.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - lastWhere method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastWhere
- -
- -
- - - -
-

lastWhere method

- -
- E - lastWhere -(bool test(E element), { E orElse() }) -
inherited
-
-
-

Returns the last element that satisfies the given predicate test.

-

An iterable that can access its elements directly may check its -elements in any order (for example a list starts by checking the -last element and then moves towards the start of the list). -The default implementation iterates elements in iteration order, -checks test(element) for each, -and finally returns that last one that matched.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E lastWhere(bool test(E element), {E Function()? orElse}) {
-  int length = this.length;
-  for (int i = length - 1; i >= 0; i--) {
-    E element = elementAt(i);
-    if (test(element)) return element;
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-  }
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/length.html b/doc/api/dart-collection/ListQueue/length.html deleted file mode 100644 index 6eb2a5fa..00000000 --- a/doc/api/dart-collection/ListQueue/length.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - length property - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length - -
- -
-

Returns the number of elements in the iterable.

-

This is an efficient operation that doesn't require iterating through -the elements.

-
-
-

Implementation

-
int get length => (_tail - _head) & (_table.length - 1);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/map.html b/doc/api/dart-collection/ListQueue/map.html deleted file mode 100644 index bb588d09..00000000 --- a/doc/api/dart-collection/ListQueue/map.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - map method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<T> method

- -
- Iterable<T> - map -<T>(T f(E element)) -
inherited
-
-
-

Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order.

-

This method returns a view of the mapped elements. As long as the -returned Iterable is not iterated over, the supplied function f will -not be invoked. The transformed elements will not be cached. Iterating -multiple times over the returned Iterable will invoke the supplied -function f multiple times on the same element.

-

Methods on the returned iterable are allowed to omit calling f -on any element where the result isn't needed. -For example, elementAt may call f only once.

-
- -
-

Implementation

-
Iterable<T> map<T>(T f(E element)) => new MappedListIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/reduce.html b/doc/api/dart-collection/ListQueue/reduce.html deleted file mode 100644 index a68fa473..00000000 --- a/doc/api/dart-collection/ListQueue/reduce.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - reduce method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
reduce
- -
- -
- - - -
-

reduce method

- -
- E - reduce -(E combine(E value E element)) -
inherited
-
-
-

Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function.

-

The iterable must have at least one element. -If it has only one element, that element is returned.

-

Otherwise this method starts with the first element from the iterator, -and then combines it with the remaining elements in iteration order, -as if by:

-
E value = iterable.first;
-iterable.skip(1).forEach((element) {
-  value = combine(value, element);
-});
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.reduce((value, element) => value + element);
-
-
- -
-

Implementation

-
E reduce(E combine(E value, E element)) {
-  int length = this.length;
-  if (length == 0) throw IterableElementError.noElement();
-  E value = elementAt(0);
-  for (int i = 1; i < length; i++) {
-    value = combine(value, elementAt(i));
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-  }
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/remove.html b/doc/api/dart-collection/ListQueue/remove.html deleted file mode 100644 index b5823aa6..00000000 --- a/doc/api/dart-collection/ListQueue/remove.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - remove method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object value) -
override
-
-
-

Remove a single instance of value from the queue.

-

Returns true if a value was removed, or false if the queue -contained no element equal to value.

-
- -
-

Implementation

-
bool remove(Object? value) {
-  for (int i = _head; i != _tail; i = (i + 1) & (_table.length - 1)) {
-    E? element = _table[i];
-    if (element == value) {
-      _remove(i);
-      _modificationCount++;
-      return true;
-    }
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/removeFirst.html b/doc/api/dart-collection/ListQueue/removeFirst.html deleted file mode 100644 index a0f9337f..00000000 --- a/doc/api/dart-collection/ListQueue/removeFirst.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - removeFirst method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeFirst
- -
- -
- - - -
-

removeFirst method

- -
- E - removeFirst -() -
override
-
-
-

Removes and returns the first element of this queue.

-

The queue must not be empty when this method is called.

-
- -
-

Implementation

-
E removeFirst() {
-  if (_head == _tail) throw IterableElementError.noElement();
-  _modificationCount++;
-  E result = _table[_head] as E;
-  _table[_head] = null;
-  _head = (_head + 1) & (_table.length - 1);
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/removeLast.html b/doc/api/dart-collection/ListQueue/removeLast.html deleted file mode 100644 index 704a327f..00000000 --- a/doc/api/dart-collection/ListQueue/removeLast.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - removeLast method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeLast
- -
- -
- - - -
-

removeLast method

- -
- E - removeLast -() -
override
-
-
-

Removes and returns the last element of the queue.

-

The queue must not be empty when this method is called.

-
- -
-

Implementation

-
E removeLast() {
-  if (_head == _tail) throw IterableElementError.noElement();
-  _modificationCount++;
-  _tail = (_tail - 1) & (_table.length - 1);
-  E result = _table[_tail] as E;
-  _table[_tail] = null;
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/removeWhere.html b/doc/api/dart-collection/ListQueue/removeWhere.html deleted file mode 100644 index 1dd5985b..00000000 --- a/doc/api/dart-collection/ListQueue/removeWhere.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - removeWhere method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(E element)) -
override
-
-
-

Remove all elements matched by test.

-

This method is inefficient since it works by repeatedly removing single -elements, each of which can take linear time.

-
- -
-

Implementation

-
void removeWhere(bool test(E element)) {
-  _filterWhere(test, true);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/retainWhere.html b/doc/api/dart-collection/ListQueue/retainWhere.html deleted file mode 100644 index 0a829569..00000000 --- a/doc/api/dart-collection/ListQueue/retainWhere.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - retainWhere method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainWhere
- -
- -
- - - -
-

retainWhere method

- -
- void - retainWhere -(bool test(E element)) -
override
-
-
-

Remove all elements not matched by test.

-

This method is inefficient since it works by repeatedly removing single -elements, each of which can take linear time.

-
- -
-

Implementation

-
void retainWhere(bool test(E element)) {
-  _filterWhere(test, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/single.html b/doc/api/dart-collection/ListQueue/single.html deleted file mode 100644 index 12457c7b..00000000 --- a/doc/api/dart-collection/ListQueue/single.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - single property - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- E - single - -
- -
-

Checks that this iterable has only one element, and returns that element.

-

Throws a StateError if this is empty or has more than one element.

-
-
-

Implementation

-
E get single {
-  if (_head == _tail) throw IterableElementError.noElement();
-  if (length > 1) throw IterableElementError.tooMany();
-  return _table[_head] as E;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/singleWhere.html b/doc/api/dart-collection/ListQueue/singleWhere.html deleted file mode 100644 index a1220e06..00000000 --- a/doc/api/dart-collection/ListQueue/singleWhere.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - singleWhere method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
singleWhere
- -
- -
- - - -
-

singleWhere method

- -
- E - singleWhere -(bool test(E element), { E orElse() }) -
inherited
-
-
-

Returns the single element that satisfies test.

-

Checks elements to see if test(element) returns true. -If exactly one element satisfies test, that element is returned. -If more than one matching element is found, throws StateError. -If no matching element is found, returns the result of orElse. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E singleWhere(bool test(E element), {E Function()? orElse}) {
-  int length = this.length;
-  late E match;
-  bool matchFound = false;
-  for (int i = 0; i < length; i++) {
-    E element = elementAt(i);
-    if (test(element)) {
-      if (matchFound) {
-        throw IterableElementError.tooMany();
-      }
-      matchFound = true;
-      match = element;
-    }
-    if (length != this.length) {
-      throw new ConcurrentModificationError(this);
-    }
-  }
-  if (matchFound) return match;
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/skip.html b/doc/api/dart-collection/ListQueue/skip.html deleted file mode 100644 index 63ea477c..00000000 --- a/doc/api/dart-collection/ListQueue/skip.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - skip method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
skip
- -
- -
- - - -
-

skip method

- -
- Iterable<E> - skip -(int count) -
inherited
-
-
-

Returns an Iterable that provides all but the first count elements.

-

When the returned iterable is iterated, it starts iterating over this, -first skipping past the initial count elements. -If this has fewer than count elements, then the resulting Iterable is -empty. -After that, the remaining elements are iterated in the same order as -in this iterable.

-

Some iterables may be able to find later elements without first iterating -through earlier elements, for example when iterating a List. -Such iterables are allowed to ignore the initial skipped elements.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> skip(int count) => new SubListIterable<E>(this, count, null);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/skipWhile.html b/doc/api/dart-collection/ListQueue/skipWhile.html deleted file mode 100644 index 73917bb7..00000000 --- a/doc/api/dart-collection/ListQueue/skipWhile.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - skipWhile method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
skipWhile
- -
- -
- - - -
-

skipWhile method

- -
- Iterable<E> - skipWhile -(bool test(E element)) -
inherited
-
-
-

Returns an Iterable that skips leading elements while test is satisfied.

-

The filtering happens lazily. Every new Iterator of the returned -iterable iterates over all elements of this.

-

The returned iterable provides elements by iterating this iterable, -but skipping over all initial elements where test(element) returns -true. If all elements satisfy test the resulting iterable is empty, -otherwise it iterates the remaining elements in their original order, -starting with the first element for which test(element) returns false.

-
- -
-

Implementation

-
Iterable<E> skipWhile(bool test(E element)) => super.skipWhile(test);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/take.html b/doc/api/dart-collection/ListQueue/take.html deleted file mode 100644 index 11dfe16c..00000000 --- a/doc/api/dart-collection/ListQueue/take.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - take method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
take
- -
- -
- - - -
-

take method

- -
- Iterable<E> - take -(int count) -
inherited
-
-
-

Returns a lazy iterable of the count first elements of this iterable.

-

The returned Iterable may contain fewer than count elements, if this -contains fewer than count elements.

-

The elements can be computed by stepping through iterator until count -elements have been seen.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> take(int count) => new SubListIterable<E>(this, 0, count);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/takeWhile.html b/doc/api/dart-collection/ListQueue/takeWhile.html deleted file mode 100644 index 9cdebd2e..00000000 --- a/doc/api/dart-collection/ListQueue/takeWhile.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - takeWhile method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
takeWhile
- -
- -
- - - -
-

takeWhile method

- -
- Iterable<E> - takeWhile -(bool test(E element)) -
inherited
-
-
-

Returns a lazy iterable of the leading elements satisfying test.

-

The filtering happens lazily. Every new iterator of the returned -iterable starts iterating over the elements of this.

-

The elements can be computed by stepping through iterator until an -element is found where test(element) is false. At that point, -the returned iterable stops (its moveNext() returns false).

-
- -
-

Implementation

-
Iterable<E> takeWhile(bool test(E element)) => super.takeWhile(test);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/toList.html b/doc/api/dart-collection/ListQueue/toList.html deleted file mode 100644 index 7a4797b1..00000000 --- a/doc/api/dart-collection/ListQueue/toList.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - toList method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toList
- -
- -
- - - -
-

toList method

- -
- List<E> - toList -({bool growable: true }) - -
-
-

Creates a List containing the elements of this Iterable.

-

The elements are in iteration order. -The list is fixed-length if growable is false.

-
- -
-

Implementation

-
List<E> toList({bool growable = true}) {
-  int mask = _table.length - 1;
-  int length = (_tail - _head) & mask;
-  if (length == 0) return List<E>.empty(growable: growable);
-
-  var list = List<E>.filled(length, first, growable: growable);
-  for (int i = 0; i < length; i++) {
-    list[i] = _table[(_head + i) & mask] as E;
-  }
-  return list;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/toSet.html b/doc/api/dart-collection/ListQueue/toSet.html deleted file mode 100644 index 6d13f693..00000000 --- a/doc/api/dart-collection/ListQueue/toSet.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - toSet method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSet
- -
- -
- - - -
-

toSet method

- -
- Set<E> - toSet -() -
inherited
-
-
-

Creates a Set containing the same elements as this iterable.

-

The set may contain fewer elements than the iterable, -if the iterable contains an element more than once, -or it contains one or more elements that are equal. -The order of the elements in the set is not guaranteed to be the same -as for the iterable.

-
- -
-

Implementation

-
Set<E> toSet() {
-  Set<E> result = new Set<E>();
-  for (int i = 0; i < length; i++) {
-    result.add(elementAt(i));
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/toString.html b/doc/api/dart-collection/ListQueue/toString.html deleted file mode 100644 index 570521d9..00000000 --- a/doc/api/dart-collection/ListQueue/toString.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - toString method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => IterableBase.iterableToFullString(this, "{", "}");
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/ListQueue/where.html b/doc/api/dart-collection/ListQueue/where.html deleted file mode 100644 index 1a6847f4..00000000 --- a/doc/api/dart-collection/ListQueue/where.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - where method - ListQueue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
where
- -
- -
- - - -
-

where method

- -
- Iterable<E> - where -(bool test(E element)) -
inherited
-
-
-

Returns a new lazy Iterable with all elements that satisfy the -predicate test.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -As long as the returned Iterable is not iterated over, -the supplied function test will not be invoked. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may invoke the supplied -function test multiple times on the same element.

-
- -
-

Implementation

-
Iterable<E> where(bool test(E element)) => super.where(test);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapBase-class.html b/doc/api/dart-collection/MapBase-class.html deleted file mode 100644 index 81a7c03c..00000000 --- a/doc/api/dart-collection/MapBase-class.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - - - - - MapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
MapBase
- -
- -
- - - -
-

MapBase<K, V> class

- -
-

Base class for implementing a Map.

-

This class has a basic implementation of all but five of the members of -Map. -A basic Map class can be implemented by extending this class and -implementing keys, operator[], operator[]=, remove and clear. -The remaining operations are implemented in terms of these five.

-

The keys iterable should have efficient Iterable.length and -Iterable.contains operations, and it should catch concurrent modifications -of the keys while iterating.

-

A more efficient implementation is usually possible by overriding -some of the other members as well.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- MapBase() -
-
- -
-
-
- -
-

Properties

- -
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only, inherited
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only, inherited
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addAll(Map<K, V> other) - → void - -
-
- Adds all key/value pairs of other to this map. [...] -
inherited
-
-
- addEntries(Iterable<MapEntry<K, V>> newEntries) - → void - -
-
- Adds all key/value pairs of newEntries to this map. [...] -
inherited
-
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] -
inherited
-
-
- clear() - → void - -
-
- Removes all pairs from the map. [...] -
inherited
-
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] -
inherited
-
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] -
inherited
-
-
- forEach(void action(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] -
inherited
-
-
- map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- Look up the value of key, or add a new value if it isn't there. [...] -
inherited
-
-
- remove(Object key) - → V - -
-
- Removes key and its associated value, if present, from the map. [...] -
inherited
-
-
- removeWhere(bool test(K key, V value)) - → void - -
-
- Removes all entries of this map that satisfy the given predicate. -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- Updates the value for the provided key. [...] -
inherited
-
-
- updateAll(V update(K key, V value)) - → void - -
-
- Updates all values. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] -
inherited
-
-
- operator []=(K key, V value) - → void - -
-
- Associates the key with the given value. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- mapToString(Map<Object, Object> m) - String - -
-
- - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapBase/MapBase.html b/doc/api/dart-collection/MapBase/MapBase.html deleted file mode 100644 index 5894f5ae..00000000 --- a/doc/api/dart-collection/MapBase/MapBase.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - MapBase constructor - MapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
MapBase
- -
- -
- - - -
-

MapBase<K, V> constructor

- -
- - MapBase<K, V>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapBase/mapToString.html b/doc/api/dart-collection/MapBase/mapToString.html deleted file mode 100644 index b1522b02..00000000 --- a/doc/api/dart-collection/MapBase/mapToString.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - mapToString method - MapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
mapToString
- -
- -
- - - -
-

mapToString method

- -
- String - mapToString -(Map<Object, Object> m) - -
- -
-

Implementation

-
static String mapToString(Map<Object?, Object?> m) {
-  // Reuses the list in IterableBase for detecting toString cycles.
-  if (_isToStringVisiting(m)) {
-    return '{...}';
-  }
-
-  var result = StringBuffer();
-  try {
-    _toStringVisiting.add(m);
-    result.write('{');
-    bool first = true;
-    m.forEach((Object? k, Object? v) {
-      if (!first) {
-        result.write(', ');
-      }
-      first = false;
-      result.write(k);
-      result.write(': ');
-      result.write(v);
-    });
-    result.write('}');
-  } finally {
-    assert(identical(_toStringVisiting.last, m));
-    _toStringVisiting.removeLast();
-  }
-
-  return result.toString();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin-class.html b/doc/api/dart-collection/MapMixin-class.html deleted file mode 100644 index 460aa48d..00000000 --- a/doc/api/dart-collection/MapMixin-class.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - - - - - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
MapMixin
- -
- -
- - - -
-

MapMixin<K, V> class

- -
-

Mixin implementing a Map.

-

This mixin has a basic implementation of all but five of the members of -Map. -A basic Map class can be implemented by mixin in this class and -implementing keys, operator[], operator[]=, remove and clear. -The remaining operations are implemented in terms of these five.

-

The keys iterable should have efficient Iterable.length and -Iterable.contains operations, and it should catch concurrent modifications -of the keys while iterating.

-

A more efficient implementation is usually possible by overriding -some of the other members as well.

-
- -
-
- -
Implemented types
-
-
    -
  • Map<K, V>
  • -
-
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- MapMixin() -
-
- -
-
-
- -
-

Properties

- -
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only, override
-
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only, override
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only, override
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only, override
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only, override
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addAll(Map<K, V> other) - → void - -
-
- Adds all key/value pairs of other to this map. [...] -
override
-
-
- addEntries(Iterable<MapEntry<K, V>> newEntries) - → void - -
-
- Adds all key/value pairs of newEntries to this map. [...] -
override
-
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] -
override
-
-
- clear() - → void - -
-
- Removes all pairs from the map. [...] -
override
-
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] -
override
-
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] -
override
-
-
- forEach(void action(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] -
override
-
-
- map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. -
override
-
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- Look up the value of key, or add a new value if it isn't there. [...] -
override
-
-
- remove(Object key) - → V - -
-
- Removes key and its associated value, if present, from the map. [...] -
override
-
-
- removeWhere(bool test(K key, V value)) - → void - -
-
- Removes all entries of this map that satisfy the given predicate. -
override
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- Updates the value for the provided key. [...] -
override
-
-
- updateAll(V update(K key, V value)) - → void - -
-
- Updates all values. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] -
override
-
-
- operator []=(K key, V value) - → void - -
-
- Associates the key with the given value. [...] -
override
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/MapMixin.html b/doc/api/dart-collection/MapMixin/MapMixin.html deleted file mode 100644 index 6255a01d..00000000 --- a/doc/api/dart-collection/MapMixin/MapMixin.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - MapMixin constructor - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
MapMixin
- -
- -
- - - -
-

MapMixin<K, V> constructor

- -
- - MapMixin<K, V>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/addAll.html b/doc/api/dart-collection/MapMixin/addAll.html deleted file mode 100644 index 05f33aff..00000000 --- a/doc/api/dart-collection/MapMixin/addAll.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - addAll method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Map<K, V> other) -
override
-
-
-

Adds all key/value pairs of other to this map.

-

If a key of other is already in this map, its value is overwritten.

-

The operation is equivalent to doing this[key] = value for each key -and associated value in other. It iterates over other, which must -therefore not change during the iteration.

-
- -
-

Implementation

-
void addAll(Map<K, V> other) {
-  for (K key in other.keys) {
-    this[key] = other[key] as V;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/addEntries.html b/doc/api/dart-collection/MapMixin/addEntries.html deleted file mode 100644 index b14ccbf7..00000000 --- a/doc/api/dart-collection/MapMixin/addEntries.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - addEntries method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addEntries
- -
- -
- - - -
-

addEntries method

- -
- void - addEntries -(Iterable<MapEntry<K, V>> newEntries) -
override
-
-
-

Adds all key/value pairs of newEntries to this map.

-

If a key of newEntries is already in this map, -the corresponding value is overwritten.

-

The operation is equivalent to doing this[entry.key] = entry.value -for each MapEntry of the iterable.

-
- -
-

Implementation

-
void addEntries(Iterable<MapEntry<K, V>> newEntries) {
-  for (var entry in newEntries) {
-    this[entry.key] = entry.value;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/cast.html b/doc/api/dart-collection/MapMixin/cast.html deleted file mode 100644 index a12c97af..00000000 --- a/doc/api/dart-collection/MapMixin/cast.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - cast method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<RK, RV> method

- -
- Map<RK, RV> - cast -<RK, RV>() -
override
-
-
-

Provides a view of this map as having RK keys and RV instances, -if necessary.

-

If this map is already a Map<RK, RV>, it is returned unchanged.

-

If this set contains only keys of type RK and values of type RV, -all read operations will work correctly. -If any operation exposes a non-RK key or non-RV value, -the operation will throw instead.

-

Entries added to the map must be valid for both a Map<K, V> and a -Map<RK, RV>.

-
- -
-

Implementation

-
Map<RK, RV> cast<RK, RV>() => Map.castFrom<K, V, RK, RV>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/clear.html b/doc/api/dart-collection/MapMixin/clear.html deleted file mode 100644 index a56d825f..00000000 --- a/doc/api/dart-collection/MapMixin/clear.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - clear method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
override
-
-
-

Removes all pairs from the map.

-

After this, the map is empty.

-
- -
-

Implementation

-
void clear();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/containsKey.html b/doc/api/dart-collection/MapMixin/containsKey.html deleted file mode 100644 index 2724f77f..00000000 --- a/doc/api/dart-collection/MapMixin/containsKey.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - containsKey method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsKey
- -
- -
- - - -
-

containsKey method

- -
- bool - containsKey -(Object key) -
override
-
-
-

Returns true if this map contains the given key.

-

Returns true if any of the keys in the map are equal to key -according to the equality used by the map.

-
- -
-

Implementation

-
bool containsKey(Object? key) => keys.contains(key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/containsValue.html b/doc/api/dart-collection/MapMixin/containsValue.html deleted file mode 100644 index 00c03af1..00000000 --- a/doc/api/dart-collection/MapMixin/containsValue.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - containsValue method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsValue
- -
- -
- - - -
-

containsValue method

- -
- bool - containsValue -(Object value) -
override
-
-
-

Returns true if this map contains the given value.

-

Returns true if any of the values in the map are equal to value -according to the == operator.

-
- -
-

Implementation

-
bool containsValue(Object? value) {
-  for (K key in keys) {
-    if (this[key] == value) return true;
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/entries.html b/doc/api/dart-collection/MapMixin/entries.html deleted file mode 100644 index 50ebfcab..00000000 --- a/doc/api/dart-collection/MapMixin/entries.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - entries property - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
entries
- -
- -
- - - -
-

entries property

- - -
- -
- Iterable<MapEntry<K, V>> - entries -
override
-
- -
-

The map entries of this.

-
-
-

Implementation

-
Iterable<MapEntry<K, V>> get entries {
-  return keys.map((K key) => MapEntry<K, V>(key, this[key] as V));
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/forEach.html b/doc/api/dart-collection/MapMixin/forEach.html deleted file mode 100644 index 3b1cea02..00000000 --- a/doc/api/dart-collection/MapMixin/forEach.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - forEach method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void action(K key, V value)) -
override
-
-
-

Applies f to each key/value pair of the map.

-

Calling f must not add or remove keys from the map.

-
- -
-

Implementation

-
void forEach(void action(K key, V value)) {
-  for (K key in keys) {
-    action(key, this[key] as V);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/isEmpty.html b/doc/api/dart-collection/MapMixin/isEmpty.html deleted file mode 100644 index 4edf746a..00000000 --- a/doc/api/dart-collection/MapMixin/isEmpty.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - isEmpty property - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there is no key/value pair in the map.

-
-
-

Implementation

-
bool get isEmpty => keys.isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/isNotEmpty.html b/doc/api/dart-collection/MapMixin/isNotEmpty.html deleted file mode 100644 index 8c7c795e..00000000 --- a/doc/api/dart-collection/MapMixin/isNotEmpty.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - isNotEmpty property - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty -
override
-
- -
-

Returns true if there is at least one key/value pair in the map.

-
-
-

Implementation

-
bool get isNotEmpty => keys.isNotEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/keys.html b/doc/api/dart-collection/MapMixin/keys.html deleted file mode 100644 index e5f65ec4..00000000 --- a/doc/api/dart-collection/MapMixin/keys.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - keys property - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
keys
- -
- -
- - - -
-

keys property

- - -
- -
- Iterable<K> - keys -
override
-
- -
-

The keys of this.

-

The returned iterable has efficient length and contains operations, -based on length and containsKey of the map.

-

The order of iteration is defined by the individual Map implementation, -but must be consistent between changes to the map.

-

Modifying the map while iterating the keys -may break the iteration.

-
-
-

Implementation

-
Iterable<K> get keys;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/length.html b/doc/api/dart-collection/MapMixin/length.html deleted file mode 100644 index dff58061..00000000 --- a/doc/api/dart-collection/MapMixin/length.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - length property - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
override
-
- -
-

The number of key/value pairs in the map.

-
-
-

Implementation

-
int get length => keys.length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/map.html b/doc/api/dart-collection/MapMixin/map.html deleted file mode 100644 index 341d71ab..00000000 --- a/doc/api/dart-collection/MapMixin/map.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - map method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<K2, V2> method

- -
- Map<K2, V2> - map -<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) -
override
-
-
-

Returns a new map where all entries of this map are transformed by -the given f function.

-
- -
-

Implementation

-
Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) {
-  var result = <K2, V2>{};
-  for (var key in this.keys) {
-    var entry = transform(key, this[key] as V);
-    result[entry.key] = entry.value;
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/operator_get.html b/doc/api/dart-collection/MapMixin/operator_get.html deleted file mode 100644 index 45a2da67..00000000 --- a/doc/api/dart-collection/MapMixin/operator_get.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - operator [] method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- V - operator [] -(Object key) -
override
-
-
-

Returns the value for the given key or null if key is not in the map.

-

Some maps allow keys to have null as a value. -For those maps, a lookup using this operator cannot distinguish between a -key not being in the map and the key having a null value. -Methods like containsKey or putIfAbsent can be used if the distinction -is important.

-
- -
-

Implementation

-
V? operator [](Object? key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/operator_put.html b/doc/api/dart-collection/MapMixin/operator_put.html deleted file mode 100644 index 7fd3b898..00000000 --- a/doc/api/dart-collection/MapMixin/operator_put.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - operator []= method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(K key, V value) -
override
-
-
-

Associates the key with the given value.

-

If the key was already in the map, its associated value is changed. -Otherwise the key/value pair is added to the map.

-
- -
-

Implementation

-
operator []=(K key, V value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/putIfAbsent.html b/doc/api/dart-collection/MapMixin/putIfAbsent.html deleted file mode 100644 index fb80807a..00000000 --- a/doc/api/dart-collection/MapMixin/putIfAbsent.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - putIfAbsent method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
putIfAbsent
- -
- -
- - - -
-

putIfAbsent method

- -
- V - putIfAbsent -(K key, V ifAbsent()) -
override
-
-
-

Look up the value of key, or add a new value if it isn't there.

-

Returns the value associated to key, if there is one. -Otherwise calls ifAbsent to get a new value, associates key to -that value, and then returns the new value.

-
Map<String, int> scores = {'Bob': 36};
-for (var key in ['Bob', 'Rohan', 'Sophena']) {
-  scores.putIfAbsent(key, () => key.length);
-}
-scores['Bob'];      // 36
-scores['Rohan'];    //  5
-scores['Sophena'];  //  7
-
-

Calling ifAbsent must not add or remove keys from the map.

-
- -
-

Implementation

-
V putIfAbsent(K key, V ifAbsent()) {
-  if (containsKey(key)) {
-    return this[key] as V;
-  }
-  return this[key] = ifAbsent();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/remove.html b/doc/api/dart-collection/MapMixin/remove.html deleted file mode 100644 index 1f9bb752..00000000 --- a/doc/api/dart-collection/MapMixin/remove.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - remove method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- V - remove -(Object key) -
override
-
-
-

Removes key and its associated value, if present, from the map.

-

Returns the value associated with key before it was removed. -Returns null if key was not in the map.

-

Note that values can be null and a returned null value doesn't -always mean that the key was absent.

-
- -
-

Implementation

-
V? remove(Object? key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/removeWhere.html b/doc/api/dart-collection/MapMixin/removeWhere.html deleted file mode 100644 index 2932fe1d..00000000 --- a/doc/api/dart-collection/MapMixin/removeWhere.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - removeWhere method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(K key, V value)) -
override
-
-
-

Removes all entries of this map that satisfy the given predicate.

-
- -
-

Implementation

-
void removeWhere(bool test(K key, V value)) {
-  var keysToRemove = <K>[];
-  for (var key in keys) {
-    if (test(key, this[key] as V)) keysToRemove.add(key);
-  }
-  for (var key in keysToRemove) {
-    this.remove(key);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/toString.html b/doc/api/dart-collection/MapMixin/toString.html deleted file mode 100644 index a0c4a3ab..00000000 --- a/doc/api/dart-collection/MapMixin/toString.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - toString method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => MapBase.mapToString(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/update.html b/doc/api/dart-collection/MapMixin/update.html deleted file mode 100644 index 532df9cc..00000000 --- a/doc/api/dart-collection/MapMixin/update.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - update method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
update
- -
- -
- - - -
-

update method

- -
- V - update -(K key, V update(V value), { V ifAbsent() }) -
override
-
-
-

Updates the value for the provided key.

-

Returns the new value of the key.

-

If the key is present, invokes update with the current value and stores -the new value in the map.

-

If the key is not present and ifAbsent is provided, calls ifAbsent -and adds the key with the returned value to the map.

-

It's an error if the key is not present and ifAbsent is not provided.

-
- -
-

Implementation

-
V update(K key, V update(V value), {V Function()? ifAbsent}) {
-  if (this.containsKey(key)) {
-    return this[key] = update(this[key] as V);
-  }
-  if (ifAbsent != null) {
-    return this[key] = ifAbsent();
-  }
-  throw ArgumentError.value(key, "key", "Key not in map.");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/updateAll.html b/doc/api/dart-collection/MapMixin/updateAll.html deleted file mode 100644 index a282d638..00000000 --- a/doc/api/dart-collection/MapMixin/updateAll.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - updateAll method - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
updateAll
- -
- -
- - - -
-

updateAll method

- -
- void - updateAll -(V update(K key, V value)) -
override
-
-
-

Updates all values.

-

Iterates over all entries in the map and updates them with the result -of invoking update.

-
- -
-

Implementation

-
void updateAll(V update(K key, V value)) {
-  for (var key in this.keys) {
-    this[key] = update(key, this[key] as V);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapMixin/values.html b/doc/api/dart-collection/MapMixin/values.html deleted file mode 100644 index 5ea915b5..00000000 --- a/doc/api/dart-collection/MapMixin/values.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - values property - MapMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
values
- -
- -
- - - -
-

values property

- - -
- -
- Iterable<V> - values -
override
-
- -
-

The values of this.

-

The values are iterated in the order of their corresponding keys. -This means that iterating keys and values in parallel will -provide matching pairs of keys and values.

-

The returned iterable has an efficient length method based on the -length of the map. Its Iterable.contains method is based on -== comparison.

-

Modifying the map while iterating the -values may break the iteration.

-
-
-

Implementation

-
Iterable<V> get values => _MapBaseValueIterable<K, V>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView-class.html b/doc/api/dart-collection/MapView-class.html deleted file mode 100644 index 4ec8c74d..00000000 --- a/doc/api/dart-collection/MapView-class.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
MapView
- -
- -
- - - -
-

MapView<K, V> class

- -
-

Wrapper around a class that implements Map that only exposes Map -members.

-

A simple wrapper that delegates all Map members to the map provided in the -constructor.

-

Base for delegating map implementations like UnmodifiableMapView.

-
- -
-
- -
Implemented types
-
-
    -
  • Map<K, V>
  • -
-
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- MapView(Map<K, V> map) -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only, override
-
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only, override
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only, override
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only, override
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only, override
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addAll(Map<K, V> other) - → void - -
-
- Adds all key/value pairs of other to this map. [...] -
override
-
-
- addEntries(Iterable<MapEntry<K, V>> entries) - → void - -
-
- Adds all key/value pairs of newEntries to this map. [...] -
override
-
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] -
override
-
-
- clear() - → void - -
-
- Removes all pairs from the map. [...] -
override
-
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] -
override
-
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] -
override
-
-
- forEach(void action(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] -
override
-
-
- map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. -
override
-
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- Look up the value of key, or add a new value if it isn't there. [...] -
override
-
-
- remove(Object key) - → V - -
-
- Removes key and its associated value, if present, from the map. [...] -
override
-
-
- removeWhere(bool test(K key, V value)) - → void - -
-
- Removes all entries of this map that satisfy the given predicate. -
override
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- Updates the value for the provided key. [...] -
override
-
-
- updateAll(V update(K key, V value)) - → void - -
-
- Updates all values. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] -
override
-
-
- operator []=(K key, V value) - → void - -
-
- Associates the key with the given value. [...] -
override
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/MapView.html b/doc/api/dart-collection/MapView/MapView.html deleted file mode 100644 index 534637a0..00000000 --- a/doc/api/dart-collection/MapView/MapView.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - MapView constructor - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
MapView
- -
- -
- - - -
-

MapView<K, V> constructor

- -
- const - MapView<K, V>(Map<K, V> map) -
- - -
-

Implementation

-
const MapView(Map<K, V> map) : _map = map;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/addAll.html b/doc/api/dart-collection/MapView/addAll.html deleted file mode 100644 index 3bcf02b4..00000000 --- a/doc/api/dart-collection/MapView/addAll.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - addAll method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Map<K, V> other) -
override
-
-
-

Adds all key/value pairs of other to this map.

-

If a key of other is already in this map, its value is overwritten.

-

The operation is equivalent to doing this[key] = value for each key -and associated value in other. It iterates over other, which must -therefore not change during the iteration.

-
- -
-

Implementation

-
void addAll(Map<K, V> other) {
-  _map.addAll(other);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/addEntries.html b/doc/api/dart-collection/MapView/addEntries.html deleted file mode 100644 index 8cc3f017..00000000 --- a/doc/api/dart-collection/MapView/addEntries.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - addEntries method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addEntries
- -
- -
- - - -
-

addEntries method

- -
- void - addEntries -(Iterable<MapEntry<K, V>> entries) -
override
-
-
-

Adds all key/value pairs of newEntries to this map.

-

If a key of newEntries is already in this map, -the corresponding value is overwritten.

-

The operation is equivalent to doing this[entry.key] = entry.value -for each MapEntry of the iterable.

-
- -
-

Implementation

-
void addEntries(Iterable<MapEntry<K, V>> entries) {
-  _map.addEntries(entries);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/cast.html b/doc/api/dart-collection/MapView/cast.html deleted file mode 100644 index 0d5dea27..00000000 --- a/doc/api/dart-collection/MapView/cast.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - cast method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<RK, RV> method

- -
- Map<RK, RV> - cast -<RK, RV>() -
override
-
-
-

Provides a view of this map as having RK keys and RV instances, -if necessary.

-

If this map is already a Map<RK, RV>, it is returned unchanged.

-

If this set contains only keys of type RK and values of type RV, -all read operations will work correctly. -If any operation exposes a non-RK key or non-RV value, -the operation will throw instead.

-

Entries added to the map must be valid for both a Map<K, V> and a -Map<RK, RV>.

-
- -
-

Implementation

-
Map<RK, RV> cast<RK, RV>() => _map.cast<RK, RV>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/clear.html b/doc/api/dart-collection/MapView/clear.html deleted file mode 100644 index be0dfb14..00000000 --- a/doc/api/dart-collection/MapView/clear.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - clear method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
override
-
-
-

Removes all pairs from the map.

-

After this, the map is empty.

-
- -
-

Implementation

-
void clear() {
-  _map.clear();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/containsKey.html b/doc/api/dart-collection/MapView/containsKey.html deleted file mode 100644 index b7a44c83..00000000 --- a/doc/api/dart-collection/MapView/containsKey.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - containsKey method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsKey
- -
- -
- - - -
-

containsKey method

- -
- bool - containsKey -(Object key) -
override
-
-
-

Returns true if this map contains the given key.

-

Returns true if any of the keys in the map are equal to key -according to the equality used by the map.

-
- -
-

Implementation

-
bool containsKey(Object? key) => _map.containsKey(key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/containsValue.html b/doc/api/dart-collection/MapView/containsValue.html deleted file mode 100644 index ba36fa94..00000000 --- a/doc/api/dart-collection/MapView/containsValue.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - containsValue method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsValue
- -
- -
- - - -
-

containsValue method

- -
- bool - containsValue -(Object value) -
override
-
-
-

Returns true if this map contains the given value.

-

Returns true if any of the values in the map are equal to value -according to the == operator.

-
- -
-

Implementation

-
bool containsValue(Object? value) => _map.containsValue(value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/entries.html b/doc/api/dart-collection/MapView/entries.html deleted file mode 100644 index af31d17f..00000000 --- a/doc/api/dart-collection/MapView/entries.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - entries property - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
entries
- -
- -
- - - -
-

entries property

- - -
- -
- Iterable<MapEntry<K, V>> - entries -
override
-
- -
-

The map entries of this.

-
-
-

Implementation

-
Iterable<MapEntry<K, V>> get entries => _map.entries;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/forEach.html b/doc/api/dart-collection/MapView/forEach.html deleted file mode 100644 index ddbcf5f0..00000000 --- a/doc/api/dart-collection/MapView/forEach.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - forEach method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void action(K key, V value)) -
override
-
-
-

Applies f to each key/value pair of the map.

-

Calling f must not add or remove keys from the map.

-
- -
-

Implementation

-
void forEach(void action(K key, V value)) {
-  _map.forEach(action);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/isEmpty.html b/doc/api/dart-collection/MapView/isEmpty.html deleted file mode 100644 index b924463c..00000000 --- a/doc/api/dart-collection/MapView/isEmpty.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - isEmpty property - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there is no key/value pair in the map.

-
-
-

Implementation

-
bool get isEmpty => _map.isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/isNotEmpty.html b/doc/api/dart-collection/MapView/isNotEmpty.html deleted file mode 100644 index 15e89bbd..00000000 --- a/doc/api/dart-collection/MapView/isNotEmpty.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - isNotEmpty property - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty -
override
-
- -
-

Returns true if there is at least one key/value pair in the map.

-
-
-

Implementation

-
bool get isNotEmpty => _map.isNotEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/keys.html b/doc/api/dart-collection/MapView/keys.html deleted file mode 100644 index 41a2d6d6..00000000 --- a/doc/api/dart-collection/MapView/keys.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - keys property - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
keys
- -
- -
- - - -
-

keys property

- - -
- -
- Iterable<K> - keys -
override
-
- -
-

The keys of this.

-

The returned iterable has efficient length and contains operations, -based on length and containsKey of the map.

-

The order of iteration is defined by the individual Map implementation, -but must be consistent between changes to the map.

-

Modifying the map while iterating the keys -may break the iteration.

-
-
-

Implementation

-
Iterable<K> get keys => _map.keys;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/length.html b/doc/api/dart-collection/MapView/length.html deleted file mode 100644 index 77a15051..00000000 --- a/doc/api/dart-collection/MapView/length.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - length property - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
override
-
- -
-

The number of key/value pairs in the map.

-
-
-

Implementation

-
int get length => _map.length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/map.html b/doc/api/dart-collection/MapView/map.html deleted file mode 100644 index 36576e9a..00000000 --- a/doc/api/dart-collection/MapView/map.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - map method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<K2, V2> method

- -
- Map<K2, V2> - map -<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) -
override
-
-
-

Returns a new map where all entries of this map are transformed by -the given f function.

-
- -
-

Implementation

-
Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) =>
-    _map.map<K2, V2>(transform);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/operator_get.html b/doc/api/dart-collection/MapView/operator_get.html deleted file mode 100644 index 5ff18aa5..00000000 --- a/doc/api/dart-collection/MapView/operator_get.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - operator [] method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- V - operator [] -(Object key) -
override
-
-
-

Returns the value for the given key or null if key is not in the map.

-

Some maps allow keys to have null as a value. -For those maps, a lookup using this operator cannot distinguish between a -key not being in the map and the key having a null value. -Methods like containsKey or putIfAbsent can be used if the distinction -is important.

-
- -
-

Implementation

-
V? operator [](Object? key) => _map[key];
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/operator_put.html b/doc/api/dart-collection/MapView/operator_put.html deleted file mode 100644 index 2a68fea6..00000000 --- a/doc/api/dart-collection/MapView/operator_put.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - operator []= method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(K key, V value) -
override
-
-
-

Associates the key with the given value.

-

If the key was already in the map, its associated value is changed. -Otherwise the key/value pair is added to the map.

-
- -
-

Implementation

-
void operator []=(K key, V value) {
-  _map[key] = value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/putIfAbsent.html b/doc/api/dart-collection/MapView/putIfAbsent.html deleted file mode 100644 index 442bcce0..00000000 --- a/doc/api/dart-collection/MapView/putIfAbsent.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - putIfAbsent method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
putIfAbsent
- -
- -
- - - -
-

putIfAbsent method

- -
- V - putIfAbsent -(K key, V ifAbsent()) -
override
-
-
-

Look up the value of key, or add a new value if it isn't there.

-

Returns the value associated to key, if there is one. -Otherwise calls ifAbsent to get a new value, associates key to -that value, and then returns the new value.

-
Map<String, int> scores = {'Bob': 36};
-for (var key in ['Bob', 'Rohan', 'Sophena']) {
-  scores.putIfAbsent(key, () => key.length);
-}
-scores['Bob'];      // 36
-scores['Rohan'];    //  5
-scores['Sophena'];  //  7
-
-

Calling ifAbsent must not add or remove keys from the map.

-
- -
-

Implementation

-
V putIfAbsent(K key, V ifAbsent()) => _map.putIfAbsent(key, ifAbsent);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/remove.html b/doc/api/dart-collection/MapView/remove.html deleted file mode 100644 index 35c7b6f2..00000000 --- a/doc/api/dart-collection/MapView/remove.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - remove method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- V - remove -(Object key) -
override
-
-
-

Removes key and its associated value, if present, from the map.

-

Returns the value associated with key before it was removed. -Returns null if key was not in the map.

-

Note that values can be null and a returned null value doesn't -always mean that the key was absent.

-
- -
-

Implementation

-
V? remove(Object? key) => _map.remove(key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/removeWhere.html b/doc/api/dart-collection/MapView/removeWhere.html deleted file mode 100644 index 88b4b55e..00000000 --- a/doc/api/dart-collection/MapView/removeWhere.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - removeWhere method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(K key, V value)) -
override
-
-
-

Removes all entries of this map that satisfy the given predicate.

-
- -
-

Implementation

-
void removeWhere(bool test(K key, V value)) {
-  _map.removeWhere(test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/toString.html b/doc/api/dart-collection/MapView/toString.html deleted file mode 100644 index 2435ed00..00000000 --- a/doc/api/dart-collection/MapView/toString.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - toString method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => _map.toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/update.html b/doc/api/dart-collection/MapView/update.html deleted file mode 100644 index e6a53d57..00000000 --- a/doc/api/dart-collection/MapView/update.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - update method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
update
- -
- -
- - - -
-

update method

- -
- V - update -(K key, V update(V value), { V ifAbsent() }) -
override
-
-
-

Updates the value for the provided key.

-

Returns the new value of the key.

-

If the key is present, invokes update with the current value and stores -the new value in the map.

-

If the key is not present and ifAbsent is provided, calls ifAbsent -and adds the key with the returned value to the map.

-

It's an error if the key is not present and ifAbsent is not provided.

-
- -
-

Implementation

-
V update(K key, V update(V value), {V Function()? ifAbsent}) =>
-    _map.update(key, update, ifAbsent: ifAbsent);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/updateAll.html b/doc/api/dart-collection/MapView/updateAll.html deleted file mode 100644 index e4788054..00000000 --- a/doc/api/dart-collection/MapView/updateAll.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - updateAll method - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
updateAll
- -
- -
- - - -
-

updateAll method

- -
- void - updateAll -(V update(K key, V value)) -
override
-
-
-

Updates all values.

-

Iterates over all entries in the map and updates them with the result -of invoking update.

-
- -
-

Implementation

-
void updateAll(V update(K key, V value)) {
-  _map.updateAll(update);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/MapView/values.html b/doc/api/dart-collection/MapView/values.html deleted file mode 100644 index bbe9b2c6..00000000 --- a/doc/api/dart-collection/MapView/values.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - values property - MapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
values
- -
- -
- - - -
-

values property

- - -
- -
- Iterable<V> - values -
override
-
- -
-

The values of this.

-

The values are iterated in the order of their corresponding keys. -This means that iterating keys and values in parallel will -provide matching pairs of keys and values.

-

The returned iterable has an efficient length method based on the -length of the map. Its Iterable.contains method is based on -== comparison.

-

Modifying the map while iterating the -values may break the iteration.

-
-
-

Implementation

-
Iterable<V> get values => _map.values;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue-class.html b/doc/api/dart-collection/Queue-class.html deleted file mode 100644 index 4c4c824c..00000000 --- a/doc/api/dart-collection/Queue-class.html +++ /dev/null @@ -1,680 +0,0 @@ - - - - - - - - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
Queue
- -
- -
- - - -
-

Queue<E> class

- -
-

A Queue is a collection that can be manipulated at both ends. One -can iterate over the elements of a queue through forEach or with -an Iterator.

-

It is generally not allowed to modify the queue (add or remove entries) -while an operation on the queue is being performed, for example during a -call to forEach. -Modifying the queue while it is being iterated will most likely break the -iteration. -This goes both for using the iterator directly, or for iterating an -Iterable returned by a method like map or where.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Queue() -
-
- Creates a queue. -
factory
-
-
- Queue.from(Iterable elements) -
-
- Creates a queue containing all elements. [...] -
factory
-
-
- Queue.of(Iterable<E> elements) -
-
- Creates a queue from elements. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, inherited
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, inherited
-
-
- length - int -
-
- Returns the number of elements in the iterable. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E value) - → void - -
-
- Adds value at the end of the queue. - -
-
- addAll(Iterable<E> iterable) - → void - -
-
- Adds all elements of iterable at the end of the queue. The -length of the queue is extended by the length of iterable. - -
-
- addFirst(E value) - → void - -
-
- Adds value at the beginning of the queue. - -
-
- addLast(E value) - → void - -
-
- Adds value at the end of the queue. - -
-
- cast<R>() - Queue<R> - -
-
- Provides a view of this queue as a queue of R instances, if necessary. [...] -
override
-
-
- clear() - → void - -
-
- Removes all elements in the queue. The size of the queue becomes zero. - -
-
- remove(Object value) - bool - -
-
- Remove a single instance of value from the queue. [...] - -
-
- removeFirst() - → E - -
-
- Removes and returns the first element of this queue. [...] - -
-
- removeLast() - → E - -
-
- Removes and returns the last element of the queue. [...] - -
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all elements matched by test from the queue. [...] - -
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all elements not matched by test from the queue. [...] - -
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- castFrom<S, T>(Queue<S> source) - Queue<T> - -
-
- Adapts source to be a Queue<T>. [...] -
override
-
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/Queue.from.html b/doc/api/dart-collection/Queue/Queue.from.html deleted file mode 100644 index 63e96c34..00000000 --- a/doc/api/dart-collection/Queue/Queue.from.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - Queue.from constructor - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
Queue.from
- -
- -
- - - -
-

Queue<E>.from constructor

- -
- - Queue<E>.from(Iterable elements) -
- -
-

Creates a queue containing all elements.

-

The element order in the queue is as if the elements were added using -addLast in the order provided by elements.iterator.

-

All the elements should be instances of E. -The elements iterable itself may have any element type, so this -constructor can be used to down-cast a Queue, for example as:

-
Queue<SuperType> superQueue = ...;
-Queue<SubType> subQueue =
-    new Queue<SubType>.from(superQueue.whereType<SubType>());
-
-
- -
-

Implementation

-
factory Queue.from(Iterable elements) = ListQueue<E>.from;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/Queue.html b/doc/api/dart-collection/Queue/Queue.html deleted file mode 100644 index e21dbd5d..00000000 --- a/doc/api/dart-collection/Queue/Queue.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - Queue constructor - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
Queue
- -
- -
- - - -
-

Queue<E> constructor

- -
- - Queue<E>() -
- -
-

Creates a queue.

-
- -
-

Implementation

-
factory Queue() = ListQueue<E>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/Queue.of.html b/doc/api/dart-collection/Queue/Queue.of.html deleted file mode 100644 index e19046c6..00000000 --- a/doc/api/dart-collection/Queue/Queue.of.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - Queue.of constructor - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
Queue.of
- -
- -
- - - -
-

Queue<E>.of constructor

- -
- - Queue<E>.of(Iterable<E> elements) -
- -
-

Creates a queue from elements.

-

The element order in the queue is as if the elements were added using -addLast in the order provided by elements.iterator.

-
- -
-

Implementation

-
factory Queue.of(Iterable<E> elements) = ListQueue<E>.of;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/add.html b/doc/api/dart-collection/Queue/add.html deleted file mode 100644 index 9d38077e..00000000 --- a/doc/api/dart-collection/Queue/add.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - add method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(E value) - -
-
-

Adds value at the end of the queue.

-
- -
-

Implementation

-
void add(E value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/addAll.html b/doc/api/dart-collection/Queue/addAll.html deleted file mode 100644 index 7eb49ba6..00000000 --- a/doc/api/dart-collection/Queue/addAll.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - addAll method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> iterable) - -
-
-

Adds all elements of iterable at the end of the queue. The -length of the queue is extended by the length of iterable.

-
- -
-

Implementation

-
void addAll(Iterable<E> iterable);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/addFirst.html b/doc/api/dart-collection/Queue/addFirst.html deleted file mode 100644 index 52defdcd..00000000 --- a/doc/api/dart-collection/Queue/addFirst.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - addFirst method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addFirst
- -
- -
- - - -
-

addFirst method

- -
- void - addFirst -(E value) - -
-
-

Adds value at the beginning of the queue.

-
- -
-

Implementation

-
void addFirst(E value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/addLast.html b/doc/api/dart-collection/Queue/addLast.html deleted file mode 100644 index b13f68ef..00000000 --- a/doc/api/dart-collection/Queue/addLast.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - addLast method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addLast
- -
- -
- - - -
-

addLast method

- -
- void - addLast -(E value) - -
-
-

Adds value at the end of the queue.

-
- -
-

Implementation

-
void addLast(E value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/cast.html b/doc/api/dart-collection/Queue/cast.html deleted file mode 100644 index 72076f5e..00000000 --- a/doc/api/dart-collection/Queue/cast.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - cast method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Queue<R> - cast -<R>() -
override
-
-
-

Provides a view of this queue as a queue of R instances, if necessary.

-

If this queue contains only instances of R, all read operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

Elements added to the queue (e.g., by using addFirst or addAll) -must be instance of R to be valid arguments to the adding function, -and they must be instances of E as well to be accepted by -this queue as well.

-
- -
-

Implementation

-
Queue<R> cast<R>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/castFrom.html b/doc/api/dart-collection/Queue/castFrom.html deleted file mode 100644 index d192bd2a..00000000 --- a/doc/api/dart-collection/Queue/castFrom.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - castFrom method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
castFrom
- -
- -
- - - -
-

castFrom<S, T> method

- -
- Queue<T> - castFrom -<S, T>(Queue<S> source) -
override
-
-
-

Adapts source to be a Queue<T>.

-

Any time the queue would produce an element that is not a T, -the element access will throw.

-

Any time a T value is attempted stored into the adapted queue, -the store will throw unless the value is also an instance of S.

-

If all accessed elements of source are actually instances of T, -and if all elements stored into the returned queue are actually instance -of S, -then the returned queue can be used as a Queue<T>.

-
- -
-

Implementation

-
static Queue<T> castFrom<S, T>(Queue<S> source) => CastQueue<S, T>(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/clear.html b/doc/api/dart-collection/Queue/clear.html deleted file mode 100644 index eecd3359..00000000 --- a/doc/api/dart-collection/Queue/clear.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - clear method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() - -
-
-

Removes all elements in the queue. The size of the queue becomes zero.

-
- -
-

Implementation

-
void clear();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/length.html b/doc/api/dart-collection/Queue/length.html deleted file mode 100644 index ee0d3272..00000000 --- a/doc/api/dart-collection/Queue/length.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - length property - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
inherited
-
- -
-

Returns the number of elements in the iterable.

-

This is an efficient operation that doesn't require iterating through -the elements.

-
-
-

Implementation

-
int get length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/remove.html b/doc/api/dart-collection/Queue/remove.html deleted file mode 100644 index 8b821089..00000000 --- a/doc/api/dart-collection/Queue/remove.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - remove method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object value) - -
-
-

Remove a single instance of value from the queue.

-

Returns true if a value was removed, or false if the queue -contained no element equal to value.

-
- -
-

Implementation

-
bool remove(Object? value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/removeFirst.html b/doc/api/dart-collection/Queue/removeFirst.html deleted file mode 100644 index dd87efaa..00000000 --- a/doc/api/dart-collection/Queue/removeFirst.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - removeFirst method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeFirst
- -
- -
- - - -
-

removeFirst method

- -
- E - removeFirst -() - -
-
-

Removes and returns the first element of this queue.

-

The queue must not be empty when this method is called.

-
- -
-

Implementation

-
E removeFirst();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/removeLast.html b/doc/api/dart-collection/Queue/removeLast.html deleted file mode 100644 index 01a43d98..00000000 --- a/doc/api/dart-collection/Queue/removeLast.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - removeLast method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeLast
- -
- -
- - - -
-

removeLast method

- -
- E - removeLast -() - -
-
-

Removes and returns the last element of the queue.

-

The queue must not be empty when this method is called.

-
- -
-

Implementation

-
E removeLast();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/removeWhere.html b/doc/api/dart-collection/Queue/removeWhere.html deleted file mode 100644 index 2801d043..00000000 --- a/doc/api/dart-collection/Queue/removeWhere.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - removeWhere method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(E element)) - -
-
-

Removes all elements matched by test from the queue.

-

The test function must not throw or modify the queue.

-
- -
-

Implementation

-
void removeWhere(bool test(E element));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/Queue/retainWhere.html b/doc/api/dart-collection/Queue/retainWhere.html deleted file mode 100644 index c3219552..00000000 --- a/doc/api/dart-collection/Queue/retainWhere.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - retainWhere method - Queue class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainWhere
- -
- -
- - - -
-

retainWhere method

- -
- void - retainWhere -(bool test(E element)) - -
-
-

Removes all elements not matched by test from the queue.

-

The test function must not throw or modify the queue.

-
- -
-

Implementation

-
void retainWhere(bool test(E element));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetBase-class.html b/doc/api/dart-collection/SetBase-class.html deleted file mode 100644 index fc721e67..00000000 --- a/doc/api/dart-collection/SetBase-class.html +++ /dev/null @@ -1,694 +0,0 @@ - - - - - - - - SetBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SetBase
- -
- -
- - - -
-

SetBase<E> class

- -
-

Base implementation of Set.

-

This class provides a base implementation of a Set that depends only -on the abstract members: add, contains, lookup, remove, -iterator, length and toSet.

-

Some of the methods assume that toSet creates a modifiable set. -If using this base class for an unmodifiable set, -where toSet should return an unmodifiable set, -it's necessary to reimplement -retainAll, union, intersection and difference.

-

Implementations of Set using this base should consider also implementing -clear in constant time. The default implementation works by removing every -element.

-
- -
-
- - -
Mixed in types
-
- - - -
-
- -
-

Constructors

- -
-
- SetBase() -
-
- -
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- iterator - Iterator<E> -
-
- Provides an iterator that iterates over the elements of this set. [...] -
read-only, inherited
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, inherited
-
-
- length - int -
-
- Returns the number of elements in the iterable. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E value) - bool - -
-
- Adds value to the set. [...] -
inherited
-
-
- addAll(Iterable<E> elements) - → void - -
-
- Adds all elements to this Set. [...] -
inherited
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- cast<R>() - Set<R> - -
-
- Provides a view of this set as a set of R instances. [...] -
inherited
-
-
- clear() - → void - -
-
- Removes all elements in the set. -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if value is in the set. -
inherited
-
-
- containsAll(Iterable<Object> other) - bool - -
-
- Returns whether this Set contains all the elements of other. -
inherited
-
-
- difference(Set<Object> other) - Set<E> - -
-
- Returns a new set with the elements of this that are not in other. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool f(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- intersection(Set<Object> other) - Set<E> - -
-
- Returns a new set which is the intersection between this set and other. [...] -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- lookup(Object element) - → E - -
-
- If an object equal to object is in the set, return it. [...] -
inherited
-
-
- map<T>(T f(E element)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- remove(Object value) - bool - -
-
- Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set. -
inherited
-
-
- removeAll(Iterable<Object> elements) - → void - -
-
- Removes each element of elements from this set. -
inherited
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that satisfy test. -
inherited
-
-
- retainAll(Iterable<Object> elements) - → void - -
-
- Removes all elements of this set that are not elements in elements. [...] -
inherited
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that fail to satisfy test. -
inherited
-
-
- singleWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int n) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int n) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- union(Set<E> other) - Set<E> - -
-
- Returns a new set which contains all the elements of this set and other. [...] -
inherited
-
-
- where(bool f(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- setToString(Set set) - String - -
-
- Converts a Set to a String. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetBase/SetBase.html b/doc/api/dart-collection/SetBase/SetBase.html deleted file mode 100644 index 4e2272c7..00000000 --- a/doc/api/dart-collection/SetBase/SetBase.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - SetBase constructor - SetBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SetBase
- -
- -
- - - -
-

SetBase<E> constructor

- -
- - SetBase<E>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetBase/setToString.html b/doc/api/dart-collection/SetBase/setToString.html deleted file mode 100644 index 4559650b..00000000 --- a/doc/api/dart-collection/SetBase/setToString.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - setToString method - SetBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
setToString
- -
- -
- - - -
-

setToString method

- -
- String - setToString -(Set set) - -
-
-

Converts a Set to a String.

-

Converts set to a string by converting each element to a string (by -calling Object.toString), joining them with ", ", and wrapping the -result in "{" and "}".

-

Handles circular references where converting one of the elements -to a string ends up converting set to a string again.

-
- -
-

Implementation

-
static String setToString(Set set) =>
-    IterableBase.iterableToFullString(set, '{', '}');
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin-class.html b/doc/api/dart-collection/SetMixin-class.html deleted file mode 100644 index f0dbf835..00000000 --- a/doc/api/dart-collection/SetMixin-class.html +++ /dev/null @@ -1,685 +0,0 @@ - - - - - - - - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SetMixin
- -
- -
- - - -
-

SetMixin<E> class

- -
-

Mixin implementation of Set.

-

This class provides a base implementation of a Set that depends only -on the abstract members: add, contains, lookup, remove, -iterator, length and toSet.

-

Some of the methods assume that toSet creates a modifiable set. -If using this mixin for an unmodifiable set, -where toSet should return an unmodifiable set, -it's necessary to reimplement -retainAll, union, intersection and difference.

-

Implementations of Set using this mixin should consider also implementing -clear in constant time. The default implementation works by removing every -element.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- SetMixin() -
-
- -
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only, override
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, override
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, override
-
-
- iterator - Iterator<E> -
-
- Provides an iterator that iterates over the elements of this set. [...] -
read-only, override
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, override
-
-
- length - int -
-
- Returns the number of elements in the iterable. [...] -
read-only
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E value) - bool - -
-
- Adds value to the set. [...] -
override
-
-
- addAll(Iterable<E> elements) - → void - -
-
- Adds all elements to this Set. [...] -
override
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
override
-
-
- cast<R>() - Set<R> - -
-
- Provides a view of this set as a set of R instances. [...] -
override
-
-
- clear() - → void - -
-
- Removes all elements in the set. -
override
-
-
- contains(Object element) - bool - -
-
- Returns true if value is in the set. -
override
-
-
- containsAll(Iterable<Object> other) - bool - -
-
- Returns whether this Set contains all the elements of other. -
override
-
-
- difference(Set<Object> other) - Set<E> - -
-
- Returns a new set with the elements of this that are not in other. [...] -
override
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
override
-
-
- every(bool f(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
override
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
override
-
-
- firstWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
override
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
override
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
override
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
override
-
-
- intersection(Set<Object> other) - Set<E> - -
-
- Returns a new set which is the intersection between this set and other. [...] -
override
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
override
-
-
- lastWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
override
-
-
- lookup(Object element) - → E - -
-
- If an object equal to object is in the set, return it. [...] -
override
-
-
- map<T>(T f(E element)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
override
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
override
-
-
- remove(Object value) - bool - -
-
- Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set. -
override
-
-
- removeAll(Iterable<Object> elements) - → void - -
-
- Removes each element of elements from this set. -
override
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that satisfy test. -
override
-
-
- retainAll(Iterable<Object> elements) - → void - -
-
- Removes all elements of this set that are not elements in elements. [...] -
override
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that fail to satisfy test. -
override
-
-
- singleWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
override
-
-
- skip(int n) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
override
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
override
-
-
- take(int n) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
override
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
override
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
override
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
override
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- union(Set<E> other) - Set<E> - -
-
- Returns a new set which contains all the elements of this set and other. [...] -
override
-
-
- where(bool f(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
override
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/SetMixin.html b/doc/api/dart-collection/SetMixin/SetMixin.html deleted file mode 100644 index 6b949ae2..00000000 --- a/doc/api/dart-collection/SetMixin/SetMixin.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - SetMixin constructor - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SetMixin
- -
- -
- - - -
-

SetMixin<E> constructor

- -
- - SetMixin<E>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/add.html b/doc/api/dart-collection/SetMixin/add.html deleted file mode 100644 index 5c4f08a0..00000000 --- a/doc/api/dart-collection/SetMixin/add.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - add method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- bool - add -(E value) -
override
-
-
-

Adds value to the set.

-

Returns true if value (or an equal value) was not yet in the set. -Otherwise returns false and the set is not changed.

-

Example:

-
var set = new Set();
-var time1 = new DateTime.fromMillisecondsSinceEpoch(0);
-var time2 = new DateTime.fromMillisecondsSinceEpoch(0);
-// time1 and time2 are equal, but not identical.
-Expect.isTrue(time1 == time2);
-Expect.isFalse(identical(time1, time2));
-set.add(time1);  // => true.
-// A value equal to time2 exists already in the set, and the call to
-// add doesn't change the set.
-set.add(time2);  // => false.
-Expect.isTrue(set.length == 1);
-Expect.isTrue(identical(time1, set.first));
-
-
- -
-

Implementation

-
bool add(E value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/addAll.html b/doc/api/dart-collection/SetMixin/addAll.html deleted file mode 100644 index d5b1b4f2..00000000 --- a/doc/api/dart-collection/SetMixin/addAll.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - addAll method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> elements) -
override
-
-
-

Adds all elements to this Set.

-

Equivalent to adding each element in elements using add, -but some collections may be able to optimize it.

-
- -
-

Implementation

-
void addAll(Iterable<E> elements) {
-  for (E element in elements) add(element);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/any.html b/doc/api/dart-collection/SetMixin/any.html deleted file mode 100644 index 64de4e9a..00000000 --- a/doc/api/dart-collection/SetMixin/any.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - any method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
any
- -
- -
- - - -
-

any method

- -
- bool - any -(bool test(E element)) -
override
-
-
-

Checks whether any element of this iterable satisfies test.

-

Checks every element in iteration order, and returns true if -any of them make test return true, otherwise returns false.

-
- -
-

Implementation

-
bool any(bool test(E element)) {
-  for (E element in this) {
-    if (test(element)) return true;
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/cast.html b/doc/api/dart-collection/SetMixin/cast.html deleted file mode 100644 index d38799a6..00000000 --- a/doc/api/dart-collection/SetMixin/cast.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - cast method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Set<R> - cast -<R>() -
override
-
-
-

Provides a view of this set as a set of R instances.

-

If this set contains only instances of R, all read operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

Elements added to the set (e.g., by using add or addAll) -must be instance of R to be valid arguments to the adding function, -and they must be instances of E as well to be accepted by -this set as well.

-
- -
-

Implementation

-
Set<R> cast<R>() => Set.castFrom<E, R>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/clear.html b/doc/api/dart-collection/SetMixin/clear.html deleted file mode 100644 index b4517255..00000000 --- a/doc/api/dart-collection/SetMixin/clear.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - clear method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
override
-
-
-

Removes all elements in the set.

-
- -
-

Implementation

-
void clear() {
-  removeAll(toList());
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/contains.html b/doc/api/dart-collection/SetMixin/contains.html deleted file mode 100644 index 6f9d89b9..00000000 --- a/doc/api/dart-collection/SetMixin/contains.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - contains method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- bool - contains -(Object element) -
override
-
-
-

Returns true if value is in the set.

-
- -
-

Implementation

-
bool contains(Object? element);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/containsAll.html b/doc/api/dart-collection/SetMixin/containsAll.html deleted file mode 100644 index 1afd0102..00000000 --- a/doc/api/dart-collection/SetMixin/containsAll.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - containsAll method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsAll
- -
- -
- - - -
-

containsAll method

- -
- bool - containsAll -(Iterable<Object> other) -
override
-
-
-

Returns whether this Set contains all the elements of other.

-
- -
-

Implementation

-
bool containsAll(Iterable<Object?> other) {
-  for (var o in other) {
-    if (!contains(o)) return false;
-  }
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/difference.html b/doc/api/dart-collection/SetMixin/difference.html deleted file mode 100644 index d7edcd7e..00000000 --- a/doc/api/dart-collection/SetMixin/difference.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - difference method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
difference
- -
- -
- - - -
-

difference method

- -
- Set<E> - difference -(Set<Object> other) -
override
-
-
-

Returns a new set with the elements of this that are not in other.

-

That is, the returned set contains all the elements of this Set that -are not elements of other according to other.contains.

-
- -
-

Implementation

-
Set<E> difference(Set<Object?> other) {
-  Set<E> result = toSet();
-  for (E element in this) {
-    if (other.contains(element)) result.remove(element);
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/elementAt.html b/doc/api/dart-collection/SetMixin/elementAt.html deleted file mode 100644 index ee2f247f..00000000 --- a/doc/api/dart-collection/SetMixin/elementAt.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - elementAt method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
elementAt
- -
- -
- - - -
-

elementAt method

- -
- E - elementAt -(int index) -
override
-
-
-

Returns the indexth element.

-

The index must be non-negative and less than length. -Index zero represents the first element (so iterable.elementAt(0) is -equivalent to iterable.first).

-

May iterate through the elements in iteration order, ignoring the -first index elements and then returning the next. -Some iterables may have a more efficient way to find the element.

-
- -
-

Implementation

-
E elementAt(int index) {
-  ArgumentError.checkNotNull(index, "index");
-  RangeError.checkNotNegative(index, "index");
-  int elementIndex = 0;
-  for (E element in this) {
-    if (index == elementIndex) return element;
-    elementIndex++;
-  }
-  throw RangeError.index(index, this, "index", null, elementIndex);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/every.html b/doc/api/dart-collection/SetMixin/every.html deleted file mode 100644 index 41111a68..00000000 --- a/doc/api/dart-collection/SetMixin/every.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - every method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
every
- -
- -
- - - -
-

every method

- -
- bool - every -(bool f(E element)) -
override
-
-
-

Checks whether every element of this iterable satisfies test.

-

Checks every element in iteration order, and returns false if -any of them make test return false, otherwise returns true.

-
- -
-

Implementation

-
bool every(bool f(E element)) {
-  for (E element in this) {
-    if (!f(element)) return false;
-  }
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/expand.html b/doc/api/dart-collection/SetMixin/expand.html deleted file mode 100644 index c5559bbb..00000000 --- a/doc/api/dart-collection/SetMixin/expand.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - expand method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
expand
- -
- -
- - - -
-

expand<T> method

- -
- Iterable<T> - expand -<T>(Iterable<T> f(E element)) -
override
-
-
-

Expands each element of this Iterable into zero or more elements.

-

The resulting Iterable runs through the elements returned -by f for each element of this, in iteration order.

-

The returned Iterable is lazy, and calls f for each element -of this every time it's iterated.

-

Example:

-
var pairs = [[1, 2], [3, 4]];
-var flattened = pairs.expand((pair) => pair).toList();
-print(flattened); // => [1, 2, 3, 4];
-
-var input = [1, 2, 3];
-var duplicated = input.expand((i) => [i, i]).toList();
-print(duplicated); // => [1, 1, 2, 2, 3, 3]
-
-
- -
-

Implementation

-
Iterable<T> expand<T>(Iterable<T> f(E element)) =>
-    ExpandIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/first.html b/doc/api/dart-collection/SetMixin/first.html deleted file mode 100644 index ee7c3a8d..00000000 --- a/doc/api/dart-collection/SetMixin/first.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - first property - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first -
override
-
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  return it.current;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/firstWhere.html b/doc/api/dart-collection/SetMixin/firstWhere.html deleted file mode 100644 index 0e664af3..00000000 --- a/doc/api/dart-collection/SetMixin/firstWhere.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - firstWhere method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstWhere
- -
- -
- - - -
-

firstWhere method

- -
- E - firstWhere -(bool test(E value), { E orElse() }) -
override
-
-
-

Returns the first element that satisfies the given predicate test.

-

Iterates through elements and returns the first to satisfy test.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E firstWhere(bool test(E value), {E Function()? orElse}) {
-  for (E element in this) {
-    if (test(element)) return element;
-  }
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/fold.html b/doc/api/dart-collection/SetMixin/fold.html deleted file mode 100644 index a9568302..00000000 --- a/doc/api/dart-collection/SetMixin/fold.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - fold method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
fold
- -
- -
- - - -
-

fold<T> method

- -
- T - fold -<T>(T initialValue, T combine(T previousValue, E element)) -
override
-
-
-

Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value

-

Uses initialValue as the initial value, -then iterates through the elements and updates the value with -each element using the combine function, as if by:

-
var value = initialValue;
-for (E element in this) {
-  value = combine(value, element);
-}
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.fold(0, (prev, element) => prev + element);
-
-
- -
-

Implementation

-
T fold<T>(T initialValue, T combine(T previousValue, E element)) {
-  var value = initialValue;
-  for (E element in this) value = combine(value, element);
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/followedBy.html b/doc/api/dart-collection/SetMixin/followedBy.html deleted file mode 100644 index c639f6cf..00000000 --- a/doc/api/dart-collection/SetMixin/followedBy.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - followedBy method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
followedBy
- -
- -
- - - -
-

followedBy method

- -
- Iterable<E> - followedBy -(Iterable<E> other) -
override
-
-
-

Returns the lazy concatentation of this iterable and other.

-

The returned iterable will provide the same elements as this iterable, -and, after that, the elements of other, in the same order as in the -original iterables.

-
- -
-

Implementation

-
Iterable<E> followedBy(Iterable<E> other) =>
-    FollowedByIterable<E>.firstEfficient(this, other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/forEach.html b/doc/api/dart-collection/SetMixin/forEach.html deleted file mode 100644 index e288425e..00000000 --- a/doc/api/dart-collection/SetMixin/forEach.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - forEach method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void f(E element)) -
override
-
-
-

Applies the function f to each element of this collection in iteration -order.

-
- -
-

Implementation

-
void forEach(void f(E element)) {
-  for (E element in this) f(element);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/intersection.html b/doc/api/dart-collection/SetMixin/intersection.html deleted file mode 100644 index ad362c61..00000000 --- a/doc/api/dart-collection/SetMixin/intersection.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - intersection method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
intersection
- -
- -
- - - -
-

intersection method

- -
- Set<E> - intersection -(Set<Object> other) -
override
-
-
-

Returns a new set which is the intersection between this set and other.

-

That is, the returned set contains all the elements of this Set that -are also elements of other according to other.contains.

-
- -
-

Implementation

-
Set<E> intersection(Set<Object?> other) {
-  Set<E> result = toSet();
-  for (E element in this) {
-    if (!other.contains(element)) result.remove(element);
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/isEmpty.html b/doc/api/dart-collection/SetMixin/isEmpty.html deleted file mode 100644 index e6924514..00000000 --- a/doc/api/dart-collection/SetMixin/isEmpty.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - isEmpty property - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there are no elements in this collection.

-

May be computed by checking if iterator.moveNext() returns false.

-
-
-

Implementation

-
bool get isEmpty => length == 0;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/isNotEmpty.html b/doc/api/dart-collection/SetMixin/isNotEmpty.html deleted file mode 100644 index d772adc8..00000000 --- a/doc/api/dart-collection/SetMixin/isNotEmpty.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - isNotEmpty property - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty -
override
-
- -
-

Returns true if there is at least one element in this collection.

-

May be computed by checking if iterator.moveNext() returns true.

-
-
-

Implementation

-
bool get isNotEmpty => length != 0;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/iterator.html b/doc/api/dart-collection/SetMixin/iterator.html deleted file mode 100644 index 7b218f85..00000000 --- a/doc/api/dart-collection/SetMixin/iterator.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - iterator property - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator -
override
-
- -
-

Provides an iterator that iterates over the elements of this set.

-

The order of iteration is defined by the individual Set implementation, -but must be consistent between changes to the set.

-
-
-

Implementation

-
Iterator<E> get iterator;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/join.html b/doc/api/dart-collection/SetMixin/join.html deleted file mode 100644 index ece3ef95..00000000 --- a/doc/api/dart-collection/SetMixin/join.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - join method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
join
- -
- -
- - - -
-

join method

- -
- String - join -([String separator = "" ]) -
override
-
-
-

Converts each element to a String and concatenates the strings.

-

Iterates through elements of this iterable, -converts each one to a String by calling Object.toString, -and then concatenates the strings, with the -separator string interleaved between the elements.

-
- -
-

Implementation

-
String join([String separator = ""]) {
-  Iterator<E> iterator = this.iterator;
-  if (!iterator.moveNext()) return "";
-  StringBuffer buffer = StringBuffer();
-  if (separator == null || separator == "") {
-    do {
-      buffer.write(iterator.current);
-    } while (iterator.moveNext());
-  } else {
-    buffer.write(iterator.current);
-    while (iterator.moveNext()) {
-      buffer.write(separator);
-      buffer.write(iterator.current);
-    }
-  }
-  return buffer.toString();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/last.html b/doc/api/dart-collection/SetMixin/last.html deleted file mode 100644 index 8ef5229d..00000000 --- a/doc/api/dart-collection/SetMixin/last.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - last property - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last -
override
-
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  E result;
-  do {
-    result = it.current;
-  } while (it.moveNext());
-  return result;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/lastWhere.html b/doc/api/dart-collection/SetMixin/lastWhere.html deleted file mode 100644 index afc42826..00000000 --- a/doc/api/dart-collection/SetMixin/lastWhere.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - lastWhere method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastWhere
- -
- -
- - - -
-

lastWhere method

- -
- E - lastWhere -(bool test(E value), { E orElse() }) -
override
-
-
-

Returns the last element that satisfies the given predicate test.

-

An iterable that can access its elements directly may check its -elements in any order (for example a list starts by checking the -last element and then moves towards the start of the list). -The default implementation iterates elements in iteration order, -checks test(element) for each, -and finally returns that last one that matched.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E lastWhere(bool test(E value), {E Function()? orElse}) {
-  late E result;
-  bool foundMatching = false;
-  for (E element in this) {
-    if (test(element)) {
-      result = element;
-      foundMatching = true;
-    }
-  }
-  if (foundMatching) return result;
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/length.html b/doc/api/dart-collection/SetMixin/length.html deleted file mode 100644 index b515d1be..00000000 --- a/doc/api/dart-collection/SetMixin/length.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - length property - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length - -
- -
-

Returns the number of elements in the iterable.

-

This is an efficient operation that doesn't require iterating through -the elements.

-
-
-

Implementation

-
int get length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/lookup.html b/doc/api/dart-collection/SetMixin/lookup.html deleted file mode 100644 index 4ddfd1dd..00000000 --- a/doc/api/dart-collection/SetMixin/lookup.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - lookup method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lookup
- -
- -
- - - -
-

lookup method

- -
- E - lookup -(Object element) -
override
-
-
-

If an object equal to object is in the set, return it.

-

Checks whether object is in the set, like contains, and if so, -returns the object in the set, otherwise returns null.

-

If the equality relation used by the set is not identity, -then the returned object may not be identical to object. -Some set implementations may not be able to implement this method. -If the contains method is computed, -rather than being based on an actual object instance, -then there may not be a specific object instance representing the -set element.

-
- -
-

Implementation

-
E? lookup(Object? element);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/map.html b/doc/api/dart-collection/SetMixin/map.html deleted file mode 100644 index 765f6c5b..00000000 --- a/doc/api/dart-collection/SetMixin/map.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - map method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<T> method

- -
- Iterable<T> - map -<T>(T f(E element)) -
override
-
-
-

Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order.

-

This method returns a view of the mapped elements. As long as the -returned Iterable is not iterated over, the supplied function f will -not be invoked. The transformed elements will not be cached. Iterating -multiple times over the returned Iterable will invoke the supplied -function f multiple times on the same element.

-

Methods on the returned iterable are allowed to omit calling f -on any element where the result isn't needed. -For example, elementAt may call f only once.

-
- -
-

Implementation

-
Iterable<T> map<T>(T f(E element)) =>
-    EfficientLengthMappedIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/reduce.html b/doc/api/dart-collection/SetMixin/reduce.html deleted file mode 100644 index ebe6d489..00000000 --- a/doc/api/dart-collection/SetMixin/reduce.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - reduce method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
reduce
- -
- -
- - - -
-

reduce method

- -
- E - reduce -(E combine(E value E element)) -
override
-
-
-

Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function.

-

The iterable must have at least one element. -If it has only one element, that element is returned.

-

Otherwise this method starts with the first element from the iterator, -and then combines it with the remaining elements in iteration order, -as if by:

-
E value = iterable.first;
-iterable.skip(1).forEach((element) {
-  value = combine(value, element);
-});
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.reduce((value, element) => value + element);
-
-
- -
-

Implementation

-
E reduce(E combine(E value, E element)) {
-  Iterator<E> iterator = this.iterator;
-  if (!iterator.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  E value = iterator.current;
-  while (iterator.moveNext()) {
-    value = combine(value, iterator.current);
-  }
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/remove.html b/doc/api/dart-collection/SetMixin/remove.html deleted file mode 100644 index e2184476..00000000 --- a/doc/api/dart-collection/SetMixin/remove.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - remove method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object value) -
override
-
-
-

Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set.

-
- -
-

Implementation

-
bool remove(Object? value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/removeAll.html b/doc/api/dart-collection/SetMixin/removeAll.html deleted file mode 100644 index 57b24005..00000000 --- a/doc/api/dart-collection/SetMixin/removeAll.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - removeAll method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeAll
- -
- -
- - - -
-

removeAll method

- -
- void - removeAll -(Iterable<Object> elements) -
override
-
-
-

Removes each element of elements from this set.

-
- -
-

Implementation

-
void removeAll(Iterable<Object?> elements) {
-  for (Object? element in elements) remove(element);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/removeWhere.html b/doc/api/dart-collection/SetMixin/removeWhere.html deleted file mode 100644 index 63c33c8a..00000000 --- a/doc/api/dart-collection/SetMixin/removeWhere.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - removeWhere method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(E element)) -
override
-
-
-

Removes all elements of this set that satisfy test.

-
- -
-

Implementation

-
void removeWhere(bool test(E element)) {
-  List<Object?> toRemove = [];
-  for (E element in this) {
-    if (test(element)) toRemove.add(element);
-  }
-  removeAll(toRemove);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/retainAll.html b/doc/api/dart-collection/SetMixin/retainAll.html deleted file mode 100644 index 21288eee..00000000 --- a/doc/api/dart-collection/SetMixin/retainAll.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - retainAll method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainAll
- -
- -
- - - -
-

retainAll method

- -
- void - retainAll -(Iterable<Object> elements) -
override
-
-
-

Removes all elements of this set that are not elements in elements.

-

Checks for each element of elements whether there is an element in this -set that is equal to it (according to this.contains), and if so, the -equal element in this set is retained, and elements that are not equal -to any element in elements are removed.

-
- -
-

Implementation

-
void retainAll(Iterable<Object?> elements) {
-  // Create a copy of the set, remove all of elements from the copy,
-  // then remove all remaining elements in copy from this.
-  Set<E> toRemove = toSet();
-  for (Object? o in elements) {
-    toRemove.remove(o);
-  }
-  removeAll(toRemove);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/retainWhere.html b/doc/api/dart-collection/SetMixin/retainWhere.html deleted file mode 100644 index b9a4cd6d..00000000 --- a/doc/api/dart-collection/SetMixin/retainWhere.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - retainWhere method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainWhere
- -
- -
- - - -
-

retainWhere method

- -
- void - retainWhere -(bool test(E element)) -
override
-
-
-

Removes all elements of this set that fail to satisfy test.

-
- -
-

Implementation

-
void retainWhere(bool test(E element)) {
-  List<Object?> toRemove = [];
-  for (E element in this) {
-    if (!test(element)) toRemove.add(element);
-  }
-  removeAll(toRemove);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/single.html b/doc/api/dart-collection/SetMixin/single.html deleted file mode 100644 index c4229de6..00000000 --- a/doc/api/dart-collection/SetMixin/single.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - single property - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- E - single -
override
-
- -
-

Checks that this iterable has only one element, and returns that element.

-

Throws a StateError if this is empty or has more than one element.

-
-
-

Implementation

-
E get single {
-  if (length > 1) throw IterableElementError.tooMany();
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) throw IterableElementError.noElement();
-  E result = it.current;
-  return result;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/singleWhere.html b/doc/api/dart-collection/SetMixin/singleWhere.html deleted file mode 100644 index 9f05efe8..00000000 --- a/doc/api/dart-collection/SetMixin/singleWhere.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - singleWhere method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
singleWhere
- -
- -
- - - -
-

singleWhere method

- -
- E - singleWhere -(bool test(E value), { E orElse() }) -
override
-
-
-

Returns the single element that satisfies test.

-

Checks elements to see if test(element) returns true. -If exactly one element satisfies test, that element is returned. -If more than one matching element is found, throws StateError. -If no matching element is found, returns the result of orElse. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E singleWhere(bool test(E value), {E Function()? orElse}) {
-  late E result;
-  bool foundMatching = false;
-  for (E element in this) {
-    if (test(element)) {
-      if (foundMatching) {
-        throw IterableElementError.tooMany();
-      }
-      result = element;
-      foundMatching = true;
-    }
-  }
-  if (foundMatching) return result;
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/skip.html b/doc/api/dart-collection/SetMixin/skip.html deleted file mode 100644 index e64ce71d..00000000 --- a/doc/api/dart-collection/SetMixin/skip.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - skip method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
skip
- -
- -
- - - -
-

skip method

- -
- Iterable<E> - skip -(int n) -
override
-
-
-

Returns an Iterable that provides all but the first count elements.

-

When the returned iterable is iterated, it starts iterating over this, -first skipping past the initial count elements. -If this has fewer than count elements, then the resulting Iterable is -empty. -After that, the remaining elements are iterated in the same order as -in this iterable.

-

Some iterables may be able to find later elements without first iterating -through earlier elements, for example when iterating a List. -Such iterables are allowed to ignore the initial skipped elements.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> skip(int n) {
-  return SkipIterable<E>(this, n);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/skipWhile.html b/doc/api/dart-collection/SetMixin/skipWhile.html deleted file mode 100644 index 295d66f7..00000000 --- a/doc/api/dart-collection/SetMixin/skipWhile.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - skipWhile method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
skipWhile
- -
- -
- - - -
-

skipWhile method

- -
- Iterable<E> - skipWhile -(bool test(E value)) -
override
-
-
-

Returns an Iterable that skips leading elements while test is satisfied.

-

The filtering happens lazily. Every new Iterator of the returned -iterable iterates over all elements of this.

-

The returned iterable provides elements by iterating this iterable, -but skipping over all initial elements where test(element) returns -true. If all elements satisfy test the resulting iterable is empty, -otherwise it iterates the remaining elements in their original order, -starting with the first element for which test(element) returns false.

-
- -
-

Implementation

-
Iterable<E> skipWhile(bool test(E value)) {
-  return SkipWhileIterable<E>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/take.html b/doc/api/dart-collection/SetMixin/take.html deleted file mode 100644 index f2904103..00000000 --- a/doc/api/dart-collection/SetMixin/take.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - take method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
take
- -
- -
- - - -
-

take method

- -
- Iterable<E> - take -(int n) -
override
-
-
-

Returns a lazy iterable of the count first elements of this iterable.

-

The returned Iterable may contain fewer than count elements, if this -contains fewer than count elements.

-

The elements can be computed by stepping through iterator until count -elements have been seen.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> take(int n) {
-  return TakeIterable<E>(this, n);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/takeWhile.html b/doc/api/dart-collection/SetMixin/takeWhile.html deleted file mode 100644 index 32788316..00000000 --- a/doc/api/dart-collection/SetMixin/takeWhile.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - takeWhile method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
takeWhile
- -
- -
- - - -
-

takeWhile method

- -
- Iterable<E> - takeWhile -(bool test(E value)) -
override
-
-
-

Returns a lazy iterable of the leading elements satisfying test.

-

The filtering happens lazily. Every new iterator of the returned -iterable starts iterating over the elements of this.

-

The elements can be computed by stepping through iterator until an -element is found where test(element) is false. At that point, -the returned iterable stops (its moveNext() returns false).

-
- -
-

Implementation

-
Iterable<E> takeWhile(bool test(E value)) {
-  return TakeWhileIterable<E>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/toList.html b/doc/api/dart-collection/SetMixin/toList.html deleted file mode 100644 index 9c3fe671..00000000 --- a/doc/api/dart-collection/SetMixin/toList.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - toList method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toList
- -
- -
- - - -
-

toList method

- -
- List<E> - toList -({bool growable: true }) -
override
-
-
-

Creates a List containing the elements of this Iterable.

-

The elements are in iteration order. -The list is fixed-length if growable is false.

-
- -
-

Implementation

-
List<E> toList({bool growable = true}) =>
-    List<E>.of(this, growable: growable);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/toSet.html b/doc/api/dart-collection/SetMixin/toSet.html deleted file mode 100644 index 6a51fba6..00000000 --- a/doc/api/dart-collection/SetMixin/toSet.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - toSet method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSet
- -
- -
- - - -
-

toSet method

- -
- Set<E> - toSet -() -
override
-
-
-

Creates a Set containing the same elements as this iterable.

-

The set may contain fewer elements than the iterable, -if the iterable contains an element more than once, -or it contains one or more elements that are equal. -The order of the elements in the set is not guaranteed to be the same -as for the iterable.

-
- -
-

Implementation

-
Set<E> toSet();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/toString.html b/doc/api/dart-collection/SetMixin/toString.html deleted file mode 100644 index 713c38aa..00000000 --- a/doc/api/dart-collection/SetMixin/toString.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - toString method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => IterableBase.iterableToFullString(this, '{', '}');
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/union.html b/doc/api/dart-collection/SetMixin/union.html deleted file mode 100644 index c6bfc46d..00000000 --- a/doc/api/dart-collection/SetMixin/union.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - union method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
union
- -
- -
- - - -
-

union method

- -
- Set<E> - union -(Set<E> other) -
override
-
-
-

Returns a new set which contains all the elements of this set and other.

-

That is, the returned set contains all the elements of this Set and -all the elements of other.

-
- -
-

Implementation

-
Set<E> union(Set<E> other) {
-  return toSet()..addAll(other);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/where.html b/doc/api/dart-collection/SetMixin/where.html deleted file mode 100644 index a6bcf4b5..00000000 --- a/doc/api/dart-collection/SetMixin/where.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - where method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
where
- -
- -
- - - -
-

where method

- -
- Iterable<E> - where -(bool f(E element)) -
override
-
-
-

Returns a new lazy Iterable with all elements that satisfy the -predicate test.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -As long as the returned Iterable is not iterated over, -the supplied function test will not be invoked. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may invoke the supplied -function test multiple times on the same element.

-
- -
-

Implementation

-
Iterable<E> where(bool f(E element)) => WhereIterable<E>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SetMixin/whereType.html b/doc/api/dart-collection/SetMixin/whereType.html deleted file mode 100644 index d9fddbf9..00000000 --- a/doc/api/dart-collection/SetMixin/whereType.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - whereType method - SetMixin class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
whereType
- -
- -
- - - -
-

whereType<T> method

- -
- Iterable<T> - whereType -<T>() -
override
-
-
-

Returns a new lazy Iterable with all elements that have type T.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may yield different results, -if the underlying elements change between iterations.

-
- -
-

Implementation

-
Iterable<T> whereType<T>() => WhereTypeIterable<T>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap-class.html b/doc/api/dart-collection/SplayTreeMap-class.html deleted file mode 100644 index e3d888a8..00000000 --- a/doc/api/dart-collection/SplayTreeMap-class.html +++ /dev/null @@ -1,535 +0,0 @@ - - - - - - - - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeMap
- -
- -
- - - -
-

SplayTreeMap<K, V> class

- -
-

A Map of objects that can be ordered relative to each other.

-

The map is based on a self-balancing binary tree. It allows most operations -in amortized logarithmic time.

-

Keys of the map are compared using the compare function passed in -the constructor, both for ordering and for equality. -If the map contains only the key a, then map.containsKey(b) -will return true if and only if compare(a, b) == 0, -and the value of a == b is not even checked. -If the compare function is omitted, the objects are assumed to be -Comparable, and are compared using their Comparable.compareTo method. -Non-comparable objects (including null) will not work as keys -in that case.

-

To allow calling operator [], remove or containsKey with objects -that are not supported by the compare function, an extra isValidKey -predicate function can be supplied. This function is tested before -using the compare function on an argument value that may not be a K -value. If omitted, the isValidKey function defaults to testing if the -value is a K.

-
- -
-
- - -
Mixed in types
-
- - - -
-
- -
-

Constructors

- -
-
- SplayTreeMap([int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) ]) -
-
- -
-
- SplayTreeMap.from(Map other, [ int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) ]) -
-
- Creates a SplayTreeMap that contains all key/value pairs of other. [...] -
factory
-
-
- SplayTreeMap.fromIterable(Iterable iterable, { K key(dynamic element), V value(dynamic element), int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) }) -
-
- Creates a SplayTreeMap where the keys and values are computed from the -iterable. [...] -
factory
-
-
- SplayTreeMap.fromIterables(Iterable<K> keys, Iterable<V> values, [ int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) ]) -
-
- Creates a SplayTreeMap associating the given keys to values. [...] -
factory
-
-
- SplayTreeMap.of(Map<K, V> other, [ int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) ]) -
-
- Creates a SplayTreeMap that contains all key/value pairs of other. -
factory
-
-
-
- -
-

Properties

- -
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only, override
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only, override
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only, override
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only, override
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only, override
-
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addAll(Map<K, V> other) - → void - -
-
- Adds all key/value pairs of other to this map. [...] -
override
-
-
- clear() - → void - -
-
- Removes all pairs from the map. [...] -
override
-
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] -
override
-
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] -
override
-
-
- firstKey() - → K - -
-
- Get the first key in the map. Returns null if the map is empty. - -
-
- firstKeyAfter(K key) - → K - -
-
- Get the first key in the map that is strictly larger than key. Returns -null if no key was not found. - -
-
- forEach(void f(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] -
override
-
-
- lastKey() - → K - -
-
- Get the last key in the map. Returns null if the map is empty. - -
-
- lastKeyBefore(K key) - → K - -
-
- Get the last key in the map that is strictly smaller than key. Returns -null if no key was not found. - -
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- Look up the value of key, or add a new value if it isn't there. [...] -
override
-
-
- remove(Object key) - → V - -
-
- Removes key and its associated value, if present, from the map. [...] -
override
-
-
- addEntries(Iterable<MapEntry<K, V>> newEntries) - → void - -
-
- Adds all key/value pairs of newEntries to this map. [...] -
inherited
-
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] -
inherited
-
-
- map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- removeWhere(bool test(K key, V value)) - → void - -
-
- Removes all entries of this map that satisfy the given predicate. -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- Updates the value for the provided key. [...] -
inherited
-
-
- updateAll(V update(K key, V value)) - → void - -
-
- Updates all values. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] -
override
-
-
- operator []=(K key, V value) - → void - -
-
- Associates the key with the given value. [...] -
override
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.from.html b/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.from.html deleted file mode 100644 index 1bd032f0..00000000 --- a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.from.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - SplayTreeMap.from constructor - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeMap.from
- -
- -
- - - -
-

SplayTreeMap<K, V>.from constructor

- -
- - SplayTreeMap<K, V>.from(Map other, [ int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) ]) -
- -
-

Creates a SplayTreeMap that contains all key/value pairs of other.

-

The keys must all be instances of K and the values of V. -The other map itself can have any type.

-
- -
-

Implementation

-
factory SplayTreeMap.from(Map<dynamic, dynamic> other,
-    [int Function(K key1, K key2)? compare,
-    bool Function(dynamic potentialKey)? isValidKey]) {
-  if (other is Map<K, V>) {
-    return SplayTreeMap<K, V>.of(other, compare, isValidKey);
-  }
-  SplayTreeMap<K, V> result = SplayTreeMap<K, V>(compare, isValidKey);
-  other.forEach((dynamic k, dynamic v) {
-    result[k] = v;
-  });
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.fromIterable.html b/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.fromIterable.html deleted file mode 100644 index 2412a650..00000000 --- a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.fromIterable.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - SplayTreeMap.fromIterable constructor - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeMap.fromIterable
- -
- -
- - - -
-

SplayTreeMap<K, V>.fromIterable constructor

- -
- - SplayTreeMap<K, V>.fromIterable(Iterable iterable, { K key(dynamic element), V value(dynamic element), int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) }) -
- -
-

Creates a SplayTreeMap where the keys and values are computed from the -iterable.

-

For each element of the iterable this constructor computes a key/value -pair, by applying key and value respectively.

-

The keys of the key/value pairs do not need to be unique. The last -occurrence of a key will simply overwrite any previous value.

-

If no functions are specified for key and value the default is to -use the iterable value itself.

-
- -
-

Implementation

-
factory SplayTreeMap.fromIterable(Iterable iterable,
-    {K Function(dynamic element)? key,
-    V Function(dynamic element)? value,
-    int Function(K key1, K key2)? compare,
-    bool Function(dynamic potentialKey)? isValidKey}) {
-  SplayTreeMap<K, V> map = SplayTreeMap<K, V>(compare, isValidKey);
-  MapBase._fillMapWithMappedIterable(map, iterable, key, value);
-  return map;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.fromIterables.html b/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.fromIterables.html deleted file mode 100644 index 77b6a025..00000000 --- a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.fromIterables.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - SplayTreeMap.fromIterables constructor - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeMap.fromIterables
- -
- -
- - - -
-

SplayTreeMap<K, V>.fromIterables constructor

- -
- - SplayTreeMap<K, V>.fromIterables(Iterable<K> keys, Iterable<V> values, [ int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) ]) -
- -
-

Creates a SplayTreeMap associating the given keys to values.

-

This constructor iterates over keys and values and maps each element -of keys to the corresponding element of values.

-

If keys contains the same object multiple times, the last occurrence -overwrites the previous value.

-

It is an error if the two Iterables don't have the same length.

-
- -
-

Implementation

-
factory SplayTreeMap.fromIterables(Iterable<K> keys, Iterable<V> values,
-    [int Function(K key1, K key2)? compare,
-    bool Function(dynamic potentialKey)? isValidKey]) {
-  SplayTreeMap<K, V> map = SplayTreeMap<K, V>(compare, isValidKey);
-  MapBase._fillMapWithIterables(map, keys, values);
-  return map;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.html b/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.html deleted file mode 100644 index ab3c3831..00000000 --- a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - SplayTreeMap constructor - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeMap
- -
- -
- - - -
-

SplayTreeMap<K, V> constructor

- -
- - SplayTreeMap<K, V>([int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) ]) -
- - -
-

Implementation

-
SplayTreeMap(
-    [int Function(K key1, K key2)? compare,
-    bool Function(dynamic potentialKey)? isValidKey])
-    : _compare = compare ?? _defaultCompare<K>(),
-      _validKey = isValidKey ?? ((dynamic v) => v is K);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.of.html b/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.of.html deleted file mode 100644 index 230ed370..00000000 --- a/doc/api/dart-collection/SplayTreeMap/SplayTreeMap.of.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - SplayTreeMap.of constructor - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeMap.of
- -
- -
- - - -
-

SplayTreeMap<K, V>.of constructor

- -
- - SplayTreeMap<K, V>.of(Map<K, V> other, [ int compare(K key1 K key2), bool isValidKey(dynamic potentialKey) ]) -
- -
-

Creates a SplayTreeMap that contains all key/value pairs of other.

-
- -
-

Implementation

-
factory SplayTreeMap.of(Map<K, V> other,
-        [int Function(K key1, K key2)? compare,
-        bool Function(dynamic potentialKey)? isValidKey]) =>
-    SplayTreeMap<K, V>(compare, isValidKey)..addAll(other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/addAll.html b/doc/api/dart-collection/SplayTreeMap/addAll.html deleted file mode 100644 index b4a52cbe..00000000 --- a/doc/api/dart-collection/SplayTreeMap/addAll.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - addAll method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Map<K, V> other) -
override
-
-
-

Adds all key/value pairs of other to this map.

-

If a key of other is already in this map, its value is overwritten.

-

The operation is equivalent to doing this[key] = value for each key -and associated value in other. It iterates over other, which must -therefore not change during the iteration.

-
- -
-

Implementation

-
void addAll(Map<K, V> other) {
-  other.forEach((K key, V value) {
-    this[key] = value;
-  });
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/clear.html b/doc/api/dart-collection/SplayTreeMap/clear.html deleted file mode 100644 index 763eba64..00000000 --- a/doc/api/dart-collection/SplayTreeMap/clear.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - clear method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
override
-
-
-

Removes all pairs from the map.

-

After this, the map is empty.

-
- -
-

Implementation

-
void clear() {
-  _clear();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/containsKey.html b/doc/api/dart-collection/SplayTreeMap/containsKey.html deleted file mode 100644 index 3343b742..00000000 --- a/doc/api/dart-collection/SplayTreeMap/containsKey.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - containsKey method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsKey
- -
- -
- - - -
-

containsKey method

- -
- bool - containsKey -(Object key) -
override
-
-
-

Returns true if this map contains the given key.

-

Returns true if any of the keys in the map are equal to key -according to the equality used by the map.

-
- -
-

Implementation

-
bool containsKey(Object? key) {
-  return _validKey(key) && _splay(key as dynamic) == 0;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/containsValue.html b/doc/api/dart-collection/SplayTreeMap/containsValue.html deleted file mode 100644 index 8d22b351..00000000 --- a/doc/api/dart-collection/SplayTreeMap/containsValue.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - containsValue method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsValue
- -
- -
- - - -
-

containsValue method

- -
- bool - containsValue -(Object value) -
override
-
-
-

Returns true if this map contains the given value.

-

Returns true if any of the values in the map are equal to value -according to the == operator.

-
- -
-

Implementation

-
bool containsValue(Object? value) {
-  int initialSplayCount = _splayCount;
-  bool visit(_SplayTreeMapNode<K, V>? node) {
-    while (node != null) {
-      if (node.value == value) return true;
-      if (initialSplayCount != _splayCount) {
-        throw ConcurrentModificationError(this);
-      }
-      if (node.right != null && visit(node.right)) {
-        return true;
-      }
-      node = node.left;
-    }
-    return false;
-  }
-
-  return visit(_root);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/firstKey.html b/doc/api/dart-collection/SplayTreeMap/firstKey.html deleted file mode 100644 index ee944230..00000000 --- a/doc/api/dart-collection/SplayTreeMap/firstKey.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - firstKey method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstKey
- -
- -
- - - -
-

firstKey method

- -
- K - firstKey -() - -
-
-

Get the first key in the map. Returns null if the map is empty.

-
- -
-

Implementation

-
K? firstKey() {
-  if (_root == null) return null;
-  return _first!.key;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/firstKeyAfter.html b/doc/api/dart-collection/SplayTreeMap/firstKeyAfter.html deleted file mode 100644 index 91b1a5c7..00000000 --- a/doc/api/dart-collection/SplayTreeMap/firstKeyAfter.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - firstKeyAfter method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstKeyAfter
- -
- -
- - - -
-

firstKeyAfter method

- -
- K - firstKeyAfter -(K key) - -
-
-

Get the first key in the map that is strictly larger than key. Returns -null if no key was not found.

-
- -
-

Implementation

-
K? firstKeyAfter(K key) {
-  if (key == null) throw ArgumentError(key);
-  if (_root == null) return null;
-  int comp = _splay(key);
-  if (comp > 0) return _root!.key;
-  _SplayTreeMapNode<K, V>? node = _root!.right;
-  if (node == null) return null;
-  var nodeLeft = node.left;
-  while (nodeLeft != null) {
-    node = nodeLeft;
-    nodeLeft = node.left;
-  }
-  return node!.key;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/forEach.html b/doc/api/dart-collection/SplayTreeMap/forEach.html deleted file mode 100644 index 30f604d9..00000000 --- a/doc/api/dart-collection/SplayTreeMap/forEach.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - forEach method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void f(K key, V value)) -
override
-
-
-

Applies f to each key/value pair of the map.

-

Calling f must not add or remove keys from the map.

-
- -
-

Implementation

-
void forEach(void f(K key, V value)) {
-  Iterator<_SplayTreeMapNode<K, V>> nodes =
-      _SplayTreeNodeIterator<K, _SplayTreeMapNode<K, V>>(this);
-  while (nodes.moveNext()) {
-    _SplayTreeMapNode<K, V> node = nodes.current;
-    f(node.key, node.value);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/isEmpty.html b/doc/api/dart-collection/SplayTreeMap/isEmpty.html deleted file mode 100644 index e87ccc5b..00000000 --- a/doc/api/dart-collection/SplayTreeMap/isEmpty.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - isEmpty property - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there is no key/value pair in the map.

-
-
-

Implementation

-
bool get isEmpty {
-  return (_root == null);
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/isNotEmpty.html b/doc/api/dart-collection/SplayTreeMap/isNotEmpty.html deleted file mode 100644 index 449a3ad7..00000000 --- a/doc/api/dart-collection/SplayTreeMap/isNotEmpty.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - isNotEmpty property - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty -
override
-
- -
-

Returns true if there is at least one key/value pair in the map.

-
-
-

Implementation

-
bool get isNotEmpty => !isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/keys.html b/doc/api/dart-collection/SplayTreeMap/keys.html deleted file mode 100644 index 5aec2962..00000000 --- a/doc/api/dart-collection/SplayTreeMap/keys.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - keys property - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
keys
- -
- -
- - - -
-

keys property

- - -
- -
- Iterable<K> - keys -
override
-
- -
-

The keys of this.

-

The returned iterable has efficient length and contains operations, -based on length and containsKey of the map.

-

The order of iteration is defined by the individual Map implementation, -but must be consistent between changes to the map.

-

Modifying the map while iterating the keys -may break the iteration.

-
-
-

Implementation

-
Iterable<K> get keys =>
-    _SplayTreeKeyIterable<K, _SplayTreeMapNode<K, V>>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/lastKey.html b/doc/api/dart-collection/SplayTreeMap/lastKey.html deleted file mode 100644 index 4bdf669b..00000000 --- a/doc/api/dart-collection/SplayTreeMap/lastKey.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - lastKey method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastKey
- -
- -
- - - -
-

lastKey method

- -
- K - lastKey -() - -
-
-

Get the last key in the map. Returns null if the map is empty.

-
- -
-

Implementation

-
K? lastKey() {
-  if (_root == null) return null;
-  return _last!.key;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/lastKeyBefore.html b/doc/api/dart-collection/SplayTreeMap/lastKeyBefore.html deleted file mode 100644 index 2f0f7fb3..00000000 --- a/doc/api/dart-collection/SplayTreeMap/lastKeyBefore.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - lastKeyBefore method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastKeyBefore
- -
- -
- - - -
-

lastKeyBefore method

- -
- K - lastKeyBefore -(K key) - -
-
-

Get the last key in the map that is strictly smaller than key. Returns -null if no key was not found.

-
- -
-

Implementation

-
K? lastKeyBefore(K key) {
-  if (key == null) throw ArgumentError(key);
-  if (_root == null) return null;
-  int comp = _splay(key);
-  if (comp < 0) return _root!.key;
-  _SplayTreeMapNode<K, V>? node = _root!.left;
-  if (node == null) return null;
-  var nodeRight = node.right;
-  while (nodeRight != null) {
-    node = nodeRight;
-    nodeRight = node.right;
-  }
-  return node!.key;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/length.html b/doc/api/dart-collection/SplayTreeMap/length.html deleted file mode 100644 index f21f305d..00000000 --- a/doc/api/dart-collection/SplayTreeMap/length.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - length property - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
override
-
- -
-

The number of key/value pairs in the map.

-
-
-

Implementation

-
int get length {
-  return _count;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/operator_get.html b/doc/api/dart-collection/SplayTreeMap/operator_get.html deleted file mode 100644 index e78ae3de..00000000 --- a/doc/api/dart-collection/SplayTreeMap/operator_get.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - operator [] method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- V - operator [] -(Object key) -
override
-
-
-

Returns the value for the given key or null if key is not in the map.

-

Some maps allow keys to have null as a value. -For those maps, a lookup using this operator cannot distinguish between a -key not being in the map and the key having a null value. -Methods like containsKey or putIfAbsent can be used if the distinction -is important.

-
- -
-

Implementation

-
V? operator [](Object? key) {
-  if (!_validKey(key)) return null;
-  if (_root != null) {
-    int comp = _splay(key as dynamic);
-    if (comp == 0) {
-      return _root!.value;
-    }
-  }
-  return null;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/operator_put.html b/doc/api/dart-collection/SplayTreeMap/operator_put.html deleted file mode 100644 index 7dd7e6a8..00000000 --- a/doc/api/dart-collection/SplayTreeMap/operator_put.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - operator []= method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(K key, V value) -
override
-
-
-

Associates the key with the given value.

-

If the key was already in the map, its associated value is changed. -Otherwise the key/value pair is added to the map.

-
- -
-

Implementation

-
void operator []=(K key, V value) {
-  if (key == null) throw ArgumentError(key);
-  // Splay on the key to move the last node on the search path for
-  // the key to the root of the tree.
-  int comp = _splay(key);
-  if (comp == 0) {
-    _root!.value = value;
-    return;
-  }
-  _addNewRoot(_SplayTreeMapNode(key, value), comp);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/putIfAbsent.html b/doc/api/dart-collection/SplayTreeMap/putIfAbsent.html deleted file mode 100644 index d792e8f9..00000000 --- a/doc/api/dart-collection/SplayTreeMap/putIfAbsent.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - putIfAbsent method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
putIfAbsent
- -
- -
- - - -
-

putIfAbsent method

- -
- V - putIfAbsent -(K key, V ifAbsent()) -
override
-
-
-

Look up the value of key, or add a new value if it isn't there.

-

Returns the value associated to key, if there is one. -Otherwise calls ifAbsent to get a new value, associates key to -that value, and then returns the new value.

-
Map<String, int> scores = {'Bob': 36};
-for (var key in ['Bob', 'Rohan', 'Sophena']) {
-  scores.putIfAbsent(key, () => key.length);
-}
-scores['Bob'];      // 36
-scores['Rohan'];    //  5
-scores['Sophena'];  //  7
-
-

Calling ifAbsent must not add or remove keys from the map.

-
- -
-

Implementation

-
V putIfAbsent(K key, V ifAbsent()) {
-  if (key == null) throw ArgumentError(key);
-  int comp = _splay(key);
-  if (comp == 0) {
-    return _root!.value;
-  }
-  int modificationCount = _modificationCount;
-  int splayCount = _splayCount;
-  V value = ifAbsent();
-  if (modificationCount != _modificationCount) {
-    throw ConcurrentModificationError(this);
-  }
-  if (splayCount != _splayCount) {
-    comp = _splay(key);
-    // Key is still not there, otherwise _modificationCount would be changed.
-    assert(comp != 0);
-  }
-  _addNewRoot(_SplayTreeMapNode(key, value), comp);
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/remove.html b/doc/api/dart-collection/SplayTreeMap/remove.html deleted file mode 100644 index 0acbd6d6..00000000 --- a/doc/api/dart-collection/SplayTreeMap/remove.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - remove method - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- V - remove -(Object key) -
override
-
-
-

Removes key and its associated value, if present, from the map.

-

Returns the value associated with key before it was removed. -Returns null if key was not in the map.

-

Note that values can be null and a returned null value doesn't -always mean that the key was absent.

-
- -
-

Implementation

-
V? remove(Object? key) {
-  if (!_validKey(key)) return null;
-  _SplayTreeMapNode<K, V>? mapRoot = _remove(key as dynamic);
-  if (mapRoot != null) return mapRoot.value;
-  return null;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeMap/values.html b/doc/api/dart-collection/SplayTreeMap/values.html deleted file mode 100644 index 38504f91..00000000 --- a/doc/api/dart-collection/SplayTreeMap/values.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - values property - SplayTreeMap class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
values
- -
- -
- - - -
-

values property

- - -
- -
- Iterable<V> - values -
override
-
- -
-

The values of this.

-

The values are iterated in the order of their corresponding keys. -This means that iterating keys and values in parallel will -provide matching pairs of keys and values.

-

The returned iterable has an efficient length method based on the -length of the map. Its Iterable.contains method is based on -== comparison.

-

Modifying the map while iterating the -values may break the iteration.

-
-
-

Implementation

-
Iterable<V> get values => _SplayTreeValueIterable<K, V>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet-class.html b/doc/api/dart-collection/SplayTreeSet-class.html deleted file mode 100644 index 4dbd2535..00000000 --- a/doc/api/dart-collection/SplayTreeSet-class.html +++ /dev/null @@ -1,695 +0,0 @@ - - - - - - - - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeSet
- -
- -
- - - -
-

SplayTreeSet<E> class

- -
-

A Set of objects that can be ordered relative to each other.

-

The set is based on a self-balancing binary tree. It allows most operations -in amortized logarithmic time.

-

Elements of the set are compared using the compare function passed in -the constructor, both for ordering and for equality. -If the set contains only an object a, then set.contains(b) -will return true if and only if compare(a, b) == 0, -and the value of a == b is not even checked. -If the compare function is omitted, the objects are assumed to be -Comparable, and are compared using their Comparable.compareTo method. -Non-comparable objects (including null) will not work as an element -in that case.

-
- -
-
- - -
Mixed in types
-
- - - -
-
- -
-

Constructors

- -
-
- SplayTreeSet([int compare(E key1 E key2), bool isValidKey(dynamic potentialKey) ]) -
-
- Create a new SplayTreeSet with the given compare function. [...] -
-
- SplayTreeSet.from(Iterable elements, [ int compare(E key1 E key2), bool isValidKey(dynamic potentialKey) ]) -
-
- Creates a SplayTreeSet that contains all elements. [...] -
factory
-
-
- SplayTreeSet.of(Iterable<E> elements, [ int compare(E key1 E key2), bool isValidKey(dynamic potentialKey) ]) -
-
- Creates a SplayTreeSet from elements. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only, override
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, override
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, override
-
-
- iterator - Iterator<E> -
-
- Provides an iterator that iterates over the elements of this set. [...] -
read-only, override
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, override
-
-
- length - int -
-
- Returns the number of elements in this. [...] -
read-only, override
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E element) - bool - -
-
- Adds value to the set. [...] -
override
-
-
- addAll(Iterable<E> elements) - → void - -
-
- Adds all elements to this Set. [...] -
override
-
-
- cast<R>() - Set<R> - -
-
- Provides a view of this iterable as an iterable of R instances. [...] -
override
-
-
- clear() - → void - -
-
- Removes all elements in the set. -
override
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
override
-
-
- difference(Set<Object> other) - Set<E> - -
-
- Returns a new set with the elements of this that are not in other. [...] -
override
-
-
- intersection(Set<Object> other) - Set<E> - -
-
- Returns a new set which is the intersection between this set and other. [...] -
override
-
-
- lookup(Object object) - → E - -
-
- If an object equal to object is in the set, return it. [...] -
override
-
-
- remove(Object object) - bool - -
-
- Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set. -
override
-
-
- removeAll(Iterable<Object> elements) - → void - -
-
- Removes each element of elements from this set. -
override
-
-
- retainAll(Iterable<Object> elements) - → void - -
-
- Removes all elements of this set that are not elements in elements. [...] -
override
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
override
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- union(Set<E> other) - Set<E> - -
-
- Returns a new set which contains all the elements of this set and other. [...] -
override
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- containsAll(Iterable<Object> other) - bool - -
-
- Returns whether this Set contains all the elements of other. -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool f(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E element)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that satisfy test. -
inherited
-
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that fail to satisfy test. -
inherited
-
-
- singleWhere(bool test(E value), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int n) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int n) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- where(bool f(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.from.html b/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.from.html deleted file mode 100644 index facfe44a..00000000 --- a/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.from.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - SplayTreeSet.from constructor - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeSet.from
- -
- -
- - - -
-

SplayTreeSet<E>.from constructor

- -
- - SplayTreeSet<E>.from(Iterable elements, [ int compare(E key1 E key2), bool isValidKey(dynamic potentialKey) ]) -
- -
-

Creates a SplayTreeSet that contains all elements.

-

The set works as if created by new SplayTreeSet<E>(compare, isValidKey).

-

All the elements should be instances of E and valid arguments to -compare. -The elements iterable itself may have any element type, so this -constructor can be used to down-cast a Set, for example as:

-
Set<SuperType> superSet = ...;
-Set<SubType> subSet =
-    new SplayTreeSet<SubType>.from(superSet.whereType<SubType>());
-
-
- -
-

Implementation

-
factory SplayTreeSet.from(Iterable elements,
-    [int Function(E key1, E key2)? compare,
-    bool Function(dynamic potentialKey)? isValidKey]) {
-  if (elements is Iterable<E>) {
-    return SplayTreeSet<E>.of(elements, compare, isValidKey);
-  }
-  SplayTreeSet<E> result = SplayTreeSet<E>(compare, isValidKey);
-  for (var element in elements) {
-    result.add(element as dynamic);
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.html b/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.html deleted file mode 100644 index 7b54a7a6..00000000 --- a/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - SplayTreeSet constructor - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeSet
- -
- -
- - - -
-

SplayTreeSet<E> constructor

- -
- - SplayTreeSet<E>([int compare(E key1 E key2), bool isValidKey(dynamic potentialKey) ]) -
- -
-

Create a new SplayTreeSet with the given compare function.

-

If the compare function is omitted, it defaults to Comparable.compare, -and the elements must be comparable.

-

A provided compare function may not work on all objects. It may not even -work on all E instances.

-

For operations that add elements to the set, the user is supposed to not -pass in objects that doesn't work with the compare function.

-

The methods contains, remove, lookup, removeAll or retainAll -are typed to accept any object(s), and the isValidKey test can used to -filter those objects before handing them to the compare function.

-

If isValidKey is provided, only values satisfying isValidKey(other) -are compared using the compare method in the methods mentioned above. -If the isValidKey function returns false for an object, it is assumed to -not be in the set.

-

If omitted, the isValidKey function defaults to checking against the -type parameter: other is E.

-
- -
-

Implementation

-
SplayTreeSet(
-    [int Function(E key1, E key2)? compare,
-    bool Function(dynamic potentialKey)? isValidKey])
-    : _compare = compare ?? _defaultCompare<E>(),
-      _validKey = isValidKey ?? ((dynamic v) => v is E);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.of.html b/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.of.html deleted file mode 100644 index 7a73900b..00000000 --- a/doc/api/dart-collection/SplayTreeSet/SplayTreeSet.of.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - SplayTreeSet.of constructor - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
SplayTreeSet.of
- -
- -
- - - -
-

SplayTreeSet<E>.of constructor

- -
- - SplayTreeSet<E>.of(Iterable<E> elements, [ int compare(E key1 E key2), bool isValidKey(dynamic potentialKey) ]) -
- -
-

Creates a SplayTreeSet from elements.

-

The set works as if created by new SplayTreeSet<E>(compare, isValidKey).

-

All the elements should be valid as arguments to the compare function.

-
- -
-

Implementation

-
factory SplayTreeSet.of(Iterable<E> elements,
-        [int Function(E key1, E key2)? compare,
-        bool Function(dynamic potentialKey)? isValidKey]) =>
-    SplayTreeSet(compare, isValidKey)..addAll(elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/add.html b/doc/api/dart-collection/SplayTreeSet/add.html deleted file mode 100644 index 7096ceb4..00000000 --- a/doc/api/dart-collection/SplayTreeSet/add.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - add method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- bool - add -(E element) -
override
-
-
-

Adds value to the set.

-

Returns true if value (or an equal value) was not yet in the set. -Otherwise returns false and the set is not changed.

-

Example:

-
var set = new Set();
-var time1 = new DateTime.fromMillisecondsSinceEpoch(0);
-var time2 = new DateTime.fromMillisecondsSinceEpoch(0);
-// time1 and time2 are equal, but not identical.
-Expect.isTrue(time1 == time2);
-Expect.isFalse(identical(time1, time2));
-set.add(time1);  // => true.
-// A value equal to time2 exists already in the set, and the call to
-// add doesn't change the set.
-set.add(time2);  // => false.
-Expect.isTrue(set.length == 1);
-Expect.isTrue(identical(time1, set.first));
-
-
- -
-

Implementation

-
bool add(E element) {
-  int compare = _splay(element);
-  if (compare == 0) return false;
-  _addNewRoot(_SplayTreeSetNode(element), compare);
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/addAll.html b/doc/api/dart-collection/SplayTreeSet/addAll.html deleted file mode 100644 index 187710c2..00000000 --- a/doc/api/dart-collection/SplayTreeSet/addAll.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - addAll method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> elements) -
override
-
-
-

Adds all elements to this Set.

-

Equivalent to adding each element in elements using add, -but some collections may be able to optimize it.

-
- -
-

Implementation

-
void addAll(Iterable<E> elements) {
-  for (E element in elements) {
-    int compare = _splay(element);
-    if (compare != 0) {
-      _addNewRoot(_SplayTreeSetNode(element), compare);
-    }
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/cast.html b/doc/api/dart-collection/SplayTreeSet/cast.html deleted file mode 100644 index 49fbb953..00000000 --- a/doc/api/dart-collection/SplayTreeSet/cast.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - cast method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Set<R> - cast -<R>() -
override
-
-
-

Provides a view of this iterable as an iterable of R instances.

-

If this iterable only contains instances of R, all operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

When the returned iterable creates a new object that depends on -the type R, e.g., from toList, it will have exactly the type R.

-
- -
-

Implementation

-
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newSet);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/clear.html b/doc/api/dart-collection/SplayTreeSet/clear.html deleted file mode 100644 index b7e52125..00000000 --- a/doc/api/dart-collection/SplayTreeSet/clear.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - clear method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
override
-
-
-

Removes all elements in the set.

-
- -
-

Implementation

-
void clear() {
-  _clear();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/contains.html b/doc/api/dart-collection/SplayTreeSet/contains.html deleted file mode 100644 index de67d2ab..00000000 --- a/doc/api/dart-collection/SplayTreeSet/contains.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - contains method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- bool - contains -(Object element) -
override
-
-
-

Returns true if the collection contains an element equal to element.

-

This operation will check each element in order for being equal to -element, unless it has a more efficient way to find an element -equal to element.

-

The equality used to determine whether element is equal to an element of -the iterable defaults to the Object.== of the element.

-

Some types of iterable may have a different equality used for its elements. -For example, a Set may have a custom equality -(see Set.identity) that its contains uses. -Likewise the Iterable returned by a Map.keys call -should use the same equality that the Map uses for keys.

-
- -
-

Implementation

-
bool contains(Object? element) {
-  return _validKey(element) && _splay(element as E) == 0;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/difference.html b/doc/api/dart-collection/SplayTreeSet/difference.html deleted file mode 100644 index 88947a96..00000000 --- a/doc/api/dart-collection/SplayTreeSet/difference.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - difference method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
difference
- -
- -
- - - -
-

difference method

- -
- Set<E> - difference -(Set<Object> other) -
override
-
-
-

Returns a new set with the elements of this that are not in other.

-

That is, the returned set contains all the elements of this Set that -are not elements of other according to other.contains.

-
- -
-

Implementation

-
Set<E> difference(Set<Object?> other) {
-  Set<E> result = SplayTreeSet<E>(_compare, _validKey);
-  for (E element in this) {
-    if (!other.contains(element)) result.add(element);
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/first.html b/doc/api/dart-collection/SplayTreeSet/first.html deleted file mode 100644 index ca6de028..00000000 --- a/doc/api/dart-collection/SplayTreeSet/first.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - first property - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first -
override
-
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  if (_count == 0) throw IterableElementError.noElement();
-  return _first!.key;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/intersection.html b/doc/api/dart-collection/SplayTreeSet/intersection.html deleted file mode 100644 index af0a9228..00000000 --- a/doc/api/dart-collection/SplayTreeSet/intersection.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - intersection method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
intersection
- -
- -
- - - -
-

intersection method

- -
- Set<E> - intersection -(Set<Object> other) -
override
-
-
-

Returns a new set which is the intersection between this set and other.

-

That is, the returned set contains all the elements of this Set that -are also elements of other according to other.contains.

-
- -
-

Implementation

-
Set<E> intersection(Set<Object?> other) {
-  Set<E> result = SplayTreeSet<E>(_compare, _validKey);
-  for (E element in this) {
-    if (other.contains(element)) result.add(element);
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/isEmpty.html b/doc/api/dart-collection/SplayTreeSet/isEmpty.html deleted file mode 100644 index f98cac2a..00000000 --- a/doc/api/dart-collection/SplayTreeSet/isEmpty.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - isEmpty property - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty -
override
-
- -
-

Returns true if there are no elements in this collection.

-

May be computed by checking if iterator.moveNext() returns false.

-
-
-

Implementation

-
bool get isEmpty => _root == null;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/isNotEmpty.html b/doc/api/dart-collection/SplayTreeSet/isNotEmpty.html deleted file mode 100644 index 37bd9f24..00000000 --- a/doc/api/dart-collection/SplayTreeSet/isNotEmpty.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - isNotEmpty property - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty -
override
-
- -
-

Returns true if there is at least one element in this collection.

-

May be computed by checking if iterator.moveNext() returns true.

-
-
-

Implementation

-
bool get isNotEmpty => _root != null;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/iterator.html b/doc/api/dart-collection/SplayTreeSet/iterator.html deleted file mode 100644 index e8eb0d74..00000000 --- a/doc/api/dart-collection/SplayTreeSet/iterator.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - iterator property - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator -
override
-
- -
-

Provides an iterator that iterates over the elements of this set.

-

The order of iteration is defined by the individual Set implementation, -but must be consistent between changes to the set.

-
-
-

Implementation

-
Iterator<E> get iterator =>
-    _SplayTreeKeyIterator<E, _SplayTreeSetNode<E>>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/last.html b/doc/api/dart-collection/SplayTreeSet/last.html deleted file mode 100644 index f2636669..00000000 --- a/doc/api/dart-collection/SplayTreeSet/last.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - last property - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last -
override
-
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  if (_count == 0) throw IterableElementError.noElement();
-  return _last!.key;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/length.html b/doc/api/dart-collection/SplayTreeSet/length.html deleted file mode 100644 index 7803f2df..00000000 --- a/doc/api/dart-collection/SplayTreeSet/length.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - length property - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
override
-
- -
-

Returns the number of elements in this.

-

Counting all elements may involve iterating through all elements and can -therefore be slow. -Some iterables have a more efficient way to find the number of elements.

-
-
-

Implementation

-
int get length => _count;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/lookup.html b/doc/api/dart-collection/SplayTreeSet/lookup.html deleted file mode 100644 index de1ac82b..00000000 --- a/doc/api/dart-collection/SplayTreeSet/lookup.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - lookup method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
lookup
- -
- -
- - - -
-

lookup method

- -
- E - lookup -(Object object) -
override
-
-
-

If an object equal to object is in the set, return it.

-

Checks whether object is in the set, like contains, and if so, -returns the object in the set, otherwise returns null.

-

If the equality relation used by the set is not identity, -then the returned object may not be identical to object. -Some set implementations may not be able to implement this method. -If the contains method is computed, -rather than being based on an actual object instance, -then there may not be a specific object instance representing the -set element.

-
- -
-

Implementation

-
E? lookup(Object? object) {
-  if (!_validKey(object)) return null;
-  int comp = _splay(object as E);
-  if (comp != 0) return null;
-  return _root!.key;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/remove.html b/doc/api/dart-collection/SplayTreeSet/remove.html deleted file mode 100644 index ec6b0861..00000000 --- a/doc/api/dart-collection/SplayTreeSet/remove.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - remove method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object object) -
override
-
-
-

Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set.

-
- -
-

Implementation

-
bool remove(Object? object) {
-  if (!_validKey(object)) return false;
-  return _remove(object as E) != null;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/removeAll.html b/doc/api/dart-collection/SplayTreeSet/removeAll.html deleted file mode 100644 index 42657c9f..00000000 --- a/doc/api/dart-collection/SplayTreeSet/removeAll.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - removeAll method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeAll
- -
- -
- - - -
-

removeAll method

- -
- void - removeAll -(Iterable<Object> elements) -
override
-
-
-

Removes each element of elements from this set.

-
- -
-

Implementation

-
void removeAll(Iterable<Object?> elements) {
-  for (Object? element in elements) {
-    if (_validKey(element)) _remove(element as E);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/retainAll.html b/doc/api/dart-collection/SplayTreeSet/retainAll.html deleted file mode 100644 index 902cac36..00000000 --- a/doc/api/dart-collection/SplayTreeSet/retainAll.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - retainAll method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainAll
- -
- -
- - - -
-

retainAll method

- -
- void - retainAll -(Iterable<Object> elements) -
override
-
-
-

Removes all elements of this set that are not elements in elements.

-

Checks for each element of elements whether there is an element in this -set that is equal to it (according to this.contains), and if so, the -equal element in this set is retained, and elements that are not equal -to any element in elements are removed.

-
- -
-

Implementation

-
void retainAll(Iterable<Object?> elements) {
-  // Build a set with the same sense of equality as this set.
-  SplayTreeSet<E> retainSet = SplayTreeSet<E>(_compare, _validKey);
-  int modificationCount = _modificationCount;
-  for (Object? object in elements) {
-    if (modificationCount != _modificationCount) {
-      // The iterator should not have side effects.
-      throw ConcurrentModificationError(this);
-    }
-    // Equivalent to this.contains(object).
-    if (_validKey(object) && _splay(object as E) == 0) {
-      retainSet.add(_root!.key);
-    }
-  }
-  // Take over the elements from the retained set, if it differs.
-  if (retainSet._count != _count) {
-    _root = retainSet._root;
-    _count = retainSet._count;
-    _modificationCount++;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/single.html b/doc/api/dart-collection/SplayTreeSet/single.html deleted file mode 100644 index 0d720c4c..00000000 --- a/doc/api/dart-collection/SplayTreeSet/single.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - single property - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- E - single -
override
-
- -
-

Checks that this iterable has only one element, and returns that element.

-

Throws a StateError if this is empty or has more than one element.

-
-
-

Implementation

-
E get single {
-  if (_count == 0) throw IterableElementError.noElement();
-  if (_count > 1) throw IterableElementError.tooMany();
-  return _root!.key;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/toSet.html b/doc/api/dart-collection/SplayTreeSet/toSet.html deleted file mode 100644 index d0c149a6..00000000 --- a/doc/api/dart-collection/SplayTreeSet/toSet.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - toSet method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSet
- -
- -
- - - -
-

toSet method

- -
- Set<E> - toSet -() -
override
-
-
-

Creates a Set containing the same elements as this iterable.

-

The set may contain fewer elements than the iterable, -if the iterable contains an element more than once, -or it contains one or more elements that are equal. -The order of the elements in the set is not guaranteed to be the same -as for the iterable.

-
- -
-

Implementation

-
Set<E> toSet() => _clone();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/toString.html b/doc/api/dart-collection/SplayTreeSet/toString.html deleted file mode 100644 index 522e60c0..00000000 --- a/doc/api/dart-collection/SplayTreeSet/toString.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - toString method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => IterableBase.iterableToFullString(this, '{', '}');
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/SplayTreeSet/union.html b/doc/api/dart-collection/SplayTreeSet/union.html deleted file mode 100644 index 13edda92..00000000 --- a/doc/api/dart-collection/SplayTreeSet/union.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - union method - SplayTreeSet class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
union
- -
- -
- - - -
-

union method

- -
- Set<E> - union -(Set<E> other) -
override
-
-
-

Returns a new set which contains all the elements of this set and other.

-

That is, the returned set contains all the elements of this Set and -all the elements of other.

-
- -
-

Implementation

-
Set<E> union(Set<E> other) {
-  return _clone()..addAll(other);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView-class.html b/doc/api/dart-collection/UnmodifiableListView-class.html deleted file mode 100644 index 9cfad8d1..00000000 --- a/doc/api/dart-collection/UnmodifiableListView-class.html +++ /dev/null @@ -1,821 +0,0 @@ - - - - - - - - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnmodifiableListView
- -
- -
- - - -
-

UnmodifiableListView<E> class

- -
-

An unmodifiable List view of another List.

-

The source of the elements may be a List or any Iterable with -efficient Iterable.length and Iterable.elementAt.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- UnmodifiableListView(Iterable<E> source) -
-
- Creates an unmodifiable list backed by source. [...] -
-
-
- -
-

Properties

- -
-
- length - int -
-
- The number of objects in this list. [...] -
read / write, inherited-setter, override-getter
-
-
- first - ↔ E -
-
- Returns the first element. [...] -
read / write, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, inherited
-
-
- last - ↔ E -
-
- Returns the last element. [...] -
read / write, inherited
-
-
- reversed - Iterable<E> -
-
- Returns an Iterable of the objects in this list in reverse order. -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- cast<R>() - List<R> - -
-
- Returns a view of this list as a list of R instances. [...] -
override
-
-
- add(E value) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- addAll(Iterable<E> iterable) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- asMap() - Map<int, E> - -
-
- Returns an unmodifiable Map view of this. [...] -
inherited
-
-
- clear() - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- fillRange(int start, [ int end, [ E fillValue ]) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void action(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- getRange(int start int end) - Iterable<E> - -
-
- Returns an Iterable that iterates over the objects in the range -start inclusive to end exclusive. [...] -
inherited
-
-
- indexOf(Object element, [ int start = 0 ]) - int - -
-
- Returns the first index of element in this list. [...] -
inherited
-
-
- indexWhere(bool test(E element), [ int start = 0 ]) - int - -
-
- Returns the first index in the list that satisfies the provided test. [...] -
inherited
-
-
- insert(int index, E element) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- insertAll(int at, Iterable<E> iterable) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastIndexOf(Object element, [ int start ]) - int - -
-
- Returns the last index of element in this list. [...] -
inherited
-
-
- lastIndexWhere(bool test(E element), [ int start ]) - int - -
-
- Returns the last index in the list that satisfies the provided test. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E element)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E previousValue E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- remove(Object element) - bool - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- removeAt(int index) - → E - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- removeLast() - → E - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- removeRange(int start int end) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- removeWhere(bool test(E element)) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- replaceRange(int start, int end, Iterable<E> iterable) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- retainWhere(bool test(E element)) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- setAll(int at, Iterable<E> iterable) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- setRange(int start, int end, Iterable<E> iterable, [ int skipCount = 0 ]) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- shuffle([Random random ]) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E element)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- sort([Comparator<E> compare ]) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
- sublist(int start, [ int end ]) - List<E> - -
-
- Returns a new list containing the elements between start and end. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E element)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator [](int index) - → E - -
-
- Returns the object at the given index in the list -or throws a RangeError if index is out of bounds. -
override
-
-
- operator +(List<E> other) - List<E> - -
-
- Returns the concatenation of this list and other. [...] -
inherited
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator []=(int index, E value) - → void - -
-
- This operation is not supported by an unmodifiable list. -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/UnmodifiableListView.html b/doc/api/dart-collection/UnmodifiableListView/UnmodifiableListView.html deleted file mode 100644 index e689d9ff..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/UnmodifiableListView.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - UnmodifiableListView constructor - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnmodifiableListView
- -
- -
- - - -
-

UnmodifiableListView<E> constructor

- -
- - UnmodifiableListView<E>(Iterable<E> source) -
- -
-

Creates an unmodifiable list backed by source.

-

The source of the elements may be a List or any Iterable with -efficient Iterable.length and Iterable.elementAt.

-
- -
-

Implementation

-
UnmodifiableListView(Iterable<E> source) : _source = source;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/add.html b/doc/api/dart-collection/UnmodifiableListView/add.html deleted file mode 100644 index 15459a5e..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/add.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - add method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(E value) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void add(E value) {
-  throw new UnsupportedError("Cannot add to an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/addAll.html b/doc/api/dart-collection/UnmodifiableListView/addAll.html deleted file mode 100644 index 203b84bf..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/addAll.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - addAll method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> iterable) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void addAll(Iterable<E> iterable) {
-  throw new UnsupportedError("Cannot add to an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/cast.html b/doc/api/dart-collection/UnmodifiableListView/cast.html deleted file mode 100644 index c17b4fb3..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/cast.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - cast method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- List<R> - cast -<R>() -
override
-
-
-

Returns a view of this list as a list of R instances.

-

If this list contains only instances of R, all read operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

Elements added to the list (e.g., by using add or addAll) -must be instance of R to be valid arguments to the adding function, -and they must be instances of E as well to be accepted by -this list as well.

-

Typically implemented as List.castFrom<E, R>(this).

-
- -
-

Implementation

-
List<R> cast<R>() => UnmodifiableListView(_source.cast<R>());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/clear.html b/doc/api/dart-collection/UnmodifiableListView/clear.html deleted file mode 100644 index 912a508b..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/clear.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - clear method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void clear() {
-  throw new UnsupportedError("Cannot clear an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/fillRange.html b/doc/api/dart-collection/UnmodifiableListView/fillRange.html deleted file mode 100644 index a183225f..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/fillRange.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - fillRange method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
fillRange
- -
- -
- - - -
-

fillRange method

- -
- void - fillRange -(int start, [ int end, [ E fillValue ]) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void fillRange(int start, int end, [E? fillValue]) {
-  throw new UnsupportedError("Cannot modify an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/insert.html b/doc/api/dart-collection/UnmodifiableListView/insert.html deleted file mode 100644 index 59154023..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/insert.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - insert method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
insert
- -
- -
- - - -
-

insert method

- -
- void - insert -(int index, E element) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void insert(int index, E element) {
-  throw new UnsupportedError("Cannot add to an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/insertAll.html b/doc/api/dart-collection/UnmodifiableListView/insertAll.html deleted file mode 100644 index d6b421e9..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/insertAll.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - insertAll method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
insertAll
- -
- -
- - - -
-

insertAll method

- -
- void - insertAll -(int at, Iterable<E> iterable) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void insertAll(int at, Iterable<E> iterable) {
-  throw new UnsupportedError("Cannot add to an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/length.html b/doc/api/dart-collection/UnmodifiableListView/length.html deleted file mode 100644 index 0c9bc8e1..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/length.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - length property - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length -
override
-
- -
-

The number of objects in this list.

-

The valid indices for a list are 0 through length - 1.

-
-
-

Implementation

-
int get length => _source.length;
-
-
- -
- -
- void - length= -(int newLength) -
inherited
-
- -
-

This operation is not supported by an unmodifiable list.

-
-
-

Implementation

-
set length(int newLength) {
-  throw new UnsupportedError(
-      "Cannot change the length of an unmodifiable list");
-}
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/operator_get.html b/doc/api/dart-collection/UnmodifiableListView/operator_get.html deleted file mode 100644 index 247b0785..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/operator_get.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - operator [] method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- E - operator [] -(int index) -
override
-
-
-

Returns the object at the given index in the list -or throws a RangeError if index is out of bounds.

-
- -
-

Implementation

-
E operator [](int index) => _source.elementAt(index);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/operator_put.html b/doc/api/dart-collection/UnmodifiableListView/operator_put.html deleted file mode 100644 index eaddf94f..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/operator_put.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - operator []= method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(int index, E value) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void operator []=(int index, E value) {
-  throw new UnsupportedError("Cannot modify an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/remove.html b/doc/api/dart-collection/UnmodifiableListView/remove.html deleted file mode 100644 index 8f90d7f3..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/remove.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - remove method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object element) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
bool remove(Object? element) {
-  throw new UnsupportedError("Cannot remove from an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/removeAt.html b/doc/api/dart-collection/UnmodifiableListView/removeAt.html deleted file mode 100644 index 3c45de86..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/removeAt.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - removeAt method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeAt
- -
- -
- - - -
-

removeAt method

- -
- E - removeAt -(int index) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
E removeAt(int index) {
-  throw new UnsupportedError("Cannot remove from an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/removeLast.html b/doc/api/dart-collection/UnmodifiableListView/removeLast.html deleted file mode 100644 index 6cd70d28..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/removeLast.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - removeLast method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeLast
- -
- -
- - - -
-

removeLast method

- -
- E - removeLast -() -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
E removeLast() {
-  throw new UnsupportedError("Cannot remove from an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/removeRange.html b/doc/api/dart-collection/UnmodifiableListView/removeRange.html deleted file mode 100644 index 1f928be9..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/removeRange.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - removeRange method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeRange
- -
- -
- - - -
-

removeRange method

- -
- void - removeRange -(int start int end) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void removeRange(int start, int end) {
-  throw new UnsupportedError("Cannot remove from an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/removeWhere.html b/doc/api/dart-collection/UnmodifiableListView/removeWhere.html deleted file mode 100644 index 24a790e4..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/removeWhere.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - removeWhere method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(E element)) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void removeWhere(bool test(E element)) {
-  throw new UnsupportedError("Cannot remove from an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/replaceRange.html b/doc/api/dart-collection/UnmodifiableListView/replaceRange.html deleted file mode 100644 index 5d0a8c76..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/replaceRange.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - replaceRange method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
replaceRange
- -
- -
- - - -
-

replaceRange method

- -
- void - replaceRange -(int start, int end, Iterable<E> iterable) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void replaceRange(int start, int end, Iterable<E> iterable) {
-  throw new UnsupportedError("Cannot remove from an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/retainWhere.html b/doc/api/dart-collection/UnmodifiableListView/retainWhere.html deleted file mode 100644 index 7954c3ee..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/retainWhere.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - retainWhere method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainWhere
- -
- -
- - - -
-

retainWhere method

- -
- void - retainWhere -(bool test(E element)) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void retainWhere(bool test(E element)) {
-  throw new UnsupportedError("Cannot remove from an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/setAll.html b/doc/api/dart-collection/UnmodifiableListView/setAll.html deleted file mode 100644 index 09de0e4e..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/setAll.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - setAll method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
setAll
- -
- -
- - - -
-

setAll method

- -
- void - setAll -(int at, Iterable<E> iterable) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void setAll(int at, Iterable<E> iterable) {
-  throw new UnsupportedError("Cannot modify an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/setRange.html b/doc/api/dart-collection/UnmodifiableListView/setRange.html deleted file mode 100644 index 3baca022..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/setRange.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - setRange method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
setRange
- -
- -
- - - -
-

setRange method

- -
- void - setRange -(int start, int end, Iterable<E> iterable, [ int skipCount = 0 ]) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
-  throw new UnsupportedError("Cannot modify an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/shuffle.html b/doc/api/dart-collection/UnmodifiableListView/shuffle.html deleted file mode 100644 index 43c01ab8..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/shuffle.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - shuffle method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
shuffle
- -
- -
- - - -
-

shuffle method

- -
- void - shuffle -([Random random ]) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void shuffle([Random? random]) {
-  throw new UnsupportedError("Cannot modify an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableListView/sort.html b/doc/api/dart-collection/UnmodifiableListView/sort.html deleted file mode 100644 index aa75205f..00000000 --- a/doc/api/dart-collection/UnmodifiableListView/sort.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - sort method - UnmodifiableListView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
sort
- -
- -
- - - -
-

sort method

- -
- void - sort -([Comparator<E> compare ]) -
inherited
-
-
-

This operation is not supported by an unmodifiable list.

-
- -
-

Implementation

-
void sort([Comparator<E>? compare]) {
-  throw new UnsupportedError("Cannot modify an unmodifiable list");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase-class.html b/doc/api/dart-collection/UnmodifiableMapBase-class.html deleted file mode 100644 index 4d66dde2..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase-class.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - - - - - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnmodifiableMapBase
- -
- -
- - - -
-

UnmodifiableMapBase<K, V> class

- -
-

Basic implementation of an unmodifiable Map.

-

This class has a basic implementation of all but two of the members of -an umodifiable Map. -A simple unmodifiable Map class can be implemented by extending this -class and implementing keys and operator[].

-

Modifying operations throw when used. -The remaining non-modifying operations are implemented in terms of keys -and operator[].

-

The keys iterable should have efficient Iterable.length and -Iterable.contains operations, and it should catch concurrent modifications -of the keys while iterating.

-

A more efficient implementation is usually possible by overriding -some of the other members as well.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- UnmodifiableMapBase() -
-
- -
-
-
- -
-

Properties

- -
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only, inherited
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only, inherited
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addAll(Map<K, V> other) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- addEntries(Iterable<MapEntry<K, V>> entries) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] -
inherited
-
-
- clear() - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] -
inherited
-
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] -
inherited
-
-
- forEach(void action(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] -
inherited
-
-
- map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- remove(Object key) - → V - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- removeWhere(bool test(K key, V value)) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- updateAll(V update(K key, V value)) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] -
inherited
-
-
- operator []=(K key, V value) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/UnmodifiableMapBase.html b/doc/api/dart-collection/UnmodifiableMapBase/UnmodifiableMapBase.html deleted file mode 100644 index 6395b504..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/UnmodifiableMapBase.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - UnmodifiableMapBase constructor - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnmodifiableMapBase
- -
- -
- - - -
-

UnmodifiableMapBase<K, V> constructor

- -
- - UnmodifiableMapBase<K, V>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/addAll.html b/doc/api/dart-collection/UnmodifiableMapBase/addAll.html deleted file mode 100644 index 0ab50313..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/addAll.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - addAll method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Map<K, V> other) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void addAll(Map<K, V> other) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/addEntries.html b/doc/api/dart-collection/UnmodifiableMapBase/addEntries.html deleted file mode 100644 index 02dfb270..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/addEntries.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - addEntries method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addEntries
- -
- -
- - - -
-

addEntries method

- -
- void - addEntries -(Iterable<MapEntry<K, V>> entries) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void addEntries(Iterable<MapEntry<K, V>> entries) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/clear.html b/doc/api/dart-collection/UnmodifiableMapBase/clear.html deleted file mode 100644 index 95bff1aa..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/clear.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - clear method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void clear() {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/operator_put.html b/doc/api/dart-collection/UnmodifiableMapBase/operator_put.html deleted file mode 100644 index 307dcb6d..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/operator_put.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - operator []= method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(K key, V value) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void operator []=(K key, V value) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/putIfAbsent.html b/doc/api/dart-collection/UnmodifiableMapBase/putIfAbsent.html deleted file mode 100644 index 1e581d65..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/putIfAbsent.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - putIfAbsent method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
putIfAbsent
- -
- -
- - - -
-

putIfAbsent method

- -
- V - putIfAbsent -(K key, V ifAbsent()) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
V putIfAbsent(K key, V ifAbsent()) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/remove.html b/doc/api/dart-collection/UnmodifiableMapBase/remove.html deleted file mode 100644 index a7889e11..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/remove.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - remove method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- V - remove -(Object key) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
V remove(Object? key) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/removeWhere.html b/doc/api/dart-collection/UnmodifiableMapBase/removeWhere.html deleted file mode 100644 index 905ef0d1..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/removeWhere.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - removeWhere method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(K key, V value)) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void removeWhere(bool test(K key, V value)) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/update.html b/doc/api/dart-collection/UnmodifiableMapBase/update.html deleted file mode 100644 index 6fa2abc5..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/update.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - update method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
update
- -
- -
- - - -
-

update method

- -
- V - update -(K key, V update(V value), { V ifAbsent() }) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
V update(K key, V update(V value), {V Function()? ifAbsent}) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapBase/updateAll.html b/doc/api/dart-collection/UnmodifiableMapBase/updateAll.html deleted file mode 100644 index 5c1782ce..00000000 --- a/doc/api/dart-collection/UnmodifiableMapBase/updateAll.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - updateAll method - UnmodifiableMapBase class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
updateAll
- -
- -
- - - -
-

updateAll method

- -
- void - updateAll -(V update(K key, V value)) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void updateAll(V update(K key, V value)) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView-class.html b/doc/api/dart-collection/UnmodifiableMapView-class.html deleted file mode 100644 index 1c7b025f..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView-class.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - - - - - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnmodifiableMapView
- -
- -
- - - -
-

UnmodifiableMapView<K, V> class

- -
-

View of a Map that disallow modifying the map.

-

A wrapper around a Map that forwards all members to the map provided in -the constructor, except for operations that modify the map. -Modifying operations throw instead.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- UnmodifiableMapView(Map<K, V> map) -
-
- -
-
-
- -
-

Properties

- -
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only, inherited
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only, inherited
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] -
override
-
-
- addAll(Map<K, V> other) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- addEntries(Iterable<MapEntry<K, V>> entries) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- clear() - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] -
inherited
-
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] -
inherited
-
-
- forEach(void action(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] -
inherited
-
-
- map<K2, V2>(MapEntry<K2, V2> transform(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- remove(Object key) - → V - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- removeWhere(bool test(K key, V value)) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
- updateAll(V update(K key, V value)) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] -
inherited
-
-
- operator []=(K key, V value) - → void - -
-
- This operation is not supported by an unmodifiable map. -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/UnmodifiableMapView.html b/doc/api/dart-collection/UnmodifiableMapView/UnmodifiableMapView.html deleted file mode 100644 index 40aedbf2..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/UnmodifiableMapView.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - UnmodifiableMapView constructor - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnmodifiableMapView
- -
- -
- - - -
-

UnmodifiableMapView<K, V> constructor

- -
- - UnmodifiableMapView<K, V>(Map<K, V> map) -
- - -
-

Implementation

-
UnmodifiableMapView(Map<K, V> map) : super(map);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/addAll.html b/doc/api/dart-collection/UnmodifiableMapView/addAll.html deleted file mode 100644 index 68e100bd..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/addAll.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - addAll method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Map<K, V> other) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void addAll(Map<K, V> other) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/addEntries.html b/doc/api/dart-collection/UnmodifiableMapView/addEntries.html deleted file mode 100644 index 4ee5af3b..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/addEntries.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - addEntries method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
addEntries
- -
- -
- - - -
-

addEntries method

- -
- void - addEntries -(Iterable<MapEntry<K, V>> entries) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void addEntries(Iterable<MapEntry<K, V>> entries) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/cast.html b/doc/api/dart-collection/UnmodifiableMapView/cast.html deleted file mode 100644 index 38a703e2..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/cast.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - cast method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<RK, RV> method

- -
- Map<RK, RV> - cast -<RK, RV>() -
override
-
-
-

Provides a view of this map as having RK keys and RV instances, -if necessary.

-

If this map is already a Map<RK, RV>, it is returned unchanged.

-

If this set contains only keys of type RK and values of type RV, -all read operations will work correctly. -If any operation exposes a non-RK key or non-RV value, -the operation will throw instead.

-

Entries added to the map must be valid for both a Map<K, V> and a -Map<RK, RV>.

-
- -
-

Implementation

-
Map<RK, RV> cast<RK, RV>() =>
-    UnmodifiableMapView<RK, RV>(_map.cast<RK, RV>());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/clear.html b/doc/api/dart-collection/UnmodifiableMapView/clear.html deleted file mode 100644 index 31582b53..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/clear.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - clear method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void clear() {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/operator_put.html b/doc/api/dart-collection/UnmodifiableMapView/operator_put.html deleted file mode 100644 index b55c33ef..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/operator_put.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - operator []= method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(K key, V value) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void operator []=(K key, V value) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/putIfAbsent.html b/doc/api/dart-collection/UnmodifiableMapView/putIfAbsent.html deleted file mode 100644 index 2c70145f..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/putIfAbsent.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - putIfAbsent method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
putIfAbsent
- -
- -
- - - -
-

putIfAbsent method

- -
- V - putIfAbsent -(K key, V ifAbsent()) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
V putIfAbsent(K key, V ifAbsent()) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/remove.html b/doc/api/dart-collection/UnmodifiableMapView/remove.html deleted file mode 100644 index 2bb4502b..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/remove.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - remove method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- V - remove -(Object key) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
V remove(Object? key) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/removeWhere.html b/doc/api/dart-collection/UnmodifiableMapView/removeWhere.html deleted file mode 100644 index 59354120..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/removeWhere.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - removeWhere method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(K key, V value)) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void removeWhere(bool test(K key, V value)) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/update.html b/doc/api/dart-collection/UnmodifiableMapView/update.html deleted file mode 100644 index 989846fc..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/update.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - update method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
update
- -
- -
- - - -
-

update method

- -
- V - update -(K key, V update(V value), { V ifAbsent() }) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
V update(K key, V update(V value), {V Function()? ifAbsent}) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/UnmodifiableMapView/updateAll.html b/doc/api/dart-collection/UnmodifiableMapView/updateAll.html deleted file mode 100644 index 635e975a..00000000 --- a/doc/api/dart-collection/UnmodifiableMapView/updateAll.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - updateAll method - UnmodifiableMapView class - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
updateAll
- -
- -
- - - -
-

updateAll method

- -
- void - updateAll -(V update(K key, V value)) -
inherited
-
-
-

This operation is not supported by an unmodifiable map.

-
- -
-

Implementation

-
void updateAll(V update(K key, V value)) {
-  throw UnsupportedError("Cannot modify unmodifiable map");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-collection/dart-collection-library.html b/doc/api/dart-collection/dart-collection-library.html deleted file mode 100644 index 9d13989e..00000000 --- a/doc/api/dart-collection/dart-collection-library.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - dart:collection library - Dart API - - - - - - - - - - - - - -
- -
- - -
dart:collection
- -
- -
- - - -
-

dart:collection library

- -
-

Classes and utilities that supplement the collection support in dart:core.

-

To use this library in your code:

-
import 'dart:collection';
-
-
- -
-

Classes

- -
-
- DoubleLinkedQueue<E> -
-
- A Queue implementation based on a double-linked list. [...] -
-
- DoubleLinkedQueueEntry<E> -
-
- An entry in a doubly linked list. It contains a pointer to the next -entry, the previous entry, and the boxed element. -
-
- HashMap<K, V> -
-
- A hash-table based implementation of Map. [...] -
-
- HashSet<E> -
-
- An unordered hash-table based Set implementation. [...] -
-
- HasNextIterator<E> -
-
- The HasNextIterator class wraps an Iterator and provides methods to -iterate over an object using hasNext and next. [...] -
-
- IterableBase<E> -
-
- Base class for implementing Iterable. [...] -
-
- IterableMixin<E> -
-
- This Iterable mixin implements all Iterable members except iterator. [...] -
-
- LinkedHashMap<K, V> -
-
- A hash-table based implementation of Map. [...] -
-
- LinkedHashSet<E> -
-
- A LinkedHashSet is a hash-table based Set implementation. [...] -
-
- LinkedList<E extends LinkedListEntry<E>> -
-
- A specialized double-linked list of elements that extends LinkedListEntry. [...] -
-
- LinkedListEntry<E extends LinkedListEntry<E>> -
-
- An object that can be an element in a LinkedList. [...] -
-
- ListBase<E> -
-
- Abstract implementation of a list. [...] -
-
- ListMixin<E> -
-
- Base implementation of a List class. [...] -
-
- ListQueue<E> -
-
- List based Queue. [...] -
-
- MapBase<K, V> -
-
- Base class for implementing a Map. [...] -
-
- MapMixin<K, V> -
-
- Mixin implementing a Map. [...] -
-
- MapView<K, V> -
-
- Wrapper around a class that implements Map that only exposes Map -members. [...] -
-
- Queue<E> -
-
- A Queue is a collection that can be manipulated at both ends. One -can iterate over the elements of a queue through forEach or with -an Iterator. [...] -
-
- SetBase<E> -
-
- Base implementation of Set. [...] -
-
- SetMixin<E> -
-
- Mixin implementation of Set. [...] -
-
- SplayTreeMap<K, V> -
-
- A Map of objects that can be ordered relative to each other. [...] -
-
- SplayTreeSet<E> -
-
- A Set of objects that can be ordered relative to each other. [...] -
-
- UnmodifiableListView<E> -
-
- An unmodifiable List view of another List. [...] -
-
- UnmodifiableMapBase<K, V> -
-
- Basic implementation of an unmodifiable Map. [...] -
-
- UnmodifiableMapView<K, V> -
-
- View of a Map that disallow modifying the map. [...] -
-
-
- - - - - - - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiCodec-class.html b/doc/api/dart-convert/AsciiCodec-class.html deleted file mode 100644 index 4e4a7843..00000000 --- a/doc/api/dart-convert/AsciiCodec-class.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - AsciiCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
AsciiCodec
- -
- -
- - - -
-

AsciiCodec class

- -
-

An AsciiCodec allows encoding strings as ASCII bytes -and decoding ASCII bytes to strings.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- AsciiCodec({bool allowInvalid: false }) -
-
- Instantiates a new AsciiCodec. [...] -
const
-
-
-
- -
-

Properties

- -
-
- decoder - AsciiDecoder -
-
- Returns the decoder of this, converting from List<int> to String. [...] -
read-only, override
-
-
- encoder - AsciiEncoder -
-
- Returns the encoder from String to List<int>. [...] -
read-only, override
-
-
- name - String -
-
- The name of this codec, "us-ascii". -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- inverted - Codec<List<int>, String> -
-
- Inverts this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- decode(List<int> bytes, { bool allowInvalid }) - String - -
-
- Decodes the ASCII bytes (a list of unsigned 7-bit integers) to the -corresponding string. [...] -
override
-
-
- encode(String source) - Uint8List - -
-
- Encodes input. [...] -
override
-
-
- decodeStream(Stream<List<int>> byteStream) - Future<String> - -
-
- -
inherited
-
-
- fuse<R>(Codec<List<int>, R> other) - Codec<String, R> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiCodec/AsciiCodec.html b/doc/api/dart-convert/AsciiCodec/AsciiCodec.html deleted file mode 100644 index 94efefe5..00000000 --- a/doc/api/dart-convert/AsciiCodec/AsciiCodec.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - AsciiCodec constructor - AsciiCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
AsciiCodec
- -
- -
- - - -
-

AsciiCodec constructor

- -
- const - AsciiCodec({bool allowInvalid: false }) -
- -
-

Instantiates a new AsciiCodec.

-

If allowInvalid is true, the decode method and the converter -returned by decoder will default to allowing invalid values. -If allowing invalid values, the values will be decoded into the Unicode -Replacement character (U+FFFD). If not, an exception will be thrown. -Calls to the decode method can choose to override this default.

-

Encoders will not accept invalid (non ASCII) characters.

-
- -
-

Implementation

-
const AsciiCodec({bool allowInvalid = false}) : _allowInvalid = allowInvalid;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiCodec/decode.html b/doc/api/dart-convert/AsciiCodec/decode.html deleted file mode 100644 index c3cce08a..00000000 --- a/doc/api/dart-convert/AsciiCodec/decode.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - decode method - AsciiCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decode
- -
- -
- - - -
-

decode method

- -
- String - decode -(List<int> bytes, { bool allowInvalid }) -
override
-
-
-

Decodes the ASCII bytes (a list of unsigned 7-bit integers) to the -corresponding string.

-

If bytes contains values that are not in the range 0 .. 127, the decoder -will eventually throw a FormatException.

-

If allowInvalid is not provided, it defaults to the value used to create -this AsciiCodec.

-
- -
-

Implementation

-
String decode(List<int> bytes, {bool? allowInvalid}) {
-  if (allowInvalid ?? _allowInvalid) {
-    return const AsciiDecoder(allowInvalid: true).convert(bytes);
-  } else {
-    return const AsciiDecoder(allowInvalid: false).convert(bytes);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiCodec/decoder.html b/doc/api/dart-convert/AsciiCodec/decoder.html deleted file mode 100644 index 85f218fa..00000000 --- a/doc/api/dart-convert/AsciiCodec/decoder.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - decoder property - AsciiCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decoder
- -
- -
- - - -
-

decoder property

- - -
- -
- AsciiDecoder - decoder -
override
-
- -
-

Returns the decoder of this, converting from List<int> to String.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
AsciiDecoder get decoder => _allowInvalid
-    ? const AsciiDecoder(allowInvalid: true)
-    : const AsciiDecoder(allowInvalid: false);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiCodec/encode.html b/doc/api/dart-convert/AsciiCodec/encode.html deleted file mode 100644 index e65d6094..00000000 --- a/doc/api/dart-convert/AsciiCodec/encode.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - encode method - AsciiCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encode
- -
- -
- - - -
-

encode method

- -
- Uint8List - encode -(String source) -
override
-
-
-

Encodes input.

-

The input is encoded as if by encoder.convert.

-
- -
-

Implementation

-
Uint8List encode(String source) => encoder.convert(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiCodec/encoder.html b/doc/api/dart-convert/AsciiCodec/encoder.html deleted file mode 100644 index e04a2a78..00000000 --- a/doc/api/dart-convert/AsciiCodec/encoder.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - encoder property - AsciiCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encoder
- -
- -
- - - -
-

encoder property

- - -
- -
- AsciiEncoder - encoder -
override
-
- -
-

Returns the encoder from String to List<int>.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
AsciiEncoder get encoder => const AsciiEncoder();
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiCodec/name.html b/doc/api/dart-convert/AsciiCodec/name.html deleted file mode 100644 index bfea8b53..00000000 --- a/doc/api/dart-convert/AsciiCodec/name.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - name property - AsciiCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
name
- -
- -
- - - -
-

name property

- - -
- -
- String - name -
override
-
- -
-

The name of this codec, "us-ascii".

-
-
-

Implementation

-
String get name => "us-ascii";
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiDecoder-class.html b/doc/api/dart-convert/AsciiDecoder-class.html deleted file mode 100644 index 89d1783f..00000000 --- a/doc/api/dart-convert/AsciiDecoder-class.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - AsciiDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
AsciiDecoder
- -
- -
- - - -
-

AsciiDecoder class

- - -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- AsciiDecoder({bool allowInvalid: false }) -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- startChunkedConversion(Sink<String> sink) - ByteConversionSink - -
-
- Starts a chunked conversion. [...] - -
-
- bind(Stream<List<int>> stream) - Stream<String> - -
-
- Transforms the provided stream. [...] -
inherited
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- convert(List<int> bytes, [ int start = 0 int end ]) - String - -
-
- Converts the bytes (a list of unsigned 7- or 8-bit integers) to the -corresponding string. [...] -
inherited
-
-
- fuse<TT>(Converter<String, TT> other) - Converter<List<int>, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiDecoder/AsciiDecoder.html b/doc/api/dart-convert/AsciiDecoder/AsciiDecoder.html deleted file mode 100644 index 9d89c3ab..00000000 --- a/doc/api/dart-convert/AsciiDecoder/AsciiDecoder.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - AsciiDecoder constructor - AsciiDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
AsciiDecoder
- -
- -
- - - -
-

AsciiDecoder constructor

- -
- const - AsciiDecoder({bool allowInvalid: false }) -
- - -
-

Implementation

-
const AsciiDecoder({bool allowInvalid = false})
-    : super(allowInvalid, _asciiMask);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiDecoder/bind.html b/doc/api/dart-convert/AsciiDecoder/bind.html deleted file mode 100644 index 830aa8ea..00000000 --- a/doc/api/dart-convert/AsciiDecoder/bind.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bind method - AsciiDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<String> - bind -(Stream<List<int>> stream) -
inherited
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<String> bind(Stream<List<int>> stream) => super.bind(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiDecoder/convert.html b/doc/api/dart-convert/AsciiDecoder/convert.html deleted file mode 100644 index 53bd8a9b..00000000 --- a/doc/api/dart-convert/AsciiDecoder/convert.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - convert method - AsciiDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- String - convert -(List<int> bytes, [ int start = 0 int end ]) -
inherited
-
-
-

Converts the bytes (a list of unsigned 7- or 8-bit integers) to the -corresponding string.

-

If start and end are provided, only the sub-list of bytes from -start to end (end not inclusive) is used as input to the conversion.

-
- -
-

Implementation

-
String convert(List<int> bytes, [int start = 0, int? end]) {
-  end = RangeError.checkValidRange(start, end, bytes.length);
-  // TODO(38725): Remove workaround when assignment promotion is implemented
-  if (end == null) {
-    throw RangeError("Invalid range");
-  }
-  for (var i = start; i < end; i++) {
-    var byte = bytes[i];
-    if ((byte & ~_subsetMask) != 0) {
-      if (!_allowInvalid) {
-        throw FormatException("Invalid value in input: $byte");
-      }
-      return _convertInvalid(bytes, start, end);
-    }
-  }
-  return String.fromCharCodes(bytes, start, end);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiDecoder/startChunkedConversion.html b/doc/api/dart-convert/AsciiDecoder/startChunkedConversion.html deleted file mode 100644 index f0d756a8..00000000 --- a/doc/api/dart-convert/AsciiDecoder/startChunkedConversion.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - startChunkedConversion method - AsciiDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- ByteConversionSink - startChunkedConversion -(Sink<String> sink) - -
-
-

Starts a chunked conversion.

-

The converter works more efficiently if the given sink is a -StringConversionSink.

-
- -
-

Implementation

-
ByteConversionSink startChunkedConversion(Sink<String> sink) {
-  StringConversionSink stringSink;
-  if (sink is StringConversionSink) {
-    stringSink = sink;
-  } else {
-    stringSink = StringConversionSink.from(sink);
-  }
-  // TODO(lrn): Use asUtf16Sink when it becomes available. It
-  // works just as well, is likely to have less decoding overhead,
-  // and make adding U+FFFD easier.
-  // At that time, merge this with _Latin1DecoderSink;
-  if (_allowInvalid) {
-    return _ErrorHandlingAsciiDecoderSink(stringSink.asUtf8Sink(false));
-  } else {
-    return _SimpleAsciiDecoderSink(stringSink);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiEncoder-class.html b/doc/api/dart-convert/AsciiEncoder-class.html deleted file mode 100644 index f68ebb60..00000000 --- a/doc/api/dart-convert/AsciiEncoder-class.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - - AsciiEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
AsciiEncoder
- -
- -
- - - -
-

AsciiEncoder class

- -
-

This class converts strings of only ASCII characters to bytes.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- AsciiEncoder() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<String> stream) - Stream<List<int>> - -
-
- Transforms the provided stream. [...] -
inherited
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- convert(String string, [ int start = 0 int end ]) - Uint8List - -
-
- Converts the String into a list of its code units. [...] -
inherited
-
-
- fuse<TT>(Converter<List<int>, TT> other) - Converter<String, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- startChunkedConversion(Sink<List<int>> sink) - StringConversionSink - -
-
- Starts a chunked conversion. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiEncoder/AsciiEncoder.html b/doc/api/dart-convert/AsciiEncoder/AsciiEncoder.html deleted file mode 100644 index dcdc374c..00000000 --- a/doc/api/dart-convert/AsciiEncoder/AsciiEncoder.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - AsciiEncoder constructor - AsciiEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
AsciiEncoder
- -
- -
- - - -
-

AsciiEncoder constructor

- -
- const - AsciiEncoder() -
- - -
-

Implementation

-
const AsciiEncoder() : super(_asciiMask);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiEncoder/bind.html b/doc/api/dart-convert/AsciiEncoder/bind.html deleted file mode 100644 index 17cc66f3..00000000 --- a/doc/api/dart-convert/AsciiEncoder/bind.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bind method - AsciiEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<List<int>> - bind -(Stream<String> stream) -
inherited
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<List<int>> bind(Stream<String> stream) => super.bind(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiEncoder/convert.html b/doc/api/dart-convert/AsciiEncoder/convert.html deleted file mode 100644 index 4ee2897f..00000000 --- a/doc/api/dart-convert/AsciiEncoder/convert.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - convert method - AsciiEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- Uint8List - convert -(String string, [ int start = 0 int end ]) -
inherited
-
-
-

Converts the String into a list of its code units.

-

If start and end are provided, only the substring -string.substring(start, end) is used as input to the conversion.

-
- -
-

Implementation

-
Uint8List convert(String string, [int start = 0, int? end]) {
-  var stringLength = string.length;
-  end = RangeError.checkValidRange(start, end, stringLength);
-  // TODO(38725): Remove workaround when assignment promotion is implemented
-  if (end == null) {
-    throw RangeError("Invalid range");
-  }
-  var length = end - start;
-  var result = Uint8List(length);
-  for (var i = 0; i < length; i++) {
-    var codeUnit = string.codeUnitAt(start + i);
-    if ((codeUnit & ~_subsetMask) != 0) {
-      throw ArgumentError.value(
-          string, "string", "Contains invalid characters.");
-    }
-    result[i] = codeUnit;
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/AsciiEncoder/startChunkedConversion.html b/doc/api/dart-convert/AsciiEncoder/startChunkedConversion.html deleted file mode 100644 index 5944e9d1..00000000 --- a/doc/api/dart-convert/AsciiEncoder/startChunkedConversion.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - startChunkedConversion method - AsciiEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- StringConversionSink - startChunkedConversion -(Sink<List<int>> sink) -
inherited
-
-
-

Starts a chunked conversion.

-

The converter works more efficiently if the given sink is a -ByteConversionSink.

-
- -
-

Implementation

-
StringConversionSink startChunkedConversion(Sink<List<int>> sink) {
-  return _UnicodeSubsetEncoderSink(_subsetMask,
-      sink is ByteConversionSink ? sink : ByteConversionSink.from(sink));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Codec-class.html b/doc/api/dart-convert/Base64Codec-class.html deleted file mode 100644 index 4656532f..00000000 --- a/doc/api/dart-convert/Base64Codec-class.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - - Base64Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Base64Codec
- -
- -
- - - -
-

Base64Codec class

- -
-

A base64 encoder and decoder.

-

A Base64Codec allows base64 encoding bytes into ASCII strings and -decoding valid encodings back to bytes.

-

This implementation only handles the simplest RFC 4648 base64 and base64url -encodings. -It does not allow invalid characters when decoding and it requires, -and generates, padding so that the input is always a multiple of four -characters.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Base64Codec() -
-
- -
const
-
-
- Base64Codec.urlSafe() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- decoder - Base64Decoder -
-
- Returns the decoder of this, converting from T to S. [...] -
read-only, override
-
-
- encoder - Base64Encoder -
-
- Returns the encoder from S to T. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- inverted - Codec<String, List<int>> -
-
- Inverts this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- decode(String encoded) - Uint8List - -
-
- Decodes encoded. [...] -
override
-
-
- normalize(String source, [ int start = 0 int end ]) - String - -
-
- Validates and normalizes the base64 encoded data in source. [...] - -
-
- encode(List<int> input) - String - -
-
- Encodes input. [...] -
inherited
-
-
- fuse<R>(Codec<String, R> other) - Codec<List<int>, R> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Codec/Base64Codec.html b/doc/api/dart-convert/Base64Codec/Base64Codec.html deleted file mode 100644 index 83117eac..00000000 --- a/doc/api/dart-convert/Base64Codec/Base64Codec.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - Base64Codec constructor - Base64Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Base64Codec
- -
- -
- - - -
-

Base64Codec constructor

- -
- const - Base64Codec() -
- - -
-

Implementation

-
const Base64Codec() : _encoder = const Base64Encoder();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Codec/Base64Codec.urlSafe.html b/doc/api/dart-convert/Base64Codec/Base64Codec.urlSafe.html deleted file mode 100644 index 6481d7a8..00000000 --- a/doc/api/dart-convert/Base64Codec/Base64Codec.urlSafe.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - Base64Codec.urlSafe constructor - Base64Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Base64Codec.urlSafe
- -
- -
- - - -
-

Base64Codec.urlSafe constructor

- -
- const - Base64Codec.urlSafe() -
- - -
-

Implementation

-
const Base64Codec.urlSafe() : _encoder = const Base64Encoder.urlSafe();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Codec/decode.html b/doc/api/dart-convert/Base64Codec/decode.html deleted file mode 100644 index ab5c000f..00000000 --- a/doc/api/dart-convert/Base64Codec/decode.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - decode method - Base64Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decode
- -
- -
- - - -
-

decode method

- -
- Uint8List - decode -(String encoded) -
override
-
-
-

Decodes encoded.

-

The input is decoded as if by decoder.convert.

-

The returned Uint8List contains exactly the decoded bytes, -so the Uint8List.length is precisely the number of decoded bytes. -The Uint8List.buffer may be larger than the decoded bytes.

-
- -
-

Implementation

-
Uint8List decode(String encoded) => decoder.convert(encoded);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Codec/decoder.html b/doc/api/dart-convert/Base64Codec/decoder.html deleted file mode 100644 index 5b931805..00000000 --- a/doc/api/dart-convert/Base64Codec/decoder.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - decoder property - Base64Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decoder
- -
- -
- - - -
-

decoder property

- - -
- -
- Base64Decoder - decoder -
override
-
- -
-

Returns the decoder of this, converting from T to S.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Base64Decoder get decoder => const Base64Decoder();
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Codec/encoder.html b/doc/api/dart-convert/Base64Codec/encoder.html deleted file mode 100644 index 7e95c159..00000000 --- a/doc/api/dart-convert/Base64Codec/encoder.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - encoder property - Base64Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encoder
- -
- -
- - - -
-

encoder property

- - -
- -
- Base64Encoder - encoder -
override
-
- -
-

Returns the encoder from S to T.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Base64Encoder get encoder => _encoder;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Codec/normalize.html b/doc/api/dart-convert/Base64Codec/normalize.html deleted file mode 100644 index 805e2840..00000000 --- a/doc/api/dart-convert/Base64Codec/normalize.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - - normalize method - Base64Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
normalize
- -
- -
- - - -
-

normalize method

- -
- String - normalize -(String source, [ int start = 0 int end ]) - -
-
-

Validates and normalizes the base64 encoded data in source.

-

Only acts on the substring from start to end, with end -defaulting to the end of the string.

-

Normalization will:

-
    -
  • Unescape any %-escapes.
  • -
  • Only allow valid characters (A-Z, a-z, 0-9, / and +).
  • -
  • Normalize a _ or - character to / or +.
  • -
  • Validate that existing padding (trailing = characters) is correct.
  • -
  • If no padding exists, add correct padding if necessary and possible.
  • -
  • Validate that the length is correct (a multiple of four).
  • -
-
- -
-

Implementation

-
String normalize(String source, [int start = 0, int? end]) {
-  end = RangeError.checkValidRange(start, end, source.length);
-  // TODO(38725): Remove workaround when assignment promotion is implemented
-  if (end == null) {
-    throw RangeError("Invalid range");
-  }
-  const percent = 0x25;
-  const equals = 0x3d;
-  StringBuffer? buffer;
-  var sliceStart = start;
-  var alphabet = _Base64Encoder._base64Alphabet;
-  var inverseAlphabet = _Base64Decoder._inverseAlphabet;
-  var firstPadding = -1;
-  var firstPaddingSourceIndex = -1;
-  var paddingCount = 0;
-  for (var i = start; i < end;) {
-    var sliceEnd = i;
-    var char = source.codeUnitAt(i++);
-    var originalChar = char;
-    // Normalize char, keep originalChar to see if it matches the source.
-    if (char == percent) {
-      if (i + 2 <= end) {
-        char = parseHexByte(source, i); // May be negative.
-        i += 2;
-        // We know that %25 isn't valid, but our table considers it
-        // a potential padding start, so skip the checks.
-        if (char == percent) char = -1;
-      } else {
-        // An invalid HEX escape (too short).
-        // Just skip past the handling and reach the throw below.
-        char = -1;
-      }
-    }
-    // If char is negative here, hex-decoding failed in some way.
-    if (0 <= char && char <= 127) {
-      var value = inverseAlphabet[char];
-      if (value >= 0) {
-        char = alphabet.codeUnitAt(value);
-        if (char == originalChar) continue;
-      } else if (value == _Base64Decoder._padding) {
-        // We have ruled out percent, so char is '='.
-        if (firstPadding < 0) {
-          // Mark position in normalized output where padding occurs.
-          firstPadding = (buffer?.length ?? 0) + (sliceEnd - sliceStart);
-          firstPaddingSourceIndex = sliceEnd;
-        }
-        paddingCount++;
-        // It could have been an escaped equals (%3D).
-        if (originalChar == equals) continue;
-      }
-      if (value != _Base64Decoder._invalid) {
-        (buffer ??= StringBuffer())
-          ..write(source.substring(sliceStart, sliceEnd))
-          ..writeCharCode(char);
-        sliceStart = i;
-        continue;
-      }
-    }
-    throw FormatException("Invalid base64 data", source, sliceEnd);
-  }
-  if (buffer != null) {
-    buffer.write(source.substring(sliceStart, end));
-    if (firstPadding >= 0) {
-      // There was padding in the source. Check that it is valid:
-      // * result length a multiple of four
-      // * one or two padding characters at the end.
-      _checkPadding(source, firstPaddingSourceIndex, end, firstPadding,
-          paddingCount, buffer.length);
-    } else {
-      // Length of last chunk (1-4 chars) in the encoding.
-      var endLength = ((buffer.length - 1) % 4) + 1;
-      if (endLength == 1) {
-        // The data must have length 0, 2 or 3 modulo 4.
-        throw FormatException("Invalid base64 encoding length ", source, end);
-      }
-      while (endLength < 4) {
-        buffer.write("=");
-        endLength++;
-      }
-    }
-    return source.replaceRange(start, end, buffer.toString());
-  }
-  // Original was already normalized, only check padding.
-  var length = end - start;
-  if (firstPadding >= 0) {
-    _checkPadding(source, firstPaddingSourceIndex, end, firstPadding,
-        paddingCount, length);
-  } else {
-    // No padding given, so add some if needed it.
-    var endLength = length % 4;
-    if (endLength == 1) {
-      // The data must have length 0, 2 or 3 modulo 4.
-      throw FormatException("Invalid base64 encoding length ", source, end);
-    }
-    if (endLength > 1) {
-      // There is no "insertAt" on String, but this works as well.
-      source = source.replaceRange(end, end, (endLength == 2) ? "==" : "=");
-    }
-  }
-  return source;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Decoder-class.html b/doc/api/dart-convert/Base64Decoder-class.html deleted file mode 100644 index 653776e3..00000000 --- a/doc/api/dart-convert/Base64Decoder-class.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - Base64Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Base64Decoder
- -
- -
- - - -
-

Base64Decoder class

- -
-

Decoder for base64 encoded data.

-

This decoder accepts both base64 and base64url ("url-safe") encodings.

-

The encoding is required to be properly padded.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Base64Decoder() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- convert(String input, [ int start = 0 int end ]) - Uint8List - -
-
- Decodes the characters of input from start to end as base64. [...] -
override
-
-
- startChunkedConversion(Sink<List<int>> sink) - StringConversionSink - -
-
- Starts a chunked conversion. [...] -
override
-
-
- bind(Stream<String> stream) - Stream<List<int>> - -
-
- Transforms the provided stream. [...] -
inherited
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- fuse<TT>(Converter<List<int>, TT> other) - Converter<String, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Decoder/Base64Decoder.html b/doc/api/dart-convert/Base64Decoder/Base64Decoder.html deleted file mode 100644 index afaacabd..00000000 --- a/doc/api/dart-convert/Base64Decoder/Base64Decoder.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - Base64Decoder constructor - Base64Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Base64Decoder
- -
- -
- - - -
-

Base64Decoder constructor

- -
- const - Base64Decoder() -
- - -
-

Implementation

-
const Base64Decoder();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Decoder/convert.html b/doc/api/dart-convert/Base64Decoder/convert.html deleted file mode 100644 index 3a1b262a..00000000 --- a/doc/api/dart-convert/Base64Decoder/convert.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - convert method - Base64Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- Uint8List - convert -(String input, [ int start = 0 int end ]) -
override
-
-
-

Decodes the characters of input from start to end as base64.

-

If start is omitted, it defaults to the start of input. -If end is omitted, it defaults to the end of input.

-

The returned Uint8List contains exactly the decoded bytes, -so the Uint8List.length is precisely the number of decoded bytes. -The Uint8List.buffer may be larger than the decoded bytes.

-
- -
-

Implementation

-
Uint8List convert(String input, [int start = 0, int? end]) {
-  end = RangeError.checkValidRange(start, end, input.length);
-  // TODO(38725): Remove workaround when assignment promotion is implemented
-  if (end == null) {
-    throw RangeError("Invalid range");
-  }
-  if (start == end) return Uint8List(0);
-  var decoder = _Base64Decoder();
-  var buffer = decoder.decode(input, start, end)!;
-  decoder.close(input, end);
-  return buffer;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Decoder/startChunkedConversion.html b/doc/api/dart-convert/Base64Decoder/startChunkedConversion.html deleted file mode 100644 index 34a1302a..00000000 --- a/doc/api/dart-convert/Base64Decoder/startChunkedConversion.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - startChunkedConversion method - Base64Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- StringConversionSink - startChunkedConversion -(Sink<List<int>> sink) -
override
-
-
-

Starts a chunked conversion.

-

The returned sink serves as input for the long-running conversion. The -given sink serves as output.

-
- -
-

Implementation

-
StringConversionSink startChunkedConversion(Sink<List<int>> sink) {
-  return _Base64DecoderSink(sink);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Encoder-class.html b/doc/api/dart-convert/Base64Encoder-class.html deleted file mode 100644 index bac57181..00000000 --- a/doc/api/dart-convert/Base64Encoder-class.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - - Base64Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Base64Encoder
- -
- -
- - - -
-

Base64Encoder class

- -
-

Base64 and base64url encoding converter.

-

Encodes lists of bytes using base64 or base64url encoding.

-

The results are ASCII strings using a restricted alphabet.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Base64Encoder() -
-
- -
const
-
-
- Base64Encoder.urlSafe() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- convert(List<int> input) - String - -
-
- Converts input and returns the result of the conversion. -
override
-
-
- startChunkedConversion(Sink<String> sink) - ByteConversionSink - -
-
- Starts a chunked conversion. [...] -
override
-
-
- bind(Stream<List<int>> stream) - Stream<String> - -
-
- Transforms the provided stream. [...] -
inherited
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- fuse<TT>(Converter<String, TT> other) - Converter<List<int>, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Encoder/Base64Encoder.html b/doc/api/dart-convert/Base64Encoder/Base64Encoder.html deleted file mode 100644 index 3daab838..00000000 --- a/doc/api/dart-convert/Base64Encoder/Base64Encoder.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - Base64Encoder constructor - Base64Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Base64Encoder
- -
- -
- - - -
-

Base64Encoder constructor

- -
- const - Base64Encoder() -
- - -
-

Implementation

-
const Base64Encoder() : _urlSafe = false;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Encoder/Base64Encoder.urlSafe.html b/doc/api/dart-convert/Base64Encoder/Base64Encoder.urlSafe.html deleted file mode 100644 index 41b21270..00000000 --- a/doc/api/dart-convert/Base64Encoder/Base64Encoder.urlSafe.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - Base64Encoder.urlSafe constructor - Base64Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Base64Encoder.urlSafe
- -
- -
- - - -
-

Base64Encoder.urlSafe constructor

- -
- const - Base64Encoder.urlSafe() -
- - -
-

Implementation

-
const Base64Encoder.urlSafe() : _urlSafe = true;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Encoder/convert.html b/doc/api/dart-convert/Base64Encoder/convert.html deleted file mode 100644 index 7e033261..00000000 --- a/doc/api/dart-convert/Base64Encoder/convert.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - convert method - Base64Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- String - convert -(List<int> input) -
override
-
-
-

Converts input and returns the result of the conversion.

-
- -
-

Implementation

-
String convert(List<int> input) {
-  if (input.isEmpty) return "";
-  var encoder = _Base64Encoder(_urlSafe);
-  var buffer = encoder.encode(input, 0, input.length, true)!;
-  return String.fromCharCodes(buffer);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Base64Encoder/startChunkedConversion.html b/doc/api/dart-convert/Base64Encoder/startChunkedConversion.html deleted file mode 100644 index c3c87d0b..00000000 --- a/doc/api/dart-convert/Base64Encoder/startChunkedConversion.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - startChunkedConversion method - Base64Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- ByteConversionSink - startChunkedConversion -(Sink<String> sink) -
override
-
-
-

Starts a chunked conversion.

-

The returned sink serves as input for the long-running conversion. The -given sink serves as output.

-
- -
-

Implementation

-
ByteConversionSink startChunkedConversion(Sink<String> sink) {
-  if (sink is StringConversionSink) {
-    return _Utf8Base64EncoderSink(sink.asUtf8Sink(false), _urlSafe);
-  }
-  return _AsciiBase64EncoderSink(sink, _urlSafe);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSink-class.html b/doc/api/dart-convert/ByteConversionSink-class.html deleted file mode 100644 index 83885837..00000000 --- a/doc/api/dart-convert/ByteConversionSink-class.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - ByteConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ByteConversionSink
- -
- -
- - - -
-

ByteConversionSink class

- -
-

The ByteConversionSink provides an interface for converters to -efficiently transmit byte data.

-

Instead of limiting the interface to one non-chunked list of bytes it -accepts its input in chunks (themselves being lists of bytes).

-

This abstract class will likely get more methods over time. Implementers are -urged to extend or mix in ByteConversionSinkBase to ensure that their -class covers the newly added methods.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- ByteConversionSink() -
-
- -
-
- ByteConversionSink.from(Sink<List<int>> sink) -
-
- -
factory
-
-
- ByteConversionSink.withCallback(void callback(List<int> accumulated)) -
-
- -
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addSlice(List<int> chunk, int start, int end, bool isLast) - → void - -
-
- Adds the next chunk to this. [...] - -
-
- add(List<int> chunk) - → void - -
-
- Adds chunked data to this sink. [...] -
inherited
-
-
- close() - → void - -
-
- Closes the sink. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.from.html b/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.from.html deleted file mode 100644 index 9ebf687e..00000000 --- a/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.from.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - ByteConversionSink.from constructor - ByteConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ByteConversionSink.from
- -
- -
- - - -
-

ByteConversionSink.from constructor

- -
- - ByteConversionSink.from(Sink<List<int>> sink) -
- - -
-

Implementation

-
factory ByteConversionSink.from(Sink<List<int>> sink) = _ByteAdapterSink;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.html b/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.html deleted file mode 100644 index aa9026fc..00000000 --- a/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - ByteConversionSink constructor - ByteConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ByteConversionSink
- -
- -
- - - -
-

ByteConversionSink constructor

- -
- - ByteConversionSink() -
- - -
-

Implementation

-
ByteConversionSink();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.withCallback.html b/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.withCallback.html deleted file mode 100644 index ba5d9849..00000000 --- a/doc/api/dart-convert/ByteConversionSink/ByteConversionSink.withCallback.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - ByteConversionSink.withCallback constructor - ByteConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ByteConversionSink.withCallback
- -
- -
- - - -
-

ByteConversionSink.withCallback constructor

- -
- - ByteConversionSink.withCallback(void callback(List<int> accumulated)) -
- - -
-

Implementation

-
factory ByteConversionSink.withCallback(
-    void callback(List<int> accumulated)) = _ByteCallbackSink;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSink/addSlice.html b/doc/api/dart-convert/ByteConversionSink/addSlice.html deleted file mode 100644 index 21c29e90..00000000 --- a/doc/api/dart-convert/ByteConversionSink/addSlice.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - addSlice method - ByteConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
addSlice
- -
- -
- - - -
-

addSlice method

- -
- void - addSlice -(List<int> chunk, int start, int end, bool isLast) - -
-
-

Adds the next chunk to this.

-

Adds the bytes defined by start and end-exclusive to this.

-

If isLast is true closes this.

-

Contrary to add the given chunk must not be held onto. Once the method -returns, it is safe to overwrite the data in it.

-
- -
-

Implementation

-
void addSlice(List<int> chunk, int start, int end, bool isLast);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSinkBase-class.html b/doc/api/dart-convert/ByteConversionSinkBase-class.html deleted file mode 100644 index dda0088f..00000000 --- a/doc/api/dart-convert/ByteConversionSinkBase-class.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - ByteConversionSinkBase class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ByteConversionSinkBase
- -
- -
- - - -
-

ByteConversionSinkBase class

- -
-

This class provides a base-class for converters that need to accept byte -inputs.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- ByteConversionSinkBase() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(List<int> chunk) - → void - -
-
- Adds chunked data to this sink. [...] -
override
-
-
- addSlice(List<int> chunk, int start, int end, bool isLast) - → void - -
-
- Adds the next chunk to this. [...] -
override
-
-
- close() - → void - -
-
- Closes the sink. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSinkBase/ByteConversionSinkBase.html b/doc/api/dart-convert/ByteConversionSinkBase/ByteConversionSinkBase.html deleted file mode 100644 index 1857eac6..00000000 --- a/doc/api/dart-convert/ByteConversionSinkBase/ByteConversionSinkBase.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - ByteConversionSinkBase constructor - ByteConversionSinkBase class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ByteConversionSinkBase
- -
- -
- - - -
-

ByteConversionSinkBase constructor

- -
- - ByteConversionSinkBase() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSinkBase/add.html b/doc/api/dart-convert/ByteConversionSinkBase/add.html deleted file mode 100644 index 3932c595..00000000 --- a/doc/api/dart-convert/ByteConversionSinkBase/add.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - add method - ByteConversionSinkBase class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(List<int> chunk) -
override
-
-
-

Adds chunked data to this sink.

-

This method is also used when converters are used as StreamTransformers.

-
- -
-

Implementation

-
void add(List<int> chunk);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSinkBase/addSlice.html b/doc/api/dart-convert/ByteConversionSinkBase/addSlice.html deleted file mode 100644 index f6fd301b..00000000 --- a/doc/api/dart-convert/ByteConversionSinkBase/addSlice.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - addSlice method - ByteConversionSinkBase class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
addSlice
- -
- -
- - - -
-

addSlice method

- -
- void - addSlice -(List<int> chunk, int start, int end, bool isLast) -
override
-
-
-

Adds the next chunk to this.

-

Adds the bytes defined by start and end-exclusive to this.

-

If isLast is true closes this.

-

Contrary to add the given chunk must not be held onto. Once the method -returns, it is safe to overwrite the data in it.

-
- -
-

Implementation

-
void addSlice(List<int> chunk, int start, int end, bool isLast) {
-  add(chunk.sublist(start, end));
-  if (isLast) close();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ByteConversionSinkBase/close.html b/doc/api/dart-convert/ByteConversionSinkBase/close.html deleted file mode 100644 index 1a794398..00000000 --- a/doc/api/dart-convert/ByteConversionSinkBase/close.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - close method - ByteConversionSinkBase class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- void - close -() -
override
-
-
-

Closes the sink.

-

This signals the end of the chunked conversion. This method is called -when converters are used as StreamTransformer's.

-
- -
-

Implementation

-
void close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ChunkedConversionSink-class.html b/doc/api/dart-convert/ChunkedConversionSink-class.html deleted file mode 100644 index a1b4adcb..00000000 --- a/doc/api/dart-convert/ChunkedConversionSink-class.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - ChunkedConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ChunkedConversionSink
- -
- -
- - - -
-

ChunkedConversionSink<T> class

- -
-

A ChunkedConversionSink is used to transmit data more efficiently between -two converters during chunked conversions.

-

The basic ChunkedConversionSink is just a Sink, and converters should -work with a plain Sink, but may work more efficiently with certain -specialized types of ChunkedConversionSink.

-

It is recommended that implementations of ChunkedConversionSink extend -this class, to inherit any further methods that may be added to the class.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- ChunkedConversionSink() -
-
- -
-
- ChunkedConversionSink.withCallback(void callback(List<T> accumulated)) -
-
- -
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(T chunk) - → void - -
-
- Adds chunked data to this sink. [...] -
override
-
-
- close() - → void - -
-
- Closes the sink. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ChunkedConversionSink/ChunkedConversionSink.html b/doc/api/dart-convert/ChunkedConversionSink/ChunkedConversionSink.html deleted file mode 100644 index f592f467..00000000 --- a/doc/api/dart-convert/ChunkedConversionSink/ChunkedConversionSink.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - ChunkedConversionSink constructor - ChunkedConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ChunkedConversionSink
- -
- -
- - - -
-

ChunkedConversionSink<T> constructor

- -
- - ChunkedConversionSink<T>() -
- - -
-

Implementation

-
ChunkedConversionSink();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ChunkedConversionSink/ChunkedConversionSink.withCallback.html b/doc/api/dart-convert/ChunkedConversionSink/ChunkedConversionSink.withCallback.html deleted file mode 100644 index 6ba703c5..00000000 --- a/doc/api/dart-convert/ChunkedConversionSink/ChunkedConversionSink.withCallback.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - ChunkedConversionSink.withCallback constructor - ChunkedConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ChunkedConversionSink.withCallback
- -
- -
- - - -
-

ChunkedConversionSink<T>.withCallback constructor

- -
- - ChunkedConversionSink<T>.withCallback(void callback(List<T> accumulated)) -
- - -
-

Implementation

-
factory ChunkedConversionSink.withCallback(
-    void callback(List<T> accumulated)) = _SimpleCallbackSink<T>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ChunkedConversionSink/add.html b/doc/api/dart-convert/ChunkedConversionSink/add.html deleted file mode 100644 index 554862e6..00000000 --- a/doc/api/dart-convert/ChunkedConversionSink/add.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - add method - ChunkedConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(T chunk) -
override
-
-
-

Adds chunked data to this sink.

-

This method is also used when converters are used as StreamTransformers.

-
- -
-

Implementation

-
void add(T chunk);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ChunkedConversionSink/close.html b/doc/api/dart-convert/ChunkedConversionSink/close.html deleted file mode 100644 index 714366b8..00000000 --- a/doc/api/dart-convert/ChunkedConversionSink/close.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - close method - ChunkedConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- void - close -() -
override
-
-
-

Closes the sink.

-

This signals the end of the chunked conversion. This method is called -when converters are used as StreamTransformer's.

-
- -
-

Implementation

-
void close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ClosableStringSink-class.html b/doc/api/dart-convert/ClosableStringSink-class.html deleted file mode 100644 index 9bbd3df3..00000000 --- a/doc/api/dart-convert/ClosableStringSink-class.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - ClosableStringSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ClosableStringSink
- -
- -
- - - -
-

ClosableStringSink class

- -
-

A ClosableStringSink extends the StringSink interface by adding a -close method.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- ClosableStringSink.fromStringSink(StringSink sink, void onClose()) -
-
- Creates a new instance combining a StringSink sink and a callback -onClose which is invoked when the returned instance is closed. -
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- close() - → void - -
-
- Closes this and flushes any outstanding data. - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- write(Object obj) - → void - -
-
- Converts obj to a String by invoking Object.toString and -adds the result to this. -
inherited
-
-
- writeAll(Iterable objects, [ String separator = "" ]) - → void - -
-
- Iterates over the given objects and writes them in sequence. -
inherited
-
-
- writeCharCode(int charCode) - → void - -
-
- Writes the charCode to this. [...] -
inherited
-
-
- writeln([Object obj = "" ]) - → void - -
-
- Converts obj to a String by invoking Object.toString and -adds the result to this, followed by a newline. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ClosableStringSink/ClosableStringSink.fromStringSink.html b/doc/api/dart-convert/ClosableStringSink/ClosableStringSink.fromStringSink.html deleted file mode 100644 index e3f8d7c9..00000000 --- a/doc/api/dart-convert/ClosableStringSink/ClosableStringSink.fromStringSink.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - ClosableStringSink.fromStringSink constructor - ClosableStringSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ClosableStringSink.fromStringSink
- -
- -
- - - -
-

ClosableStringSink.fromStringSink constructor

- -
- - ClosableStringSink.fromStringSink(StringSink sink, void onClose()) -
- -
-

Creates a new instance combining a StringSink sink and a callback -onClose which is invoked when the returned instance is closed.

-
- -
-

Implementation

-
factory ClosableStringSink.fromStringSink(StringSink sink, void onClose()) =
-    _ClosableStringSink;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ClosableStringSink/close.html b/doc/api/dart-convert/ClosableStringSink/close.html deleted file mode 100644 index 810253b3..00000000 --- a/doc/api/dart-convert/ClosableStringSink/close.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - close method - ClosableStringSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- void - close -() - -
-
-

Closes this and flushes any outstanding data.

-
- -
-

Implementation

-
void close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Codec-class.html b/doc/api/dart-convert/Codec-class.html deleted file mode 100644 index fc4bdf12..00000000 --- a/doc/api/dart-convert/Codec-class.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - - Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Codec
- -
- -
- - - -
-

Codec<S, T> class

- -
-

A Codec encodes and (if supported) decodes data.

-

Codecs can be fused. For example fusing json and utf8 produces -an encoder that can convert Json objects directly to bytes, or can decode -bytes directly to json objects.

-

Fused codecs generally attempt to optimize the operations and can be faster -than executing each step of an encoding separately.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Codec() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- decoder - Converter<T, S> -
-
- Returns the decoder of this, converting from T to S. [...] -
read-only
-
-
- encoder - Converter<S, T> -
-
- Returns the encoder from S to T. [...] -
read-only
-
-
- inverted - Codec<T, S> -
-
- Inverts this. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- decode(T encoded) - → S - -
-
- Decodes encoded data. [...] - -
-
- encode(S input) - → T - -
-
- Encodes input. [...] - -
-
- fuse<R>(Codec<T, R> other) - Codec<S, R> - -
-
- Fuses this with other. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Codec/Codec.html b/doc/api/dart-convert/Codec/Codec.html deleted file mode 100644 index 6f2c05a2..00000000 --- a/doc/api/dart-convert/Codec/Codec.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - Codec constructor - Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Codec
- -
- -
- - - -
-

Codec<S, T> constructor

- -
- const - Codec<S, T>() -
- - -
-

Implementation

-
const Codec();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Codec/decode.html b/doc/api/dart-convert/Codec/decode.html deleted file mode 100644 index 9ac023e5..00000000 --- a/doc/api/dart-convert/Codec/decode.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - decode method - Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decode
- -
- -
- - - -
-

decode method

- -
- S - decode -(T encoded) - -
-
-

Decodes encoded data.

-

The input is decoded as if by decoder.convert.

-
- -
-

Implementation

-
S decode(T encoded) => decoder.convert(encoded);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Codec/decoder.html b/doc/api/dart-convert/Codec/decoder.html deleted file mode 100644 index b976a214..00000000 --- a/doc/api/dart-convert/Codec/decoder.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - decoder property - Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decoder
- -
- -
- - - -
-

decoder property

- - -
- -
- Converter<T, S> - decoder - -
- -
-

Returns the decoder of this, converting from T to S.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Converter<T, S> get decoder;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Codec/encode.html b/doc/api/dart-convert/Codec/encode.html deleted file mode 100644 index 941b2d9f..00000000 --- a/doc/api/dart-convert/Codec/encode.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - encode method - Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encode
- -
- -
- - - -
-

encode method

- -
- T - encode -(S input) - -
-
-

Encodes input.

-

The input is encoded as if by encoder.convert.

-
- -
-

Implementation

-
T encode(S input) => encoder.convert(input);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Codec/encoder.html b/doc/api/dart-convert/Codec/encoder.html deleted file mode 100644 index f83b72bf..00000000 --- a/doc/api/dart-convert/Codec/encoder.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - encoder property - Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encoder
- -
- -
- - - -
-

encoder property

- - -
- -
- Converter<S, T> - encoder - -
- -
-

Returns the encoder from S to T.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Converter<S, T> get encoder;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Codec/fuse.html b/doc/api/dart-convert/Codec/fuse.html deleted file mode 100644 index a04c7009..00000000 --- a/doc/api/dart-convert/Codec/fuse.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - fuse method - Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
fuse
- -
- -
- - - -
-

fuse<R> method

- -
- Codec<S, R> - fuse -<R>(Codec<T, R> other) - -
-
-

Fuses this with other.

-

When encoding, the resulting codec encodes with this before -encoding with other.

-

When decoding, the resulting codec decodes with other before decoding -with this.

-

In some cases one needs to use the inverted codecs to be able to fuse -them correctly. That is, the output type of this (T) must match the -input type of the second codec other.

-

Examples:

-
final jsonToBytes = json.fuse(utf8);
-List<int> bytes = jsonToBytes.encode(["json-object"]);
-var decoded = jsonToBytes.decode(bytes);
-assert(decoded is List && decoded[0] == "json-object");
-
-var inverted = json.inverted;
-var jsonIdentity = json.fuse(inverted);
-var jsonObject = jsonIdentity.encode(["1", 2]);
-assert(jsonObject is List && jsonObject[0] == "1" && jsonObject[1] == 2);
-
-
- -
-

Implementation

-
// TODO(floitsch): use better example with line-splitter once that one is
-// in this library.
-Codec<S, R> fuse<R>(Codec<T, R> other) {
-  return _FusedCodec<S, T, R>(this, other);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Codec/inverted.html b/doc/api/dart-convert/Codec/inverted.html deleted file mode 100644 index 9a3125f8..00000000 --- a/doc/api/dart-convert/Codec/inverted.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - inverted property - Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
inverted
- -
- -
- - - -
-

inverted property

- - -
- -
- Codec<T, S> - inverted - -
- -
-

Inverts this.

-

The encoder and decoder of the resulting codec are swapped.

-
-
-

Implementation

-
Codec<T, S> get inverted => _InvertedCodec<T, S>(this);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Converter-class.html b/doc/api/dart-convert/Converter-class.html deleted file mode 100644 index e3cf3a47..00000000 --- a/doc/api/dart-convert/Converter-class.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - - Converter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Converter
- -
- -
- - - -
-

Converter<S, T> class

- -
-

A Converter converts data from one representation into another.

-

It is recommended that implementations of Converter extend this class, -to inherit any further methods that may be added to the class.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Converter() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<S> stream) - Stream<T> - -
-
- Transforms the provided stream. [...] -
override
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
override
-
-
- convert(S input) - → T - -
-
- Converts input and returns the result of the conversion. - -
-
- fuse<TT>(Converter<T, TT> other) - Converter<S, TT> - -
-
- Fuses this with other. [...] - -
-
- startChunkedConversion(Sink<T> sink) - Sink<S> - -
-
- Starts a chunked conversion. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- castFrom<SS, ST, TS, TT>(Converter<SS, ST> source) - Converter<TS, TT> - -
-
- Adapts source to be a Converter<TS, TT>. [...] -
override
-
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Converter/Converter.html b/doc/api/dart-convert/Converter/Converter.html deleted file mode 100644 index 3d9f1591..00000000 --- a/doc/api/dart-convert/Converter/Converter.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - Converter constructor - Converter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Converter
- -
- -
- - - -
-

Converter<S, T> constructor

- -
- const - Converter<S, T>() -
- - -
-

Implementation

-
const Converter();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Converter/bind.html b/doc/api/dart-convert/Converter/bind.html deleted file mode 100644 index 3d6e4332..00000000 --- a/doc/api/dart-convert/Converter/bind.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - bind method - Converter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<T> - bind -(Stream<S> stream) -
override
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<T> bind(Stream<S> stream) {
-  return Stream<T>.eventTransformed(
-      stream, (EventSink sink) => _ConverterStreamEventSink(this, sink));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Converter/cast.html b/doc/api/dart-convert/Converter/cast.html deleted file mode 100644 index 0762dd44..00000000 --- a/doc/api/dart-convert/Converter/cast.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - cast method - Converter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<RS, RT> method

- -
- Converter<RS, RT> - cast -<RS, RT>() -
override
-
-
-

Provides a Converter<RS, RT> view of this stream transformer.

-

The resulting transformer will check at run-time that all conversion -inputs are actually instances of S, -and it will check that all conversion output produced by this converter -are actually instances of RT.

-
- -
-

Implementation

-
Converter<RS, RT> cast<RS, RT>() => Converter.castFrom<S, T, RS, RT>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Converter/castFrom.html b/doc/api/dart-convert/Converter/castFrom.html deleted file mode 100644 index 0c14fe50..00000000 --- a/doc/api/dart-convert/Converter/castFrom.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - castFrom method - Converter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
castFrom
- -
- -
- - - -
-

castFrom<SS, ST, TS, TT> method

- -
- Converter<TS, TT> - castFrom -<SS, ST, TS, TT>(Converter<SS, ST> source) -
override
-
-
-

Adapts source to be a Converter<TS, TT>.

-

This allows source to be used at the new type, but at run-time it -must satisfy the requirements of both the new type and its original type.

-

Conversion input must be both SS and TS and the output created by -source for those input must be both ST and TT.

-
- -
-

Implementation

-
static Converter<TS, TT> castFrom<SS, ST, TS, TT>(Converter<SS, ST> source) =>
-    CastConverter<SS, ST, TS, TT>(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Converter/convert.html b/doc/api/dart-convert/Converter/convert.html deleted file mode 100644 index 4ca23b56..00000000 --- a/doc/api/dart-convert/Converter/convert.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - convert method - Converter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- T - convert -(S input) - -
-
-

Converts input and returns the result of the conversion.

-
- -
-

Implementation

-
T convert(S input);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Converter/fuse.html b/doc/api/dart-convert/Converter/fuse.html deleted file mode 100644 index b4862be2..00000000 --- a/doc/api/dart-convert/Converter/fuse.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - fuse method - Converter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
fuse
- -
- -
- - - -
-

fuse<TT> method

- -
- Converter<S, TT> - fuse -<TT>(Converter<T, TT> other) - -
-
-

Fuses this with other.

-

Encoding with the resulting converter is equivalent to converting with -this before converting with other.

-
- -
-

Implementation

-
Converter<S, TT> fuse<TT>(Converter<T, TT> other) {
-  return _FusedConverter<S, T, TT>(this, other);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Converter/startChunkedConversion.html b/doc/api/dart-convert/Converter/startChunkedConversion.html deleted file mode 100644 index 7ee32546..00000000 --- a/doc/api/dart-convert/Converter/startChunkedConversion.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - startChunkedConversion method - Converter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- Sink<S> - startChunkedConversion -(Sink<T> sink) - -
-
-

Starts a chunked conversion.

-

The returned sink serves as input for the long-running conversion. The -given sink serves as output.

-
- -
-

Implementation

-
Sink<S> startChunkedConversion(Sink<T> sink) {
-  throw UnsupportedError(
-      "This converter does not support chunked conversions: $this");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Encoding-class.html b/doc/api/dart-convert/Encoding-class.html deleted file mode 100644 index 74c79568..00000000 --- a/doc/api/dart-convert/Encoding-class.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - Encoding class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Encoding
- -
- -
- - - -
-

Encoding class

- -
-

Open-ended Encoding enum.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Encoding() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- decoder - Converter<List<int>, String> -
-
- Returns the decoder of this, converting from List<int> to String. [...] -
read-only, override
-
-
- encoder - Converter<String, List<int>> -
-
- Returns the encoder from String to List<int>. [...] -
read-only, override
-
-
- name - String -
-
- Name of the encoding. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- inverted - Codec<List<int>, String> -
-
- Inverts this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- decodeStream(Stream<List<int>> byteStream) - Future<String> - -
-
- - -
-
- decode(List<int> encoded) - String - -
-
- Decodes encoded data. [...] -
inherited
-
-
- encode(String input) - List<int> - -
-
- Encodes input. [...] -
inherited
-
-
- fuse<R>(Codec<List<int>, R> other) - Codec<String, R> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- getByName(String name) - Encoding - -
-
- Returns an Encoding for a named character set. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Encoding/Encoding.html b/doc/api/dart-convert/Encoding/Encoding.html deleted file mode 100644 index 350f0d8d..00000000 --- a/doc/api/dart-convert/Encoding/Encoding.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - Encoding constructor - Encoding class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Encoding
- -
- -
- - - -
-

Encoding constructor

- -
- const - Encoding() -
- - -
-

Implementation

-
const Encoding();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Encoding/decodeStream.html b/doc/api/dart-convert/Encoding/decodeStream.html deleted file mode 100644 index 9fa9029e..00000000 --- a/doc/api/dart-convert/Encoding/decodeStream.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - decodeStream method - Encoding class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decodeStream
- -
- -
- - - -
-

decodeStream method

- -
- Future<String> - decodeStream -(Stream<List<int>> byteStream) - -
- -
-

Implementation

-
Future<String> decodeStream(Stream<List<int>> byteStream) {
-  return decoder
-      .bind(byteStream)
-      .fold(StringBuffer(),
-          (StringBuffer buffer, String string) => buffer..write(string))
-      .then((StringBuffer buffer) => buffer.toString());
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Encoding/decoder.html b/doc/api/dart-convert/Encoding/decoder.html deleted file mode 100644 index fc4e8c91..00000000 --- a/doc/api/dart-convert/Encoding/decoder.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - decoder property - Encoding class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decoder
- -
- -
- - - -
-

decoder property

- - -
- -
- Converter<List<int>, String> - decoder -
override
-
- -
-

Returns the decoder of this, converting from List<int> to String.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Converter<List<int>, String> get decoder;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Encoding/encoder.html b/doc/api/dart-convert/Encoding/encoder.html deleted file mode 100644 index a8ce6356..00000000 --- a/doc/api/dart-convert/Encoding/encoder.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - encoder property - Encoding class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encoder
- -
- -
- - - -
-

encoder property

- - -
- -
- Converter<String, List<int>> - encoder -
override
-
- -
-

Returns the encoder from String to List<int>.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Converter<String, List<int>> get encoder;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Encoding/getByName.html b/doc/api/dart-convert/Encoding/getByName.html deleted file mode 100644 index ac65b060..00000000 --- a/doc/api/dart-convert/Encoding/getByName.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - getByName method - Encoding class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
getByName
- -
- -
- - - -
-

getByName method

- -
- Encoding - getByName -(String name) - -
-
-

Returns an Encoding for a named character set.

-

The names used are the IANA official names for the character set (see -IANA character sets). The names are case insensitive.

-

If character set is not supported null is returned.

-
- -
-

Implementation

-
static Encoding? getByName(String? name) {
-  if (name == null) return null;
-  return _nameToEncoding[name.toLowerCase()];
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Encoding/name.html b/doc/api/dart-convert/Encoding/name.html deleted file mode 100644 index a6426bae..00000000 --- a/doc/api/dart-convert/Encoding/name.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - name property - Encoding class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
name
- -
- -
- - - -
-

name property

- - -
- -
- String - name - -
- -
-

Name of the encoding.

-

If the encoding is standardized, this is the lower-case version of one of -the IANA official names for the character set (see -http://www.iana.org/assignments/character-sets/character-sets.xml)

-
-
-

Implementation

-
String get name;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscape-class.html b/doc/api/dart-convert/HtmlEscape-class.html deleted file mode 100644 index f922e74a..00000000 --- a/doc/api/dart-convert/HtmlEscape-class.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - HtmlEscape class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
HtmlEscape
- -
- -
- - - -
-

HtmlEscape class

- -
-

Converter which escapes characters with special meaning in HTML.

-

The converter finds characters that are significant in HTML source and -replaces them with corresponding HTML entities.

-

The characters that need escaping in HTML are:

-
    -
  • & (ampersand) always need to be escaped.
  • -
  • < (less than) and '>' (greater than) when inside an element.
  • -
  • " (quote) when inside a double-quoted attribute value.
  • -
  • ' (apostrophe) when inside a single-quoted attribute value. - Apostrophe is escaped as &#39; instead of &apos; since - not all browsers understand &apos;.
  • -
  • / (slash) is recommended to be escaped because it may be used - to terminate an element in some HTML dialects.
  • -
-

Escaping > (greater than) isn't necessary, but the result is often -found to be easier to read if greater-than is also escaped whenever -less-than is.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- HtmlEscape([HtmlEscapeMode mode = HtmlEscapeMode.unknown ]) -
-
- Create converter that escapes HTML characters. [...] -
const
-
-
-
- -
-

Properties

- -
-
- mode - HtmlEscapeMode -
-
- The HtmlEscapeMode used by the converter. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- convert(String text) - String - -
-
- Converts input and returns the result of the conversion. -
override
-
-
- startChunkedConversion(Sink<String> sink) - StringConversionSink - -
-
- Starts a chunked conversion. [...] -
override
-
-
- bind(Stream<String> stream) - Stream<String> - -
-
- Transforms the provided stream. [...] -
inherited
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- fuse<TT>(Converter<String, TT> other) - Converter<String, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscape/HtmlEscape.html b/doc/api/dart-convert/HtmlEscape/HtmlEscape.html deleted file mode 100644 index 2cea0f37..00000000 --- a/doc/api/dart-convert/HtmlEscape/HtmlEscape.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - HtmlEscape constructor - HtmlEscape class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
HtmlEscape
- -
- -
- - - -
-

HtmlEscape constructor

- -
- const - HtmlEscape([HtmlEscapeMode mode = HtmlEscapeMode.unknown ]) -
- -
-

Create converter that escapes HTML characters.

-

If mode is provided as either HtmlEscapeMode.attribute or -HtmlEscapeMode.element, only the corresponding subset of HTML -characters are escaped. -The default is to escape all HTML characters.

-
- -
-

Implementation

-
const HtmlEscape([this.mode = HtmlEscapeMode.unknown]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscape/convert.html b/doc/api/dart-convert/HtmlEscape/convert.html deleted file mode 100644 index 386c8ca3..00000000 --- a/doc/api/dart-convert/HtmlEscape/convert.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - convert method - HtmlEscape class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- String - convert -(String text) -
override
-
-
-

Converts input and returns the result of the conversion.

-
- -
-

Implementation

-
String convert(String text) {
-  var val = _convert(text, 0, text.length);
-  return val == null ? text : val;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscape/mode.html b/doc/api/dart-convert/HtmlEscape/mode.html deleted file mode 100644 index 5dbb894f..00000000 --- a/doc/api/dart-convert/HtmlEscape/mode.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - mode property - HtmlEscape class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
mode
- -
- -
- - - -
-

mode property

- -
- HtmlEscapeMode - mode -
final
-
-
-

The HtmlEscapeMode used by the converter.

-
-
-

Implementation

-
final HtmlEscapeMode mode
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscape/startChunkedConversion.html b/doc/api/dart-convert/HtmlEscape/startChunkedConversion.html deleted file mode 100644 index 5706b11e..00000000 --- a/doc/api/dart-convert/HtmlEscape/startChunkedConversion.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - startChunkedConversion method - HtmlEscape class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- StringConversionSink - startChunkedConversion -(Sink<String> sink) -
override
-
-
-

Starts a chunked conversion.

-

The returned sink serves as input for the long-running conversion. The -given sink serves as output.

-
- -
-

Implementation

-
StringConversionSink startChunkedConversion(Sink<String> sink) {
-  return _HtmlEscapeSink(this,
-      sink is StringConversionSink ? sink : StringConversionSink.from(sink));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode-class.html b/doc/api/dart-convert/HtmlEscapeMode-class.html deleted file mode 100644 index 3b74deba..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode-class.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - - - - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
HtmlEscapeMode
- -
- -
- - - -
-

HtmlEscapeMode class

- -
-

HTML escape modes.

-

Allows specifying a mode for HTML escaping that depend on the context -where the escaped result is going to be used. -The relevant contexts are:

-
    -
  • as text content of an HTML element.
  • -
  • as value of a (single- or double-) quoted attribute value.
  • -
-

All modes require escaping of & (ampersand) characters, and may -enable escaping of more characters.

-

Custom escape modes can be created using the HtmlEscapeMode.HtmlEscapeMode -constructor.

-
- - -
-

Constructors

- -
-
- HtmlEscapeMode({String name: "custom", bool escapeLtGt: false bool escapeQuot: false bool escapeApos: false bool escapeSlash: false }) -
-
- Create a custom escaping mode. [...] -
const
-
-
-
- -
-

Properties

- -
-
- escapeApos - bool -
-
- Whether to escape "'" (apostrophe). -
final
-
-
- escapeLtGt - bool -
-
- Whether to escape '<' and '>'. -
final
-
-
- escapeQuot - bool -
-
- Whether to escape '"' (quote). -
final
-
-
- escapeSlash - bool -
-
- Whether to escape "/" (forward slash, solidus). [...] -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - -
-

Constants

- -
-
- attribute - → const HtmlEscapeMode -
-
- Escaping mode for text going into double-quoted HTML attribute values. [...] - -
- const HtmlEscapeMode._('attribute', true, true, false, false) -
-
-
- element - → const HtmlEscapeMode -
-
- Escaping mode for text going into HTML element content. [...] - -
- const HtmlEscapeMode._('element', true, false, false, false) -
-
-
- sqAttribute - → const HtmlEscapeMode -
-
- Escaping mode for text going into single-quoted HTML attribute values. [...] - -
- const HtmlEscapeMode._('attribute', true, false, true, false) -
-
-
- unknown - → const HtmlEscapeMode -
-
- Default escaping mode which escape all characters. [...] - -
- const HtmlEscapeMode._('unknown', true, true, true, true) -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/HtmlEscapeMode.html b/doc/api/dart-convert/HtmlEscapeMode/HtmlEscapeMode.html deleted file mode 100644 index ed8e324a..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/HtmlEscapeMode.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - HtmlEscapeMode constructor - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
HtmlEscapeMode
- -
- -
- - - -
-

HtmlEscapeMode constructor

- -
- const - HtmlEscapeMode({String name: "custom", bool escapeLtGt: false bool escapeQuot: false bool escapeApos: false bool escapeSlash: false }) -
- -
-

Create a custom escaping mode.

-

All modes escape &. -The mode can further be set to escape < and > (escapeLtGt), -" (escapeQuot), ' (escapeApos), and/or / (escapeSlash).

-
- -
-

Implementation

-
const HtmlEscapeMode(
-    {String name = "custom",
-    this.escapeLtGt = false,
-    this.escapeQuot = false,
-    this.escapeApos = false,
-    this.escapeSlash = false})
-    : _name = name;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/attribute-constant.html b/doc/api/dart-convert/HtmlEscapeMode/attribute-constant.html deleted file mode 100644 index b654e5a7..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/attribute-constant.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - attribute constant - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
attribute
- -
- -
- - - -
-

attribute constant

- -
- HtmlEscapeMode - const attribute - = - const HtmlEscapeMode._('attribute', true, true, false, false) -
- -
-

Escaping mode for text going into double-quoted HTML attribute values.

-

The result should not be used as the content of an unquoted -or single-quoted attribute value.

-

Escapes double quotes (") but not single quotes ('), -and escapes < and > characters because they are not allowed -in strict XHTML attributes

-
-
-

Implementation

-
static const HtmlEscapeMode attribute =
-    HtmlEscapeMode._('attribute', true, true, false, false)
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/element-constant.html b/doc/api/dart-convert/HtmlEscapeMode/element-constant.html deleted file mode 100644 index 9d9f725c..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/element-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - element constant - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
element
- -
- -
- - - -
-

element constant

- -
- HtmlEscapeMode - const element - = - const HtmlEscapeMode._('element', true, false, false, false) -
- -
-

Escaping mode for text going into HTML element content.

-

The escaping only works for elements with normal HTML content, -and not for, for example, script or style element content, -which require escapes matching their particular content syntax.

-

Escapes < and > characters.

-
-
-

Implementation

-
static const HtmlEscapeMode element =
-    HtmlEscapeMode._('element', true, false, false, false)
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/escapeApos.html b/doc/api/dart-convert/HtmlEscapeMode/escapeApos.html deleted file mode 100644 index a5e2aa0d..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/escapeApos.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - escapeApos property - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
escapeApos
- -
- -
- - - -
-

escapeApos property

- -
- bool - escapeApos -
final
-
-
-

Whether to escape "'" (apostrophe).

-
-
-

Implementation

-
final bool escapeApos
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/escapeLtGt.html b/doc/api/dart-convert/HtmlEscapeMode/escapeLtGt.html deleted file mode 100644 index a3ed07b7..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/escapeLtGt.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - escapeLtGt property - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
escapeLtGt
- -
- -
- - - -
-

escapeLtGt property

- -
- bool - escapeLtGt -
final
-
-
-

Whether to escape '<' and '>'.

-
-
-

Implementation

-
final bool escapeLtGt
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/escapeQuot.html b/doc/api/dart-convert/HtmlEscapeMode/escapeQuot.html deleted file mode 100644 index 6e7305a1..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/escapeQuot.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - escapeQuot property - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
escapeQuot
- -
- -
- - - -
-

escapeQuot property

- -
- bool - escapeQuot -
final
-
-
-

Whether to escape '"' (quote).

-
-
-

Implementation

-
final bool escapeQuot
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/escapeSlash.html b/doc/api/dart-convert/HtmlEscapeMode/escapeSlash.html deleted file mode 100644 index 17a19460..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/escapeSlash.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - escapeSlash property - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
escapeSlash
- -
- -
- - - -
-

escapeSlash property

- -
- bool - escapeSlash -
final
-
-
-

Whether to escape "/" (forward slash, solidus).

-

Escaping a slash is recommended to avoid cross-site scripting attacks by -the Open Web Application Security Project

-
-
-

Implementation

-
final bool escapeSlash
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/sqAttribute-constant.html b/doc/api/dart-convert/HtmlEscapeMode/sqAttribute-constant.html deleted file mode 100644 index 36cfd671..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/sqAttribute-constant.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - sqAttribute constant - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
sqAttribute
- -
- -
- - - -
-

sqAttribute constant

- -
- HtmlEscapeMode - const sqAttribute - = - const HtmlEscapeMode._('attribute', true, false, true, false) -
- -
-

Escaping mode for text going into single-quoted HTML attribute values.

-

The result should not be used as the content of an unquoted -or double-quoted attribute value.

-

Escapes single quotes (') but not double quotes ("), -and escapes < and > characters because they are not allowed -in strict XHTML attributes

-
-
-

Implementation

-
static const HtmlEscapeMode sqAttribute =
-    HtmlEscapeMode._('attribute', true, false, true, false)
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/toString.html b/doc/api/dart-convert/HtmlEscapeMode/toString.html deleted file mode 100644 index 01532fbe..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/toString.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - toString method - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => _name;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/HtmlEscapeMode/unknown-constant.html b/doc/api/dart-convert/HtmlEscapeMode/unknown-constant.html deleted file mode 100644 index 086cdb47..00000000 --- a/doc/api/dart-convert/HtmlEscapeMode/unknown-constant.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - unknown constant - HtmlEscapeMode class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
unknown
- -
- -
- - - -
-

unknown constant

- -
- HtmlEscapeMode - const unknown - = - const HtmlEscapeMode._('unknown', true, true, true, true) -
- -
-

Default escaping mode which escape all characters.

-

The result of such an escaping is usable both in element content and -in any attribute value.

-

The escaping only works for elements with normal HTML content, -and not for, for example, script or style element content, -which require escapes matching their particular content syntax.

-
-
-

Implementation

-
static const HtmlEscapeMode unknown =
-    HtmlEscapeMode._('unknown', true, true, true, true)
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCodec-class.html b/doc/api/dart-convert/JsonCodec-class.html deleted file mode 100644 index dc023211..00000000 --- a/doc/api/dart-convert/JsonCodec-class.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - JsonCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonCodec
- -
- -
- - - -
-

JsonCodec class

- -
-

A JsonCodec encodes JSON objects to strings and decodes strings to -JSON objects.

-

Examples:

-
var encoded = json.encode([1, 2, { "a": null }]);
-var decoded = json.decode('["foo", { "bar": 499 }]');
-
-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- JsonCodec({Object reviver(Object key Object value), Object toEncodable(dynamic object) }) -
-
- Creates a JsonCodec with the given reviver and encoding function. [...] -
const
-
-
- JsonCodec.withReviver(dynamic reviver(Object key Object value)) -
-
- Creates a JsonCodec with the given reviver. [...] -
-
-
- -
-

Properties

- -
-
- decoder - JsonDecoder -
-
- Returns the decoder of this, converting from T to S. [...] -
read-only, override
-
-
- encoder - JsonEncoder -
-
- Returns the encoder from S to T. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- inverted - Codec<String, Object> -
-
- Inverts this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- decode(String source, { Object reviver(Object key Object value) }) - → dynamic - -
-
- Parses the string and returns the resulting Json object. [...] -
override
-
-
- encode(Object value, { Object toEncodable(dynamic object) }) - String - -
-
- Converts value to a JSON string. [...] -
override
-
-
- fuse<R>(Codec<String, R> other) - Codec<Object, R> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCodec/JsonCodec.html b/doc/api/dart-convert/JsonCodec/JsonCodec.html deleted file mode 100644 index 5128242f..00000000 --- a/doc/api/dart-convert/JsonCodec/JsonCodec.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - JsonCodec constructor - JsonCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonCodec
- -
- -
- - - -
-

JsonCodec constructor

- -
- const - JsonCodec({Object reviver(Object key Object value), Object toEncodable(dynamic object) }) -
- -
-

Creates a JsonCodec with the given reviver and encoding function.

-

The reviver function is called during decoding. It is invoked once for -each object or list property that has been parsed. -The key argument is either the integer list index for a list property, -the string map key for object properties, or null for the final result.

-

If reviver is omitted, it defaults to returning the value argument.

-

The toEncodable function is used during encoding. It is invoked for -values that are not directly encodable to a string (a value that is not a -number, boolean, string, null, list or a map with string keys). The -function must return an object that is directly encodable. The elements of -a returned list and values of a returned map do not need to be directly -encodable, and if they aren't, toEncodable will be used on them as well. -Please notice that it is possible to cause an infinite recursive regress -in this way, by effectively creating an infinite data structure through -repeated call to toEncodable.

-

If toEncodable is omitted, it defaults to a function that returns the -result of calling .toJson() on the unencodable object.

-
- -
-

Implementation

-
const JsonCodec(
-    {Object? reviver(Object? key, Object? value)?,
-    Object? toEncodable(dynamic object)?})
-    : _reviver = reviver,
-      _toEncodable = toEncodable;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCodec/JsonCodec.withReviver.html b/doc/api/dart-convert/JsonCodec/JsonCodec.withReviver.html deleted file mode 100644 index 85744334..00000000 --- a/doc/api/dart-convert/JsonCodec/JsonCodec.withReviver.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - JsonCodec.withReviver constructor - JsonCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonCodec.withReviver
- -
- -
- - - -
-

JsonCodec.withReviver constructor

- -
- - JsonCodec.withReviver(dynamic reviver(Object key Object value)) -
- -
-

Creates a JsonCodec with the given reviver.

-

The reviver function is called once for each object or list property -that has been parsed during decoding. The key argument is either the -integer list index for a list property, the string map key for object -properties, or null for the final result.

-
- -
-

Implementation

-
JsonCodec.withReviver(dynamic reviver(Object? key, Object? value))
-    : this(reviver: reviver);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCodec/decode.html b/doc/api/dart-convert/JsonCodec/decode.html deleted file mode 100644 index 90b4dfe3..00000000 --- a/doc/api/dart-convert/JsonCodec/decode.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - decode method - JsonCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decode
- -
- -
- - - -
-

decode method

- -
- dynamic - decode -(String source, { Object reviver(Object key Object value) }) -
override
-
-
-

Parses the string and returns the resulting Json object.

-

The optional reviver function is called once for each object or list -property that has been parsed during decoding. The key argument is either -the integer list index for a list property, the string map key for object -properties, or null for the final result.

-

The default reviver (when not provided) is the identity function.

-
- -
-

Implementation

-
dynamic decode(String source,
-    {Object? reviver(Object? key, Object? value)?}) {
-  reviver ??= _reviver;
-  if (reviver == null) return decoder.convert(source);
-  return JsonDecoder(reviver).convert(source);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCodec/decoder.html b/doc/api/dart-convert/JsonCodec/decoder.html deleted file mode 100644 index 7114ce45..00000000 --- a/doc/api/dart-convert/JsonCodec/decoder.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - decoder property - JsonCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decoder
- -
- -
- - - -
-

decoder property

- - -
- -
- JsonDecoder - decoder -
override
-
- -
-

Returns the decoder of this, converting from T to S.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
JsonDecoder get decoder {
-  if (_reviver == null) return const JsonDecoder();
-  return JsonDecoder(_reviver);
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCodec/encode.html b/doc/api/dart-convert/JsonCodec/encode.html deleted file mode 100644 index 92ded6d9..00000000 --- a/doc/api/dart-convert/JsonCodec/encode.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - encode method - JsonCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encode
- -
- -
- - - -
-

encode method

- -
- String - encode -(Object value, { Object toEncodable(dynamic object) }) -
override
-
-
-

Converts value to a JSON string.

-

If value contains objects that are not directly encodable to a JSON -string (a value that is not a number, boolean, string, null, list or a map -with string keys), the toEncodable function is used to convert it to an -object that must be directly encodable.

-

If toEncodable is omitted, it defaults to a function that returns the -result of calling .toJson() on the unencodable object.

-
- -
-

Implementation

-
String encode(Object? value, {Object? toEncodable(dynamic object)?}) {
-  toEncodable ??= _toEncodable;
-  if (toEncodable == null) return encoder.convert(value);
-  return JsonEncoder(toEncodable).convert(value);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCodec/encoder.html b/doc/api/dart-convert/JsonCodec/encoder.html deleted file mode 100644 index 9fe73732..00000000 --- a/doc/api/dart-convert/JsonCodec/encoder.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - encoder property - JsonCodec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encoder
- -
- -
- - - -
-

encoder property

- - -
- -
- JsonEncoder - encoder -
override
-
- -
-

Returns the encoder from S to T.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
JsonEncoder get encoder {
-  if (_toEncodable == null) return const JsonEncoder();
-  return JsonEncoder(_toEncodable);
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCyclicError-class.html b/doc/api/dart-convert/JsonCyclicError-class.html deleted file mode 100644 index edde2fec..00000000 --- a/doc/api/dart-convert/JsonCyclicError-class.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - - JsonCyclicError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonCyclicError
- -
- -
- - - -
-

JsonCyclicError class

- -
-

Reports that an object could not be stringified due to cyclic references.

-

An object that references itself cannot be serialized by -JsonCodec.encode/JsonEncoder.convert. -When the cycle is detected, a JsonCyclicError is thrown.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- JsonCyclicError(Object object) -
-
- The first object that was detected as part of a cycle. -
-
-
- -
-

Properties

- -
-
- cause - Object -
-
- The exception thrown when trying to convert the object. -
final, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- partialResult - String -
-
- The partial result of the conversion, up until the error happened. [...] -
final, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
- unsupportedObject - Object -
-
- The object that could not be serialized. -
final, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCyclicError/JsonCyclicError.html b/doc/api/dart-convert/JsonCyclicError/JsonCyclicError.html deleted file mode 100644 index 39bf822d..00000000 --- a/doc/api/dart-convert/JsonCyclicError/JsonCyclicError.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - JsonCyclicError constructor - JsonCyclicError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonCyclicError
- -
- -
- - - -
-

JsonCyclicError constructor

- -
- - JsonCyclicError(Object object) -
- -
-

The first object that was detected as part of a cycle.

-
- -
-

Implementation

-
JsonCyclicError(Object? object) : super(object);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonCyclicError/toString.html b/doc/api/dart-convert/JsonCyclicError/toString.html deleted file mode 100644 index 4c2b0317..00000000 --- a/doc/api/dart-convert/JsonCyclicError/toString.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - toString method - JsonCyclicError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "Cyclic error in JSON stringify";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonDecoder-class.html b/doc/api/dart-convert/JsonDecoder-class.html deleted file mode 100644 index 9084ad7e..00000000 --- a/doc/api/dart-convert/JsonDecoder-class.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - JsonDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonDecoder
- -
- -
- - - -
-

JsonDecoder class

- -
-

This class parses JSON strings and builds the corresponding objects.

-

A JSON input must be the JSON encoding of a single JSON value, -which can be a list or map containing other values.

-

When used as a StreamTransformer, the input stream may emit -multiple strings. The concatenation of all of these strings must -be a valid JSON encoding of a single JSON value.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- JsonDecoder([Object reviver(Object key Object value) ]) -
-
- Constructs a new JsonDecoder. [...] -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<String> stream) - Stream<Object> - -
-
- Transforms the provided stream. [...] -
override
-
-
- convert(String input) - → dynamic - -
-
- Converts the given JSON-string input to its corresponding object. [...] -
override
-
-
- startChunkedConversion(Sink<Object> sink) - StringConversionSink - -
-
- Starts a conversion from a chunked JSON string to its corresponding object. [...] -
override
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- fuse<TT>(Converter<Object, TT> other) - Converter<String, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonDecoder/JsonDecoder.html b/doc/api/dart-convert/JsonDecoder/JsonDecoder.html deleted file mode 100644 index 26e861d1..00000000 --- a/doc/api/dart-convert/JsonDecoder/JsonDecoder.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - JsonDecoder constructor - JsonDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonDecoder
- -
- -
- - - -
-

JsonDecoder constructor

- -
- const - JsonDecoder([Object reviver(Object key Object value) ]) -
- -
-

Constructs a new JsonDecoder.

-

The reviver may be null.

-
- -
-

Implementation

-
const JsonDecoder([Object? reviver(Object? key, Object? value)?])
-    : _reviver = reviver;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonDecoder/bind.html b/doc/api/dart-convert/JsonDecoder/bind.html deleted file mode 100644 index 6ee21ee6..00000000 --- a/doc/api/dart-convert/JsonDecoder/bind.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bind method - JsonDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<Object> - bind -(Stream<String> stream) -
override
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<Object?> bind(Stream<String> stream) => super.bind(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonDecoder/convert.html b/doc/api/dart-convert/JsonDecoder/convert.html deleted file mode 100644 index c2d0bb5b..00000000 --- a/doc/api/dart-convert/JsonDecoder/convert.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - convert method - JsonDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- dynamic - convert -(String input) -
override
-
-
-

Converts the given JSON-string input to its corresponding object.

-

Parsed JSON values are of the types num, String, bool, Null, -Lists of parsed JSON values or Maps from String to parsed JSON -values.

-

If this was initialized with a reviver, then the parsing operation -invokes the reviver on every object or list property that has been parsed. -The arguments are the property name (String) or list index (int), and -the value is the parsed value. The return value of the reviver is used as -the value of that property instead the parsed value.

-

Throws FormatException if the input is not valid JSON text.

-
- -
-

Implementation

-
dynamic convert(String input) => _parseJson(input, _reviver);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonDecoder/startChunkedConversion.html b/doc/api/dart-convert/JsonDecoder/startChunkedConversion.html deleted file mode 100644 index 492e2c00..00000000 --- a/doc/api/dart-convert/JsonDecoder/startChunkedConversion.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - startChunkedConversion method - JsonDecoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- StringConversionSink - startChunkedConversion -(Sink<Object> sink) -
override
-
-
-

Starts a conversion from a chunked JSON string to its corresponding object.

-

The output sink receives exactly one decoded element through add.

-
- -
-

Implementation

-
external StringConversionSink startChunkedConversion(Sink<Object?> sink);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonEncoder-class.html b/doc/api/dart-convert/JsonEncoder-class.html deleted file mode 100644 index c2d60301..00000000 --- a/doc/api/dart-convert/JsonEncoder-class.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - - - JsonEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonEncoder
- -
- -
- - - -
-

JsonEncoder class

- -
-

This class converts JSON objects to strings.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- JsonEncoder([Object toEncodable(dynamic object) ]) -
-
- Creates a JSON encoder. [...] -
const
-
-
- JsonEncoder.withIndent(String indent, [ Object toEncodable(dynamic object) ]) -
-
- Creates a JSON encoder that creates multi-line JSON. [...] -
const
-
-
-
- -
-

Properties

- -
-
- indent - String -
-
- The string used for indention. [...] -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<Object> stream) - Stream<String> - -
-
- Transforms the provided stream. [...] -
override
-
-
- convert(Object object) - String - -
-
- Converts object to a JSON String. [...] -
override
-
-
- fuse<T>(Converter<String, T> other) - Converter<Object, T> - -
-
- Fuses this with other. [...] -
override
-
-
- startChunkedConversion(Sink<String> sink) - ChunkedConversionSink<Object> - -
-
- Starts a chunked conversion. [...] -
override
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonEncoder/JsonEncoder.html b/doc/api/dart-convert/JsonEncoder/JsonEncoder.html deleted file mode 100644 index 70b40eed..00000000 --- a/doc/api/dart-convert/JsonEncoder/JsonEncoder.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - JsonEncoder constructor - JsonEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonEncoder
- -
- -
- - - -
-

JsonEncoder constructor

- -
- const - JsonEncoder([Object toEncodable(dynamic object) ]) -
- -
-

Creates a JSON encoder.

-

The JSON encoder handles numbers, strings, booleans, null, lists and -maps with string keys directly.

-

Any other object is attempted converted by toEncodable to an -object that is of one of the convertible types.

-

If toEncodable is omitted, it defaults to calling .toJson() on -the object.

-
- -
-

Implementation

-
const JsonEncoder([Object? toEncodable(dynamic object)?])
-    : indent = null,
-      _toEncodable = toEncodable;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonEncoder/JsonEncoder.withIndent.html b/doc/api/dart-convert/JsonEncoder/JsonEncoder.withIndent.html deleted file mode 100644 index 0db9c3d8..00000000 --- a/doc/api/dart-convert/JsonEncoder/JsonEncoder.withIndent.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - JsonEncoder.withIndent constructor - JsonEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonEncoder.withIndent
- -
- -
- - - -
-

JsonEncoder.withIndent constructor

- -
- const - JsonEncoder.withIndent(String indent, [ Object toEncodable(dynamic object) ]) -
- -
-

Creates a JSON encoder that creates multi-line JSON.

-

The encoding of elements of lists and maps are indented and put on separate -lines. The indent string is prepended to these elements, once for each -level of indentation.

-

If indent is null, the output is encoded as a single line.

-

The JSON encoder handles numbers, strings, booleans, null, lists and -maps with string keys directly.

-

Any other object is attempted converted by toEncodable to an -object that is of one of the convertible types.

-

If toEncodable is omitted, it defaults to calling .toJson() on -the object.

-
- -
-

Implementation

-
const JsonEncoder.withIndent(this.indent,
-    [Object? toEncodable(dynamic object)?])
-    : _toEncodable = toEncodable;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonEncoder/bind.html b/doc/api/dart-convert/JsonEncoder/bind.html deleted file mode 100644 index b6d52592..00000000 --- a/doc/api/dart-convert/JsonEncoder/bind.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - bind method - JsonEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<String> - bind -(Stream<Object> stream) -
override
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<String> bind(Stream<Object?> stream) => super.bind(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonEncoder/convert.html b/doc/api/dart-convert/JsonEncoder/convert.html deleted file mode 100644 index d0ab439a..00000000 --- a/doc/api/dart-convert/JsonEncoder/convert.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - convert method - JsonEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- String - convert -(Object object) -
override
-
-
-

Converts object to a JSON String.

-

Directly serializable values are num, String, bool, and Null, as -well as some List and Map values. For List, the elements must all be -serializable. For Map, the keys must be String and the values must be -serializable.

-

If a value of any other type is attempted to be serialized, the -toEncodable function provided in the constructor is called with the value -as argument. The result, which must be a directly serializable value, is -serialized instead of the original value.

-

If the conversion throws, or returns a value that is not directly -serializable, a JsonUnsupportedObjectError exception is thrown. -If the call throws, the error is caught and stored in the -JsonUnsupportedObjectError's cause field.

-

If a List or Map contains a reference to itself, directly or through -other lists or maps, it cannot be serialized and a JsonCyclicError is -thrown.

-

object should not change during serialization.

-

If an object is serialized more than once, convert may cache the text -for it. In other words, if the content of an object changes after it is -first serialized, the new values may not be reflected in the result.

-
- -
-

Implementation

-
String convert(Object? object) =>
-    _JsonStringStringifier.stringify(object, _toEncodable, indent);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonEncoder/fuse.html b/doc/api/dart-convert/JsonEncoder/fuse.html deleted file mode 100644 index 34e0c973..00000000 --- a/doc/api/dart-convert/JsonEncoder/fuse.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - fuse method - JsonEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
fuse
- -
- -
- - - -
-

fuse<T> method

- -
- Converter<Object, T> - fuse -<T>(Converter<String, T> other) -
override
-
-
-

Fuses this with other.

-

Encoding with the resulting converter is equivalent to converting with -this before converting with other.

-
- -
-

Implementation

-
Converter<Object?, T> fuse<T>(Converter<String, T> other) {
-  if (other is Utf8Encoder) {
-    // The instance check guarantees that `T` is (a subtype of) List<int>,
-    // but the static type system doesn't know that, and so we cast.
-    return JsonUtf8Encoder(indent, _toEncodable) as Converter<Object?, T>;
-  }
-  return super.fuse<T>(other);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonEncoder/indent.html b/doc/api/dart-convert/JsonEncoder/indent.html deleted file mode 100644 index f0ffcbc9..00000000 --- a/doc/api/dart-convert/JsonEncoder/indent.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - indent property - JsonEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
indent
- -
- -
- - - -
-

indent property

- -
- String - indent -
final
-
-
-

The string used for indention.

-

When generating multi-line output, this string is inserted once at the -beginning of each indented line for each level of indentation.

-

If null, the output is encoded as a single line.

-
-
-

Implementation

-
final String? indent
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonEncoder/startChunkedConversion.html b/doc/api/dart-convert/JsonEncoder/startChunkedConversion.html deleted file mode 100644 index 39607dc5..00000000 --- a/doc/api/dart-convert/JsonEncoder/startChunkedConversion.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - startChunkedConversion method - JsonEncoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- ChunkedConversionSink<Object> - startChunkedConversion -(Sink<String> sink) -
override
-
-
-

Starts a chunked conversion.

-

The converter works more efficiently if the given sink is a -StringConversionSink.

-

Returns a chunked-conversion sink that accepts at most one object. It is -an error to invoke add more than once on the returned sink.

-
- -
-

Implementation

-
ChunkedConversionSink<Object?> startChunkedConversion(Sink<String> sink) {
-  if (sink is _Utf8EncoderSink) {
-    return _JsonUtf8EncoderSink(
-        sink._sink,
-        _toEncodable,
-        JsonUtf8Encoder._utf8Encode(indent),
-        JsonUtf8Encoder._defaultBufferSize);
-  }
-  return _JsonEncoderSink(
-      sink is StringConversionSink ? sink : StringConversionSink.from(sink),
-      _toEncodable,
-      indent);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUnsupportedObjectError-class.html b/doc/api/dart-convert/JsonUnsupportedObjectError-class.html deleted file mode 100644 index e5ffdc9d..00000000 --- a/doc/api/dart-convert/JsonUnsupportedObjectError-class.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - JsonUnsupportedObjectError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonUnsupportedObjectError
- -
- -
- - - -
-

JsonUnsupportedObjectError class

- -
-

Error thrown by JSON serialization if an object cannot be serialized.

-

The unsupportedObject field holds that object that failed to be serialized.

-

If an object isn't directly serializable, the serializer calls the toJson -method on the object. If that call fails, the error will be stored in the -cause field. If the call returns an object that isn't directly -serializable, the cause is null.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- JsonUnsupportedObjectError(Object unsupportedObject, { Object cause, String partialResult }) -
-
- -
-
-
- -
-

Properties

- -
-
- cause - Object -
-
- The exception thrown when trying to convert the object. -
final
-
-
- partialResult - String -
-
- The partial result of the conversion, up until the error happened. [...] -
final
-
-
- unsupportedObject - Object -
-
- The object that could not be serialized. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUnsupportedObjectError/JsonUnsupportedObjectError.html b/doc/api/dart-convert/JsonUnsupportedObjectError/JsonUnsupportedObjectError.html deleted file mode 100644 index a65fccdf..00000000 --- a/doc/api/dart-convert/JsonUnsupportedObjectError/JsonUnsupportedObjectError.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - JsonUnsupportedObjectError constructor - JsonUnsupportedObjectError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonUnsupportedObjectError
- -
- -
- - - -
-

JsonUnsupportedObjectError constructor

- -
- - JsonUnsupportedObjectError(Object unsupportedObject, { Object cause, String partialResult }) -
- - -
-

Implementation

-
JsonUnsupportedObjectError(this.unsupportedObject,
-    {this.cause, this.partialResult});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUnsupportedObjectError/cause.html b/doc/api/dart-convert/JsonUnsupportedObjectError/cause.html deleted file mode 100644 index 513221cb..00000000 --- a/doc/api/dart-convert/JsonUnsupportedObjectError/cause.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - cause property - JsonUnsupportedObjectError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
cause
- -
- -
- - - -
-

cause property

- -
- Object - cause -
final
-
-
-

The exception thrown when trying to convert the object.

-
-
-

Implementation

-
final Object? cause
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUnsupportedObjectError/partialResult.html b/doc/api/dart-convert/JsonUnsupportedObjectError/partialResult.html deleted file mode 100644 index 4e6896d2..00000000 --- a/doc/api/dart-convert/JsonUnsupportedObjectError/partialResult.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - partialResult property - JsonUnsupportedObjectError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
partialResult
- -
- -
- - - -
-

partialResult property

- -
- String - partialResult -
final
-
-
-

The partial result of the conversion, up until the error happened.

-

May be null.

-
-
-

Implementation

-
final String? partialResult
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUnsupportedObjectError/toString.html b/doc/api/dart-convert/JsonUnsupportedObjectError/toString.html deleted file mode 100644 index b848f53f..00000000 --- a/doc/api/dart-convert/JsonUnsupportedObjectError/toString.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - toString method - JsonUnsupportedObjectError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() {
-  var safeString = Error.safeToString(unsupportedObject);
-  String prefix;
-  if (cause != null) {
-    prefix = "Converting object to an encodable object failed:";
-  } else {
-    prefix = "Converting object did not return an encodable object:";
-  }
-  return "$prefix $safeString";
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUnsupportedObjectError/unsupportedObject.html b/doc/api/dart-convert/JsonUnsupportedObjectError/unsupportedObject.html deleted file mode 100644 index eec79b45..00000000 --- a/doc/api/dart-convert/JsonUnsupportedObjectError/unsupportedObject.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - unsupportedObject property - JsonUnsupportedObjectError class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
unsupportedObject
- -
- -
- - - -
-

unsupportedObject property

- -
- Object - unsupportedObject -
final
-
-
-

The object that could not be serialized.

-
-
-

Implementation

-
final Object? unsupportedObject
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUtf8Encoder-class.html b/doc/api/dart-convert/JsonUtf8Encoder-class.html deleted file mode 100644 index 18ccc4f3..00000000 --- a/doc/api/dart-convert/JsonUtf8Encoder-class.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - - - JsonUtf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonUtf8Encoder
- -
- -
- - - -
-

JsonUtf8Encoder class

- -
-

Encoder that encodes a single object as a UTF-8 encoded JSON string.

-

This encoder works equivalently to first converting the object to -a JSON string, and then UTF-8 encoding the string, but without -creating an intermediate string.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- JsonUtf8Encoder([String indent, dynamic toEncodable(dynamic object), int bufferSize ]) -
-
- Create converter. [...] -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<Object> stream) - Stream<List<int>> - -
-
- Transforms the provided stream. [...] -
override
-
-
- convert(Object object) - List<int> - -
-
- Convert object into UTF-8 encoded JSON. -
override
-
-
- startChunkedConversion(Sink<List<int>> sink) - ChunkedConversionSink<Object> - -
-
- Start a chunked conversion. [...] -
override
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- fuse<TT>(Converter<List<int>, TT> other) - Converter<Object, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - -
-

Constants

- -
-
- DEFAULT_BUFFER_SIZE - → const int -
-
- - -
- _defaultBufferSize -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUtf8Encoder/DEFAULT_BUFFER_SIZE-constant.html b/doc/api/dart-convert/JsonUtf8Encoder/DEFAULT_BUFFER_SIZE-constant.html deleted file mode 100644 index 519c1e7b..00000000 --- a/doc/api/dart-convert/JsonUtf8Encoder/DEFAULT_BUFFER_SIZE-constant.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - DEFAULT_BUFFER_SIZE constant - JsonUtf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
DEFAULT_BUFFER_SIZE
- -
- -
- - - -
-

DEFAULT_BUFFER_SIZE constant

- -
- int - const DEFAULT_BUFFER_SIZE - = - _defaultBufferSize -
- -
-

Implementation

-
static const int DEFAULT_BUFFER_SIZE = _defaultBufferSize
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUtf8Encoder/JsonUtf8Encoder.html b/doc/api/dart-convert/JsonUtf8Encoder/JsonUtf8Encoder.html deleted file mode 100644 index c99c7351..00000000 --- a/doc/api/dart-convert/JsonUtf8Encoder/JsonUtf8Encoder.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - JsonUtf8Encoder constructor - JsonUtf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
JsonUtf8Encoder
- -
- -
- - - -
-

JsonUtf8Encoder constructor

- -
- - JsonUtf8Encoder([String indent, dynamic toEncodable(dynamic object), int bufferSize ]) -
- -
-

Create converter.

-

If indent is non-null, the converter attempts to "pretty-print" the -JSON, and uses indent as the indentation. Otherwise the result has no -whitespace outside of string literals. -If indent contains characters that are not valid JSON whitespace -characters, the result will not be valid JSON. JSON whitespace characters -are space (U+0020), tab (U+0009), line feed (U+000a) and carriage return -(U+000d) (ECMA -404).

-

The bufferSize is the size of the internal buffers used to collect -UTF-8 code units. -If using startChunkedConversion, it will be the size of the chunks.

-

The JSON encoder handles numbers, strings, booleans, null, lists and maps -directly.

-

Any other object is attempted converted by toEncodable to an object that -is of one of the convertible types.

-

If toEncodable is omitted, it defaults to calling .toJson() on the -object.

-
- -
-

Implementation

-
JsonUtf8Encoder(
-    [String? indent, dynamic toEncodable(dynamic object)?, int? bufferSize])
-    : _indent = _utf8Encode(indent),
-      _toEncodable = toEncodable,
-      _bufferSize = bufferSize ?? _defaultBufferSize;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUtf8Encoder/bind.html b/doc/api/dart-convert/JsonUtf8Encoder/bind.html deleted file mode 100644 index 6d5997c7..00000000 --- a/doc/api/dart-convert/JsonUtf8Encoder/bind.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - bind method - JsonUtf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<List<int>> - bind -(Stream<Object> stream) -
override
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<List<int>> bind(Stream<Object?> stream) {
-  return super.bind(stream);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUtf8Encoder/convert.html b/doc/api/dart-convert/JsonUtf8Encoder/convert.html deleted file mode 100644 index 3021f891..00000000 --- a/doc/api/dart-convert/JsonUtf8Encoder/convert.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - convert method - JsonUtf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- List<int> - convert -(Object object) -
override
-
-
-

Convert object into UTF-8 encoded JSON.

-
- -
-

Implementation

-
List<int> convert(Object? object) {
-  var bytes = <List<int>>[];
-  // The `stringify` function always converts into chunks.
-  // Collect the chunks into the `bytes` list, then combine them afterwards.
-  void addChunk(Uint8List chunk, int start, int end) {
-    if (start > 0 || end < chunk.length) {
-      var length = end - start;
-      chunk =
-          Uint8List.view(chunk.buffer, chunk.offsetInBytes + start, length);
-    }
-    bytes.add(chunk);
-  }
-
-  _JsonUtf8Stringifier.stringify(
-      object, _indent, _toEncodable, _bufferSize, addChunk);
-  if (bytes.length == 1) return bytes[0];
-  var length = 0;
-  for (var i = 0; i < bytes.length; i++) {
-    length += bytes[i].length;
-  }
-  var result = Uint8List(length);
-  for (var i = 0, offset = 0; i < bytes.length; i++) {
-    var byteList = bytes[i];
-    int end = offset + byteList.length;
-    result.setRange(offset, end, byteList);
-    offset = end;
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/JsonUtf8Encoder/startChunkedConversion.html b/doc/api/dart-convert/JsonUtf8Encoder/startChunkedConversion.html deleted file mode 100644 index 64b9325a..00000000 --- a/doc/api/dart-convert/JsonUtf8Encoder/startChunkedConversion.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - startChunkedConversion method - JsonUtf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- ChunkedConversionSink<Object> - startChunkedConversion -(Sink<List<int>> sink) -
override
-
-
-

Start a chunked conversion.

-

Only one object can be passed into the returned sink.

-

The argument sink will receive byte lists in sizes depending on the -bufferSize passed to the constructor when creating this encoder.

-
- -
-

Implementation

-
ChunkedConversionSink<Object?> startChunkedConversion(Sink<List<int>> sink) {
-  ByteConversionSink byteSink;
-  if (sink is ByteConversionSink) {
-    byteSink = sink;
-  } else {
-    byteSink = ByteConversionSink.from(sink);
-  }
-  return _JsonUtf8EncoderSink(byteSink, _toEncodable, _indent, _bufferSize);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Codec-class.html b/doc/api/dart-convert/Latin1Codec-class.html deleted file mode 100644 index 03969472..00000000 --- a/doc/api/dart-convert/Latin1Codec-class.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - Latin1Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Latin1Codec
- -
- -
- - - -
-

Latin1Codec class

- -
-

A Latin1Codec encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes -and decodes Latin-1 bytes to strings.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Latin1Codec({bool allowInvalid: false }) -
-
- Instantiates a new Latin1Codec. [...] -
const
-
-
-
- -
-

Properties

- -
-
- decoder - Latin1Decoder -
-
- Returns the decoder of this, converting from List<int> to String. [...] -
read-only, override
-
-
- encoder - Latin1Encoder -
-
- Returns the encoder from String to List<int>. [...] -
read-only, override
-
-
- name - String -
-
- The name of this codec, "iso-8859-1". -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- inverted - Codec<List<int>, String> -
-
- Inverts this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- decode(List<int> bytes, { bool allowInvalid }) - String - -
-
- Decodes the Latin-1 bytes (a list of unsigned 8-bit integers) to the -corresponding string. [...] -
override
-
-
- encode(String source) - Uint8List - -
-
- Encodes input. [...] -
override
-
-
- decodeStream(Stream<List<int>> byteStream) - Future<String> - -
-
- -
inherited
-
-
- fuse<R>(Codec<List<int>, R> other) - Codec<String, R> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Codec/Latin1Codec.html b/doc/api/dart-convert/Latin1Codec/Latin1Codec.html deleted file mode 100644 index b8e1e670..00000000 --- a/doc/api/dart-convert/Latin1Codec/Latin1Codec.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - Latin1Codec constructor - Latin1Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Latin1Codec
- -
- -
- - - -
-

Latin1Codec constructor

- -
- const - Latin1Codec({bool allowInvalid: false }) -
- -
-

Instantiates a new Latin1Codec.

-

If allowInvalid is true, the decode method and the converter -returned by decoder will default to allowing invalid values. Invalid -values are decoded into the Unicode Replacement character (U+FFFD). -Calls to the decode method can override this default.

-

Encoders will not accept invalid (non Latin-1) characters.

-
- -
-

Implementation

-
const Latin1Codec({bool allowInvalid = false}) : _allowInvalid = allowInvalid;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Codec/decode.html b/doc/api/dart-convert/Latin1Codec/decode.html deleted file mode 100644 index 003c9e18..00000000 --- a/doc/api/dart-convert/Latin1Codec/decode.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - decode method - Latin1Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decode
- -
- -
- - - -
-

decode method

- -
- String - decode -(List<int> bytes, { bool allowInvalid }) -
override
-
-
-

Decodes the Latin-1 bytes (a list of unsigned 8-bit integers) to the -corresponding string.

-

If bytes contains values that are not in the range 0 .. 255, the decoder -will eventually throw a FormatException.

-

If allowInvalid is not provided, it defaults to the value used to create -this Latin1Codec.

-
- -
-

Implementation

-
String decode(List<int> bytes, {bool? allowInvalid}) {
-  if (allowInvalid ?? _allowInvalid) {
-    return const Latin1Decoder(allowInvalid: true).convert(bytes);
-  } else {
-    return const Latin1Decoder(allowInvalid: false).convert(bytes);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Codec/decoder.html b/doc/api/dart-convert/Latin1Codec/decoder.html deleted file mode 100644 index db93079f..00000000 --- a/doc/api/dart-convert/Latin1Codec/decoder.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - decoder property - Latin1Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decoder
- -
- -
- - - -
-

decoder property

- - -
- -
- Latin1Decoder - decoder -
override
-
- -
-

Returns the decoder of this, converting from List<int> to String.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Latin1Decoder get decoder => _allowInvalid
-    ? const Latin1Decoder(allowInvalid: true)
-    : const Latin1Decoder(allowInvalid: false);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Codec/encode.html b/doc/api/dart-convert/Latin1Codec/encode.html deleted file mode 100644 index 2e65f63c..00000000 --- a/doc/api/dart-convert/Latin1Codec/encode.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - encode method - Latin1Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encode
- -
- -
- - - -
-

encode method

- -
- Uint8List - encode -(String source) -
override
-
-
-

Encodes input.

-

The input is encoded as if by encoder.convert.

-
- -
-

Implementation

-
Uint8List encode(String source) => encoder.convert(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Codec/encoder.html b/doc/api/dart-convert/Latin1Codec/encoder.html deleted file mode 100644 index 75b52dfb..00000000 --- a/doc/api/dart-convert/Latin1Codec/encoder.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - encoder property - Latin1Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encoder
- -
- -
- - - -
-

encoder property

- - -
- -
- Latin1Encoder - encoder -
override
-
- -
-

Returns the encoder from String to List<int>.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Latin1Encoder get encoder => const Latin1Encoder();
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Codec/name.html b/doc/api/dart-convert/Latin1Codec/name.html deleted file mode 100644 index b9d75d6a..00000000 --- a/doc/api/dart-convert/Latin1Codec/name.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - name property - Latin1Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
name
- -
- -
- - - -
-

name property

- - -
- -
- String - name -
override
-
- -
-

The name of this codec, "iso-8859-1".

-
-
-

Implementation

-
String get name => "iso-8859-1";
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Decoder-class.html b/doc/api/dart-convert/Latin1Decoder-class.html deleted file mode 100644 index 5f3fa7f6..00000000 --- a/doc/api/dart-convert/Latin1Decoder-class.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - Latin1Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Latin1Decoder
- -
- -
- - - -
-

Latin1Decoder class

- -
-

This class converts Latin-1 bytes (lists of unsigned 8-bit integers) -to a string.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Latin1Decoder({bool allowInvalid: false }) -
-
- Instantiates a new Latin1Decoder. [...] -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- startChunkedConversion(Sink<String> sink) - ByteConversionSink - -
-
- Starts a chunked conversion. [...] - -
-
- bind(Stream<List<int>> stream) - Stream<String> - -
-
- Transforms the provided stream. [...] -
inherited
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- convert(List<int> bytes, [ int start = 0 int end ]) - String - -
-
- Converts the bytes (a list of unsigned 7- or 8-bit integers) to the -corresponding string. [...] -
inherited
-
-
- fuse<TT>(Converter<String, TT> other) - Converter<List<int>, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Decoder/Latin1Decoder.html b/doc/api/dart-convert/Latin1Decoder/Latin1Decoder.html deleted file mode 100644 index 736e100b..00000000 --- a/doc/api/dart-convert/Latin1Decoder/Latin1Decoder.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - Latin1Decoder constructor - Latin1Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Latin1Decoder
- -
- -
- - - -
-

Latin1Decoder constructor

- -
- const - Latin1Decoder({bool allowInvalid: false }) -
- -
-

Instantiates a new Latin1Decoder.

-

The optional allowInvalid argument defines how convert deals -with invalid bytes.

-

If it is true, convert replaces invalid bytes with the Unicode -Replacement character U+FFFD (�). -Otherwise it throws a FormatException.

-
- -
-

Implementation

-
const Latin1Decoder({bool allowInvalid = false})
-    : super(allowInvalid, _latin1Mask);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Decoder/bind.html b/doc/api/dart-convert/Latin1Decoder/bind.html deleted file mode 100644 index 23205c6f..00000000 --- a/doc/api/dart-convert/Latin1Decoder/bind.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bind method - Latin1Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<String> - bind -(Stream<List<int>> stream) -
inherited
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<String> bind(Stream<List<int>> stream) => super.bind(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Decoder/convert.html b/doc/api/dart-convert/Latin1Decoder/convert.html deleted file mode 100644 index 38b1b404..00000000 --- a/doc/api/dart-convert/Latin1Decoder/convert.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - convert method - Latin1Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- String - convert -(List<int> bytes, [ int start = 0 int end ]) -
inherited
-
-
-

Converts the bytes (a list of unsigned 7- or 8-bit integers) to the -corresponding string.

-

If start and end are provided, only the sub-list of bytes from -start to end (end not inclusive) is used as input to the conversion.

-
- -
-

Implementation

-
String convert(List<int> bytes, [int start = 0, int? end]) {
-  end = RangeError.checkValidRange(start, end, bytes.length);
-  // TODO(38725): Remove workaround when assignment promotion is implemented
-  if (end == null) {
-    throw RangeError("Invalid range");
-  }
-  for (var i = start; i < end; i++) {
-    var byte = bytes[i];
-    if ((byte & ~_subsetMask) != 0) {
-      if (!_allowInvalid) {
-        throw FormatException("Invalid value in input: $byte");
-      }
-      return _convertInvalid(bytes, start, end);
-    }
-  }
-  return String.fromCharCodes(bytes, start, end);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Decoder/startChunkedConversion.html b/doc/api/dart-convert/Latin1Decoder/startChunkedConversion.html deleted file mode 100644 index f175d313..00000000 --- a/doc/api/dart-convert/Latin1Decoder/startChunkedConversion.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - startChunkedConversion method - Latin1Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- ByteConversionSink - startChunkedConversion -(Sink<String> sink) - -
-
-

Starts a chunked conversion.

-

The converter works more efficiently if the given sink is a -StringConversionSink.

-
- -
-

Implementation

-
ByteConversionSink startChunkedConversion(Sink<String> sink) {
-  StringConversionSink stringSink;
-  if (sink is StringConversionSink) {
-    stringSink = sink;
-  } else {
-    stringSink = StringConversionSink.from(sink);
-  }
-  // TODO(lrn): Use stringSink.asUtf16Sink() if it becomes available.
-  if (!_allowInvalid) return _Latin1DecoderSink(stringSink);
-  return _Latin1AllowInvalidDecoderSink(stringSink);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Encoder-class.html b/doc/api/dart-convert/Latin1Encoder-class.html deleted file mode 100644 index f3cb9d2b..00000000 --- a/doc/api/dart-convert/Latin1Encoder-class.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - - Latin1Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Latin1Encoder
- -
- -
- - - -
-

Latin1Encoder class

- -
-

This class converts strings of only ISO Latin-1 characters to bytes.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Latin1Encoder() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<String> stream) - Stream<List<int>> - -
-
- Transforms the provided stream. [...] -
inherited
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- convert(String string, [ int start = 0 int end ]) - Uint8List - -
-
- Converts the String into a list of its code units. [...] -
inherited
-
-
- fuse<TT>(Converter<List<int>, TT> other) - Converter<String, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- startChunkedConversion(Sink<List<int>> sink) - StringConversionSink - -
-
- Starts a chunked conversion. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Encoder/Latin1Encoder.html b/doc/api/dart-convert/Latin1Encoder/Latin1Encoder.html deleted file mode 100644 index 97720cb7..00000000 --- a/doc/api/dart-convert/Latin1Encoder/Latin1Encoder.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - Latin1Encoder constructor - Latin1Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Latin1Encoder
- -
- -
- - - -
-

Latin1Encoder constructor

- -
- const - Latin1Encoder() -
- - -
-

Implementation

-
const Latin1Encoder() : super(_latin1Mask);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Encoder/bind.html b/doc/api/dart-convert/Latin1Encoder/bind.html deleted file mode 100644 index 0fa921ab..00000000 --- a/doc/api/dart-convert/Latin1Encoder/bind.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bind method - Latin1Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<List<int>> - bind -(Stream<String> stream) -
inherited
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<List<int>> bind(Stream<String> stream) => super.bind(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Encoder/convert.html b/doc/api/dart-convert/Latin1Encoder/convert.html deleted file mode 100644 index 8f6d113d..00000000 --- a/doc/api/dart-convert/Latin1Encoder/convert.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - convert method - Latin1Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- Uint8List - convert -(String string, [ int start = 0 int end ]) -
inherited
-
-
-

Converts the String into a list of its code units.

-

If start and end are provided, only the substring -string.substring(start, end) is used as input to the conversion.

-
- -
-

Implementation

-
Uint8List convert(String string, [int start = 0, int? end]) {
-  var stringLength = string.length;
-  end = RangeError.checkValidRange(start, end, stringLength);
-  // TODO(38725): Remove workaround when assignment promotion is implemented
-  if (end == null) {
-    throw RangeError("Invalid range");
-  }
-  var length = end - start;
-  var result = Uint8List(length);
-  for (var i = 0; i < length; i++) {
-    var codeUnit = string.codeUnitAt(start + i);
-    if ((codeUnit & ~_subsetMask) != 0) {
-      throw ArgumentError.value(
-          string, "string", "Contains invalid characters.");
-    }
-    result[i] = codeUnit;
-  }
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Latin1Encoder/startChunkedConversion.html b/doc/api/dart-convert/Latin1Encoder/startChunkedConversion.html deleted file mode 100644 index 78255705..00000000 --- a/doc/api/dart-convert/Latin1Encoder/startChunkedConversion.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - startChunkedConversion method - Latin1Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- StringConversionSink - startChunkedConversion -(Sink<List<int>> sink) -
inherited
-
-
-

Starts a chunked conversion.

-

The converter works more efficiently if the given sink is a -ByteConversionSink.

-
- -
-

Implementation

-
StringConversionSink startChunkedConversion(Sink<List<int>> sink) {
-  return _UnicodeSubsetEncoderSink(_subsetMask,
-      sink is ByteConversionSink ? sink : ByteConversionSink.from(sink));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/LineSplitter-class.html b/doc/api/dart-convert/LineSplitter-class.html deleted file mode 100644 index dcde92fb..00000000 --- a/doc/api/dart-convert/LineSplitter-class.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - - LineSplitter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
LineSplitter
- -
- -
- - - -
-

LineSplitter class

- -
-

A StreamTransformer that splits a String into individual lines.

-

A line is terminated by either a CR (U+000D), a LF (U+000A), a -CR+LF sequence (DOS line ending), -and a final non-empty line can be ended by the end of the string.

-

The returned lines do not contain the line terminators.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- LineSplitter() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<String> stream) - Stream<String> - -
-
- Transforms the provided stream. [...] -
override
-
-
- convert(String data) - List<String> - -
-
- - -
-
- startChunkedConversion(Sink<String> sink) - StringConversionSink - -
-
- - -
-
- cast<RS, RT>() - StreamTransformer<RS, RT> - -
-
- Provides a StreamTransformer<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- split(String lines, [ int start = 0 int end ]) - Iterable<String> - -
-
- Split lines into individual lines. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/LineSplitter/LineSplitter.html b/doc/api/dart-convert/LineSplitter/LineSplitter.html deleted file mode 100644 index 81daf5a1..00000000 --- a/doc/api/dart-convert/LineSplitter/LineSplitter.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - LineSplitter constructor - LineSplitter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
LineSplitter
- -
- -
- - - -
-

LineSplitter constructor

- -
- const - LineSplitter() -
- - -
-

Implementation

-
const LineSplitter();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/LineSplitter/bind.html b/doc/api/dart-convert/LineSplitter/bind.html deleted file mode 100644 index 51f0e532..00000000 --- a/doc/api/dart-convert/LineSplitter/bind.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - bind method - LineSplitter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<String> - bind -(Stream<String> stream) -
override
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<String> bind(Stream<String> stream) {
-  return Stream<String>.eventTransformed(
-      stream, (EventSink<String> sink) => _LineSplitterEventSink(sink));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/LineSplitter/convert.html b/doc/api/dart-convert/LineSplitter/convert.html deleted file mode 100644 index 2a2fa895..00000000 --- a/doc/api/dart-convert/LineSplitter/convert.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - convert method - LineSplitter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- List<String> - convert -(String data) - -
- -
-

Implementation

-
List<String> convert(String data) {
-  var lines = <String>[];
-  var end = data.length;
-  var sliceStart = 0;
-  var char = 0;
-  for (var i = 0; i < end; i++) {
-    var previousChar = char;
-    char = data.codeUnitAt(i);
-    if (char != _CR) {
-      if (char != _LF) continue;
-      if (previousChar == _CR) {
-        sliceStart = i + 1;
-        continue;
-      }
-    }
-    lines.add(data.substring(sliceStart, i));
-    sliceStart = i + 1;
-  }
-  if (sliceStart < end) {
-    lines.add(data.substring(sliceStart, end));
-  }
-  return lines;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/LineSplitter/split.html b/doc/api/dart-convert/LineSplitter/split.html deleted file mode 100644 index b5701c61..00000000 --- a/doc/api/dart-convert/LineSplitter/split.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - split method - LineSplitter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
split
- -
- -
- - - -
-

split method

- -
- Iterable<String> - split -(String lines, [ int start = 0 int end ]) - -
-
-

Split lines into individual lines.

-

If start and end are provided, only split the contents of -lines.substring(start, end). The start and end values must -specify a valid sub-range of lines -(0 <= start <= end <= lines.length).

-
- -
-

Implementation

-
static Iterable<String> split(String lines, [int start = 0, int? end]) sync* {
-  end = RangeError.checkValidRange(start, end, lines.length);
-  // TODO(38725): Remove workaround when assignment promotion is implemented
-  if (end == null) {
-    throw RangeError("Invalid range");
-  }
-  var sliceStart = start;
-  var char = 0;
-  for (var i = start; i < end; i++) {
-    var previousChar = char;
-    char = lines.codeUnitAt(i);
-    if (char != _CR) {
-      if (char != _LF) continue;
-      if (previousChar == _CR) {
-        sliceStart = i + 1;
-        continue;
-      }
-    }
-    yield lines.substring(sliceStart, i);
-    sliceStart = i + 1;
-  }
-  if (sliceStart < end) {
-    yield lines.substring(sliceStart, end);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/LineSplitter/startChunkedConversion.html b/doc/api/dart-convert/LineSplitter/startChunkedConversion.html deleted file mode 100644 index 0e289dd8..00000000 --- a/doc/api/dart-convert/LineSplitter/startChunkedConversion.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - startChunkedConversion method - LineSplitter class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- StringConversionSink - startChunkedConversion -(Sink<String> sink) - -
- -
-

Implementation

-
StringConversionSink startChunkedConversion(Sink<String> sink) {
-  return _LineSplitterSink(
-      sink is StringConversionSink ? sink : StringConversionSink.from(sink));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSink-class.html b/doc/api/dart-convert/StringConversionSink-class.html deleted file mode 100644 index 3ca5e4be..00000000 --- a/doc/api/dart-convert/StringConversionSink-class.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - - StringConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSink
- -
- -
- - - -
-

StringConversionSink class

- -
-

This class provides an interface for converters to -efficiently transmit String data.

-

Instead of limiting the interface to one non-chunked String it accepts -partial strings or can be transformed into a byte sink that -accepts UTF-8 code units.

-

This abstract class will likely get more methods over time. Implementers are -urged to extend StringConversionSinkBase or to mix in -StringConversionSinkMixin, to ensure that their class covers the newly -added methods.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- StringConversionSink() -
-
- -
-
- StringConversionSink.from(Sink<String> sink) -
-
- -
factory
-
-
- StringConversionSink.fromStringSink(StringSink sink) -
-
- Creates a new instance wrapping the given sink. [...] -
factory
-
-
- StringConversionSink.withCallback(void callback(String accumulated)) -
-
- -
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addSlice(String chunk, int start, int end, bool isLast) - → void - -
-
- Adds the next chunk to this. [...] - -
-
- asStringSink() - ClosableStringSink - -
-
- Returns this as a ClosableStringSink. [...] - -
-
- asUtf8Sink(bool allowMalformed) - ByteConversionSink - -
-
- Returns this as a sink that accepts UTF-8 input. [...] - -
-
- add(String chunk) - → void - -
-
- Adds chunked data to this sink. [...] -
inherited
-
-
- close() - → void - -
-
- Closes the sink. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSink/StringConversionSink.from.html b/doc/api/dart-convert/StringConversionSink/StringConversionSink.from.html deleted file mode 100644 index 0b12b78b..00000000 --- a/doc/api/dart-convert/StringConversionSink/StringConversionSink.from.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - StringConversionSink.from constructor - StringConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSink.from
- -
- -
- - - -
-

StringConversionSink.from constructor

- -
- - StringConversionSink.from(Sink<String> sink) -
- - -
-

Implementation

-
factory StringConversionSink.from(Sink<String> sink) = _StringAdapterSink;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSink/StringConversionSink.fromStringSink.html b/doc/api/dart-convert/StringConversionSink/StringConversionSink.fromStringSink.html deleted file mode 100644 index 334a0c13..00000000 --- a/doc/api/dart-convert/StringConversionSink/StringConversionSink.fromStringSink.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - StringConversionSink.fromStringSink constructor - StringConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSink.fromStringSink
- -
- -
- - - -
-

StringConversionSink.fromStringSink constructor

- -
- - StringConversionSink.fromStringSink(StringSink sink) -
- -
-

Creates a new instance wrapping the given sink.

-

Every string that is added to the returned instance is forwarded to -the sink. The instance is allowed to buffer and is not required to -forward immediately.

-
- -
-

Implementation

-
factory StringConversionSink.fromStringSink(StringSink sink) =
-    _StringSinkConversionSink<StringSink>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSink/StringConversionSink.html b/doc/api/dart-convert/StringConversionSink/StringConversionSink.html deleted file mode 100644 index c29cf274..00000000 --- a/doc/api/dart-convert/StringConversionSink/StringConversionSink.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - StringConversionSink constructor - StringConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSink
- -
- -
- - - -
-

StringConversionSink constructor

- -
- - StringConversionSink() -
- - -
-

Implementation

-
StringConversionSink();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSink/StringConversionSink.withCallback.html b/doc/api/dart-convert/StringConversionSink/StringConversionSink.withCallback.html deleted file mode 100644 index c33c45e2..00000000 --- a/doc/api/dart-convert/StringConversionSink/StringConversionSink.withCallback.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - StringConversionSink.withCallback constructor - StringConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSink.withCallback
- -
- -
- - - -
-

StringConversionSink.withCallback constructor

- -
- - StringConversionSink.withCallback(void callback(String accumulated)) -
- - -
-

Implementation

-
factory StringConversionSink.withCallback(void callback(String accumulated)) =
-    _StringCallbackSink;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSink/addSlice.html b/doc/api/dart-convert/StringConversionSink/addSlice.html deleted file mode 100644 index b711a857..00000000 --- a/doc/api/dart-convert/StringConversionSink/addSlice.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - addSlice method - StringConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
addSlice
- -
- -
- - - -
-

addSlice method

- -
- void - addSlice -(String chunk, int start, int end, bool isLast) - -
-
-

Adds the next chunk to this.

-

Adds the substring defined by start and end-exclusive to this.

-

If isLast is true closes this.

-
- -
-

Implementation

-
void addSlice(String chunk, int start, int end, bool isLast);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSink/asStringSink.html b/doc/api/dart-convert/StringConversionSink/asStringSink.html deleted file mode 100644 index 2726717b..00000000 --- a/doc/api/dart-convert/StringConversionSink/asStringSink.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - asStringSink method - StringConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
asStringSink
- -
- -
- - - -
-

asStringSink method

- -
- ClosableStringSink - asStringSink -() - -
-
-

Returns this as a ClosableStringSink.

-

If used, this method must be the first and only call to this. It -invalidates this. All further operations must be performed on the result.

-
- -
-

Implementation

-
ClosableStringSink asStringSink();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSink/asUtf8Sink.html b/doc/api/dart-convert/StringConversionSink/asUtf8Sink.html deleted file mode 100644 index 10845306..00000000 --- a/doc/api/dart-convert/StringConversionSink/asUtf8Sink.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - asUtf8Sink method - StringConversionSink class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
asUtf8Sink
- -
- -
- - - -
-

asUtf8Sink method

- -
- ByteConversionSink - asUtf8Sink -(bool allowMalformed) - -
-
-

Returns this as a sink that accepts UTF-8 input.

-

If used, this method must be the first and only call to this. It -invalidates this. All further operations must be performed on the result.

-
- -
-

Implementation

-
ByteConversionSink asUtf8Sink(bool allowMalformed);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkBase-class.html b/doc/api/dart-convert/StringConversionSinkBase-class.html deleted file mode 100644 index 69d1cd3d..00000000 --- a/doc/api/dart-convert/StringConversionSinkBase-class.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - StringConversionSinkBase class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSinkBase
- -
- -
- - - -
-

StringConversionSinkBase class

- -
-

This class provides a base-class for converters that need to accept String -inputs.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- StringConversionSinkBase() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(String str) - → void - -
-
- Adds chunked data to this sink. [...] -
inherited
-
-
- addSlice(String str, int start, int end, bool isLast) - → void - -
-
- Adds the next chunk to this. [...] -
inherited
-
-
- asStringSink() - ClosableStringSink - -
-
- Returns this as a ClosableStringSink. [...] -
inherited
-
-
- asUtf8Sink(bool allowMalformed) - ByteConversionSink - -
-
- Returns this as a sink that accepts UTF-8 input. [...] -
inherited
-
-
- close() - → void - -
-
- Closes the sink. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkBase/StringConversionSinkBase.html b/doc/api/dart-convert/StringConversionSinkBase/StringConversionSinkBase.html deleted file mode 100644 index c7f9c54d..00000000 --- a/doc/api/dart-convert/StringConversionSinkBase/StringConversionSinkBase.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - StringConversionSinkBase constructor - StringConversionSinkBase class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSinkBase
- -
- -
- - - -
-

StringConversionSinkBase constructor

- -
- - StringConversionSinkBase() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkMixin-class.html b/doc/api/dart-convert/StringConversionSinkMixin-class.html deleted file mode 100644 index 24f69e40..00000000 --- a/doc/api/dart-convert/StringConversionSinkMixin-class.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - StringConversionSinkMixin class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSinkMixin
- -
- -
- - - -
-

StringConversionSinkMixin class

- -
-

This class provides a mixin for converters that need to accept String -inputs.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- StringConversionSinkMixin() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(String str) - → void - -
-
- Adds chunked data to this sink. [...] -
override
-
-
- addSlice(String str, int start, int end, bool isLast) - → void - -
-
- Adds the next chunk to this. [...] -
override
-
-
- asStringSink() - ClosableStringSink - -
-
- Returns this as a ClosableStringSink. [...] -
override
-
-
- asUtf8Sink(bool allowMalformed) - ByteConversionSink - -
-
- Returns this as a sink that accepts UTF-8 input. [...] -
override
-
-
- close() - → void - -
-
- Closes the sink. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkMixin/StringConversionSinkMixin.html b/doc/api/dart-convert/StringConversionSinkMixin/StringConversionSinkMixin.html deleted file mode 100644 index d15feeff..00000000 --- a/doc/api/dart-convert/StringConversionSinkMixin/StringConversionSinkMixin.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - StringConversionSinkMixin constructor - StringConversionSinkMixin class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringConversionSinkMixin
- -
- -
- - - -
-

StringConversionSinkMixin constructor

- -
- - StringConversionSinkMixin() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkMixin/add.html b/doc/api/dart-convert/StringConversionSinkMixin/add.html deleted file mode 100644 index 06cd72fb..00000000 --- a/doc/api/dart-convert/StringConversionSinkMixin/add.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - add method - StringConversionSinkMixin class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(String str) -
override
-
-
-

Adds chunked data to this sink.

-

This method is also used when converters are used as StreamTransformers.

-
- -
-

Implementation

-
void add(String str) {
-  addSlice(str, 0, str.length, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkMixin/addSlice.html b/doc/api/dart-convert/StringConversionSinkMixin/addSlice.html deleted file mode 100644 index e71dd384..00000000 --- a/doc/api/dart-convert/StringConversionSinkMixin/addSlice.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - addSlice method - StringConversionSinkMixin class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
addSlice
- -
- -
- - - -
-

addSlice method

- -
- void - addSlice -(String str, int start, int end, bool isLast) -
override
-
-
-

Adds the next chunk to this.

-

Adds the substring defined by start and end-exclusive to this.

-

If isLast is true closes this.

-
- -
-

Implementation

-
void addSlice(String str, int start, int end, bool isLast);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkMixin/asStringSink.html b/doc/api/dart-convert/StringConversionSinkMixin/asStringSink.html deleted file mode 100644 index f97d9f7d..00000000 --- a/doc/api/dart-convert/StringConversionSinkMixin/asStringSink.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - asStringSink method - StringConversionSinkMixin class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
asStringSink
- -
- -
- - - -
-

asStringSink method

- -
- ClosableStringSink - asStringSink -() -
override
-
-
-

Returns this as a ClosableStringSink.

-

If used, this method must be the first and only call to this. It -invalidates this. All further operations must be performed on the result.

-
- -
-

Implementation

-
ClosableStringSink asStringSink() {
-  return _StringConversionSinkAsStringSinkAdapter(this);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkMixin/asUtf8Sink.html b/doc/api/dart-convert/StringConversionSinkMixin/asUtf8Sink.html deleted file mode 100644 index ca530af3..00000000 --- a/doc/api/dart-convert/StringConversionSinkMixin/asUtf8Sink.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - asUtf8Sink method - StringConversionSinkMixin class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
asUtf8Sink
- -
- -
- - - -
-

asUtf8Sink method

- -
- ByteConversionSink - asUtf8Sink -(bool allowMalformed) -
override
-
-
-

Returns this as a sink that accepts UTF-8 input.

-

If used, this method must be the first and only call to this. It -invalidates this. All further operations must be performed on the result.

-
- -
-

Implementation

-
ByteConversionSink asUtf8Sink(bool allowMalformed) {
-  return _Utf8ConversionSink(this, allowMalformed);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/StringConversionSinkMixin/close.html b/doc/api/dart-convert/StringConversionSinkMixin/close.html deleted file mode 100644 index c203cbd5..00000000 --- a/doc/api/dart-convert/StringConversionSinkMixin/close.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - close method - StringConversionSinkMixin class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- void - close -() -
override
-
-
-

Closes the sink.

-

This signals the end of the chunked conversion. This method is called -when converters are used as StreamTransformer's.

-
- -
-

Implementation

-
void close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Codec-class.html b/doc/api/dart-convert/Utf8Codec-class.html deleted file mode 100644 index a9a328d7..00000000 --- a/doc/api/dart-convert/Utf8Codec-class.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - Utf8Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Utf8Codec
- -
- -
- - - -
-

Utf8Codec class

- -
-

A Utf8Codec encodes strings to utf-8 code units (bytes) and decodes -UTF-8 code units to strings.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Utf8Codec({bool allowMalformed: false }) -
-
- Instantiates a new Utf8Codec. [...] -
const
-
-
-
- -
-

Properties

- -
-
- decoder - Utf8Decoder -
-
- Returns the decoder of this, converting from List<int> to String. [...] -
read-only, override
-
-
- encoder - Utf8Encoder -
-
- Returns the encoder from String to List<int>. [...] -
read-only, override
-
-
- name - String -
-
- The name of this codec, "utf-8". -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- inverted - Codec<List<int>, String> -
-
- Inverts this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- decode(List<int> codeUnits, { bool allowMalformed }) - String - -
-
- Decodes the UTF-8 codeUnits (a list of unsigned 8-bit integers) to the -corresponding string. [...] -
override
-
-
- decodeStream(Stream<List<int>> byteStream) - Future<String> - -
-
- -
inherited
-
-
- encode(String input) - List<int> - -
-
- Encodes input. [...] -
inherited
-
-
- fuse<R>(Codec<List<int>, R> other) - Codec<String, R> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Codec/Utf8Codec.html b/doc/api/dart-convert/Utf8Codec/Utf8Codec.html deleted file mode 100644 index 180b370f..00000000 --- a/doc/api/dart-convert/Utf8Codec/Utf8Codec.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - Utf8Codec constructor - Utf8Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Utf8Codec
- -
- -
- - - -
-

Utf8Codec constructor

- -
- const - Utf8Codec({bool allowMalformed: false }) -
- -
-

Instantiates a new Utf8Codec.

-

The optional allowMalformed argument defines how decoder (and decode) -deal with invalid or unterminated character sequences.

-

If it is true (and not overridden at the method invocation) decode and -the decoder replace invalid (or unterminated) octet -sequences with the Unicode Replacement character U+FFFD (�). Otherwise -they throw a FormatException.

-
- -
-

Implementation

-
const Utf8Codec({bool allowMalformed = false})
-    : _allowMalformed = allowMalformed;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Codec/decode.html b/doc/api/dart-convert/Utf8Codec/decode.html deleted file mode 100644 index 49f5387b..00000000 --- a/doc/api/dart-convert/Utf8Codec/decode.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - decode method - Utf8Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decode
- -
- -
- - - -
-

decode method

- -
- String - decode -(List<int> codeUnits, { bool allowMalformed }) -
override
-
-
-

Decodes the UTF-8 codeUnits (a list of unsigned 8-bit integers) to the -corresponding string.

-

If the codeUnits start with the encoding of a -unicodeBomCharacterRune, that character is discarded.

-

If allowMalformed is true the decoder replaces invalid (or -unterminated) character sequences with the Unicode Replacement character -U+FFFD (�). Otherwise it throws a FormatException.

-

If allowMalformed is not given, it defaults to the allowMalformed that -was used to instantiate this.

-
- -
-

Implementation

-
String decode(List<int> codeUnits, {bool? allowMalformed}) {
-  // Switch between const objects to avoid allocation.
-  Utf8Decoder decoder = allowMalformed ?? _allowMalformed
-      ? const Utf8Decoder(allowMalformed: true)
-      : const Utf8Decoder(allowMalformed: false);
-  return decoder.convert(codeUnits);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Codec/decoder.html b/doc/api/dart-convert/Utf8Codec/decoder.html deleted file mode 100644 index b2ff2d29..00000000 --- a/doc/api/dart-convert/Utf8Codec/decoder.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - decoder property - Utf8Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
decoder
- -
- -
- - - -
-

decoder property

- - -
- -
- Utf8Decoder - decoder -
override
-
- -
-

Returns the decoder of this, converting from List<int> to String.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Utf8Decoder get decoder {
-  // Switch between const objects to avoid allocation.
-  return _allowMalformed
-      ? const Utf8Decoder(allowMalformed: true)
-      : const Utf8Decoder(allowMalformed: false);
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Codec/encoder.html b/doc/api/dart-convert/Utf8Codec/encoder.html deleted file mode 100644 index ccc4d72b..00000000 --- a/doc/api/dart-convert/Utf8Codec/encoder.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - encoder property - Utf8Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
encoder
- -
- -
- - - -
-

encoder property

- - -
- -
- Utf8Encoder - encoder -
override
-
- -
-

Returns the encoder from String to List<int>.

-

It may be stateful and should not be reused.

-
-
-

Implementation

-
Utf8Encoder get encoder => const Utf8Encoder();
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Codec/name.html b/doc/api/dart-convert/Utf8Codec/name.html deleted file mode 100644 index 19aec672..00000000 --- a/doc/api/dart-convert/Utf8Codec/name.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - name property - Utf8Codec class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
name
- -
- -
- - - -
-

name property

- - -
- -
- String - name -
override
-
- -
-

The name of this codec, "utf-8".

-
-
-

Implementation

-
String get name => "utf-8";
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Decoder-class.html b/doc/api/dart-convert/Utf8Decoder-class.html deleted file mode 100644 index e5c4c92e..00000000 --- a/doc/api/dart-convert/Utf8Decoder-class.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - Utf8Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Utf8Decoder
- -
- -
- - - -
-

Utf8Decoder class

- -
-

This class converts UTF-8 code units (lists of unsigned 8-bit integers) -to a string.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Utf8Decoder({bool allowMalformed: false }) -
-
- Instantiates a new Utf8Decoder. [...] -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<List<int>> stream) - Stream<String> - -
-
- Transforms the provided stream. [...] -
override
-
-
- convert(List<int> codeUnits, [ int start = 0 int end ]) - String - -
-
- Converts the UTF-8 codeUnits (a list of unsigned 8-bit integers) to the -corresponding string. [...] -
override
-
-
- fuse<T>(Converter<String, T> next) - Converter<List<int>, T> - -
-
- Fuses this with other. [...] -
override
-
-
- startChunkedConversion(Sink<String> sink) - ByteConversionSink - -
-
- Starts a chunked conversion. [...] -
override
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Decoder/Utf8Decoder.html b/doc/api/dart-convert/Utf8Decoder/Utf8Decoder.html deleted file mode 100644 index b013245e..00000000 --- a/doc/api/dart-convert/Utf8Decoder/Utf8Decoder.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - Utf8Decoder constructor - Utf8Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Utf8Decoder
- -
- -
- - - -
-

Utf8Decoder constructor

- -
- const - Utf8Decoder({bool allowMalformed: false }) -
- -
-

Instantiates a new Utf8Decoder.

-

The optional allowMalformed argument defines how convert deals -with invalid or unterminated character sequences.

-

If it is true convert replaces invalid (or unterminated) character -sequences with the Unicode Replacement character U+FFFD (�). Otherwise -it throws a FormatException.

-
- -
-

Implementation

-
const Utf8Decoder({bool allowMalformed = false})
-    : _allowMalformed = allowMalformed;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Decoder/bind.html b/doc/api/dart-convert/Utf8Decoder/bind.html deleted file mode 100644 index bc7429f1..00000000 --- a/doc/api/dart-convert/Utf8Decoder/bind.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bind method - Utf8Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<String> - bind -(Stream<List<int>> stream) -
override
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<String> bind(Stream<List<int>> stream) => super.bind(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Decoder/convert.html b/doc/api/dart-convert/Utf8Decoder/convert.html deleted file mode 100644 index 78d464d6..00000000 --- a/doc/api/dart-convert/Utf8Decoder/convert.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - convert method - Utf8Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- String - convert -(List<int> codeUnits, [ int start = 0 int end ]) -
override
-
-
-

Converts the UTF-8 codeUnits (a list of unsigned 8-bit integers) to the -corresponding string.

-

Uses the code units from start to, but no including, end. -If end is omitted, it defaults to codeUnits.length.

-

If the codeUnits start with the encoding of a -unicodeBomCharacterRune, that character is discarded.

-
- -
-

Implementation

-
String convert(List<int> codeUnits, [int start = 0, int? end]) {
-  // Allow the implementation to intercept and specialize based on the type
-  // of codeUnits.
-  var result = _convertIntercepted(_allowMalformed, codeUnits, start, end);
-  if (result != null) {
-    return result;
-  }
-
-  return _Utf8Decoder(_allowMalformed).convertSingle(codeUnits, start, end);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Decoder/fuse.html b/doc/api/dart-convert/Utf8Decoder/fuse.html deleted file mode 100644 index c22665f7..00000000 --- a/doc/api/dart-convert/Utf8Decoder/fuse.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - fuse method - Utf8Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
fuse
- -
- -
- - - -
-

fuse<T> method

- -
- Converter<List<int>, T> - fuse -<T>(Converter<String, T> next) -
override
-
-
-

Fuses this with other.

-

Encoding with the resulting converter is equivalent to converting with -this before converting with other.

-
- -
-

Implementation

-
external Converter<List<int>, T> fuse<T>(Converter<String, T> next);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Decoder/startChunkedConversion.html b/doc/api/dart-convert/Utf8Decoder/startChunkedConversion.html deleted file mode 100644 index 53585345..00000000 --- a/doc/api/dart-convert/Utf8Decoder/startChunkedConversion.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - startChunkedConversion method - Utf8Decoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- ByteConversionSink - startChunkedConversion -(Sink<String> sink) -
override
-
-
-

Starts a chunked conversion.

-

The converter works more efficiently if the given sink is a -StringConversionSink.

-
- -
-

Implementation

-
ByteConversionSink startChunkedConversion(Sink<String> sink) {
-  StringConversionSink stringSink;
-  if (sink is StringConversionSink) {
-    stringSink = sink;
-  } else {
-    stringSink = StringConversionSink.from(sink);
-  }
-  return stringSink.asUtf8Sink(_allowMalformed);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Encoder-class.html b/doc/api/dart-convert/Utf8Encoder-class.html deleted file mode 100644 index 2e5dc5e4..00000000 --- a/doc/api/dart-convert/Utf8Encoder-class.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - Utf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Utf8Encoder
- -
- -
- - - -
-

Utf8Encoder class

- -
-

This class converts strings to their UTF-8 code units (a list of -unsigned 8-bit integers).

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Utf8Encoder() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- bind(Stream<String> stream) - Stream<List<int>> - -
-
- Transforms the provided stream. [...] -
override
-
-
- convert(String string, [ int start = 0 int end ]) - Uint8List - -
-
- Converts string to its UTF-8 code units (a list of -unsigned 8-bit integers). [...] -
override
-
-
- startChunkedConversion(Sink<List<int>> sink) - StringConversionSink - -
-
- Starts a chunked conversion. [...] -
override
-
-
- cast<RS, RT>() - Converter<RS, RT> - -
-
- Provides a Converter<RS, RT> view of this stream transformer. [...] -
inherited
-
-
- fuse<TT>(Converter<List<int>, TT> other) - Converter<String, TT> - -
-
- Fuses this with other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Encoder/Utf8Encoder.html b/doc/api/dart-convert/Utf8Encoder/Utf8Encoder.html deleted file mode 100644 index 6d10c352..00000000 --- a/doc/api/dart-convert/Utf8Encoder/Utf8Encoder.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - Utf8Encoder constructor - Utf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
Utf8Encoder
- -
- -
- - - -
-

Utf8Encoder constructor

- -
- const - Utf8Encoder() -
- - -
-

Implementation

-
const Utf8Encoder();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Encoder/bind.html b/doc/api/dart-convert/Utf8Encoder/bind.html deleted file mode 100644 index bbdeba0e..00000000 --- a/doc/api/dart-convert/Utf8Encoder/bind.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - bind method - Utf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
bind
- -
- -
- - - -
-

bind method

- -
- Stream<List<int>> - bind -(Stream<String> stream) -
override
-
-
-

Transforms the provided stream.

-

Returns a new stream with events that are computed from events of the -provided stream.

-

The StreamTransformer interface is completely generic, -so it cannot say what subclasses do. -Each StreamTransformer should document clearly how it transforms the -stream (on the class or variable used to access the transformer), -as well as any differences from the following typical behavior:

-
    -
  • When the returned stream is listened to, it starts listening to the -input stream.
  • -
  • Subscriptions of the returned stream forward (in a reasonable time) -a StreamSubscription.pause call to the subscription of the input -stream.
  • -
  • Similarly, canceling a subscription of the returned stream eventually -(in reasonable time) cancels the subscription of the input stream.
  • -
-

"Reasonable time" depends on the transformer and stream. Some transformers, -like a "timeout" transformer, might make these operations depend on a -duration. Others might not delay them at all, or just by a microtask.

-

Transformers are free to handle errors in any way. -A transformer implementation may choose to propagate errors, -or convert them to other events, or ignore them completely, -but if errors are ignored, it should be documented explicitly.

-
- -
-

Implementation

-
Stream<List<int>> bind(Stream<String> stream) => super.bind(stream);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Encoder/convert.html b/doc/api/dart-convert/Utf8Encoder/convert.html deleted file mode 100644 index 4be85fa6..00000000 --- a/doc/api/dart-convert/Utf8Encoder/convert.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - convert method - Utf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
convert
- -
- -
- - - -
-

convert method

- -
- Uint8List - convert -(String string, [ int start = 0 int end ]) -
override
-
-
-

Converts string to its UTF-8 code units (a list of -unsigned 8-bit integers).

-

If start and end are provided, only the substring -string.substring(start, end) is converted.

-

Any unpaired surrogate character (U+D800-U+DFFF) in the input string -is encoded as a Unicode Replacement character U+FFFD (�).

-
- -
-

Implementation

-
Uint8List convert(String string, [int start = 0, int? end]) {
-  var stringLength = string.length;
-  end = RangeError.checkValidRange(start, end, stringLength);
-  // TODO(38725): Remove workaround when assignment promotion is implemented
-  if (end == null) {
-    throw RangeError("Invalid range");
-  }
-  var length = end - start;
-  if (length == 0) return Uint8List(0);
-  // Create a new encoder with a length that is guaranteed to be big enough.
-  // A single code unit uses at most 3 bytes, a surrogate pair at most 4.
-  var encoder = _Utf8Encoder.withBufferSize(length * 3);
-  var endPosition = encoder._fillBuffer(string, start, end);
-  assert(endPosition >= end - 1);
-  if (endPosition != end) {
-    // Encoding skipped the last code unit.
-    // That can only happen if the last code unit is a leadsurrogate.
-    // Force encoding of the lead surrogate by itself.
-    var lastCodeUnit = string.codeUnitAt(end - 1);
-    assert(_isLeadSurrogate(lastCodeUnit));
-    // Write a replacement character to represent the unpaired surrogate.
-    encoder._writeReplacementCharacter();
-  }
-  return encoder._buffer.sublist(0, encoder._bufferIndex);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/Utf8Encoder/startChunkedConversion.html b/doc/api/dart-convert/Utf8Encoder/startChunkedConversion.html deleted file mode 100644 index f1681769..00000000 --- a/doc/api/dart-convert/Utf8Encoder/startChunkedConversion.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - startChunkedConversion method - Utf8Encoder class - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
startChunkedConversion
- -
- -
- - - -
-

startChunkedConversion method

- -
- StringConversionSink - startChunkedConversion -(Sink<List<int>> sink) -
override
-
-
-

Starts a chunked conversion.

-

The converter works more efficiently if the given sink is a -ByteConversionSink.

-
- -
-

Implementation

-
StringConversionSink startChunkedConversion(Sink<List<int>> sink) {
-  return _Utf8EncoderSink(
-      sink is ByteConversionSink ? sink : ByteConversionSink.from(sink));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/ascii-constant.html b/doc/api/dart-convert/ascii-constant.html deleted file mode 100644 index 590bf6b8..00000000 --- a/doc/api/dart-convert/ascii-constant.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - ascii constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
ascii
- -
- -
- - - -
-

ascii top-level constant

- -
- const ascii - = - const AsciiCodec() - -
-
-

An instance of the default implementation of the AsciiCodec.

-

This instance provides a convenient access to the most common ASCII -use cases.

-

Examples:

-
var encoded = ascii.encode("This is ASCII!");
-var decoded = ascii.decode([0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73,
-                            0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x21]);
-
-
-
-

Implementation

-
const AsciiCodec ascii = AsciiCodec()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/base64-constant.html b/doc/api/dart-convert/base64-constant.html deleted file mode 100644 index 885496f0..00000000 --- a/doc/api/dart-convert/base64-constant.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - base64 constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
base64
- -
- -
- - - -
-

base64 top-level constant

- -
- const base64 - = - const Base64Codec() - -
-
-

A base64 encoder and decoder.

-

It encodes using the default base64 alphabet, -decodes using both the base64 and base64url alphabets, -does not allow invalid characters and requires padding.

-

Examples:

-
var encoded = base64.encode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
-                             0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
-var decoded = base64.decode("YmzDpWLDpnJncsO4ZAo=");
-
-

The top-level base64Encode and base64Decode functions may be used -instead if a local variable shadows the base64 constant.

-
-
-

Implementation

-
const Base64Codec base64 = Base64Codec()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/base64Decode.html b/doc/api/dart-convert/base64Decode.html deleted file mode 100644 index ab88711a..00000000 --- a/doc/api/dart-convert/base64Decode.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - base64Decode function - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
base64Decode
- -
- -
- - - -
-

base64Decode function

- -
- Uint8List - base64Decode -(String source) -
-
-

Decodes base64 or base64url encoded bytes.

-

Shorthand for base64.decode(bytes). Useful if a local variable shadows the -global base64 constant.

-
- -
-

Implementation

-
Uint8List base64Decode(String source) => base64.decode(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/base64Encode.html b/doc/api/dart-convert/base64Encode.html deleted file mode 100644 index 19fb29c6..00000000 --- a/doc/api/dart-convert/base64Encode.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - base64Encode function - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
base64Encode
- -
- -
- - - -
-

base64Encode function

- -
- String - base64Encode -(List<int> bytes) -
-
-

Encodes bytes using base64 encoding.

-

Shorthand for base64.encode(bytes). Useful if a local variable shadows the global -base64 constant.

-
- -
-

Implementation

-
String base64Encode(List<int> bytes) => base64.encode(bytes);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/base64Url-constant.html b/doc/api/dart-convert/base64Url-constant.html deleted file mode 100644 index 3e790ca2..00000000 --- a/doc/api/dart-convert/base64Url-constant.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - base64Url constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
base64Url
- -
- -
- - - -
-

base64Url top-level constant

- -
- const base64Url - = - const Base64Codec.urlSafe() - -
-
-

A base64url encoder and decoder.

-

It encodes and decodes using the base64url alphabet, -decodes using both the base64 and base64url alphabets, -does not allow invalid characters and requires padding.

-

Examples:

-
var encoded = base64Url.encode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
-                                0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
-var decoded = base64Url.decode("YmzDpWLDpnJncsO4ZAo=");
-
-
-
-

Implementation

-
const Base64Codec base64Url = Base64Codec.urlSafe()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/base64UrlEncode.html b/doc/api/dart-convert/base64UrlEncode.html deleted file mode 100644 index f89f58c0..00000000 --- a/doc/api/dart-convert/base64UrlEncode.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - base64UrlEncode function - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
base64UrlEncode
- -
- -
- - - -
-

base64UrlEncode function

- -
- String - base64UrlEncode -(List<int> bytes) -
-
-

Encodes bytes using base64url encoding.

-

Shorthand for base64url.encode(bytes).

-
- -
-

Implementation

-
String base64UrlEncode(List<int> bytes) => base64Url.encode(bytes);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/dart-convert-library.html b/doc/api/dart-convert/dart-convert-library.html deleted file mode 100644 index 336a1b19..00000000 --- a/doc/api/dart-convert/dart-convert-library.html +++ /dev/null @@ -1,584 +0,0 @@ - - - - - - - - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
dart:convert
- -
- -
- - - -
-

dart:convert library

- -
-

Encoders and decoders for converting between different data representations, -including JSON and UTF-8.

-

In addition to converters for common data representations, this library -provides support for implementing converters in a way which makes them easy to -chain and to use with streams.

-

To use this library in your code:

-
import 'dart:convert';
-
-

Two commonly used converters are the top-level instances of -JsonCodec and Utf8Codec, named json and utf8, respectively.

-

JSON is a simple text format for representing -structured objects and collections. -The JSON encoder/decoder transforms between strings and -object structures, such as lists and maps, using the JSON format.

-

UTF-8 is a common variable-width encoding that can represent -every character in the Unicode character set. -The UTF-8 encoder/decoder transforms between Strings and bytes.

-

Converters are often used with streams -to transform the data that comes through the stream -as it becomes available. -The following code uses two converters. -The first is a UTF-8 decoder, which converts the data from bytes to UTF-8 -as it's read from a file, -The second is an instance of LineSplitter, -which splits the data on newline boundaries.

-
var lineNumber = 1;
-var stream = File('quotes.txt').openRead();
-
-stream.transform(utf8.decoder)
-      .transform(const LineSplitter())
-      .listen((line) {
-        if (showLineNumbers) {
-          stdout.write('${lineNumber++} ');
-        }
-        stdout.writeln(line);
-      });
-
-

See the documentation for the Codec and Converter classes -for information about creating your own converters.

-
- -
-

Classes

- -
-
- AsciiCodec -
-
- An AsciiCodec allows encoding strings as ASCII bytes -and decoding ASCII bytes to strings. -
-
- AsciiDecoder -
-
- -
-
- AsciiEncoder -
-
- This class converts strings of only ASCII characters to bytes. -
-
- Base64Codec -
-
- A base64 encoder and decoder. [...] -
-
- Base64Decoder -
-
- Decoder for base64 encoded data. [...] -
-
- Base64Encoder -
-
- Base64 and base64url encoding converter. [...] -
-
- ByteConversionSink -
-
- The ByteConversionSink provides an interface for converters to -efficiently transmit byte data. [...] -
-
- ByteConversionSinkBase -
-
- This class provides a base-class for converters that need to accept byte -inputs. -
-
- ChunkedConversionSink<T> -
-
- A ChunkedConversionSink is used to transmit data more efficiently between -two converters during chunked conversions. [...] -
-
- ClosableStringSink -
-
- A ClosableStringSink extends the StringSink interface by adding a -close method. -
-
- Codec<S, T> -
-
- A Codec encodes and (if supported) decodes data. [...] -
-
- Converter<S, T> -
-
- A Converter converts data from one representation into another. [...] -
-
- Encoding -
-
- Open-ended Encoding enum. -
-
- HtmlEscape -
-
- Converter which escapes characters with special meaning in HTML. [...] -
-
- HtmlEscapeMode -
-
- HTML escape modes. [...] -
-
- JsonCodec -
-
- A JsonCodec encodes JSON objects to strings and decodes strings to -JSON objects. [...] -
-
- JsonDecoder -
-
- This class parses JSON strings and builds the corresponding objects. [...] -
-
- JsonEncoder -
-
- This class converts JSON objects to strings. -
-
- JsonUtf8Encoder -
-
- Encoder that encodes a single object as a UTF-8 encoded JSON string. [...] -
-
- Latin1Codec -
-
- A Latin1Codec encodes strings to ISO Latin-1 (aka ISO-8859-1) bytes -and decodes Latin-1 bytes to strings. -
-
- Latin1Decoder -
-
- This class converts Latin-1 bytes (lists of unsigned 8-bit integers) -to a string. -
-
- Latin1Encoder -
-
- This class converts strings of only ISO Latin-1 characters to bytes. -
-
- LineSplitter -
-
- A StreamTransformer that splits a String into individual lines. [...] -
-
- StringConversionSink -
-
- This class provides an interface for converters to -efficiently transmit String data. [...] -
-
- StringConversionSinkBase -
-
- This class provides a base-class for converters that need to accept String -inputs. -
-
- StringConversionSinkMixin -
-
- This class provides a mixin for converters that need to accept String -inputs. -
-
- Utf8Codec -
-
- A Utf8Codec encodes strings to utf-8 code units (bytes) and decodes -UTF-8 code units to strings. -
-
- Utf8Decoder -
-
- This class converts UTF-8 code units (lists of unsigned 8-bit integers) -to a string. -
-
- Utf8Encoder -
-
- This class converts strings to their UTF-8 code units (a list of -unsigned 8-bit integers). -
-
-
- - - -
-

Constants

- -
-
- ascii - → const AsciiCodec -
-
- An instance of the default implementation of the AsciiCodec. [...] - -
- const AsciiCodec() -
-
-
- base64 - → const Base64Codec -
-
- A base64 encoder and decoder. [...] - -
- const Base64Codec() -
-
-
- base64Url - → const Base64Codec -
-
- A base64url encoder and decoder. [...] - -
- const Base64Codec.urlSafe() -
-
-
- htmlEscape - → const HtmlEscape -
-
- A String converter that converts characters to HTML entities. [...] - -
- const HtmlEscape() -
-
-
- json - → const JsonCodec -
-
- An instance of the default implementation of the JsonCodec. [...] - -
- const JsonCodec() -
-
-
- latin1 - → const Latin1Codec -
-
- An instance of the default implementation of the Latin1Codec. [...] - -
- const Latin1Codec() -
-
-
- unicodeBomCharacterRune - → const int -
-
- The Unicode Byte Order Marker (BOM) character U+FEFF. - -
- 0xFEFF -
-
-
- unicodeReplacementCharacterRune - → const int -
-
- The Unicode Replacement character U+FFFD (�). - -
- 0xFFFD -
-
-
- utf8 - → const Utf8Codec -
-
- An instance of the default implementation of the Utf8Codec. [...] - -
- const Utf8Codec() -
-
-
-
- - -
-

Functions

- -
-
- base64Decode(String source) - Uint8List - -
-
- Decodes base64 or base64url encoded bytes. [...] - -
-
- base64Encode(List<int> bytes) - String - -
-
- Encodes bytes using base64 encoding. [...] - -
-
- base64UrlEncode(List<int> bytes) - String - -
-
- Encodes bytes using base64url encoding. [...] - -
-
- jsonDecode(String source, { Object reviver(Object key Object value) }) - → dynamic - -
-
- Parses the string and returns the resulting Json object. [...] - -
-
- jsonEncode(Object object, { Object toEncodable(Object nonEncodable) }) - String - -
-
- Converts object to a JSON string. [...] - -
-
-
- - - -
-

Exceptions / Errors

- -
-
- JsonCyclicError -
-
- Reports that an object could not be stringified due to cyclic references. [...] -
-
- JsonUnsupportedObjectError -
-
- Error thrown by JSON serialization if an object cannot be serialized. [...] -
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/htmlEscape-constant.html b/doc/api/dart-convert/htmlEscape-constant.html deleted file mode 100644 index 3e56c1ad..00000000 --- a/doc/api/dart-convert/htmlEscape-constant.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - htmlEscape constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
htmlEscape
- -
- -
- - - -
-

htmlEscape top-level constant

- -
- const htmlEscape - = - const HtmlEscape() - -
-
-

A String converter that converts characters to HTML entities.

-

This is intended to sanitize text before inserting the text into an HTML -document. Characters that are meaningful in HTML are converted to -HTML entities (like &amp; for &).

-

The general converter escapes all characters that are meaningful in HTML -attributes or normal element context. Elements with special content types -(like CSS or JavaScript) may need a more specialized escaping that -understands that content type.

-

If the context where the text will be inserted is known in more detail, -it's possible to omit escaping some characters (like quotes when not -inside an attribute value).

-

The escaped text should only be used inside quoted HTML attributes values -or as text content of a normal element. Using the escaped text inside a -tag, but not inside a quoted attribute value, is still dangerous.

-
-
-

Implementation

-
const HtmlEscape htmlEscape = HtmlEscape()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/json-constant.html b/doc/api/dart-convert/json-constant.html deleted file mode 100644 index d1a91ef1..00000000 --- a/doc/api/dart-convert/json-constant.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - json constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
json
- -
- -
- - - -
-

json top-level constant

- -
- const json - = - const JsonCodec() - -
-
-

An instance of the default implementation of the JsonCodec.

-

This instance provides a convenient access to the most common JSON -use cases.

-

Examples:

-
var encoded = json.encode([1, 2, { "a": null }]);
-var decoded = json.decode('["foo", { "bar": 499 }]');
-
-

The top-level jsonEncode and jsonDecode functions may be used instead if -a local variable shadows the json constant.

-
-
-

Implementation

-
const JsonCodec json = JsonCodec()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/jsonDecode.html b/doc/api/dart-convert/jsonDecode.html deleted file mode 100644 index df6d670c..00000000 --- a/doc/api/dart-convert/jsonDecode.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - jsonDecode function - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
jsonDecode
- -
- -
- - - -
-

jsonDecode function

- -
- dynamic - jsonDecode -(String source, { Object reviver(Object key Object value) }) -
-
-

Parses the string and returns the resulting Json object.

-

The optional reviver function is called once for each object or list -property that has been parsed during decoding. The key argument is either -the integer list index for a list property, the string map key for object -properties, or null for the final result.

-

The default reviver (when not provided) is the identity function.

-

Shorthand for json.decode. Useful if a local variable shadows the global -json constant.

-
- -
-

Implementation

-
dynamic jsonDecode(String source,
-        {Object? reviver(Object? key, Object? value)?}) =>
-    json.decode(source, reviver: reviver);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/jsonEncode.html b/doc/api/dart-convert/jsonEncode.html deleted file mode 100644 index ed660440..00000000 --- a/doc/api/dart-convert/jsonEncode.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - jsonEncode function - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
jsonEncode
- -
- -
- - - -
-

jsonEncode function

- -
- String - jsonEncode -(Object object, { Object toEncodable(Object nonEncodable) }) -
-
-

Converts object to a JSON string.

-

If value contains objects that are not directly encodable to a JSON -string (a value that is not a number, boolean, string, null, list or a map -with string keys), the toEncodable function is used to convert it to an -object that must be directly encodable.

-

If toEncodable is omitted, it defaults to a function that returns the -result of calling .toJson() on the unencodable object.

-

Shorthand for json.encode. Useful if a local variable shadows the global -json constant.

-
- -
-

Implementation

-
String jsonEncode(Object? object,
-        {Object? toEncodable(Object? nonEncodable)?}) =>
-    json.encode(object, toEncodable: toEncodable);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/latin1-constant.html b/doc/api/dart-convert/latin1-constant.html deleted file mode 100644 index 77584234..00000000 --- a/doc/api/dart-convert/latin1-constant.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - latin1 constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
latin1
- -
- -
- - - -
-

latin1 top-level constant

- -
- const latin1 - = - const Latin1Codec() - -
-
-

An instance of the default implementation of the Latin1Codec.

-

This instance provides a convenient access to the most common ISO Latin 1 -use cases.

-

Examples:

-
var encoded = latin1.encode("blåbærgrød");
-var decoded = latin1.decode([0x62, 0x6c, 0xe5, 0x62, 0xe6,
-                             0x72, 0x67, 0x72, 0xf8, 0x64]);
-
-
-
-

Implementation

-
const Latin1Codec latin1 = Latin1Codec()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/unicodeBomCharacterRune-constant.html b/doc/api/dart-convert/unicodeBomCharacterRune-constant.html deleted file mode 100644 index 021c309f..00000000 --- a/doc/api/dart-convert/unicodeBomCharacterRune-constant.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - unicodeBomCharacterRune constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
unicodeBomCharacterRune
- -
- -
- - - -
-

unicodeBomCharacterRune top-level constant

- -
- const unicodeBomCharacterRune - = - 0xFEFF - -
-
-

The Unicode Byte Order Marker (BOM) character U+FEFF.

-
-
-

Implementation

-
const int unicodeBomCharacterRune = 0xFEFF
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/unicodeReplacementCharacterRune-constant.html b/doc/api/dart-convert/unicodeReplacementCharacterRune-constant.html deleted file mode 100644 index eea6ab24..00000000 --- a/doc/api/dart-convert/unicodeReplacementCharacterRune-constant.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - unicodeReplacementCharacterRune constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
unicodeReplacementCharacterRune
- -
- -
- - - -
-

unicodeReplacementCharacterRune top-level constant

- -
- const unicodeReplacementCharacterRune - = - 0xFFFD - -
-
-

The Unicode Replacement character U+FFFD (�).

-
-
-

Implementation

-
const int unicodeReplacementCharacterRune = 0xFFFD
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-convert/utf8-constant.html b/doc/api/dart-convert/utf8-constant.html deleted file mode 100644 index 33ca3813..00000000 --- a/doc/api/dart-convert/utf8-constant.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - utf8 constant - dart:convert library - Dart API - - - - - - - - - - - - - -
- -
- - -
utf8
- -
- -
- - - -
-

utf8 top-level constant

- -
- const utf8 - = - const Utf8Codec() - -
-
-

An instance of the default implementation of the Utf8Codec.

-

This instance provides a convenient access to the most common UTF-8 -use cases.

-

Examples:

-
var encoded = utf8.encode("Îñţérñåţîöñåļîžåţîờñ");
-var decoded = utf8.decode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
-                           0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
-
-
-
-

Implementation

-
const Utf8Codec utf8 = Utf8Codec()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/AbstractClassInstantiationError-class.html b/doc/api/dart-core/AbstractClassInstantiationError-class.html deleted file mode 100644 index 12c93b78..00000000 --- a/doc/api/dart-core/AbstractClassInstantiationError-class.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - - AbstractClassInstantiationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
AbstractClassInstantiationError
- -
- -
- - - -
-

AbstractClassInstantiationError class

- -
-

Error thrown when trying to instantiate an abstract class.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- AbstractClassInstantiationError(String className) -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/AbstractClassInstantiationError/AbstractClassInstantiationError.html b/doc/api/dart-core/AbstractClassInstantiationError/AbstractClassInstantiationError.html deleted file mode 100644 index 63123c8e..00000000 --- a/doc/api/dart-core/AbstractClassInstantiationError/AbstractClassInstantiationError.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - AbstractClassInstantiationError constructor - AbstractClassInstantiationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
AbstractClassInstantiationError
- -
- -
- - - -
-

AbstractClassInstantiationError constructor

- -
- - AbstractClassInstantiationError(String className) -
- - -
-

Implementation

-
AbstractClassInstantiationError(String className) : _className = className;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/AbstractClassInstantiationError/toString.html b/doc/api/dart-core/AbstractClassInstantiationError/toString.html deleted file mode 100644 index bc4fc62e..00000000 --- a/doc/api/dart-core/AbstractClassInstantiationError/toString.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - toString method - AbstractClassInstantiationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
external String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError-class.html b/doc/api/dart-core/ArgumentError-class.html deleted file mode 100644 index 1b550f53..00000000 --- a/doc/api/dart-core/ArgumentError-class.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ArgumentError
- -
- -
- - - -
-

ArgumentError class

- -
-

Error thrown when a function is passed an unacceptable argument.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- ArgumentError([dynamic message ]) -
-
- The message describes the erroneous argument. [...] -
-
- ArgumentError.notNull([String name ]) -
-
- Create an argument error for a null argument that must not be null. -
-
- ArgumentError.value(dynamic value, [ String name, dynamic message ]) -
-
- Creates error containing the invalid value. [...] -
-
-
- -
-

Properties

- -
-
- invalidValue - → dynamic -
-
- The invalid value. -
final
-
-
- message - → dynamic -
-
- Message describing the problem. -
final
-
-
- name - String -
-
- Name of the invalid argument, if available. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- checkNotNull<T>(T argument, [ String name ]) - → T - -
-
- Throws if argument is null. [...] -
@Since("2.1")
-
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError/ArgumentError.html b/doc/api/dart-core/ArgumentError/ArgumentError.html deleted file mode 100644 index 74add47b..00000000 --- a/doc/api/dart-core/ArgumentError/ArgumentError.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - ArgumentError constructor - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ArgumentError
- -
- -
- - - -
-

ArgumentError constructor

- -
- - ArgumentError([dynamic message ]) -
- -
-

The message describes the erroneous argument.

-

Existing code may be using message to hold the invalid value. -If the message is not a String, it is assumed to be a value instead -of a message.

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-ArgumentError([this.message])
-    : invalidValue = null,
-      _hasValue = false,
-      name = null;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError/ArgumentError.notNull.html b/doc/api/dart-core/ArgumentError/ArgumentError.notNull.html deleted file mode 100644 index 8db9159f..00000000 --- a/doc/api/dart-core/ArgumentError/ArgumentError.notNull.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - ArgumentError.notNull constructor - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ArgumentError.notNull
- -
- -
- - - -
-

ArgumentError.notNull constructor

- -
- - ArgumentError.notNull([String name ]) -
- -
-

Create an argument error for a null argument that must not be null.

-
- -
-

Implementation

-
ArgumentError.notNull([this.name])
-    : _hasValue = false,
-      message = "Must not be null",
-      invalidValue = null;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError/ArgumentError.value.html b/doc/api/dart-core/ArgumentError/ArgumentError.value.html deleted file mode 100644 index 7d630de4..00000000 --- a/doc/api/dart-core/ArgumentError/ArgumentError.value.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - ArgumentError.value constructor - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ArgumentError.value
- -
- -
- - - -
-

ArgumentError.value constructor

- -
- - ArgumentError.value(dynamic value, [ String name, dynamic message ]) -
- -
-

Creates error containing the invalid value.

-

A message is built by suffixing the message argument with -the name argument (if provided) and the value. Example

-

"Invalid argument (foo): null"

-

The name should match the argument name of the function, but if -the function is a method implementing an interface, and its argument -names differ from the interface, it might be more useful to use the -interface method's argument name (or just rename arguments to match).

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-ArgumentError.value(value, [this.name, this.message])
-    : invalidValue = value,
-      _hasValue = true;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError/checkNotNull.html b/doc/api/dart-core/ArgumentError/checkNotNull.html deleted file mode 100644 index 577a16b0..00000000 --- a/doc/api/dart-core/ArgumentError/checkNotNull.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - checkNotNull method - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
checkNotNull
- -
- -
- - - -
-

checkNotNull<T> method

- -
-
-
    -
  1. @Since("2.1")
  2. -
-
- T - checkNotNull -<T>(T argument, [ String name ]) -
@Since("2.1")
-
-
-

Throws if argument is null.

-

If name is supplied, it is used as the parameter name -in the error message.

-

Returns the argument if it is not null.

-
- -
-

Implementation

-
@Since("2.1")
-static T checkNotNull<@Since("2.8") T>(T? argument, [String? name]) {
-  if (argument == null) throw ArgumentError.notNull(name);
-  return argument;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError/invalidValue.html b/doc/api/dart-core/ArgumentError/invalidValue.html deleted file mode 100644 index e6bba40a..00000000 --- a/doc/api/dart-core/ArgumentError/invalidValue.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - invalidValue property - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
invalidValue
- -
- -
- - - -
-

invalidValue property

- -
- dynamic - invalidValue -
final
-
-
-

The invalid value.

-
-
-

Implementation

-
final dynamic invalidValue
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError/message.html b/doc/api/dart-core/ArgumentError/message.html deleted file mode 100644 index 857acc23..00000000 --- a/doc/api/dart-core/ArgumentError/message.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - message property - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- -
- dynamic - message -
final
-
-
-

Message describing the problem.

-
-
-

Implementation

-
final dynamic message
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError/name.html b/doc/api/dart-core/ArgumentError/name.html deleted file mode 100644 index 9808e08e..00000000 --- a/doc/api/dart-core/ArgumentError/name.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - name property - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
name
- -
- -
- - - -
-

name property

- -
- String - name -
final
-
-
-

Name of the invalid argument, if available.

-
-
-

Implementation

-
final String? name
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ArgumentError/toString.html b/doc/api/dart-core/ArgumentError/toString.html deleted file mode 100644 index 4183d4e8..00000000 --- a/doc/api/dart-core/ArgumentError/toString.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - toString method - ArgumentError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() {
-  String? name = this.name;
-  String nameString = (name == null) ? "" : " ($name)";
-  Object? message = this.message;
-  var messageString = (message == null) ? "" : ": ${message}";
-  String prefix = "$_errorName$nameString$messageString";
-  if (!_hasValue) return prefix;
-  // If we know the invalid value, we can try to describe the problem.
-  String explanation = _errorExplanation;
-  String errorValue = Error.safeToString(invalidValue);
-  return "$prefix$explanation: $errorValue";
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/AssertionError-class.html b/doc/api/dart-core/AssertionError-class.html deleted file mode 100644 index e9ad01e0..00000000 --- a/doc/api/dart-core/AssertionError-class.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - AssertionError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
AssertionError
- -
- -
- - - -
-

AssertionError class

- -
-

Error thrown by the runtime system when an assert statement fails.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- AssertionError([Object message ]) -
-
- -
-
-
- -
-

Properties

- -
-
- message - Object -
-
- Message describing the assertion error. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/AssertionError/AssertionError.html b/doc/api/dart-core/AssertionError/AssertionError.html deleted file mode 100644 index f894f409..00000000 --- a/doc/api/dart-core/AssertionError/AssertionError.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - AssertionError constructor - AssertionError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
AssertionError
- -
- -
- - - -
-

AssertionError constructor

- -
- - AssertionError([Object message ]) -
- - -
-

Implementation

-
AssertionError([this.message]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/AssertionError/message.html b/doc/api/dart-core/AssertionError/message.html deleted file mode 100644 index 9302195e..00000000 --- a/doc/api/dart-core/AssertionError/message.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - message property - AssertionError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- -
- Object - message -
final
-
-
-

Message describing the assertion error.

-
-
-

Implementation

-
final Object? message
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/AssertionError/toString.html b/doc/api/dart-core/AssertionError/toString.html deleted file mode 100644 index e0b4fbbc..00000000 --- a/doc/api/dart-core/AssertionError/toString.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - toString method - AssertionError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() {
-  if (message != null) {
-    return "Assertion failed: ${Error.safeToString(message)}";
-  }
-  return "Assertion failed";
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BidirectionalIterator-class.html b/doc/api/dart-core/BidirectionalIterator-class.html deleted file mode 100644 index c9e1f8fd..00000000 --- a/doc/api/dart-core/BidirectionalIterator-class.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - BidirectionalIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
BidirectionalIterator
- -
- -
- - - -
-

BidirectionalIterator<E> class

- -
-

An Iterator that allows moving backwards as well as forwards.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- BidirectionalIterator() -
-
- -
-
-
- -
-

Properties

- -
-
- current - → E -
-
- Returns the current element. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- movePrevious() - bool - -
-
- Move back to the previous element. [...] - -
-
- moveNext() - bool - -
-
- Advances the iterator to the next element of the iteration. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BidirectionalIterator/BidirectionalIterator.html b/doc/api/dart-core/BidirectionalIterator/BidirectionalIterator.html deleted file mode 100644 index 53868805..00000000 --- a/doc/api/dart-core/BidirectionalIterator/BidirectionalIterator.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - BidirectionalIterator constructor - BidirectionalIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
BidirectionalIterator
- -
- -
- - - -
-

BidirectionalIterator<E> constructor

- -
- - BidirectionalIterator<E>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BidirectionalIterator/movePrevious.html b/doc/api/dart-core/BidirectionalIterator/movePrevious.html deleted file mode 100644 index 0dc6e7a1..00000000 --- a/doc/api/dart-core/BidirectionalIterator/movePrevious.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - movePrevious method - BidirectionalIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
movePrevious
- -
- -
- - - -
-

movePrevious method

- -
- bool - movePrevious -() - -
-
-

Move back to the previous element.

-

Returns true and updates current if successful. Returns false -and updates current to an implementation defined state if there is no -previous element

-
- -
-

Implementation

-
bool movePrevious();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt-class.html b/doc/api/dart-core/BigInt-class.html deleted file mode 100644 index 38248b09..00000000 --- a/doc/api/dart-core/BigInt-class.html +++ /dev/null @@ -1,703 +0,0 @@ - - - - - - - - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
BigInt
- -
- -
- - - -
-

BigInt class

- -
-

An arbitrarily large integer.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- BigInt.from(num value) -
-
- Allocates a big integer from the provided value number. -
factory
-
-
-
- -
-

Properties

- -
-
- bitLength - int -
-
- Returns the minimum number of bits required to store this big integer. [...] -
read-only
-
-
- isEven - bool -
-
- Whether this big integer is even. -
read-only
-
-
- isNegative - bool -
-
- Whether this number is negative. -
read-only
-
-
- isOdd - bool -
-
- Whether this big integer is odd. -
read-only
-
-
- isValidInt - bool -
-
- Whether this big integer can be represented as an int without losing -precision. [...] -
read-only
-
-
- sign - int -
-
- Returns the sign of this big integer. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- abs() - BigInt - -
-
- Returns the absolute value of this integer. [...] - -
-
- compareTo(BigInt other) - int - -
-
- Compares this to other. [...] -
override
-
-
- gcd(BigInt other) - BigInt - -
-
- Returns the greatest common divisor of this big integer and other. [...] - -
-
- modInverse(BigInt modulus) - BigInt - -
-
- Returns the modular multiplicative inverse of this big integer -modulo modulus. [...] - -
-
- modPow(BigInt exponent BigInt modulus) - BigInt - -
-
- Returns this integer to the power of exponent modulo modulus. [...] - -
-
- pow(int exponent) - BigInt - -
-
- Returns this to the power of exponent. [...] - -
-
- remainder(BigInt other) - BigInt - -
-
- Returns the remainder of the truncating division of this by other. [...] - -
-
- toDouble() - double - -
-
- Returns this BigInt as a double. [...] - -
-
- toInt() - int - -
-
- Returns this BigInt as an int. [...] - -
-
- toRadixString(int radix) - String - -
-
- Converts this to a string representation in the given radix. [...] - -
-
- toSigned(int width) - BigInt - -
-
- Returns the least significant width bits of this integer, extending the -highest retained bit to the sign. This is the same as truncating the value -to fit in width bits using an signed 2-s complement representation. The -returned value has the same bit value in all positions higher than width. [...] - -
-
- toString() - String - -
-
- Returns a String-representation of this integer. [...] -
override
-
-
- toUnsigned(int width) - BigInt - -
-
- Returns the least significant width bits of this big integer as a -non-negative number (i.e. unsigned representation). The returned value has -zeros in all bit positions higher than width. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator %(BigInt other) - BigInt - -
-
- Euclidean modulo operator. [...] - -
-
- operator &(BigInt other) - BigInt - -
-
- Bit-wise and operator. [...] - -
-
- operator *(BigInt other) - BigInt - -
-
- Multiplication operator. - -
-
- operator +(BigInt other) - BigInt - -
-
- Addition operator. - -
-
- operator -(BigInt other) - BigInt - -
-
- Subtraction operator. - -
-
- operator /(BigInt other) - double - -
-
- Division operator. - -
-
- operator <(BigInt other) - bool - -
-
- Relational less than operator. - -
-
- operator <<(int shiftAmount) - BigInt - -
-
- Shift the bits of this integer to the left by shiftAmount. [...] - -
-
- operator <=(BigInt other) - bool - -
-
- Relational less than or equal operator. - -
-
- operator >(BigInt other) - bool - -
-
- Relational greater than operator. - -
-
- operator >=(BigInt other) - bool - -
-
- Relational greater than or equal operator. - -
-
- operator >>(int shiftAmount) - BigInt - -
-
- Shift the bits of this integer to the right by shiftAmount. [...] - -
-
- operator ^(BigInt other) - BigInt - -
-
- Bit-wise exclusive-or operator. [...] - -
-
- operator unary-() - BigInt - -
-
- Return the negative value of this integer. [...] - -
-
- operator |(BigInt other) - BigInt - -
-
- Bit-wise or operator. [...] - -
-
- operator ~() - BigInt - -
-
- The bit-wise negate operator. [...] - -
-
- operator ~/(BigInt other) - BigInt - -
-
- Truncating division operator. [...] - -
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- -
-

Static Properties

- -
-
- one - BigInt -
-
- -
read-only
-
-
- two - BigInt -
-
- -
read-only
-
-
- zero - BigInt -
-
- -
read-only
-
-
-
- -
-

Static Methods

-
-
- parse(String source, { int radix }) - BigInt - -
-
- Parses source as a, possibly signed, integer literal and returns its -value. [...] - -
-
- tryParse(String source, { int radix }) - BigInt - -
-
- Parses source as a, possibly signed, integer literal and returns its -value. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/BigInt.from.html b/doc/api/dart-core/BigInt/BigInt.from.html deleted file mode 100644 index ebd48e6c..00000000 --- a/doc/api/dart-core/BigInt/BigInt.from.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - BigInt.from constructor - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
BigInt.from
- -
- -
- - - -
-

BigInt.from constructor

- -
- - BigInt.from(num value) -
- -
-

Allocates a big integer from the provided value number.

-
- -
-

Implementation

-
external factory BigInt.from(num value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/abs.html b/doc/api/dart-core/BigInt/abs.html deleted file mode 100644 index db576c36..00000000 --- a/doc/api/dart-core/BigInt/abs.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - abs method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
abs
- -
- -
- - - -
-

abs method

- -
- BigInt - abs -() - -
-
-

Returns the absolute value of this integer.

-

For any integer x, the result is the same as x < 0 ? -x : x.

-
- -
-

Implementation

-
BigInt abs();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/bitLength.html b/doc/api/dart-core/BigInt/bitLength.html deleted file mode 100644 index 5f75d9c7..00000000 --- a/doc/api/dart-core/BigInt/bitLength.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - bitLength property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
bitLength
- -
- -
- - - -
-

bitLength property

- - -
- -
- int - bitLength - -
- -
-

Returns the minimum number of bits required to store this big integer.

-

The number of bits excludes the sign bit, which gives the natural length -for non-negative (unsigned) values. Negative values are complemented to -return the bit position of the first bit that differs from the sign bit.

-

To find the number of bits needed to store the value as a signed value, -add one, i.e. use x.bitLength + 1.

-
x.bitLength == (-x-1).bitLength
-
-new BigInt.from(3).bitLength == 2;   // 00000011
-new BigInt.from(2).bitLength == 2;   // 00000010
-new BigInt.from(1).bitLength == 1;   // 00000001
-new BigInt.from(0).bitLength == 0;   // 00000000
-new BigInt.from(-1).bitLength == 0;  // 11111111
-new BigInt.from(-2).bitLength == 1;  // 11111110
-new BigInt.from(-3).bitLength == 2;  // 11111101
-new BigInt.from(-4).bitLength == 2;  // 11111100
-
-
-
-

Implementation

-
int get bitLength;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/compareTo.html b/doc/api/dart-core/BigInt/compareTo.html deleted file mode 100644 index 3cbdf347..00000000 --- a/doc/api/dart-core/BigInt/compareTo.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - compareTo method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
compareTo
- -
- -
- - - -
-

compareTo method

- -
- int - compareTo -(BigInt other) -
override
-
-
-

Compares this to other.

-

Returns a negative number if this is less than other, zero if they are -equal, and a positive number if this is greater than other.

-
- -
-

Implementation

-
int compareTo(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/gcd.html b/doc/api/dart-core/BigInt/gcd.html deleted file mode 100644 index 63b0ae5e..00000000 --- a/doc/api/dart-core/BigInt/gcd.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - gcd method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
gcd
- -
- -
- - - -
-

gcd method

- -
- BigInt - gcd -(BigInt other) - -
-
-

Returns the greatest common divisor of this big integer and other.

-

If either number is non-zero, the result is the numerically greatest -integer dividing both this and other.

-

The greatest common divisor is independent of the order, -so x.gcd(y) is always the same as y.gcd(x).

-

For any integer x, x.gcd(x) is x.abs().

-

If both this and other is zero, the result is also zero.

-
- -
-

Implementation

-
BigInt gcd(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/isEven.html b/doc/api/dart-core/BigInt/isEven.html deleted file mode 100644 index d35144a0..00000000 --- a/doc/api/dart-core/BigInt/isEven.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - isEven property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEven
- -
- -
- - - -
-

isEven property

- - -
- -
- bool - isEven - -
- -
-

Whether this big integer is even.

-
-
-

Implementation

-
bool get isEven;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/isNegative.html b/doc/api/dart-core/BigInt/isNegative.html deleted file mode 100644 index fded05e2..00000000 --- a/doc/api/dart-core/BigInt/isNegative.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - isNegative property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNegative
- -
- -
- - - -
-

isNegative property

- - -
- -
- bool - isNegative - -
- -
-

Whether this number is negative.

-
-
-

Implementation

-
bool get isNegative;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/isOdd.html b/doc/api/dart-core/BigInt/isOdd.html deleted file mode 100644 index 756c43c6..00000000 --- a/doc/api/dart-core/BigInt/isOdd.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - isOdd property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isOdd
- -
- -
- - - -
-

isOdd property

- - -
- -
- bool - isOdd - -
- -
-

Whether this big integer is odd.

-
-
-

Implementation

-
bool get isOdd;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/isValidInt.html b/doc/api/dart-core/BigInt/isValidInt.html deleted file mode 100644 index c062a9cf..00000000 --- a/doc/api/dart-core/BigInt/isValidInt.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - isValidInt property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isValidInt
- -
- -
- - - -
-

isValidInt property

- - -
- -
- bool - isValidInt - -
- -
-

Whether this big integer can be represented as an int without losing -precision.

-

Warning: this function may give a different result on -dart2js, dev compiler, and the VM, due to the differences in -integer precision.

-
-
-

Implementation

-
bool get isValidInt;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/modInverse.html b/doc/api/dart-core/BigInt/modInverse.html deleted file mode 100644 index a7cae6af..00000000 --- a/doc/api/dart-core/BigInt/modInverse.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - modInverse method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
modInverse
- -
- -
- - - -
-

modInverse method

- -
- BigInt - modInverse -(BigInt modulus) - -
-
-

Returns the modular multiplicative inverse of this big integer -modulo modulus.

-

The modulus must be positive.

-

It is an error if no modular inverse exists.

-
- -
-

Implementation

-
// Returns 1/this % modulus, with modulus > 0.
-BigInt modInverse(BigInt modulus);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/modPow.html b/doc/api/dart-core/BigInt/modPow.html deleted file mode 100644 index 438dfd81..00000000 --- a/doc/api/dart-core/BigInt/modPow.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - modPow method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
modPow
- -
- -
- - - -
-

modPow method

- -
- BigInt - modPow -(BigInt exponent BigInt modulus) - -
-
-

Returns this integer to the power of exponent modulo modulus.

-

The exponent must be non-negative and modulus must be -positive.

-
- -
-

Implementation

-
BigInt modPow(BigInt exponent, BigInt modulus);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/one.html b/doc/api/dart-core/BigInt/one.html deleted file mode 100644 index abf6b12f..00000000 --- a/doc/api/dart-core/BigInt/one.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - one property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
one
- -
- -
- - - -
-

one property

- - -
- -
- BigInt - one - -
- -
-

Implementation

-
external static BigInt get one;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_bitwise_and.html b/doc/api/dart-core/BigInt/operator_bitwise_and.html deleted file mode 100644 index ddc73537..00000000 --- a/doc/api/dart-core/BigInt/operator_bitwise_and.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - operator & method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator &
- -
- -
- - - -
-

operator & method

- -
- BigInt - operator & -(BigInt other) - -
-
-

Bit-wise and operator.

-

Treating both this and other as sufficiently large two's component -integers, the result is a number with only the bits set that are set in -both this and other

-

Of both operands are negative, the result is negative, otherwise -the result is non-negative.

-
- -
-

Implementation

-
BigInt operator &(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_bitwise_exclusive_or.html b/doc/api/dart-core/BigInt/operator_bitwise_exclusive_or.html deleted file mode 100644 index b394fa90..00000000 --- a/doc/api/dart-core/BigInt/operator_bitwise_exclusive_or.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - operator ^ method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ^
- -
- -
- - - -
-

operator ^ method

- -
- BigInt - operator ^ -(BigInt other) - -
-
-

Bit-wise exclusive-or operator.

-

Treating both this and other as sufficiently large two's component -integers, the result is a number with the bits set that are set in one, -but not both, of this and other

-

If the operands have the same sign, the result is non-negative, -otherwise the result is negative.

-
- -
-

Implementation

-
BigInt operator ^(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_bitwise_negate.html b/doc/api/dart-core/BigInt/operator_bitwise_negate.html deleted file mode 100644 index 923b25eb..00000000 --- a/doc/api/dart-core/BigInt/operator_bitwise_negate.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - operator ~ method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ~
- -
- -
- - - -
-

operator ~ method

- -
- BigInt - operator ~ -() - -
-
-

The bit-wise negate operator.

-

Treating this as a sufficiently large two's component integer, -the result is a number with the opposite bits set.

-

This maps any integer x to -x - 1.

-
- -
-

Implementation

-
BigInt operator ~();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_bitwise_or.html b/doc/api/dart-core/BigInt/operator_bitwise_or.html deleted file mode 100644 index 3f568b6c..00000000 --- a/doc/api/dart-core/BigInt/operator_bitwise_or.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - operator | method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator |
- -
- -
- - - -
-

operator | method

- -
- BigInt - operator | -(BigInt other) - -
-
-

Bit-wise or operator.

-

Treating both this and other as sufficiently large two's component -integers, the result is a number with the bits set that are set in either -of this and other

-

If both operands are non-negative, the result is non-negative, -otherwise the result us negative.

-
- -
-

Implementation

-
BigInt operator |(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_divide.html b/doc/api/dart-core/BigInt/operator_divide.html deleted file mode 100644 index 9372bea7..00000000 --- a/doc/api/dart-core/BigInt/operator_divide.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator / method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator /
- -
- -
- - - -
-

operator / method

- -
- double - operator / -(BigInt other) - -
-
-

Division operator.

-
- -
-

Implementation

-
double operator /(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_greater.html b/doc/api/dart-core/BigInt/operator_greater.html deleted file mode 100644 index 03a53762..00000000 --- a/doc/api/dart-core/BigInt/operator_greater.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator > method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator >
- -
- -
- - - -
-

operator > method

- -
- bool - operator > -(BigInt other) - -
-
-

Relational greater than operator.

-
- -
-

Implementation

-
bool operator >(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_greater_equal.html b/doc/api/dart-core/BigInt/operator_greater_equal.html deleted file mode 100644 index c3bab2fc..00000000 --- a/doc/api/dart-core/BigInt/operator_greater_equal.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator >= method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator >=
- -
- -
- - - -
-

operator >= method

- -
- bool - operator >= -(BigInt other) - -
-
-

Relational greater than or equal operator.

-
- -
-

Implementation

-
bool operator >=(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_less.html b/doc/api/dart-core/BigInt/operator_less.html deleted file mode 100644 index 6fe82b12..00000000 --- a/doc/api/dart-core/BigInt/operator_less.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator < method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator <
- -
- -
- - - -
-

operator < method

- -
- bool - operator < -(BigInt other) - -
-
-

Relational less than operator.

-
- -
-

Implementation

-
bool operator <(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_less_equal.html b/doc/api/dart-core/BigInt/operator_less_equal.html deleted file mode 100644 index 20ca6b8b..00000000 --- a/doc/api/dart-core/BigInt/operator_less_equal.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator <= method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator <=
- -
- -
- - - -
-

operator <= method

- -
- bool - operator <= -(BigInt other) - -
-
-

Relational less than or equal operator.

-
- -
-

Implementation

-
bool operator <=(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_minus.html b/doc/api/dart-core/BigInt/operator_minus.html deleted file mode 100644 index 8e55343b..00000000 --- a/doc/api/dart-core/BigInt/operator_minus.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator - method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator -
- -
- -
- - - -
-

operator - method

- -
- BigInt - operator - -(BigInt other) - -
-
-

Subtraction operator.

-
- -
-

Implementation

-
BigInt operator -(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_modulo.html b/doc/api/dart-core/BigInt/operator_modulo.html deleted file mode 100644 index 100f6150..00000000 --- a/doc/api/dart-core/BigInt/operator_modulo.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - operator % method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator %
- -
- -
- - - -
-

operator % method

- -
- BigInt - operator % -(BigInt other) - -
-
-

Euclidean modulo operator.

-

Returns the remainder of the Euclidean division. The Euclidean division of -two integers a and b yields two integers q and r such that -a == b * q + r and 0 <= r < b.abs().

-

The sign of the returned value r is always positive.

-

See remainder for the remainder of the truncating division.

-
- -
-

Implementation

-
BigInt operator %(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_multiply.html b/doc/api/dart-core/BigInt/operator_multiply.html deleted file mode 100644 index 3aa9f96e..00000000 --- a/doc/api/dart-core/BigInt/operator_multiply.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator * method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator *
- -
- -
- - - -
-

operator * method

- -
- BigInt - operator * -(BigInt other) - -
-
-

Multiplication operator.

-
- -
-

Implementation

-
BigInt operator *(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_plus.html b/doc/api/dart-core/BigInt/operator_plus.html deleted file mode 100644 index 55b663b2..00000000 --- a/doc/api/dart-core/BigInt/operator_plus.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator + method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator +
- -
- -
- - - -
-

operator + method

- -
- BigInt - operator + -(BigInt other) - -
-
-

Addition operator.

-
- -
-

Implementation

-
BigInt operator +(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_shift_left.html b/doc/api/dart-core/BigInt/operator_shift_left.html deleted file mode 100644 index 4272e89a..00000000 --- a/doc/api/dart-core/BigInt/operator_shift_left.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - operator << method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator <<
- -
- -
- - - -
-

operator << method

- -
- BigInt - operator << -(int shiftAmount) - -
-
-

Shift the bits of this integer to the left by shiftAmount.

-

Shifting to the left makes the number larger, effectively multiplying -the number by pow(2, shiftIndex).

-

There is no limit on the size of the result. It may be relevant to -limit intermediate values by using the "and" operator with a suitable -mask.

-

It is an error if shiftAmount is negative.

-
- -
-

Implementation

-
BigInt operator <<(int shiftAmount);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_shift_right.html b/doc/api/dart-core/BigInt/operator_shift_right.html deleted file mode 100644 index a0ada092..00000000 --- a/doc/api/dart-core/BigInt/operator_shift_right.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - operator >> method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator >>
- -
- -
- - - -
-

operator >> method

- -
- BigInt - operator >> -(int shiftAmount) - -
-
-

Shift the bits of this integer to the right by shiftAmount.

-

Shifting to the right makes the number smaller and drops the least -significant bits, effectively doing an integer division by -pow(2, shiftIndex).

-

It is an error if shiftAmount is negative.

-
- -
-

Implementation

-
BigInt operator >>(int shiftAmount);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_truncate_divide.html b/doc/api/dart-core/BigInt/operator_truncate_divide.html deleted file mode 100644 index af8410aa..00000000 --- a/doc/api/dart-core/BigInt/operator_truncate_divide.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - operator ~/ method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ~/
- -
- -
- - - -
-

operator ~/ method

- -
- BigInt - operator ~/ -(BigInt other) - -
-
-

Truncating division operator.

-

Performs a truncating integer division, where the remainder is discarded.

-

The remainder can be computed using the remainder method.

-

Examples:

-
var seven = new BigInt.from(7);
-var three = new BigInt.from(3);
-seven ~/ three;    // => 2
-(-seven) ~/ three; // => -2
-seven ~/ -three;   // => -2
-seven.remainder(three);    // => 1
-(-seven).remainder(three); // => -1
-seven.remainder(-three);   // => 1
-
-
- -
-

Implementation

-
BigInt operator ~/(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/operator_unary_minus.html b/doc/api/dart-core/BigInt/operator_unary_minus.html deleted file mode 100644 index 8b4da422..00000000 --- a/doc/api/dart-core/BigInt/operator_unary_minus.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - operator unary- method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator unary-
- -
- -
- - - -
-

operator unary- method

- -
- BigInt - operator unary- -() - -
-
-

Return the negative value of this integer.

-

The result of negating an integer always has the opposite sign, except -for zero, which is its own negation.

-
- -
-

Implementation

-
BigInt operator -();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/parse.html b/doc/api/dart-core/BigInt/parse.html deleted file mode 100644 index 718851e7..00000000 --- a/doc/api/dart-core/BigInt/parse.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - parse method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parse
- -
- -
- - - -
-

parse method

- -
- BigInt - parse -(String source, { int radix }) - -
-
-

Parses source as a, possibly signed, integer literal and returns its -value.

-

The source must be a non-empty sequence of base-radix digits, -optionally prefixed with a minus or plus sign ('-' or '+').

-

The radix must be in the range 2..36. The digits used are -first the decimal digits 0..9, and then the letters 'a'..'z' with -values 10 through 35. Also accepts upper-case letters with the same -values as the lower-case ones.

-

If no radix is given then it defaults to 10. In this case, the source -digits may also start with 0x, in which case the number is interpreted -as a hexadecimal literal, which effectively means that the 0x is ignored -and the radix is instead set to 16.

-

For any int n and radix r, it is guaranteed that -n == int.parse(n.toRadixString(r), radix: r).

-

Throws a FormatException if the source is not a valid integer literal, -optionally prefixed by a sign.

-
- -
-

Implementation

-
external static BigInt parse(String source, {int? radix});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/pow.html b/doc/api/dart-core/BigInt/pow.html deleted file mode 100644 index 7dc92276..00000000 --- a/doc/api/dart-core/BigInt/pow.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - pow method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
pow
- -
- -
- - - -
-

pow method

- -
- BigInt - pow -(int exponent) - -
-
-

Returns this to the power of exponent.

-

Returns one if the exponent equals 0.

-

The exponent must otherwise be positive.

-

The result is always equal to the mathematical result of this to the power -exponent, only limited by the available memory.

-
- -
-

Implementation

-
BigInt pow(int exponent);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/remainder.html b/doc/api/dart-core/BigInt/remainder.html deleted file mode 100644 index ebe31440..00000000 --- a/doc/api/dart-core/BigInt/remainder.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - remainder method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
remainder
- -
- -
- - - -
-

remainder method

- -
- BigInt - remainder -(BigInt other) - -
-
-

Returns the remainder of the truncating division of this by other.

-

The result r of this operation satisfies: -this == (this ~/ other) * other + r. -As a consequence the remainder r has the same sign as the divider this.

-
- -
-

Implementation

-
BigInt remainder(BigInt other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/sign.html b/doc/api/dart-core/BigInt/sign.html deleted file mode 100644 index 29192d1e..00000000 --- a/doc/api/dart-core/BigInt/sign.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - sign property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
sign
- -
- -
- - - -
-

sign property

- - -
- -
- int - sign - -
- -
-

Returns the sign of this big integer.

-

Returns 0 for zero, -1 for values less than zero and -+1 for values greater than zero.

-
-
-

Implementation

-
int get sign;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/toDouble.html b/doc/api/dart-core/BigInt/toDouble.html deleted file mode 100644 index 9d5e55ac..00000000 --- a/doc/api/dart-core/BigInt/toDouble.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - toDouble method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toDouble
- -
- -
- - - -
-

toDouble method

- -
- double - toDouble -() - -
-
-

Returns this BigInt as a double.

-

If the number is not representable as a double, an -approximation is returned. For numerically large integers, the -approximation may be infinite.

-
- -
-

Implementation

-
double toDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/toInt.html b/doc/api/dart-core/BigInt/toInt.html deleted file mode 100644 index b4197e9e..00000000 --- a/doc/api/dart-core/BigInt/toInt.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - toInt method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toInt
- -
- -
- - - -
-

toInt method

- -
- int - toInt -() - -
-
-

Returns this BigInt as an int.

-

If the number does not fit, clamps to the max (or min) -integer.

-

Warning: the clamping behaves differently on dart2js, dev -compiler, and the VM, due to the differences in integer -precision.

-
- -
-

Implementation

-
int toInt();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/toRadixString.html b/doc/api/dart-core/BigInt/toRadixString.html deleted file mode 100644 index 0210cef3..00000000 --- a/doc/api/dart-core/BigInt/toRadixString.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - toRadixString method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toRadixString
- -
- -
- - - -
-

toRadixString method

- -
- String - toRadixString -(int radix) - -
-
-

Converts this to a string representation in the given radix.

-

In the string representation, lower-case letters are used for digits above -'9', with 'a' being 10 an 'z' being 35.

-

The radix argument must be an integer in the range 2 to 36.

-
- -
-

Implementation

-
String toRadixString(int radix);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/toSigned.html b/doc/api/dart-core/BigInt/toSigned.html deleted file mode 100644 index b98a9af6..00000000 --- a/doc/api/dart-core/BigInt/toSigned.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - toSigned method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSigned
- -
- -
- - - -
-

toSigned method

- -
- BigInt - toSigned -(int width) - -
-
-

Returns the least significant width bits of this integer, extending the -highest retained bit to the sign. This is the same as truncating the value -to fit in width bits using an signed 2-s complement representation. The -returned value has the same bit value in all positions higher than width.

-
var big15 = new BigInt.from(15);
-var big16 = new BigInt.from(16);
-var big239 = new BigInt.from(239);
-                                     V--sign bit-V
-big16.toSigned(5) == -big16   //  00010000 -> 11110000
-big239.toSigned(5) == big15   //  11101111 -> 00001111
-                                     ^           ^
-
-

This operation can be used to simulate arithmetic from low level languages. -For example, to increment an 8 bit signed quantity:

-
q = (q + 1).toSigned(8);
-
-

q will count from 0 up to 127, wrap to -128 and count back up to -127.

-

If the input value fits in width bits without truncation, the result is -the same as the input. The minimum width needed to avoid truncation of x -is x.bitLength + 1, i.e.

-
x == x.toSigned(x.bitLength + 1);
-
-
- -
-

Implementation

-
BigInt toSigned(int width);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/toString.html b/doc/api/dart-core/BigInt/toString.html deleted file mode 100644 index c34a731d..00000000 --- a/doc/api/dart-core/BigInt/toString.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - toString method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a String-representation of this integer.

-

The returned string is parsable by parse. -For any BigInt i, it is guaranteed that -i == BigInt.parse(i.toString()).

-
- -
-

Implementation

-
String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/toUnsigned.html b/doc/api/dart-core/BigInt/toUnsigned.html deleted file mode 100644 index 289c9763..00000000 --- a/doc/api/dart-core/BigInt/toUnsigned.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - toUnsigned method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toUnsigned
- -
- -
- - - -
-

toUnsigned method

- -
- BigInt - toUnsigned -(int width) - -
-
-

Returns the least significant width bits of this big integer as a -non-negative number (i.e. unsigned representation). The returned value has -zeros in all bit positions higher than width.

-
new BigInt.from(-1).toUnsigned(5) == 31   // 11111111  ->  00011111
-
-

This operation can be used to simulate arithmetic from low level languages. -For example, to increment an 8 bit quantity:

-
q = (q + 1).toUnsigned(8);
-
-

q will count from 0 up to 255 and then wrap around to 0.

-

If the input fits in width bits without truncation, the result is the -same as the input. The minimum width needed to avoid truncation of x is -given by x.bitLength, i.e.

-
x == x.toUnsigned(x.bitLength);
-
-
- -
-

Implementation

-
BigInt toUnsigned(int width);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/tryParse.html b/doc/api/dart-core/BigInt/tryParse.html deleted file mode 100644 index 0e2a40ff..00000000 --- a/doc/api/dart-core/BigInt/tryParse.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - tryParse method - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
tryParse
- -
- -
- - - -
-

tryParse method

- -
- BigInt - tryParse -(String source, { int radix }) - -
-
-

Parses source as a, possibly signed, integer literal and returns its -value.

-

As parse except that this method returns null if the input is not -valid

-
- -
-

Implementation

-
external static BigInt? tryParse(String source, {int? radix});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/two.html b/doc/api/dart-core/BigInt/two.html deleted file mode 100644 index a858e351..00000000 --- a/doc/api/dart-core/BigInt/two.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - two property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
two
- -
- -
- - - -
-

two property

- - -
- -
- BigInt - two - -
- -
-

Implementation

-
external static BigInt get two;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/BigInt/zero.html b/doc/api/dart-core/BigInt/zero.html deleted file mode 100644 index e3003a66..00000000 --- a/doc/api/dart-core/BigInt/zero.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - zero property - BigInt class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
zero
- -
- -
- - - -
-

zero property

- - -
- -
- BigInt - zero - -
- -
-

Implementation

-
external static BigInt get zero;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/CastError-class.html b/doc/api/dart-core/CastError-class.html deleted file mode 100644 index 65af82c8..00000000 --- a/doc/api/dart-core/CastError-class.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - - CastError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
CastError
- -
- -
- - - -
-

CastError class

- -
-

Error thrown by the runtime system when a cast operation fails.

-
- -
-
-
Inheritance
-
- - - - - -
Annotations
-
-
-
- -
-

Constructors

- -
-
- CastError() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/CastError/CastError.html b/doc/api/dart-core/CastError/CastError.html deleted file mode 100644 index 7be00207..00000000 --- a/doc/api/dart-core/CastError/CastError.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - CastError constructor - CastError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
CastError
- -
- -
- - - -
-

CastError constructor

- -
- - CastError() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Comparable-class.html b/doc/api/dart-core/Comparable-class.html deleted file mode 100644 index e952f019..00000000 --- a/doc/api/dart-core/Comparable-class.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - - - Comparable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Comparable
- -
- -
- - - -
-

Comparable<T> class

- -
-

Interface used by types that have an intrinsic ordering.

-

The compareTo operation defines a total ordering of objects, -which can be used for ordering and sorting.

-

The Comparable interface should be used for the natural ordering of a type. -If a type can be ordered in more than one way, -and none of them is the obvious natural ordering, -then it might be better not to use the Comparable interface, -and to provide separate Comparators instead.

-

It is recommended that the order of a Comparable agrees -with its operator operator == equality (a.compareTo(b) == 0 iff a == b), -but this is not a requirement. -For example, double and DateTime have compareTo methods -that do not agree with operator operator ==. -For doubles the compareTo method is more precise than the equality, -and for DateTime it is less precise.

-

Examples:

-
 (0.0).compareTo(-0.0);  // => 1
- 0.0 == -0.0;            // => true
- var dt = new DateTime.now();
- var dt2 = dt.toUtc();
- dt == dt2;              // => false
- dt.compareTo(dt2);      // => 0
-
-

The Comparable interface does not imply the existence -of the comparison operators <, <=, > and >=. -These should only be defined -if the ordering is a less-than/greater-than ordering, -that is, an ordering where you would naturally -use the words "less than" about the order of two elements.

-

If the equality operator and compareTo disagree, -the comparison operators should follow the equality operator, -and will likely also disagree with compareTo. -Otherwise they should match the compareTo method, -so that a < b iff a.compareTo(b) < 0.

-

The double class defines comparison operators -that are compatible with equality. -The operators differ from double.compareTo on -0.0 and NaN.

-

The DateTime class has no comparison operators, instead it has the more -precisely named DateTime.isBefore and DateTime.isAfter.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Comparable() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- compareTo(T other) - int - -
-
- Compares this object to another Comparable [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- compare(Comparable a Comparable b) - int - -
-
- A Comparator that compares one comparable to another. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Comparable/Comparable.html b/doc/api/dart-core/Comparable/Comparable.html deleted file mode 100644 index d3a6f532..00000000 --- a/doc/api/dart-core/Comparable/Comparable.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Comparable constructor - Comparable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Comparable
- -
- -
- - - -
-

Comparable<T> constructor

- -
- - Comparable<T>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Comparable/compare.html b/doc/api/dart-core/Comparable/compare.html deleted file mode 100644 index b9b17058..00000000 --- a/doc/api/dart-core/Comparable/compare.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - compare method - Comparable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
compare
- -
- -
- - - -
-

compare method

- -
- int - compare -(Comparable a Comparable b) - -
-
-

A Comparator that compares one comparable to another.

-

It returns the result of a.compareTo(b).

-

This utility function is used as the default comparator -for ordering collections, for example in the List sort function.

-
- -
-

Implementation

-
static int compare(Comparable a, Comparable b) => a.compareTo(b);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Comparable/compareTo.html b/doc/api/dart-core/Comparable/compareTo.html deleted file mode 100644 index 2a56c81a..00000000 --- a/doc/api/dart-core/Comparable/compareTo.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - compareTo method - Comparable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
compareTo
- -
- -
- - - -
-

compareTo method

- -
- int - compareTo -(T other) - -
-
-

Compares this object to another Comparable

-

Returns a value like a Comparator when comparing this to other. -That is, it returns a negative integer if this is ordered before other, -a positive integer if this is ordered after other, -and zero if this and other are ordered together.

-

The other argument must be a value that is comparable to this object.

-
- -
-

Implementation

-
int compareTo(T other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Comparator.html b/doc/api/dart-core/Comparator.html deleted file mode 100644 index a10a4746..00000000 --- a/doc/api/dart-core/Comparator.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - Comparator typedef - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Comparator
- -
- -
- - - -
-

Comparator<T> typedef

- -
- int - Comparator -(T a T b) -
- -
-

The signature of a generic comparison function.

-

A comparison function represents an ordering on a type of objects. -A total ordering on a type means that for two values, either they -are equal or one is greater than the other (and the latter must then be -smaller than the former).

-

A Comparator function represents such a total ordering by returning

-
    -
  • a negative integer if a is smaller than b,
  • -
  • zero if a is equal to b, and
  • -
  • a positive integer if a is greater than b.
  • -
-
-
-

Implementation

-
typedef Comparator<T> = int Function(T a, T b);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ConcurrentModificationError-class.html b/doc/api/dart-core/ConcurrentModificationError-class.html deleted file mode 100644 index 578cfd68..00000000 --- a/doc/api/dart-core/ConcurrentModificationError-class.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - ConcurrentModificationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ConcurrentModificationError
- -
- -
- - - -
-

ConcurrentModificationError class

- -
-

Error occurring when a collection is modified during iteration.

-

Some modifications may be allowed for some collections, so each collection -(Iterable or similar collection of values) should declare which operations -are allowed during an iteration.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- ConcurrentModificationError([Object modifiedObject ]) -
-
- -
-
-
- -
-

Properties

- -
-
- modifiedObject - Object -
-
- The object that was modified in an incompatible way. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ConcurrentModificationError/ConcurrentModificationError.html b/doc/api/dart-core/ConcurrentModificationError/ConcurrentModificationError.html deleted file mode 100644 index ff54655d..00000000 --- a/doc/api/dart-core/ConcurrentModificationError/ConcurrentModificationError.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - ConcurrentModificationError constructor - ConcurrentModificationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ConcurrentModificationError
- -
- -
- - - -
-

ConcurrentModificationError constructor

- -
- - ConcurrentModificationError([Object modifiedObject ]) -
- - -
-

Implementation

-
ConcurrentModificationError([this.modifiedObject]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ConcurrentModificationError/modifiedObject.html b/doc/api/dart-core/ConcurrentModificationError/modifiedObject.html deleted file mode 100644 index 21593006..00000000 --- a/doc/api/dart-core/ConcurrentModificationError/modifiedObject.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - modifiedObject property - ConcurrentModificationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
modifiedObject
- -
- -
- - - -
-

modifiedObject property

- -
- Object - modifiedObject -
final
-
-
-

The object that was modified in an incompatible way.

-
-
-

Implementation

-
final Object? modifiedObject
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/ConcurrentModificationError/toString.html b/doc/api/dart-core/ConcurrentModificationError/toString.html deleted file mode 100644 index b8436bd4..00000000 --- a/doc/api/dart-core/ConcurrentModificationError/toString.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - toString method - ConcurrentModificationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() {
-  if (modifiedObject == null) {
-    return "Concurrent modification during iteration.";
-  }
-  return "Concurrent modification during iteration: "
-      "${Error.safeToString(modifiedObject)}.";
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/CyclicInitializationError-class.html b/doc/api/dart-core/CyclicInitializationError-class.html deleted file mode 100644 index a01647b1..00000000 --- a/doc/api/dart-core/CyclicInitializationError-class.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - CyclicInitializationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
CyclicInitializationError
- -
- -
- - - -
-

CyclicInitializationError class

- -
-

Error thrown when a lazily initialized variable cannot be initialized.

-

A static/library variable with an initializer expression is initialized -the first time it is read. If evaluating the initializer expression causes -another read of the variable, this error is thrown.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- CyclicInitializationError([String variableName ]) -
-
- -
-
-
- -
-

Properties

- -
-
- variableName - String -
-
- -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/CyclicInitializationError/CyclicInitializationError.html b/doc/api/dart-core/CyclicInitializationError/CyclicInitializationError.html deleted file mode 100644 index c026a2c2..00000000 --- a/doc/api/dart-core/CyclicInitializationError/CyclicInitializationError.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - CyclicInitializationError constructor - CyclicInitializationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
CyclicInitializationError
- -
- -
- - - -
-

CyclicInitializationError constructor

- -
- - CyclicInitializationError([String variableName ]) -
- - -
-

Implementation

-
@pragma("vm:entry-point")
-CyclicInitializationError([this.variableName]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/CyclicInitializationError/toString.html b/doc/api/dart-core/CyclicInitializationError/toString.html deleted file mode 100644 index 6acb7c9d..00000000 --- a/doc/api/dart-core/CyclicInitializationError/toString.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - toString method - CyclicInitializationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() {
-  var variableName = this.variableName;
-  return variableName == null
-      ? "Reading static variable during its initialization"
-      : "Reading static variable '$variableName' during its initialization";
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/CyclicInitializationError/variableName.html b/doc/api/dart-core/CyclicInitializationError/variableName.html deleted file mode 100644 index f4dfcd79..00000000 --- a/doc/api/dart-core/CyclicInitializationError/variableName.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - variableName property - CyclicInitializationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
variableName
- -
- -
- - - -
-

variableName property

- -
- String - variableName -
final
-
-
-

Implementation

-
final String? variableName
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime-class.html b/doc/api/dart-core/DateTime-class.html deleted file mode 100644 index f4a65946..00000000 --- a/doc/api/dart-core/DateTime-class.html +++ /dev/null @@ -1,916 +0,0 @@ - - - - - - - - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
DateTime
- -
- -
- - - -
-

DateTime class

- -
-

An instant in time, such as July 20, 1969, 8:18pm GMT.

-

DateTimes can represent time values that are at a distance of at most -100,000,000 days from epoch (1970-01-01 UTC): -271821-04-20 to 275760-09-13.

-

Create a DateTime object by using one of the constructors -or by parsing a correctly formatted string, -which complies with a subset of ISO 8601. -Note that hours are specified between 0 and 23, -as in a 24-hour clock. -For example:

-
var now = new DateTime.now();
-var berlinWallFell = new DateTime.utc(1989, 11, 9);
-var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");  // 8:18pm
-
-

A DateTime object is anchored either in the UTC time zone -or in the local time zone of the current computer -when the object is created.

-

Once created, neither the value nor the time zone -of a DateTime object may be changed.

-

You can use properties to get -the individual units of a DateTime object.

-
assert(berlinWallFell.month == 11);
-assert(moonLanding.hour == 20);
-
-

For convenience and readability, -the DateTime class provides a constant for each day and month -name - for example, august and friday. -You can use these constants to improve code readability:

-
var berlinWallFell = new DateTime.utc(1989, DateTime.november, 9);
-assert(berlinWallFell.weekday == DateTime.thursday);
-
-

Day and month values begin at 1, and the week starts on Monday. -That is, the constants january and monday are both 1.

-

Working with UTC and local time

-

A DateTime object is in the local time zone -unless explicitly created in the UTC time zone.

-
var dDay = new DateTime.utc(1944, 6, 6);
-
-

Use isUtc to determine whether a DateTime object is based in UTC. -Use the methods toLocal and toUtc -to get the equivalent date/time value specified in the other time zone. -Use timeZoneName to get an abbreviated name of the time zone -for the DateTime object. -To find the difference -between UTC and the time zone of a DateTime object -call timeZoneOffset.

-

Comparing DateTime objects

-

The DateTime class contains several handy methods, -such as isAfter, isBefore, and isAtSameMomentAs, -for comparing DateTime objects.

-
assert(berlinWallFell.isAfter(moonLanding) == true);
-assert(berlinWallFell.isBefore(moonLanding) == false);
-
-

Using DateTime with Duration

-

Use the add and subtract methods with a Duration object -to create a new DateTime object based on another. -For example, to find the date that is sixty days (24 * 60 hours) after today, -write:

-
var now = new DateTime.now();
-var sixtyDaysFromNow = now.add(new Duration(days: 60));
-
-

To find out how much time is between two DateTime objects use -difference, which returns a Duration object:

-
var difference = berlinWallFell.difference(moonLanding);
-assert(difference.inDays == 7416);
-
-

The difference between two dates in different time zones -is just the number of nanoseconds between the two points in time. -It doesn't take calendar days into account. -That means that the difference between two midnights in local time may be -less than 24 hours times the number of days between them, -if there is a daylight saving change in between. -If the difference above is calculated using Australian local time, the -difference is 7415 days and 23 hours, which is only 7415 whole days as -reported by inDays.

-

Other resources

-

See Duration to represent a span of time. -See Stopwatch to measure timespans.

-

The DateTime class does not provide internationalization. -To internationalize your code, use -the intl package.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- DateTime(int year, [ int month = 1 int day = 1 int hour = 0 int minute = 0 int second = 0 int millisecond = 0 int microsecond = 0 ]) -
-
- Constructs a DateTime instance specified in the local time zone. [...] -
-
- DateTime.fromMicrosecondsSinceEpoch(int microsecondsSinceEpoch, { bool isUtc: false }) -
-
- Constructs a new DateTime instance -with the given microsecondsSinceEpoch. [...] -
-
- DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch, { bool isUtc: false }) -
-
- Constructs a new DateTime instance -with the given millisecondsSinceEpoch. [...] -
-
- DateTime.now() -
-
- Constructs a DateTime instance with current date and time in the -local time zone. [...] -
-
- DateTime.utc(int year, [ int month = 1 int day = 1 int hour = 0 int minute = 0 int second = 0 int millisecond = 0 int microsecond = 0 ]) -
-
- Constructs a DateTime instance specified in the UTC time zone. [...] -
-
-
- -
-

Properties

- -
-
- day - int -
-
- The day of the month 1..31. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, override
-
-
- hour - int -
-
- The hour of the day, expressed as in a 24-hour clock 0..23. [...] -
read-only
-
-
- isUtc - bool -
-
- True if this DateTime is set to UTC time. [...] -
final
-
-
- microsecond - int -
-
- The microsecond 0...999. [...] -
read-only
-
-
- microsecondsSinceEpoch - int -
-
- The number of microseconds since -the "Unix epoch" 1970-01-01T00:00:00Z (UTC). [...] -
read-only
-
-
- millisecond - int -
-
- The millisecond 0...999. [...] -
read-only
-
-
- millisecondsSinceEpoch - int -
-
- The number of milliseconds since -the "Unix epoch" 1970-01-01T00:00:00Z (UTC). [...] -
read-only
-
-
- minute - int -
-
- The minute 0...59. [...] -
read-only
-
-
- month - int -
-
- The month 1..12. [...] -
read-only
-
-
- second - int -
-
- The second 0...59. [...] -
read-only
-
-
- timeZoneName - String -
-
- The time zone name. [...] -
read-only
-
-
- timeZoneOffset - Duration -
-
- The time zone offset, which -is the difference between local time and UTC. [...] -
read-only
-
-
- weekday - int -
-
- The day of the week monday..sunday. [...] -
read-only
-
-
- year - int -
-
- The year. [...] -
read-only
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(Duration duration) - DateTime - -
-
- Returns a new DateTime instance with duration added to this. [...] - -
-
- compareTo(DateTime other) - int - -
-
- Compares this DateTime object to other, -returning zero if the values are equal. [...] -
override
-
-
- difference(DateTime other) - Duration - -
-
- Returns a Duration with the difference when subtracting other from -this. [...] - -
-
- isAfter(DateTime other) - bool - -
-
- Returns true if this occurs after other. [...] - -
-
- isAtSameMomentAs(DateTime other) - bool - -
-
- Returns true if this occurs at the same moment as other. [...] - -
-
- isBefore(DateTime other) - bool - -
-
- Returns true if this occurs before other. [...] - -
-
- subtract(Duration duration) - DateTime - -
-
- Returns a new DateTime instance with duration subtracted from this. [...] - -
-
- toIso8601String() - String - -
-
- Returns an ISO-8601 full-precision extended format representation. [...] - -
-
- toLocal() - DateTime - -
-
- Returns this DateTime value in the local time zone. [...] - -
-
- toString() - String - -
-
- Returns a human-readable string for this instance. [...] -
override
-
-
- toUtc() - DateTime - -
-
- Returns this DateTime value in the UTC time zone. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- Returns true if other is a DateTime at the same moment and in the -same time zone (UTC or local). [...] -
override
-
-
-
- - -
-

Static Methods

-
-
- parse(String formattedString) - DateTime - -
-
- Constructs a new DateTime instance based on formattedString. [...] - -
-
- tryParse(String formattedString) - DateTime - -
-
- Constructs a new DateTime instance based on formattedString. [...] - -
-
-
- -
-

Constants

- -
-
- april - → const int -
-
- - -
- 4 -
-
-
- august - → const int -
-
- - -
- 8 -
-
-
- daysPerWeek - → const int -
-
- - -
- 7 -
-
-
- december - → const int -
-
- - -
- 12 -
-
-
- february - → const int -
-
- - -
- 2 -
-
-
- friday - → const int -
-
- - -
- 5 -
-
-
- january - → const int -
-
- - -
- 1 -
-
-
- july - → const int -
-
- - -
- 7 -
-
-
- june - → const int -
-
- - -
- 6 -
-
-
- march - → const int -
-
- - -
- 3 -
-
-
- may - → const int -
-
- - -
- 5 -
-
-
- monday - → const int -
-
- - -
- 1 -
-
-
- monthsPerYear - → const int -
-
- - -
- 12 -
-
-
- november - → const int -
-
- - -
- 11 -
-
-
- october - → const int -
-
- - -
- 10 -
-
-
- saturday - → const int -
-
- - -
- 6 -
-
-
- september - → const int -
-
- - -
- 9 -
-
-
- sunday - → const int -
-
- - -
- 7 -
-
-
- thursday - → const int -
-
- - -
- 4 -
-
-
- tuesday - → const int -
-
- - -
- 2 -
-
-
- wednesday - → const int -
-
- - -
- 3 -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/DateTime.fromMicrosecondsSinceEpoch.html b/doc/api/dart-core/DateTime/DateTime.fromMicrosecondsSinceEpoch.html deleted file mode 100644 index e8eb3b3e..00000000 --- a/doc/api/dart-core/DateTime/DateTime.fromMicrosecondsSinceEpoch.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - DateTime.fromMicrosecondsSinceEpoch constructor - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
DateTime.fromMicrosecondsSinceEpoch
- -
- -
- - - -
-

DateTime.fromMicrosecondsSinceEpoch constructor

- -
- - DateTime.fromMicrosecondsSinceEpoch(int microsecondsSinceEpoch, { bool isUtc: false }) -
- -
-

Constructs a new DateTime instance -with the given microsecondsSinceEpoch.

-

If isUtc is false then the date is in the local time zone.

-

The constructed DateTime represents -1970-01-01T00:00:00Z + microsecondsSinceEpoch us in the given -time zone (local or UTC).

-
- -
-

Implementation

-
external DateTime.fromMicrosecondsSinceEpoch(int microsecondsSinceEpoch,
-    {bool isUtc = false});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/DateTime.fromMillisecondsSinceEpoch.html b/doc/api/dart-core/DateTime/DateTime.fromMillisecondsSinceEpoch.html deleted file mode 100644 index 5c047ffb..00000000 --- a/doc/api/dart-core/DateTime/DateTime.fromMillisecondsSinceEpoch.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - DateTime.fromMillisecondsSinceEpoch constructor - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
DateTime.fromMillisecondsSinceEpoch
- -
- -
- - - -
-

DateTime.fromMillisecondsSinceEpoch constructor

- -
- - DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch, { bool isUtc: false }) -
- -
-

Constructs a new DateTime instance -with the given millisecondsSinceEpoch.

-

If isUtc is false then the date is in the local time zone.

-

The constructed DateTime represents -1970-01-01T00:00:00Z + millisecondsSinceEpoch ms in the given -time zone (local or UTC).

-
- -
-

Implementation

-
external DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch,
-    {bool isUtc = false});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/DateTime.html b/doc/api/dart-core/DateTime/DateTime.html deleted file mode 100644 index 00fb1710..00000000 --- a/doc/api/dart-core/DateTime/DateTime.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - DateTime constructor - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
DateTime
- -
- -
- - - -
-

DateTime constructor

- -
- - DateTime(int year, [ int month = 1 int day = 1 int hour = 0 int minute = 0 int second = 0 int millisecond = 0 int microsecond = 0 ]) -
- -
-

Constructs a DateTime instance specified in the local time zone.

-

For example, -to create a new DateTime object representing the 7th of September 2017, -5:30pm

-
var dentistAppointment = new DateTime(2017, 9, 7, 17, 30);
-
-
- -
-

Implementation

-
DateTime(int year,
-    [int month = 1,
-    int day = 1,
-    int hour = 0,
-    int minute = 0,
-    int second = 0,
-    int millisecond = 0,
-    int microsecond = 0])
-    : this._internal(year, month, day, hour, minute, second, millisecond,
-          microsecond, false);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/DateTime.now.html b/doc/api/dart-core/DateTime/DateTime.now.html deleted file mode 100644 index 20ffa76b..00000000 --- a/doc/api/dart-core/DateTime/DateTime.now.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - DateTime.now constructor - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
DateTime.now
- -
- -
- - - -
-

DateTime.now constructor

- -
- - DateTime.now() -
- -
-

Constructs a DateTime instance with current date and time in the -local time zone.

-
var thisInstant = new DateTime.now();
-
-
- -
-

Implementation

-
DateTime.now() : this._now();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/DateTime.utc.html b/doc/api/dart-core/DateTime/DateTime.utc.html deleted file mode 100644 index e4bae7a2..00000000 --- a/doc/api/dart-core/DateTime/DateTime.utc.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - DateTime.utc constructor - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
DateTime.utc
- -
- -
- - - -
-

DateTime.utc constructor

- -
- - DateTime.utc(int year, [ int month = 1 int day = 1 int hour = 0 int minute = 0 int second = 0 int millisecond = 0 int microsecond = 0 ]) -
- -
-

Constructs a DateTime instance specified in the UTC time zone.

-
var moonLanding = new DateTime.utc(1969, 7, 20, 20, 18, 04);
-
-

When dealing with dates or historic events prefer to use UTC DateTimes, -since they are unaffected by daylight-saving changes and are unaffected -by the local timezone.

-
- -
-

Implementation

-
DateTime.utc(int year,
-    [int month = 1,
-    int day = 1,
-    int hour = 0,
-    int minute = 0,
-    int second = 0,
-    int millisecond = 0,
-    int microsecond = 0])
-    : this._internal(year, month, day, hour, minute, second, millisecond,
-          microsecond, true);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/add.html b/doc/api/dart-core/DateTime/add.html deleted file mode 100644 index 3e3b1d90..00000000 --- a/doc/api/dart-core/DateTime/add.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - add method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- DateTime - add -(Duration duration) - -
-
-

Returns a new DateTime instance with duration added to this.

-
var today = new DateTime.now();
-var fiftyDaysFromNow = today.add(new Duration(days: 50));
-
-

Notice that the duration being added is actually 50 * 24 * 60 * 60 -seconds. If the resulting DateTime has a different daylight saving offset -than this, then the result won't have the same time-of-day as this, and -may not even hit the calendar date 50 days later.

-

Be careful when working with dates in local time.

-
- -
-

Implementation

-
external DateTime add(Duration duration);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/april-constant.html b/doc/api/dart-core/DateTime/april-constant.html deleted file mode 100644 index 7773f755..00000000 --- a/doc/api/dart-core/DateTime/april-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - april constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
april
- -
- -
- - - -
-

april constant

- -
- int - const april - = - 4 -
- -
-

Implementation

-
static const int april = 4
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/august-constant.html b/doc/api/dart-core/DateTime/august-constant.html deleted file mode 100644 index a3d91a52..00000000 --- a/doc/api/dart-core/DateTime/august-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - august constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
august
- -
- -
- - - -
-

august constant

- -
- int - const august - = - 8 -
- -
-

Implementation

-
static const int august = 8
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/compareTo.html b/doc/api/dart-core/DateTime/compareTo.html deleted file mode 100644 index 20eef58a..00000000 --- a/doc/api/dart-core/DateTime/compareTo.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - compareTo method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
compareTo
- -
- -
- - - -
-

compareTo method

- -
- int - compareTo -(DateTime other) -
override
-
-
-

Compares this DateTime object to other, -returning zero if the values are equal.

-

Returns a negative value if this DateTime isBefore other. It returns 0 -if it isAtSameMomentAs other, and returns a positive value otherwise -(when this isAfter other).

-
- -
-

Implementation

-
external int compareTo(DateTime other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/day.html b/doc/api/dart-core/DateTime/day.html deleted file mode 100644 index 92bf0ce7..00000000 --- a/doc/api/dart-core/DateTime/day.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - day property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
day
- -
- -
- - - -
-

day property

- - -
- -
- int - day - -
- -
-

The day of the month 1..31.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.day == 20);
-
-
-
-

Implementation

-
external int get day;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/daysPerWeek-constant.html b/doc/api/dart-core/DateTime/daysPerWeek-constant.html deleted file mode 100644 index 373f1274..00000000 --- a/doc/api/dart-core/DateTime/daysPerWeek-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - daysPerWeek constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
daysPerWeek
- -
- -
- - - -
-

daysPerWeek constant

- -
- int - const daysPerWeek - = - 7 -
- -
-

Implementation

-
static const int daysPerWeek = 7
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/december-constant.html b/doc/api/dart-core/DateTime/december-constant.html deleted file mode 100644 index be3f8be2..00000000 --- a/doc/api/dart-core/DateTime/december-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - december constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
december
- -
- -
- - - -
-

december constant

- -
- int - const december - = - 12 -
- -
-

Implementation

-
static const int december = 12
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/difference.html b/doc/api/dart-core/DateTime/difference.html deleted file mode 100644 index 8ffd5b81..00000000 --- a/doc/api/dart-core/DateTime/difference.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - difference method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
difference
- -
- -
- - - -
-

difference method

- -
- Duration - difference -(DateTime other) - -
-
-

Returns a Duration with the difference when subtracting other from -this.

-

The returned Duration will be negative if other occurs after this.

-
var berlinWallFell = new DateTime.utc(1989, DateTime.november, 9);
-var dDay = new DateTime.utc(1944, DateTime.june, 6);
-
-Duration difference = berlinWallFell.difference(dDay);
-assert(difference.inDays == 16592);
-
-

The difference is measured in seconds and fractions of seconds. -The difference above counts the number of fractional seconds between -midnight at the beginning of those dates. -If the dates above had been in local time, not UTC, then the difference -between two midnights may not be a multiple of 24 hours due to daylight -saving differences.

-

For example, in Australia, similar code using local time instead of UTC:

-
var berlinWallFell = new DateTime(1989, DateTime.november, 9);
-var dDay = new DateTime(1944, DateTime.june, 6);
-Duration difference = berlinWallFell.difference(dDay);
-assert(difference.inDays == 16592);
-
-

will fail because the difference is actually 16591 days and 23 hours, and -Duration.inDays only returns the number of whole days.

-
- -
-

Implementation

-
external Duration difference(DateTime other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/february-constant.html b/doc/api/dart-core/DateTime/february-constant.html deleted file mode 100644 index f8cfe638..00000000 --- a/doc/api/dart-core/DateTime/february-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - february constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
february
- -
- -
- - - -
-

february constant

- -
- int - const february - = - 2 -
- -
-

Implementation

-
static const int february = 2
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/friday-constant.html b/doc/api/dart-core/DateTime/friday-constant.html deleted file mode 100644 index 9ea8d882..00000000 --- a/doc/api/dart-core/DateTime/friday-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - friday constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
friday
- -
- -
- - - -
-

friday constant

- -
- int - const friday - = - 5 -
- -
-

Implementation

-
static const int friday = 5
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/hashCode.html b/doc/api/dart-core/DateTime/hashCode.html deleted file mode 100644 index 6beb064b..00000000 --- a/doc/api/dart-core/DateTime/hashCode.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - hashCode property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

The hash code for this object.

-

A hash code is a single integer which represents the state of the object -that affects operator == comparisons.

-

All objects have hash codes. -The default hash code represents only the identity of the object, -the same way as the default operator == implementation only considers objects -equal if they are identical (see identityHashCode).

-

If operator == is overridden to use the object state instead, -the hash code must also be changed to represent that state.

-

Hash codes must be the same for objects that are equal to each other -according to operator ==. -The hash code of an object should only change if the object changes -in a way that affects equality. -There are no further requirements for the hash codes. -They need not be consistent between executions of the same program -and there are no distribution guarantees.

-

Objects that are not equal are allowed to have the same hash code, -it is even technically allowed that all instances have the same hash code, -but if clashes happen too often, it may reduce the efficiency of hash-based -data structures like HashSet or HashMap.

-

If a subclass overrides hashCode, it should override the -operator == operator as well to maintain consistency.

-
-
-

Implementation

-
int get hashCode => (_value ^ (_value >> 30)) & 0x3FFFFFFF;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/hour.html b/doc/api/dart-core/DateTime/hour.html deleted file mode 100644 index 9cdd9c72..00000000 --- a/doc/api/dart-core/DateTime/hour.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - hour property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hour
- -
- -
- - - -
-

hour property

- - -
- -
- int - hour - -
- -
-

The hour of the day, expressed as in a 24-hour clock 0..23.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.hour == 20);
-
-
-
-

Implementation

-
external int get hour;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/isAfter.html b/doc/api/dart-core/DateTime/isAfter.html deleted file mode 100644 index 19e2b211..00000000 --- a/doc/api/dart-core/DateTime/isAfter.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - isAfter method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isAfter
- -
- -
- - - -
-

isAfter method

- -
- bool - isAfter -(DateTime other) - -
-
-

Returns true if this occurs after other.

-

The comparison is independent -of whether the time is in UTC or in the local time zone.

-
var now = new DateTime.now();
-var later = now.add(const Duration(seconds: 5));
-assert(later.isAfter(now));
-assert(!now.isBefore(now));
-
-// This relation stays the same, even when changing timezones.
-assert(later.isAfter(now.toUtc()));
-assert(later.toUtc().isAfter(now));
-
-assert(!now.toUtc().isBefore(now));
-assert(!now.isBefore(now.toUtc()));
-
-
- -
-

Implementation

-
external bool isAfter(DateTime other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/isAtSameMomentAs.html b/doc/api/dart-core/DateTime/isAtSameMomentAs.html deleted file mode 100644 index ac0d2637..00000000 --- a/doc/api/dart-core/DateTime/isAtSameMomentAs.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - isAtSameMomentAs method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isAtSameMomentAs
- -
- -
- - - -
-

isAtSameMomentAs method

- -
- bool - isAtSameMomentAs -(DateTime other) - -
-
-

Returns true if this occurs at the same moment as other.

-

The comparison is independent of whether the time is in UTC or in the local -time zone.

-
var now = new DateTime.now();
-var later = now.add(const Duration(seconds: 5));
-assert(!later.isAtSameMomentAs(now));
-assert(now.isAtSameMomentAs(now));
-
-// This relation stays the same, even when changing timezones.
-assert(!later.isAtSameMomentAs(now.toUtc()));
-assert(!later.toUtc().isAtSameMomentAs(now));
-
-assert(now.toUtc().isAtSameMomentAs(now));
-assert(now.isAtSameMomentAs(now.toUtc()));
-
-
- -
-

Implementation

-
external bool isAtSameMomentAs(DateTime other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/isBefore.html b/doc/api/dart-core/DateTime/isBefore.html deleted file mode 100644 index 8c294501..00000000 --- a/doc/api/dart-core/DateTime/isBefore.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - isBefore method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isBefore
- -
- -
- - - -
-

isBefore method

- -
- bool - isBefore -(DateTime other) - -
-
-

Returns true if this occurs before other.

-

The comparison is independent -of whether the time is in UTC or in the local time zone.

-
var now = new DateTime.now();
-var earlier = now.subtract(const Duration(seconds: 5));
-assert(earlier.isBefore(now));
-assert(!now.isBefore(now));
-
-// This relation stays the same, even when changing timezones.
-assert(earlier.isBefore(now.toUtc()));
-assert(earlier.toUtc().isBefore(now));
-
-assert(!now.toUtc().isBefore(now));
-assert(!now.isBefore(now.toUtc()));
-
-
- -
-

Implementation

-
external bool isBefore(DateTime other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/isUtc.html b/doc/api/dart-core/DateTime/isUtc.html deleted file mode 100644 index c97229c5..00000000 --- a/doc/api/dart-core/DateTime/isUtc.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - isUtc property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isUtc
- -
- -
- - - -
-

isUtc property

- -
- bool - isUtc -
final
-
-
-

True if this DateTime is set to UTC time.

-
var dDay = new DateTime.utc(1944, 6, 6);
-assert(dDay.isUtc);
-
-
-
-

Implementation

-
final bool isUtc
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/january-constant.html b/doc/api/dart-core/DateTime/january-constant.html deleted file mode 100644 index 5fd06ee0..00000000 --- a/doc/api/dart-core/DateTime/january-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - january constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
january
- -
- -
- - - -
-

january constant

- -
- int - const january - = - 1 -
- -
-

Implementation

-
static const int january = 1
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/july-constant.html b/doc/api/dart-core/DateTime/july-constant.html deleted file mode 100644 index ccbf935f..00000000 --- a/doc/api/dart-core/DateTime/july-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - july constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
july
- -
- -
- - - -
-

july constant

- -
- int - const july - = - 7 -
- -
-

Implementation

-
static const int july = 7
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/june-constant.html b/doc/api/dart-core/DateTime/june-constant.html deleted file mode 100644 index 13f04cfe..00000000 --- a/doc/api/dart-core/DateTime/june-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - june constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
june
- -
- -
- - - -
-

june constant

- -
- int - const june - = - 6 -
- -
-

Implementation

-
static const int june = 6
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/march-constant.html b/doc/api/dart-core/DateTime/march-constant.html deleted file mode 100644 index 583b4455..00000000 --- a/doc/api/dart-core/DateTime/march-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - march constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
march
- -
- -
- - - -
-

march constant

- -
- int - const march - = - 3 -
- -
-

Implementation

-
static const int march = 3
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/may-constant.html b/doc/api/dart-core/DateTime/may-constant.html deleted file mode 100644 index e97815e4..00000000 --- a/doc/api/dart-core/DateTime/may-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - may constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
may
- -
- -
- - - -
-

may constant

- -
- int - const may - = - 5 -
- -
-

Implementation

-
static const int may = 5
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/microsecond.html b/doc/api/dart-core/DateTime/microsecond.html deleted file mode 100644 index e7ffe4df..00000000 --- a/doc/api/dart-core/DateTime/microsecond.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - microsecond property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
microsecond
- -
- -
- - - -
-

microsecond property

- - -
- -
- int - microsecond - -
- -
-

The microsecond 0...999.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.microsecond == 0);
-
-
-
-

Implementation

-
external int get microsecond;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/microsecondsSinceEpoch.html b/doc/api/dart-core/DateTime/microsecondsSinceEpoch.html deleted file mode 100644 index cf736c92..00000000 --- a/doc/api/dart-core/DateTime/microsecondsSinceEpoch.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - microsecondsSinceEpoch property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
microsecondsSinceEpoch
- -
- -
- - - -
-

microsecondsSinceEpoch property

- - -
- -
- int - microsecondsSinceEpoch - -
- -
-

The number of microseconds since -the "Unix epoch" 1970-01-01T00:00:00Z (UTC).

-

This value is independent of the time zone.

-

This value is at most -8,640,000,000,000,000,000us (100,000,000 days) from the Unix epoch. -In other words: microsecondsSinceEpoch.abs() <= 8640000000000000000.

-

Note that this value does not fit into 53 bits (the size of a IEEE double). -A JavaScript number is not able to hold this value.

-
-
-

Implementation

-
external int get microsecondsSinceEpoch;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/millisecond.html b/doc/api/dart-core/DateTime/millisecond.html deleted file mode 100644 index c5af834a..00000000 --- a/doc/api/dart-core/DateTime/millisecond.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - millisecond property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
millisecond
- -
- -
- - - -
-

millisecond property

- - -
- -
- int - millisecond - -
- -
-

The millisecond 0...999.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.millisecond == 0);
-
-
-
-

Implementation

-
external int get millisecond;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/millisecondsSinceEpoch.html b/doc/api/dart-core/DateTime/millisecondsSinceEpoch.html deleted file mode 100644 index d636a35a..00000000 --- a/doc/api/dart-core/DateTime/millisecondsSinceEpoch.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - millisecondsSinceEpoch property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
millisecondsSinceEpoch
- -
- -
- - - -
-

millisecondsSinceEpoch property

- - -
- -
- int - millisecondsSinceEpoch - -
- -
-

The number of milliseconds since -the "Unix epoch" 1970-01-01T00:00:00Z (UTC).

-

This value is independent of the time zone.

-

This value is at most -8,640,000,000,000,000ms (100,000,000 days) from the Unix epoch. -In other words: millisecondsSinceEpoch.abs() <= 8640000000000000.

-
-
-

Implementation

-
external int get millisecondsSinceEpoch;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/minute.html b/doc/api/dart-core/DateTime/minute.html deleted file mode 100644 index 4d03ff1a..00000000 --- a/doc/api/dart-core/DateTime/minute.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - minute property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
minute
- -
- -
- - - -
-

minute property

- - -
- -
- int - minute - -
- -
-

The minute 0...59.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.minute == 18);
-
-
-
-

Implementation

-
external int get minute;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/monday-constant.html b/doc/api/dart-core/DateTime/monday-constant.html deleted file mode 100644 index e7d74bf3..00000000 --- a/doc/api/dart-core/DateTime/monday-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - monday constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
monday
- -
- -
- - - -
-

monday constant

- -
- int - const monday - = - 1 -
- -
-

Implementation

-
static const int monday = 1
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/month.html b/doc/api/dart-core/DateTime/month.html deleted file mode 100644 index 0d5077ed..00000000 --- a/doc/api/dart-core/DateTime/month.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - month property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
month
- -
- -
- - - -
-

month property

- - -
- -
- int - month - -
- -
-

The month 1..12.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.month == 7);
-assert(moonLanding.month == DateTime.july);
-
-
-
-

Implementation

-
external int get month;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/monthsPerYear-constant.html b/doc/api/dart-core/DateTime/monthsPerYear-constant.html deleted file mode 100644 index 40e32164..00000000 --- a/doc/api/dart-core/DateTime/monthsPerYear-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - monthsPerYear constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
monthsPerYear
- -
- -
- - - -
-

monthsPerYear constant

- -
- int - const monthsPerYear - = - 12 -
- -
-

Implementation

-
static const int monthsPerYear = 12
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/november-constant.html b/doc/api/dart-core/DateTime/november-constant.html deleted file mode 100644 index 7f79fad9..00000000 --- a/doc/api/dart-core/DateTime/november-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - november constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
november
- -
- -
- - - -
-

november constant

- -
- int - const november - = - 11 -
- -
-

Implementation

-
static const int november = 11
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/october-constant.html b/doc/api/dart-core/DateTime/october-constant.html deleted file mode 100644 index 1f3cf11b..00000000 --- a/doc/api/dart-core/DateTime/october-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - october constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
october
- -
- -
- - - -
-

october constant

- -
- int - const october - = - 10 -
- -
-

Implementation

-
static const int october = 10
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/operator_equals.html b/doc/api/dart-core/DateTime/operator_equals.html deleted file mode 100644 index c3383ec0..00000000 --- a/doc/api/dart-core/DateTime/operator_equals.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - operator == method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) -
override
-
-
-

Returns true if other is a DateTime at the same moment and in the -same time zone (UTC or local).

-
var dDayUtc = new DateTime.utc(1944, 6, 6);
-var dDayLocal = dDayUtc.toLocal();
-
-// These two dates are at the same moment, but are in different zones.
-assert(dDayUtc != dDayLocal);
-
-

See isAtSameMomentAs for a comparison that compares moments in time -independently of their zones.

-
- -
-

Implementation

-
external bool operator ==(Object other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/parse.html b/doc/api/dart-core/DateTime/parse.html deleted file mode 100644 index deb8548a..00000000 --- a/doc/api/dart-core/DateTime/parse.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - parse method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parse
- -
- -
- - - -
-

parse method

- -
- DateTime - parse -(String formattedString) - -
-
-

Constructs a new DateTime instance based on formattedString.

-

The formattedString must not be null. -Throws a FormatException if the input string cannot be parsed.

-

The function parses a subset of ISO 8601 -which includes the subset accepted by RFC 3339.

-

The accepted inputs are currently:

-
    -
  • A date: A signed four-to-six digit year, two digit month and -two digit day, optionally separated by - characters. -Examples: "19700101", "-0004-12-24", "81030-04-01".
  • -
  • An optional time part, separated from the date by either T or a space. -The time part is a two digit hour, -then optionally a two digit minutes value, -then optionally a two digit seconds value, and -then optionally a '.' or ',' followed by at least a one digit -second fraction. -The minutes and seconds may be separated from the previous parts by a -':'. -Examples: "12", "12:30:24.124", "12:30:24,124", "123010.50".
  • -
  • An optional time-zone offset part, -possibly separated from the previous by a space. -The time zone is either 'z' or 'Z', or it is a signed two digit hour -part and an optional two digit minute part. The sign must be either -"+" or "-", and can not be omitted. -The minutes may be separated from the hours by a ':'. -Examples: "Z", "-10", "+01:30", "+1130".
  • -
-

This includes the output of both toString and toIso8601String, which -will be parsed back into a DateTime object with the same time as the -original.

-

The result is always in either local time or UTC. -If a time zone offset other than UTC is specified, -the time is converted to the equivalent UTC time.

-

Examples of accepted strings:

-
    -
  • "2012-02-27"
  • -
  • "2012-02-27 13:27:00"
  • -
  • "2012-02-27 13:27:00.123456789z"
  • -
  • "2012-02-27 13:27:00,123456789z"
  • -
  • "20120227 13:27:00"
  • -
  • "20120227T132700"
  • -
  • "20120227"
  • -
  • "+20120227"
  • -
  • "2012-02-27T14Z"
  • -
  • "2012-02-27T14+00:00"
  • -
  • "-123450101 00:00:00 Z": in the year -12345.
  • -
  • "2002-02-27T14:00:00-0500": Same as "2002-02-27T19:00:00Z"
  • -
-
- -
-

Implementation

-
// TODO(lrn): restrict incorrect values like  2003-02-29T50:70:80.
-// Or not, that may be a breaking change.
-static DateTime parse(String formattedString) {
-  var re = _parseFormat;
-  Match? match = re.firstMatch(formattedString);
-  if (match != null) {
-    int parseIntOrZero(String? matched) {
-      if (matched == null) return 0;
-      return int.parse(matched);
-    }
-
-    // Parses fractional second digits of '.(\d+)' into the combined
-    // microseconds. We only use the first 6 digits because of DateTime
-    // precision of 999 milliseconds and 999 microseconds.
-    int parseMilliAndMicroseconds(String? matched) {
-      if (matched == null) return 0;
-      int length = matched.length;
-      assert(length >= 1);
-      int result = 0;
-      for (int i = 0; i < 6; i++) {
-        result *= 10;
-        if (i < matched.length) {
-          result += matched.codeUnitAt(i) ^ 0x30;
-        }
-      }
-      return result;
-    }
-
-    int years = int.parse(match[1]!);
-    int month = int.parse(match[2]!);
-    int day = int.parse(match[3]!);
-    int hour = parseIntOrZero(match[4]);
-    int minute = parseIntOrZero(match[5]);
-    int second = parseIntOrZero(match[6]);
-    int milliAndMicroseconds = parseMilliAndMicroseconds(match[7]);
-    int millisecond =
-        milliAndMicroseconds ~/ Duration.microsecondsPerMillisecond;
-    int microsecond = milliAndMicroseconds
-        .remainder(Duration.microsecondsPerMillisecond) as int;
-    bool isUtc = false;
-    if (match[8] != null) {
-      // timezone part
-      isUtc = true;
-      String? tzSign = match[9];
-      if (tzSign != null) {
-        // timezone other than 'Z' and 'z'.
-        int sign = (tzSign == '-') ? -1 : 1;
-        int hourDifference = int.parse(match[10]!);
-        int minuteDifference = parseIntOrZero(match[11]);
-        minuteDifference += 60 * hourDifference;
-        minute -= sign * minuteDifference;
-      }
-    }
-    int? value = _brokenDownDateToValue(years, month, day, hour, minute,
-        second, millisecond, microsecond, isUtc);
-    if (value == null) {
-      throw FormatException("Time out of range", formattedString);
-    }
-    return DateTime._withValue(value, isUtc: isUtc);
-  } else {
-    throw FormatException("Invalid date format", formattedString);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/saturday-constant.html b/doc/api/dart-core/DateTime/saturday-constant.html deleted file mode 100644 index c71f2256..00000000 --- a/doc/api/dart-core/DateTime/saturday-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - saturday constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
saturday
- -
- -
- - - -
-

saturday constant

- -
- int - const saturday - = - 6 -
- -
-

Implementation

-
static const int saturday = 6
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/second.html b/doc/api/dart-core/DateTime/second.html deleted file mode 100644 index dcd67d34..00000000 --- a/doc/api/dart-core/DateTime/second.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - second property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
second
- -
- -
- - - -
-

second property

- - -
- -
- int - second - -
- -
-

The second 0...59.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.second == 4);
-
-
-
-

Implementation

-
external int get second;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/september-constant.html b/doc/api/dart-core/DateTime/september-constant.html deleted file mode 100644 index 767c5164..00000000 --- a/doc/api/dart-core/DateTime/september-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - september constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
september
- -
- -
- - - -
-

september constant

- -
- int - const september - = - 9 -
- -
-

Implementation

-
static const int september = 9
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/subtract.html b/doc/api/dart-core/DateTime/subtract.html deleted file mode 100644 index 3d77014f..00000000 --- a/doc/api/dart-core/DateTime/subtract.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - subtract method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
subtract
- -
- -
- - - -
-

subtract method

- -
- DateTime - subtract -(Duration duration) - -
-
-

Returns a new DateTime instance with duration subtracted from this.

-
DateTime today = new DateTime.now();
-DateTime fiftyDaysAgo = today.subtract(new Duration(days: 50));
-
-

Notice that the duration being subtracted is actually 50 * 24 * 60 * 60 -seconds. If the resulting DateTime has a different daylight saving offset -than this, then the result won't have the same time-of-day as this, and -may not even hit the calendar date 50 days earlier.

-

Be careful when working with dates in local time.

-
- -
-

Implementation

-
external DateTime subtract(Duration duration);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/sunday-constant.html b/doc/api/dart-core/DateTime/sunday-constant.html deleted file mode 100644 index 2936eac7..00000000 --- a/doc/api/dart-core/DateTime/sunday-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - sunday constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
sunday
- -
- -
- - - -
-

sunday constant

- -
- int - const sunday - = - 7 -
- -
-

Implementation

-
static const int sunday = 7
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/thursday-constant.html b/doc/api/dart-core/DateTime/thursday-constant.html deleted file mode 100644 index b887f9b6..00000000 --- a/doc/api/dart-core/DateTime/thursday-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - thursday constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
thursday
- -
- -
- - - -
-

thursday constant

- -
- int - const thursday - = - 4 -
- -
-

Implementation

-
static const int thursday = 4
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/timeZoneName.html b/doc/api/dart-core/DateTime/timeZoneName.html deleted file mode 100644 index 5114081d..00000000 --- a/doc/api/dart-core/DateTime/timeZoneName.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - timeZoneName property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
timeZoneName
- -
- -
- - - -
-

timeZoneName property

- - -
- -
- String - timeZoneName - -
- -
-

The time zone name.

-

This value is provided by the operating system and may be an -abbreviation or a full name.

-

In the browser or on Unix-like systems commonly returns abbreviations, -such as "CET" or "CEST". On Windows returns the full name, for example -"Pacific Standard Time".

-
-
-

Implementation

-
external String get timeZoneName;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/timeZoneOffset.html b/doc/api/dart-core/DateTime/timeZoneOffset.html deleted file mode 100644 index dda0c687..00000000 --- a/doc/api/dart-core/DateTime/timeZoneOffset.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - timeZoneOffset property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
timeZoneOffset
- -
- -
- - - -
-

timeZoneOffset property

- - -
- -
- Duration - timeZoneOffset - -
- -
-

The time zone offset, which -is the difference between local time and UTC.

-

The offset is positive for time zones east of UTC.

-

Note, that JavaScript, Python and C return the difference between UTC and -local time. Java, C# and Ruby return the difference between local time and -UTC.

-
-
-

Implementation

-
external Duration get timeZoneOffset;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/toIso8601String.html b/doc/api/dart-core/DateTime/toIso8601String.html deleted file mode 100644 index 4bf236a1..00000000 --- a/doc/api/dart-core/DateTime/toIso8601String.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - toIso8601String method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toIso8601String
- -
- -
- - - -
-

toIso8601String method

- -
- String - toIso8601String -() - -
-
-

Returns an ISO-8601 full-precision extended format representation.

-

The format is yyyy-MM-ddTHH:mm:ss.mmmuuuZ for UTC time, and -yyyy-MM-ddTHH:mm:ss.mmmuuu (no trailing "Z") for local/non-UTC time, -where:

-
    -
  • yyyy is a, possibly negative, four digit representation of the year, -if the year is in the range -9999 to 9999, -otherwise it is a signed six digit representation of the year.
  • -
  • MM is the month in the range 01 to 12,
  • -
  • dd is the day of the month in the range 01 to 31,
  • -
  • HH are hours in the range 00 to 23,
  • -
  • mm are minutes in the range 00 to 59,
  • -
  • ss are seconds in the range 00 to 59 (no leap seconds),
  • -
  • mmm are milliseconds in the range 000 to 999, and
  • -
  • uuu are microseconds in the range 001 to 999. If microsecond equals -0, then this part is omitted.
  • -
-

The resulting string can be parsed back using parse.

-
- -
-

Implementation

-
String toIso8601String() {
-  String y =
-      (year >= -9999 && year <= 9999) ? _fourDigits(year) : _sixDigits(year);
-  String m = _twoDigits(month);
-  String d = _twoDigits(day);
-  String h = _twoDigits(hour);
-  String min = _twoDigits(minute);
-  String sec = _twoDigits(second);
-  String ms = _threeDigits(millisecond);
-  String us = microsecond == 0 ? "" : _threeDigits(microsecond);
-  if (isUtc) {
-    return "$y-$m-${d}T$h:$min:$sec.$ms${us}Z";
-  } else {
-    return "$y-$m-${d}T$h:$min:$sec.$ms$us";
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/toLocal.html b/doc/api/dart-core/DateTime/toLocal.html deleted file mode 100644 index 72e6e3fe..00000000 --- a/doc/api/dart-core/DateTime/toLocal.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - toLocal method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toLocal
- -
- -
- - - -
-

toLocal method

- -
- DateTime - toLocal -() - -
-
-

Returns this DateTime value in the local time zone.

-

Returns this if it is already in the local time zone. -Otherwise this method is equivalent to:

-
new DateTime.fromMicrosecondsSinceEpoch(microsecondsSinceEpoch,
-                                        isUtc: false)
-
-
- -
-

Implementation

-
DateTime toLocal() {
-  if (isUtc) {
-    return DateTime._withValue(_value, isUtc: false);
-  }
-  return this;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/toString.html b/doc/api/dart-core/DateTime/toString.html deleted file mode 100644 index dcd58fff..00000000 --- a/doc/api/dart-core/DateTime/toString.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - toString method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a human-readable string for this instance.

-

The returned string is constructed for the time zone of this instance. -The toString() method provides a simply formatted string. -It does not support internationalized strings. -Use the intl package -at the pub shared packages repo.

-

The resulting string can be parsed back using parse.

-
- -
-

Implementation

-
String toString() {
-  String y = _fourDigits(year);
-  String m = _twoDigits(month);
-  String d = _twoDigits(day);
-  String h = _twoDigits(hour);
-  String min = _twoDigits(minute);
-  String sec = _twoDigits(second);
-  String ms = _threeDigits(millisecond);
-  String us = microsecond == 0 ? "" : _threeDigits(microsecond);
-  if (isUtc) {
-    return "$y-$m-$d $h:$min:$sec.$ms${us}Z";
-  } else {
-    return "$y-$m-$d $h:$min:$sec.$ms$us";
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/toUtc.html b/doc/api/dart-core/DateTime/toUtc.html deleted file mode 100644 index f7f13432..00000000 --- a/doc/api/dart-core/DateTime/toUtc.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - toUtc method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toUtc
- -
- -
- - - -
-

toUtc method

- -
- DateTime - toUtc -() - -
-
-

Returns this DateTime value in the UTC time zone.

-

Returns this if it is already in UTC. -Otherwise this method is equivalent to:

-
new DateTime.fromMicrosecondsSinceEpoch(microsecondsSinceEpoch,
-                                        isUtc: true)
-
-
- -
-

Implementation

-
DateTime toUtc() {
-  if (isUtc) return this;
-  return DateTime._withValue(_value, isUtc: true);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/tryParse.html b/doc/api/dart-core/DateTime/tryParse.html deleted file mode 100644 index 53939f31..00000000 --- a/doc/api/dart-core/DateTime/tryParse.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - tryParse method - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
tryParse
- -
- -
- - - -
-

tryParse method

- -
- DateTime - tryParse -(String formattedString) - -
-
-

Constructs a new DateTime instance based on formattedString.

-

Works like parse except that this function returns null -where parse would throw a FormatException.

-
- -
-

Implementation

-
static DateTime? tryParse(String formattedString) {
-  // TODO: Optimize to avoid throwing.
-  try {
-    return parse(formattedString);
-  } on FormatException {
-    return null;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/tuesday-constant.html b/doc/api/dart-core/DateTime/tuesday-constant.html deleted file mode 100644 index 4f94211d..00000000 --- a/doc/api/dart-core/DateTime/tuesday-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - tuesday constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
tuesday
- -
- -
- - - -
-

tuesday constant

- -
- int - const tuesday - = - 2 -
- -
-

Implementation

-
static const int tuesday = 2
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/wednesday-constant.html b/doc/api/dart-core/DateTime/wednesday-constant.html deleted file mode 100644 index da0de24f..00000000 --- a/doc/api/dart-core/DateTime/wednesday-constant.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - wednesday constant - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
wednesday
- -
- -
- - - -
-

wednesday constant

- -
- int - const wednesday - = - 3 -
- -
-

Implementation

-
static const int wednesday = 3
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/weekday.html b/doc/api/dart-core/DateTime/weekday.html deleted file mode 100644 index 877b6079..00000000 --- a/doc/api/dart-core/DateTime/weekday.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - weekday property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
weekday
- -
- -
- - - -
-

weekday property

- - -
- -
- int - weekday - -
- -
-

The day of the week monday..sunday.

-

In accordance with ISO 8601 -a week starts with Monday, which has the value 1.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.weekday == 7);
-assert(moonLanding.weekday == DateTime.sunday);
-
-
-
-

Implementation

-
external int get weekday;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/DateTime/year.html b/doc/api/dart-core/DateTime/year.html deleted file mode 100644 index 25557d1b..00000000 --- a/doc/api/dart-core/DateTime/year.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - year property - DateTime class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
year
- -
- -
- - - -
-

year property

- - -
- -
- int - year - -
- -
-

The year.

-
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
-assert(moonLanding.year == 1969);
-
-
-
-

Implementation

-
external int get year;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Deprecated-class.html b/doc/api/dart-core/Deprecated-class.html deleted file mode 100644 index 51c60a88..00000000 --- a/doc/api/dart-core/Deprecated-class.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - - - Deprecated class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Deprecated
- -
- -
- - - -
-

Deprecated class

- -
-

The annotation @Deprecated('migration') marks a feature as deprecated.

-

The annotation deprecated is a shorthand for deprecating until -an unspecified "next release" without migration instructions.

-

The intent of the @Deprecated annotation is to inform users of a feature -that they should change their code, even if it is currently still working -correctly.

-

A deprecated feature is scheduled to be removed at a later time, possibly -specified in message. A deprecated feature should not be used, code using -it will break at some point in the future. If existing code is using the -feature it should be rewritten to not use the deprecated feature.

-

A deprecated feature should document how the same effect can be achieved in -message, so the programmer knows how to rewrite the code.

-

The @Deprecated annotation applies to libraries, top-level declarations -(variables, getters, setters, functions, classes and typedefs), -class-level declarations (variables, getters, setters, methods, operators or -constructors, whether static or not), named optional arguments and -trailing optional positional parameters.

-

Deprecation is transitive:

-
    -
  • If a library is deprecated, so is every member of it.
  • -
  • If a class is deprecated, so is every member of it.
  • -
  • If a variable is deprecated, so are its implicit getter and setter.
  • -
-

A tool that processes Dart source code may report when:

-
    -
  • the code imports a deprecated library.
  • -
  • the code exports a deprecated library, or any deprecated member of -a non-deprecated library.
  • -
  • the code refers statically to a deprecated declaration.
  • -
  • the code dynamically uses a member of an object with a statically known -type, where the member is deprecated on the static type of the object.
  • -
  • the code dynamically calls a method with an argument where the -corresponding optional parameter is deprecated on the object's static type.
  • -
-

If the deprecated use is inside a library, class or method which is itself -deprecated, the tool should not bother the user about it. -A deprecated feature is expected to use other deprecated features.

-
- - -
-

Constructors

- -
-
- Deprecated(String message) -
-
- Create a deprecation annotation which specifies the migration path and -expiration of the annotated feature. [...] -
const
-
-
-
- -
-

Properties

- -
-
- expires - String -
-
- -
@Deprecated('Use `message` instead. Will be removed in Dart 3.0.0'), read-only
-
-
- message - String -
-
- Message provided to the user when they use the deprecated feature. [...] -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Deprecated/Deprecated.html b/doc/api/dart-core/Deprecated/Deprecated.html deleted file mode 100644 index bc6d6df3..00000000 --- a/doc/api/dart-core/Deprecated/Deprecated.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - Deprecated constructor - Deprecated class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Deprecated
- -
- -
- - - -
-

Deprecated constructor

- -
- const - Deprecated(String message) -
- -
-

Create a deprecation annotation which specifies the migration path and -expiration of the annotated feature.

-

The message argument should be readable by programmers, and should state -an alternative feature (if available) as well as when an annotated feature -is expected to be removed.

-
- -
-

Implementation

-
const Deprecated(this.message);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Deprecated/expires.html b/doc/api/dart-core/Deprecated/expires.html deleted file mode 100644 index cd453836..00000000 --- a/doc/api/dart-core/Deprecated/expires.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - expires property - Deprecated class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
expires
- -
- -
- - - -
-

expires property

- - -
- -
- String - expires -
@Deprecated('Use `message` instead. Will be removed in Dart 3.0.0')
-
- -
-

Implementation

-
@Deprecated('Use `message` instead. Will be removed in Dart 3.0.0')
-String get expires => message;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Deprecated/message.html b/doc/api/dart-core/Deprecated/message.html deleted file mode 100644 index 06a96c10..00000000 --- a/doc/api/dart-core/Deprecated/message.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - message property - Deprecated class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- -
- String - message -
final
-
-
-

Message provided to the user when they use the deprecated feature.

-

The message should explain how to migrate away from the feature if an -alternative is available, and when the deprecated feature is expected to be -removed.

-
-
-

Implementation

-
final String message
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Deprecated/toString.html b/doc/api/dart-core/Deprecated/toString.html deleted file mode 100644 index ae733bdd..00000000 --- a/doc/api/dart-core/Deprecated/toString.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - toString method - Deprecated class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "Deprecated feature: $message";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration-class.html b/doc/api/dart-core/Duration-class.html deleted file mode 100644 index efce1816..00000000 --- a/doc/api/dart-core/Duration-class.html +++ /dev/null @@ -1,705 +0,0 @@ - - - - - - - - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Duration
- -
- -
- - - -
-

Duration class

- -
-

A span of time, such as 27 days, 4 hours, 12 minutes, and 3 seconds.

-

A Duration represents a difference from one point in time to another. The -duration may be "negative" if the difference is from a later time to an -earlier.

-

Durations are context independent. For example, a duration of 2 days is -always 48 hours, even when it is added to a DateTime just when the -time zone is about to do a daylight-savings switch. (See DateTime.add).

-

Despite the same name, a Duration object does not implement "Durations" -as specified by ISO 8601. In particular, a duration object does not keep -track of the individually provided members (such as "days" or "hours"), but -only uses these arguments to compute the length of the corresponding time -interval.

-

To create a new Duration object, use this class's single constructor -giving the appropriate arguments:

-
Duration fastestMarathon = new Duration(hours:2, minutes:3, seconds:2);
-
-

The Duration is the sum of all individual parts. -This means that individual parts can be larger than the next-bigger unit. -For example, inMinutes can be greater than 59.

-
assert(fastestMarathon.inMinutes == 123);
-
-

All individual parts are allowed to be negative.

-

Use one of the properties, such as inDays, -to retrieve the integer value of the Duration in the specified time unit. -Note that the returned value is rounded down. -For example,

-
Duration aLongWeekend = new Duration(hours:88);
-assert(aLongWeekend.inDays == 3);
-
-

This class provides a collection of arithmetic -and comparison operators, -plus a set of constants useful for converting time units.

-

See DateTime to represent a point in time. -See Stopwatch to measure time-spans.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- Duration({int days: 0 int hours: 0 int minutes: 0 int seconds: 0 int milliseconds: 0 int microseconds: 0 }) -
-
- Creates a new Duration object whose value -is the sum of all individual parts. [...] -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, override
-
-
- inDays - int -
-
- Returns the number of whole days spanned by this Duration. -
read-only
-
-
- inHours - int -
-
- Returns the number of whole hours spanned by this Duration. [...] -
read-only
-
-
- inMicroseconds - int -
-
- Returns number of whole microseconds spanned by this Duration. -
read-only
-
-
- inMilliseconds - int -
-
- Returns number of whole milliseconds spanned by this Duration. [...] -
read-only
-
-
- inMinutes - int -
-
- Returns the number of whole minutes spanned by this Duration. [...] -
read-only
-
-
- inSeconds - int -
-
- Returns the number of whole seconds spanned by this Duration. [...] -
read-only
-
-
- isNegative - bool -
-
- Returns whether this Duration is negative. [...] -
read-only
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- abs() - Duration - -
-
- Returns a new Duration representing the absolute value of this -Duration. [...] - -
-
- compareTo(Duration other) - int - -
-
- Compares this Duration to other, returning zero if the values are equal. [...] -
override
-
-
- toString() - String - -
-
- Returns a string representation of this Duration. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator *(num factor) - Duration - -
-
- Multiplies this Duration by the given factor and returns the result -as a new Duration object. [...] - -
-
- operator +(Duration other) - Duration - -
-
- Adds this Duration and other and -returns the sum as a new Duration object. - -
-
- operator -(Duration other) - Duration - -
-
- Subtracts other from this Duration and -returns the difference as a new Duration object. - -
-
- operator <(Duration other) - bool - -
-
- Returns true if the value of this Duration -is less than the value of other. - -
-
- operator <=(Duration other) - bool - -
-
- Returns true if the value of this Duration -is less than or equal to the value of other. - -
-
- operator ==(Object other) - bool - -
-
- Returns true if this Duration has the same value as other. -
override
-
-
- operator >(Duration other) - bool - -
-
- Returns true if the value of this Duration -is greater than the value of other. - -
-
- operator >=(Duration other) - bool - -
-
- Returns true if the value of this Duration -is greater than or equal to the value of other. - -
-
- operator unary-() - Duration - -
-
- Returns a new Duration representing this Duration negated. [...] - -
-
- operator ~/(int quotient) - Duration - -
-
- Divides this Duration by the given quotient and returns the truncated -result as a new Duration object. [...] - -
-
-
- - - -
-

Constants

- -
-
- hoursPerDay - → const int -
-
- - -
- 24 -
-
-
- microsecondsPerDay - → const int -
-
- - -
- microsecondsPerHour * hoursPerDay -
-
-
- microsecondsPerHour - → const int -
-
- - -
- microsecondsPerMinute * minutesPerHour -
-
-
- microsecondsPerMillisecond - → const int -
-
- - -
- 1000 -
-
-
- microsecondsPerMinute - → const int -
-
- - -
- microsecondsPerSecond * secondsPerMinute -
-
-
- microsecondsPerSecond - → const int -
-
- - -
- microsecondsPerMillisecond * millisecondsPerSecond -
-
-
- millisecondsPerDay - → const int -
-
- - -
- millisecondsPerHour * hoursPerDay -
-
-
- millisecondsPerHour - → const int -
-
- - -
- millisecondsPerMinute * minutesPerHour -
-
-
- millisecondsPerMinute - → const int -
-
- - -
- millisecondsPerSecond * secondsPerMinute -
-
-
- millisecondsPerSecond - → const int -
-
- - -
- 1000 -
-
-
- minutesPerDay - → const int -
-
- - -
- minutesPerHour * hoursPerDay -
-
-
- minutesPerHour - → const int -
-
- - -
- 60 -
-
-
- secondsPerDay - → const int -
-
- - -
- secondsPerHour * hoursPerDay -
-
-
- secondsPerHour - → const int -
-
- - -
- secondsPerMinute * minutesPerHour -
-
-
- secondsPerMinute - → const int -
-
- - -
- 60 -
-
-
- zero - → const Duration -
-
- - -
- const Duration(seconds: 0) -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/Duration.html b/doc/api/dart-core/Duration/Duration.html deleted file mode 100644 index f552a11c..00000000 --- a/doc/api/dart-core/Duration/Duration.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - Duration constructor - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Duration
- -
- -
- - - -
-

Duration constructor

- -
- const - Duration({int days: 0 int hours: 0 int minutes: 0 int seconds: 0 int milliseconds: 0 int microseconds: 0 }) -
- -
-

Creates a new Duration object whose value -is the sum of all individual parts.

-

Individual parts can be larger than the next-bigger unit. -For example, hours can be greater than 23.

-

All individual parts are allowed to be negative. -All arguments are 0 by default.

-
- -
-

Implementation

-
const Duration(
-    {int days = 0,
-    int hours = 0,
-    int minutes = 0,
-    int seconds = 0,
-    int milliseconds = 0,
-    int microseconds = 0})
-    : this._microseconds(microsecondsPerDay * days +
-          microsecondsPerHour * hours +
-          microsecondsPerMinute * minutes +
-          microsecondsPerSecond * seconds +
-          microsecondsPerMillisecond * milliseconds +
-          microseconds);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/abs.html b/doc/api/dart-core/Duration/abs.html deleted file mode 100644 index 86805223..00000000 --- a/doc/api/dart-core/Duration/abs.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - abs method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
abs
- -
- -
- - - -
-

abs method

- -
- Duration - abs -() - -
-
-

Returns a new Duration representing the absolute value of this -Duration.

-

The returned Duration has the same length as this one, but is always -positive.

-
- -
-

Implementation

-
Duration abs() => Duration._microseconds(_duration.abs());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/compareTo.html b/doc/api/dart-core/Duration/compareTo.html deleted file mode 100644 index bb75ea7f..00000000 --- a/doc/api/dart-core/Duration/compareTo.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - compareTo method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
compareTo
- -
- -
- - - -
-

compareTo method

- -
- int - compareTo -(Duration other) -
override
-
-
-

Compares this Duration to other, returning zero if the values are equal.

-

Returns a negative integer if this Duration is shorter than -other, or a positive integer if it is longer.

-

A negative Duration is always considered shorter than a positive one.

-

It is always the case that duration1.compareTo(duration2) < 0 iff -(someDate + duration1).compareTo(someDate + duration2) < 0.

-
- -
-

Implementation

-
int compareTo(Duration other) => _duration.compareTo(other._duration);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/hashCode.html b/doc/api/dart-core/Duration/hashCode.html deleted file mode 100644 index 85a20c4f..00000000 --- a/doc/api/dart-core/Duration/hashCode.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - hashCode property - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

The hash code for this object.

-

A hash code is a single integer which represents the state of the object -that affects operator == comparisons.

-

All objects have hash codes. -The default hash code represents only the identity of the object, -the same way as the default operator == implementation only considers objects -equal if they are identical (see identityHashCode).

-

If operator == is overridden to use the object state instead, -the hash code must also be changed to represent that state.

-

Hash codes must be the same for objects that are equal to each other -according to operator ==. -The hash code of an object should only change if the object changes -in a way that affects equality. -There are no further requirements for the hash codes. -They need not be consistent between executions of the same program -and there are no distribution guarantees.

-

Objects that are not equal are allowed to have the same hash code, -it is even technically allowed that all instances have the same hash code, -but if clashes happen too often, it may reduce the efficiency of hash-based -data structures like HashSet or HashMap.

-

If a subclass overrides hashCode, it should override the -operator == operator as well to maintain consistency.

-
-
-

Implementation

-
int get hashCode => _duration.hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/hoursPerDay-constant.html b/doc/api/dart-core/Duration/hoursPerDay-constant.html deleted file mode 100644 index 6138545d..00000000 --- a/doc/api/dart-core/Duration/hoursPerDay-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - hoursPerDay constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hoursPerDay
- -
- -
- - - -
-

hoursPerDay constant

- -
- int - const hoursPerDay - = - 24 -
- -
-

Implementation

-
static const int hoursPerDay = 24
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/inDays.html b/doc/api/dart-core/Duration/inDays.html deleted file mode 100644 index f52b6dde..00000000 --- a/doc/api/dart-core/Duration/inDays.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - inDays property - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
inDays
- -
- -
- - - -
-

inDays property

- - -
- -
- int - inDays - -
- -
-

Returns the number of whole days spanned by this Duration.

-
-
-

Implementation

-
int get inDays => _duration ~/ Duration.microsecondsPerDay;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/inHours.html b/doc/api/dart-core/Duration/inHours.html deleted file mode 100644 index bcdac819..00000000 --- a/doc/api/dart-core/Duration/inHours.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - inHours property - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
inHours
- -
- -
- - - -
-

inHours property

- - -
- -
- int - inHours - -
- -
-

Returns the number of whole hours spanned by this Duration.

-

The returned value can be greater than 23.

-
-
-

Implementation

-
int get inHours => _duration ~/ Duration.microsecondsPerHour;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/inMicroseconds.html b/doc/api/dart-core/Duration/inMicroseconds.html deleted file mode 100644 index a9d34fad..00000000 --- a/doc/api/dart-core/Duration/inMicroseconds.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - inMicroseconds property - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
inMicroseconds
- -
- -
- - - -
-

inMicroseconds property

- - -
- -
- int - inMicroseconds - -
- -
-

Returns number of whole microseconds spanned by this Duration.

-
-
-

Implementation

-
int get inMicroseconds => _duration;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/inMilliseconds.html b/doc/api/dart-core/Duration/inMilliseconds.html deleted file mode 100644 index f4b8ec3f..00000000 --- a/doc/api/dart-core/Duration/inMilliseconds.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - inMilliseconds property - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
inMilliseconds
- -
- -
- - - -
-

inMilliseconds property

- - -
- -
- int - inMilliseconds - -
- -
-

Returns number of whole milliseconds spanned by this Duration.

-

The returned value can be greater than 999.

-
-
-

Implementation

-
int get inMilliseconds => _duration ~/ Duration.microsecondsPerMillisecond;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/inMinutes.html b/doc/api/dart-core/Duration/inMinutes.html deleted file mode 100644 index b9ebcba8..00000000 --- a/doc/api/dart-core/Duration/inMinutes.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - inMinutes property - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
inMinutes
- -
- -
- - - -
-

inMinutes property

- - -
- -
- int - inMinutes - -
- -
-

Returns the number of whole minutes spanned by this Duration.

-

The returned value can be greater than 59.

-
-
-

Implementation

-
int get inMinutes => _duration ~/ Duration.microsecondsPerMinute;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/inSeconds.html b/doc/api/dart-core/Duration/inSeconds.html deleted file mode 100644 index fa62f51b..00000000 --- a/doc/api/dart-core/Duration/inSeconds.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - inSeconds property - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
inSeconds
- -
- -
- - - -
-

inSeconds property

- - -
- -
- int - inSeconds - -
- -
-

Returns the number of whole seconds spanned by this Duration.

-

The returned value can be greater than 59.

-
-
-

Implementation

-
int get inSeconds => _duration ~/ Duration.microsecondsPerSecond;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/isNegative.html b/doc/api/dart-core/Duration/isNegative.html deleted file mode 100644 index 3d8399a9..00000000 --- a/doc/api/dart-core/Duration/isNegative.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - isNegative property - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNegative
- -
- -
- - - -
-

isNegative property

- - -
- -
- bool - isNegative - -
- -
-

Returns whether this Duration is negative.

-

A negative Duration represents the difference from a later time to an -earlier time.

-
-
-

Implementation

-
bool get isNegative => _duration < 0;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/microsecondsPerDay-constant.html b/doc/api/dart-core/Duration/microsecondsPerDay-constant.html deleted file mode 100644 index 706e460c..00000000 --- a/doc/api/dart-core/Duration/microsecondsPerDay-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - microsecondsPerDay constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
microsecondsPerDay
- -
- -
- - - -
-

microsecondsPerDay constant

- -
- int - const microsecondsPerDay - = - microsecondsPerHour * hoursPerDay -
- -
-

Implementation

-
static const int microsecondsPerDay = microsecondsPerHour * hoursPerDay
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/microsecondsPerHour-constant.html b/doc/api/dart-core/Duration/microsecondsPerHour-constant.html deleted file mode 100644 index eb1726b3..00000000 --- a/doc/api/dart-core/Duration/microsecondsPerHour-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - microsecondsPerHour constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
microsecondsPerHour
- -
- -
- - - -
-

microsecondsPerHour constant

- -
- int - const microsecondsPerHour - = - microsecondsPerMinute * minutesPerHour -
- -
-

Implementation

-
static const int microsecondsPerHour = microsecondsPerMinute * minutesPerHour
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/microsecondsPerMillisecond-constant.html b/doc/api/dart-core/Duration/microsecondsPerMillisecond-constant.html deleted file mode 100644 index 33493dbc..00000000 --- a/doc/api/dart-core/Duration/microsecondsPerMillisecond-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - microsecondsPerMillisecond constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
microsecondsPerMillisecond
- -
- -
- - - -
-

microsecondsPerMillisecond constant

- -
- int - const microsecondsPerMillisecond - = - 1000 -
- -
-

Implementation

-
static const int microsecondsPerMillisecond = 1000
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/microsecondsPerMinute-constant.html b/doc/api/dart-core/Duration/microsecondsPerMinute-constant.html deleted file mode 100644 index 9df16abb..00000000 --- a/doc/api/dart-core/Duration/microsecondsPerMinute-constant.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - microsecondsPerMinute constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
microsecondsPerMinute
- -
- -
- - - -
-

microsecondsPerMinute constant

- -
- int - const microsecondsPerMinute - = - microsecondsPerSecond * secondsPerMinute -
- -
-

Implementation

-
static const int microsecondsPerMinute =
-    microsecondsPerSecond * secondsPerMinute
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/microsecondsPerSecond-constant.html b/doc/api/dart-core/Duration/microsecondsPerSecond-constant.html deleted file mode 100644 index 7df03fe3..00000000 --- a/doc/api/dart-core/Duration/microsecondsPerSecond-constant.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - microsecondsPerSecond constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
microsecondsPerSecond
- -
- -
- - - -
-

microsecondsPerSecond constant

- -
- int - const microsecondsPerSecond - = - microsecondsPerMillisecond * millisecondsPerSecond -
- -
-

Implementation

-
static const int microsecondsPerSecond =
-    microsecondsPerMillisecond * millisecondsPerSecond
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/millisecondsPerDay-constant.html b/doc/api/dart-core/Duration/millisecondsPerDay-constant.html deleted file mode 100644 index dc4495c9..00000000 --- a/doc/api/dart-core/Duration/millisecondsPerDay-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - millisecondsPerDay constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
millisecondsPerDay
- -
- -
- - - -
-

millisecondsPerDay constant

- -
- int - const millisecondsPerDay - = - millisecondsPerHour * hoursPerDay -
- -
-

Implementation

-
static const int millisecondsPerDay = millisecondsPerHour * hoursPerDay
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/millisecondsPerHour-constant.html b/doc/api/dart-core/Duration/millisecondsPerHour-constant.html deleted file mode 100644 index a36ed5a4..00000000 --- a/doc/api/dart-core/Duration/millisecondsPerHour-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - millisecondsPerHour constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
millisecondsPerHour
- -
- -
- - - -
-

millisecondsPerHour constant

- -
- int - const millisecondsPerHour - = - millisecondsPerMinute * minutesPerHour -
- -
-

Implementation

-
static const int millisecondsPerHour = millisecondsPerMinute * minutesPerHour
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/millisecondsPerMinute-constant.html b/doc/api/dart-core/Duration/millisecondsPerMinute-constant.html deleted file mode 100644 index 76e7f563..00000000 --- a/doc/api/dart-core/Duration/millisecondsPerMinute-constant.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - millisecondsPerMinute constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
millisecondsPerMinute
- -
- -
- - - -
-

millisecondsPerMinute constant

- -
- int - const millisecondsPerMinute - = - millisecondsPerSecond * secondsPerMinute -
- -
-

Implementation

-
static const int millisecondsPerMinute =
-    millisecondsPerSecond * secondsPerMinute
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/millisecondsPerSecond-constant.html b/doc/api/dart-core/Duration/millisecondsPerSecond-constant.html deleted file mode 100644 index a368f113..00000000 --- a/doc/api/dart-core/Duration/millisecondsPerSecond-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - millisecondsPerSecond constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
millisecondsPerSecond
- -
- -
- - - -
-

millisecondsPerSecond constant

- -
- int - const millisecondsPerSecond - = - 1000 -
- -
-

Implementation

-
static const int millisecondsPerSecond = 1000
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/minutesPerDay-constant.html b/doc/api/dart-core/Duration/minutesPerDay-constant.html deleted file mode 100644 index 4992f460..00000000 --- a/doc/api/dart-core/Duration/minutesPerDay-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - minutesPerDay constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
minutesPerDay
- -
- -
- - - -
-

minutesPerDay constant

- -
- int - const minutesPerDay - = - minutesPerHour * hoursPerDay -
- -
-

Implementation

-
static const int minutesPerDay = minutesPerHour * hoursPerDay
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/minutesPerHour-constant.html b/doc/api/dart-core/Duration/minutesPerHour-constant.html deleted file mode 100644 index 1e0da5f0..00000000 --- a/doc/api/dart-core/Duration/minutesPerHour-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - minutesPerHour constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
minutesPerHour
- -
- -
- - - -
-

minutesPerHour constant

- -
- int - const minutesPerHour - = - 60 -
- -
-

Implementation

-
static const int minutesPerHour = 60
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_equals.html b/doc/api/dart-core/Duration/operator_equals.html deleted file mode 100644 index 98597b59..00000000 --- a/doc/api/dart-core/Duration/operator_equals.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator == method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) -
override
-
-
-

Returns true if this Duration has the same value as other.

-
- -
-

Implementation

-
bool operator ==(Object other) =>
-    other is Duration && _duration == other.inMicroseconds;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_greater.html b/doc/api/dart-core/Duration/operator_greater.html deleted file mode 100644 index 422e257d..00000000 --- a/doc/api/dart-core/Duration/operator_greater.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator > method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator >
- -
- -
- - - -
-

operator > method

- -
- bool - operator > -(Duration other) - -
-
-

Returns true if the value of this Duration -is greater than the value of other.

-
- -
-

Implementation

-
bool operator >(Duration other) => this._duration > other._duration;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_greater_equal.html b/doc/api/dart-core/Duration/operator_greater_equal.html deleted file mode 100644 index f3211315..00000000 --- a/doc/api/dart-core/Duration/operator_greater_equal.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator >= method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator >=
- -
- -
- - - -
-

operator >= method

- -
- bool - operator >= -(Duration other) - -
-
-

Returns true if the value of this Duration -is greater than or equal to the value of other.

-
- -
-

Implementation

-
bool operator >=(Duration other) => this._duration >= other._duration;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_less.html b/doc/api/dart-core/Duration/operator_less.html deleted file mode 100644 index cd4816fc..00000000 --- a/doc/api/dart-core/Duration/operator_less.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator < method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator <
- -
- -
- - - -
-

operator < method

- -
- bool - operator < -(Duration other) - -
-
-

Returns true if the value of this Duration -is less than the value of other.

-
- -
-

Implementation

-
bool operator <(Duration other) => this._duration < other._duration;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_less_equal.html b/doc/api/dart-core/Duration/operator_less_equal.html deleted file mode 100644 index 514346c2..00000000 --- a/doc/api/dart-core/Duration/operator_less_equal.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator <= method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator <=
- -
- -
- - - -
-

operator <= method

- -
- bool - operator <= -(Duration other) - -
-
-

Returns true if the value of this Duration -is less than or equal to the value of other.

-
- -
-

Implementation

-
bool operator <=(Duration other) => this._duration <= other._duration;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_minus.html b/doc/api/dart-core/Duration/operator_minus.html deleted file mode 100644 index 8a576a69..00000000 --- a/doc/api/dart-core/Duration/operator_minus.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - operator - method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator -
- -
- -
- - - -
-

operator - method

- -
- Duration - operator - -(Duration other) - -
-
-

Subtracts other from this Duration and -returns the difference as a new Duration object.

-
- -
-

Implementation

-
Duration operator -(Duration other) {
-  return Duration._microseconds(_duration - other._duration);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_multiply.html b/doc/api/dart-core/Duration/operator_multiply.html deleted file mode 100644 index 64c68d4a..00000000 --- a/doc/api/dart-core/Duration/operator_multiply.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - operator * method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator *
- -
- -
- - - -
-

operator * method

- -
- Duration - operator * -(num factor) - -
-
-

Multiplies this Duration by the given factor and returns the result -as a new Duration object.

-

Note that when factor is a double, and the duration is greater than -53 bits, precision is lost because of double-precision arithmetic.

-
- -
-

Implementation

-
Duration operator *(num factor) {
-  return Duration._microseconds((_duration * factor).round());
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_plus.html b/doc/api/dart-core/Duration/operator_plus.html deleted file mode 100644 index d517c644..00000000 --- a/doc/api/dart-core/Duration/operator_plus.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - operator + method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator +
- -
- -
- - - -
-

operator + method

- -
- Duration - operator + -(Duration other) - -
-
-

Adds this Duration and other and -returns the sum as a new Duration object.

-
- -
-

Implementation

-
Duration operator +(Duration other) {
-  return Duration._microseconds(_duration + other._duration);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_truncate_divide.html b/doc/api/dart-core/Duration/operator_truncate_divide.html deleted file mode 100644 index 0078093d..00000000 --- a/doc/api/dart-core/Duration/operator_truncate_divide.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator ~/ method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ~/
- -
- -
- - - -
-

operator ~/ method

- -
- Duration - operator ~/ -(int quotient) - -
-
-

Divides this Duration by the given quotient and returns the truncated -result as a new Duration object.

-

Throws an IntegerDivisionByZeroException if quotient is 0.

-
- -
-

Implementation

-
Duration operator ~/(int quotient) {
-  // By doing the check here instead of relying on "~/" below we get the
-  // exception even with dart2js.
-  if (quotient == 0) throw IntegerDivisionByZeroException();
-  return Duration._microseconds(_duration ~/ quotient);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/operator_unary_minus.html b/doc/api/dart-core/Duration/operator_unary_minus.html deleted file mode 100644 index 7845683a..00000000 --- a/doc/api/dart-core/Duration/operator_unary_minus.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - operator unary- method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator unary-
- -
- -
- - - -
-

operator unary- method

- -
- Duration - operator unary- -() - -
-
-

Returns a new Duration representing this Duration negated.

-

The returned Duration has the same length as this one, but will have the -opposite sign of this one.

-
- -
-

Implementation

-
// Using subtraction helps dart2js avoid negative zeros.
-Duration operator -() => Duration._microseconds(0 - _duration);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/secondsPerDay-constant.html b/doc/api/dart-core/Duration/secondsPerDay-constant.html deleted file mode 100644 index 0360dd90..00000000 --- a/doc/api/dart-core/Duration/secondsPerDay-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - secondsPerDay constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
secondsPerDay
- -
- -
- - - -
-

secondsPerDay constant

- -
- int - const secondsPerDay - = - secondsPerHour * hoursPerDay -
- -
-

Implementation

-
static const int secondsPerDay = secondsPerHour * hoursPerDay
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/secondsPerHour-constant.html b/doc/api/dart-core/Duration/secondsPerHour-constant.html deleted file mode 100644 index 77a7188f..00000000 --- a/doc/api/dart-core/Duration/secondsPerHour-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - secondsPerHour constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
secondsPerHour
- -
- -
- - - -
-

secondsPerHour constant

- -
- int - const secondsPerHour - = - secondsPerMinute * minutesPerHour -
- -
-

Implementation

-
static const int secondsPerHour = secondsPerMinute * minutesPerHour
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/secondsPerMinute-constant.html b/doc/api/dart-core/Duration/secondsPerMinute-constant.html deleted file mode 100644 index 1da49485..00000000 --- a/doc/api/dart-core/Duration/secondsPerMinute-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - secondsPerMinute constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
secondsPerMinute
- -
- -
- - - -
-

secondsPerMinute constant

- -
- int - const secondsPerMinute - = - 60 -
- -
-

Implementation

-
static const int secondsPerMinute = 60
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/toString.html b/doc/api/dart-core/Duration/toString.html deleted file mode 100644 index f1d31e5e..00000000 --- a/doc/api/dart-core/Duration/toString.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - toString method - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this Duration.

-

Returns a string with hours, minutes, seconds, and microseconds, in the -following format: H:MM:SS.mmmmmm. For example,

-
var d = Duration(days: 1, hours: 1, minutes: 33, microseconds: 500);
-d.toString();  // "25:33:00.000500"
-
-d = Duration(days: 0, hours: 1, minutes: 10, microseconds: 500);
-d.toString();  // "1:10:00.000500"
-
-
- -
-

Implementation

-
String toString() {
-  String sixDigits(int n) {
-    if (n >= 100000) return "$n";
-    if (n >= 10000) return "0$n";
-    if (n >= 1000) return "00$n";
-    if (n >= 100) return "000$n";
-    if (n >= 10) return "0000$n";
-    return "00000$n";
-  }
-
-  String twoDigits(int n) {
-    if (n >= 10) return "$n";
-    return "0$n";
-  }
-
-  if (inMicroseconds < 0) {
-    return "-${-this}";
-  }
-  String twoDigitMinutes =
-      twoDigits(inMinutes.remainder(minutesPerHour) as int);
-  String twoDigitSeconds =
-      twoDigits(inSeconds.remainder(secondsPerMinute) as int);
-  String sixDigitUs =
-      sixDigits(inMicroseconds.remainder(microsecondsPerSecond) as int);
-  return "$inHours:$twoDigitMinutes:$twoDigitSeconds.$sixDigitUs";
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Duration/zero-constant.html b/doc/api/dart-core/Duration/zero-constant.html deleted file mode 100644 index 87db6699..00000000 --- a/doc/api/dart-core/Duration/zero-constant.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - zero constant - Duration class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
zero
- -
- -
- - - -
-

zero constant

- -
- Duration - const zero - = - const Duration(seconds: 0) -
- -
-

Implementation

-
static const Duration zero = Duration(seconds: 0)
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Error-class.html b/doc/api/dart-core/Error-class.html deleted file mode 100644 index d751426a..00000000 --- a/doc/api/dart-core/Error-class.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - - Error class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Error
- -
- -
- - - -
-

Error class

- -
-

Error objects thrown in the case of a program failure.

-

An Error object represents a program failure that the programmer -should have avoided.

-

Examples include calling a function with invalid arguments, -or even with the wrong number of arguments, -or calling it at a time when it is not allowed.

-

These are not errors that a caller should expect or catch - -if they occur, the program is erroneous, -and terminating the program may be the safest response.

-

When deciding that a function throws an error, -the conditions where it happens should be clearly described, -and they should be detectable and predictable, -so the programmer using the function can avoid triggering the error.

-

Such descriptions often uses words like -"must" or "must not" to describe the condition, -and if you see words like that in a function's documentation, -then not satisfying the requirement -is very likely to cause an error to be thrown.

-

Example (from String.contains):

-
   `startIndex` must not be negative or greater than `length`.
-
-

In this case, an error will be thrown if startIndex is negative -or too large.

-

If the conditions are not detectable before calling a function, -the called function should not throw an Error. -It may still throw a value, -but the caller will have to catch the thrown value, -effectively making it an alternative result rather than an error. -The thrown object can choose to implement Exception -to document that it represents an exceptional, but not erroneous, occurrence, -but it has no other effect than documentation.

-

All non-null values can be thrown in Dart. -Objects extending Error are handled specially: -The first time they are thrown, -the stack trace at the throw point is recorded -and stored in the error object. -It can be retrieved using the stackTrace getter. -An error object that merely implements Error, and doesn't extend it, -will not store the stack trace automatically.

-

Error objects are also used for system wide failures -like stack overflow or an out-of-memory situation.

-

Since errors are not created to be caught, -there is no need for subclasses to distinguish the errors. -Instead subclasses have been created in order to make groups -of related errors easy to create with consistent error messages. -For example, the String.contains method will use a RangeError -if its startIndex isn't in the range 0..length, -which is easily created by new RangeError.range(startIndex, 0, length).

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Error() -
-
- -
-
-
- -
-

Properties

- -
-
- stackTrace - StackTrace -
-
- -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- safeToString(Object object) - String - -
-
- Safely convert a value to a String description. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Error/Error.html b/doc/api/dart-core/Error/Error.html deleted file mode 100644 index c53b104a..00000000 --- a/doc/api/dart-core/Error/Error.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - Error constructor - Error class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Error
- -
- -
- - - -
-

Error constructor

- -
- - Error() -
- - -
-

Implementation

-
Error();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Error/safeToString.html b/doc/api/dart-core/Error/safeToString.html deleted file mode 100644 index debc2427..00000000 --- a/doc/api/dart-core/Error/safeToString.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - safeToString method - Error class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
safeToString
- -
- -
- - - -
-

safeToString method

- -
- String - safeToString -(Object object) - -
-
-

Safely convert a value to a String description.

-

The conversion is guaranteed to not throw, so it won't use the object's -toString method.

-
- -
-

Implementation

-
static String safeToString(Object? object) {
-  if (object is num || object is bool || null == object) {
-    return object.toString();
-  }
-  if (object is String) {
-    return _stringToSafeString(object);
-  }
-  return _objectToString(object);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Error/stackTrace.html b/doc/api/dart-core/Error/stackTrace.html deleted file mode 100644 index ed270192..00000000 --- a/doc/api/dart-core/Error/stackTrace.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - stackTrace property - Error class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
stackTrace
- -
- -
- - - -
-

stackTrace property

- - -
- -
- StackTrace - stackTrace - -
- -
-

Implementation

-
external StackTrace? get stackTrace;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Exception-class.html b/doc/api/dart-core/Exception-class.html deleted file mode 100644 index feff1923..00000000 --- a/doc/api/dart-core/Exception-class.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - Exception class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Exception
- -
- -
- - - -
-

Exception class

- -
-

A marker interface implemented by all core library exceptions.

-

An Exception is intended to convey information to the user about a failure, -so that the error can be addressed programmatically. It is intended to be -caught, and it should contain useful data fields.

-

Creating instances of Exception directly with Exception("message") -is discouraged in library code since it doesn't give users a precise -type they can catch. It may be reasonable to use instances of this -class in tests or during development.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Exception([dynamic message ]) -
-
- -
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Exception/Exception.html b/doc/api/dart-core/Exception/Exception.html deleted file mode 100644 index 57bc6794..00000000 --- a/doc/api/dart-core/Exception/Exception.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Exception constructor - Exception class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Exception
- -
- -
- - - -
-

Exception constructor

- -
- - Exception([dynamic message ]) -
- - -
-

Implementation

-
factory Exception([var message]) => _Exception(message);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Expando-class.html b/doc/api/dart-core/Expando-class.html deleted file mode 100644 index 8a3b02cb..00000000 --- a/doc/api/dart-core/Expando-class.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - Expando class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Expando
- -
- -
- - - -
-

Expando<T extends Object> class

- -
-

An Expando allows adding new properties to objects.

-

Does not work on numbers, strings, booleans or null.

-

An Expando does not hold on to the added property value after an object -becomes inaccessible.

-

Since you can always create a new number that is identical to an existing -number, it means that an expando property on a number could never be -released. To avoid this, expando properties cannot be added to numbers. -The same argument applies to strings, booleans and null, which also have -literals that evaluate to identical values when they occur more than once.

-

There is no restriction on other classes, even for compile time constant -objects. Be careful if adding expando properties to compile time constants, -since they will stay alive forever.

-
- - -
-

Constructors

- -
-
- Expando([String name ]) -
-
- Creates a new Expando. The optional name is only used for -debugging purposes and creating two different Expandos with the -same name yields two Expandos that work on different properties -of the objects they are used on. -
-
-
- -
-

Properties

- -
-
- name - String -
-
- The name of the this Expando as passed to the constructor. If -no name was passed to the constructor, the name is null. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Expando toString method override. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator [](Object object) - → T - -
-
- Gets the value of this Expando's property on the given -object. If the object hasn't been expanded, the method returns -null. [...] - -
-
- operator []=(Object object, T value) - → void - -
-
- Sets the value of this Expando's property on the given -object. Properties can effectively be removed again by setting -their value to null. [...] - -
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Expando/Expando.html b/doc/api/dart-core/Expando/Expando.html deleted file mode 100644 index 66151310..00000000 --- a/doc/api/dart-core/Expando/Expando.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - Expando constructor - Expando class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Expando
- -
- -
- - - -
-

Expando<T extends Object> constructor

- -
- - Expando<T extends Object>([String name ]) -
- -
-

Creates a new Expando. The optional name is only used for -debugging purposes and creating two different Expandos with the -same name yields two Expandos that work on different properties -of the objects they are used on.

-
- -
-

Implementation

-
external Expando([String? name]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Expando/name.html b/doc/api/dart-core/Expando/name.html deleted file mode 100644 index e0eca1ba..00000000 --- a/doc/api/dart-core/Expando/name.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - name property - Expando class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
name
- -
- -
- - - -
-

name property

- -
- String - name -
final
-
-
-

The name of the this Expando as passed to the constructor. If -no name was passed to the constructor, the name is null.

-
-
-

Implementation

-
final String? name
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Expando/operator_get.html b/doc/api/dart-core/Expando/operator_get.html deleted file mode 100644 index cedcd2a7..00000000 --- a/doc/api/dart-core/Expando/operator_get.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - operator [] method - Expando class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- T - operator [] -(Object object) - -
-
-

Gets the value of this Expando's property on the given -object. If the object hasn't been expanded, the method returns -null.

-

The object must not be a number, a string, a boolean or null.

-
- -
-

Implementation

-
external T? operator [](Object object);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Expando/operator_put.html b/doc/api/dart-core/Expando/operator_put.html deleted file mode 100644 index be8b9535..00000000 --- a/doc/api/dart-core/Expando/operator_put.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - operator []= method - Expando class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(Object object, T value) - -
-
-

Sets the value of this Expando's property on the given -object. Properties can effectively be removed again by setting -their value to null.

-

The object must not be a number, a string, a boolean or null.

-
- -
-

Implementation

-
external void operator []=(Object object, T? value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Expando/toString.html b/doc/api/dart-core/Expando/toString.html deleted file mode 100644 index e11f360a..00000000 --- a/doc/api/dart-core/Expando/toString.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - toString method - Expando class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Expando toString method override.

-
- -
-

Implementation

-
String toString() => "Expando:${name.toString()}";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FallThroughError-class.html b/doc/api/dart-core/FallThroughError-class.html deleted file mode 100644 index 591b7063..00000000 --- a/doc/api/dart-core/FallThroughError-class.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - - FallThroughError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
FallThroughError
- -
- -
- - - -
-

FallThroughError class

- -
-

Error thrown when control reaches the end of a switch case.

-

The Dart specification requires this error to be thrown when -control reaches the end of a switch case (except the last case -of a switch) without meeting a break or similar end of the control -flow.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- FallThroughError() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FallThroughError/FallThroughError.html b/doc/api/dart-core/FallThroughError/FallThroughError.html deleted file mode 100644 index e62bd8ee..00000000 --- a/doc/api/dart-core/FallThroughError/FallThroughError.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - FallThroughError constructor - FallThroughError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
FallThroughError
- -
- -
- - - -
-

FallThroughError constructor

- -
- - FallThroughError() -
- - -
-

Implementation

-
FallThroughError();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FallThroughError/toString.html b/doc/api/dart-core/FallThroughError/toString.html deleted file mode 100644 index 39230dae..00000000 --- a/doc/api/dart-core/FallThroughError/toString.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - toString method - FallThroughError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
external String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FormatException-class.html b/doc/api/dart-core/FormatException-class.html deleted file mode 100644 index e8884e9e..00000000 --- a/doc/api/dart-core/FormatException-class.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - FormatException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
FormatException
- -
- -
- - - -
-

FormatException class

- -
-

Exception thrown when a string or some other data does not have an expected -format and cannot be parsed or processed.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- FormatException([String message = "", dynamic source, int offset ]) -
-
- Creates a new FormatException with an optional error message. [...] -
const
-
-
-
- -
-

Properties

- -
-
- message - String -
-
- A message describing the format error. -
final
-
-
- offset - int -
-
- The offset in source where the error was detected. [...] -
final
-
-
- source - → dynamic -
-
- The actual source input which caused the error. [...] -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a description of the format exception. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FormatException/FormatException.html b/doc/api/dart-core/FormatException/FormatException.html deleted file mode 100644 index 54d91c43..00000000 --- a/doc/api/dart-core/FormatException/FormatException.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - FormatException constructor - FormatException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
FormatException
- -
- -
- - - -
-

FormatException constructor

- -
- const - FormatException([String message = "", dynamic source, int offset ]) -
- -
-

Creates a new FormatException with an optional error message.

-

Optionally also supply the actual source with the incorrect format, -and the offset in the format where a problem was detected.

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-const FormatException([this.message = "", this.source, this.offset]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FormatException/message.html b/doc/api/dart-core/FormatException/message.html deleted file mode 100644 index 1998fbac..00000000 --- a/doc/api/dart-core/FormatException/message.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - message property - FormatException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- -
- String - message -
final
-
-
-

A message describing the format error.

-
-
-

Implementation

-
final String message
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FormatException/offset.html b/doc/api/dart-core/FormatException/offset.html deleted file mode 100644 index f8c3f0e5..00000000 --- a/doc/api/dart-core/FormatException/offset.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - offset property - FormatException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
offset
- -
- -
- - - -
-

offset property

- -
- int - offset -
final
-
-
-

The offset in source where the error was detected.

-

A zero-based offset into the source that marks the format error causing -this exception to be created. If source is a string, this should be a -string index in the range 0 <= offset <= source.length.

-

If input is a string, the toString method may represent this offset as -a line and character position. The offset should be inside the string, -or at the end of the string.

-

May be omitted. If present, source should also be present if possible.

-
-
-

Implementation

-
final int? offset
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FormatException/source.html b/doc/api/dart-core/FormatException/source.html deleted file mode 100644 index 7628b7d8..00000000 --- a/doc/api/dart-core/FormatException/source.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - source property - FormatException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
source
- -
- -
- - - -
-

source property

- -
- dynamic - source -
final
-
-
-

The actual source input which caused the error.

-

This is usually a String, but can be other types too. -If it is a string, parts of it may be included in the toString message.

-

The source is null if omitted or unknown.

-
-
-

Implementation

-
final dynamic source
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/FormatException/toString.html b/doc/api/dart-core/FormatException/toString.html deleted file mode 100644 index 406cea7d..00000000 --- a/doc/api/dart-core/FormatException/toString.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - toString method - FormatException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a description of the format exception.

-

The description always contains the message.

-

If source is present and is a string, the description will contain -(at least a part of) the source. -If offset is also provided, the part of the source included will -contain that offset, and the offset will be marked.

-

If the source is a string and it contains a line break before offset, -only the line containing offset will be included, and its line number -will also be part of the description. Line and character offsets are -1-based.

-
- -
-

Implementation

-
String toString() {
-  String report = "FormatException";
-  Object? message = this.message;
-  if (message != null && "" != message) {
-    report = "$report: $message";
-  }
-  int? offset = this.offset;
-  Object? source = this.source;
-  if (source is String) {
-    if (offset != null && (offset < 0 || offset > source.length)) {
-      offset = null;
-    }
-    // Source is string and offset is null or valid.
-    if (offset == null) {
-      if (source.length > 78) {
-        source = source.substring(0, 75) + "...";
-      }
-      return "$report\n$source";
-    }
-    int lineNum = 1;
-    int lineStart = 0;
-    bool previousCharWasCR = false;
-    for (int i = 0; i < offset; i++) {
-      int char = source.codeUnitAt(i);
-      if (char == 0x0a) {
-        if (lineStart != i || !previousCharWasCR) {
-          lineNum++;
-        }
-        lineStart = i + 1;
-        previousCharWasCR = false;
-      } else if (char == 0x0d) {
-        lineNum++;
-        lineStart = i + 1;
-        previousCharWasCR = true;
-      }
-    }
-    if (lineNum > 1) {
-      report += " (at line $lineNum, character ${offset - lineStart + 1})\n";
-    } else {
-      report += " (at character ${offset + 1})\n";
-    }
-    int lineEnd = source.length;
-    for (int i = offset; i < source.length; i++) {
-      int char = source.codeUnitAt(i);
-      if (char == 0x0a || char == 0x0d) {
-        lineEnd = i;
-        break;
-      }
-    }
-    int length = lineEnd - lineStart;
-    int start = lineStart;
-    int end = lineEnd;
-    String prefix = "";
-    String postfix = "";
-    if (length > 78) {
-      // Can't show entire line. Try to anchor at the nearest end, if
-      // one is within reach.
-      int index = offset - lineStart;
-      if (index < 75) {
-        end = start + 75;
-        postfix = "...";
-      } else if (end - offset < 75) {
-        start = end - 75;
-        prefix = "...";
-      } else {
-        // Neither end is near, just pick an area around the offset.
-        start = offset - 36;
-        end = offset + 36;
-        prefix = postfix = "...";
-      }
-    }
-    String slice = source.substring(start, end);
-    int markOffset = offset - start + prefix.length;
-    return "$report$prefix$slice$postfix\n${" " * markOffset}^\n";
-  } else {
-    // The source is not a string.
-    if (offset != null) {
-      report += " (at offset $offset)";
-    }
-    return report;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Function-class.html b/doc/api/dart-core/Function-class.html deleted file mode 100644 index c462ccee..00000000 --- a/doc/api/dart-core/Function-class.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - Function class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Function
- -
- -
- - - -
-

Function class

- -
-

The base class for all function types.

-

The run-time type of a function object is subtype of a function type, -and as such, a subtype of Function.

-
- - -
-

Constructors

- -
-
- Function() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- Returns a hash code value that is compatible with operator==. -
read-only, override
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- Test whether another object is equal to this function. [...] -
override
-
-
-
- - -
-

Static Methods

-
-
- apply(Function function, List positionalArguments, [ Map<Symbol, dynamic> namedArguments ]) - → dynamic - -
-
- Dynamically call function with the specified arguments. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Function/Function.html b/doc/api/dart-core/Function/Function.html deleted file mode 100644 index 71346a34..00000000 --- a/doc/api/dart-core/Function/Function.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - Function constructor - Function class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Function
- -
- -
- - - -
-

Function constructor

- -
- - Function() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Function/apply.html b/doc/api/dart-core/Function/apply.html deleted file mode 100644 index ba9525d0..00000000 --- a/doc/api/dart-core/Function/apply.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - apply method - Function class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
apply
- -
- -
- - - -
-

apply method

- -
- dynamic - apply -(Function function, List positionalArguments, [ Map<Symbol, dynamic> namedArguments ]) - -
-
-

Dynamically call function with the specified arguments.

-

Acts the same as calling function with positional arguments -corresponding to the elements of positionalArguments and -named arguments corresponding to the elements of namedArguments.

-

This includes giving the same errors if function isn't callable or -if it expects different parameters.

-

Example:

-
Function.apply(foo, [1,2,3], {#f: 4, #g: 5});
-
-

gives exactly the same result as

-
foo(1, 2, 3, f: 4, g: 5).
-
-

If positionalArguments is null, it's considered an empty list. -If namedArguments is omitted or null, it is considered an empty map.

-
- -
-

Implementation

-
external static apply(Function function, List<dynamic>? positionalArguments,
-    [Map<Symbol, dynamic>? namedArguments]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Function/hashCode.html b/doc/api/dart-core/Function/hashCode.html deleted file mode 100644 index cccfd115..00000000 --- a/doc/api/dart-core/Function/hashCode.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - hashCode property - Function class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

Returns a hash code value that is compatible with operator==.

-
-
-

Implementation

-
int get hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Function/operator_equals.html b/doc/api/dart-core/Function/operator_equals.html deleted file mode 100644 index d97ec259..00000000 --- a/doc/api/dart-core/Function/operator_equals.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - operator == method - Function class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) -
override
-
-
-

Test whether another object is equal to this function.

-

Function objects are only equal to other function objects -(an object satisfying object is Function), -and never to non-function objects.

-

Some function objects are considered equal by == -because they are recognized as representing the "same function":

-
    -
  • It is the same object. Static and top-level functions are compile time -constants when used as values, so referring to the same function twice -always give the same object, as does referring to a local function -declaration twice in the same scope where it was declared.
  • -
  • if they refer to the same member method extracted from the same object. -Repeatedly extracting an instance method of an object as a function value -gives equal, but not necessarily identical, function values.
  • -
-

Different evaluations of function literals -never give rise to equal function objects. -Each time a function literal is evaluated, -it creates a new function value that is not equal to any other function -value, not even ones created by the same expression.

-
- -
-

Implementation

-
bool operator ==(Object other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IndexError-class.html b/doc/api/dart-core/IndexError-class.html deleted file mode 100644 index f244ab1b..00000000 --- a/doc/api/dart-core/IndexError-class.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - - IndexError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
IndexError
- -
- -
- - - -
-

IndexError class

- -
-

A specialized RangeError used when an index is not in the range -0..indexable.length-1.

-

Also contains the indexable object, its length at the time of the error, -and the invalid index itself.

-
- -
-
-
Inheritance
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- IndexError(int invalidValue, dynamic indexable, [ String name, String message, int length ]) -
-
- Creates a new IndexError stating that invalidValue is not a valid index -into indexable. [...] -
-
-
- -
-

Properties

- -
-
- end - int -
-
- The maximum value that value is allowed to assume. -
read-only, override
-
-
- indexable - → dynamic -
-
- The indexable object that invalidValue was not a valid index into. -
final
-
-
- length - int -
-
- The length of indexable at the time of the error. -
final
-
-
- start - int -
-
- The minimum value that value is allowed to assume. -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- invalidValue - → dynamic -
-
- The invalid value. -
final, inherited
-
-
- message - → dynamic -
-
- Message describing the problem. -
final, inherited
-
-
- name - String -
-
- Name of the invalid argument, if available. -
final, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IndexError/IndexError.html b/doc/api/dart-core/IndexError/IndexError.html deleted file mode 100644 index 24204276..00000000 --- a/doc/api/dart-core/IndexError/IndexError.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - IndexError constructor - IndexError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
IndexError
- -
- -
- - - -
-

IndexError constructor

- -
- - IndexError(int invalidValue, dynamic indexable, [ String name, String message, int length ]) -
- -
-

Creates a new IndexError stating that invalidValue is not a valid index -into indexable.

-

The length is the length of indexable at the time of the error. -If length is omitted, it defaults to indexable.length.

-

The message is used as part of the string representation of the error.

-
- -
-

Implementation

-
IndexError(int invalidValue, dynamic indexable,
-    [String? name, String? message, int? length])
-    : this.indexable = indexable,
-      this.length = length ?? indexable.length,
-      super.value(invalidValue, name, message ?? "Index out of range");
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IndexError/end.html b/doc/api/dart-core/IndexError/end.html deleted file mode 100644 index d272e605..00000000 --- a/doc/api/dart-core/IndexError/end.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - end property - IndexError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
end
- -
- -
- - - -
-

end property

- - -
- -
- int - end -
override
-
- -
-

The maximum value that value is allowed to assume.

-
-
-

Implementation

-
int get end => length - 1;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IndexError/indexable.html b/doc/api/dart-core/IndexError/indexable.html deleted file mode 100644 index 8af7773a..00000000 --- a/doc/api/dart-core/IndexError/indexable.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - indexable property - IndexError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
indexable
- -
- -
- - - -
-

indexable property

- -
- dynamic - indexable -
final
-
-
-

The indexable object that invalidValue was not a valid index into.

-
-
-

Implementation

-
final indexable
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IndexError/length.html b/doc/api/dart-core/IndexError/length.html deleted file mode 100644 index da7bba25..00000000 --- a/doc/api/dart-core/IndexError/length.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - length property - IndexError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- -
- int - length -
final
-
-
-

The length of indexable at the time of the error.

-
-
-

Implementation

-
final int length
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IndexError/start.html b/doc/api/dart-core/IndexError/start.html deleted file mode 100644 index dfb756e5..00000000 --- a/doc/api/dart-core/IndexError/start.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - start property - IndexError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
start
- -
- -
- - - -
-

start property

- - -
- -
- int - start -
override
-
- -
-

The minimum value that value is allowed to assume.

-
-
-

Implementation

-
int get start => 0;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IntegerDivisionByZeroException-class.html b/doc/api/dart-core/IntegerDivisionByZeroException-class.html deleted file mode 100644 index 5087f129..00000000 --- a/doc/api/dart-core/IntegerDivisionByZeroException-class.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - IntegerDivisionByZeroException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
IntegerDivisionByZeroException
- -
- -
- - - -
-

IntegerDivisionByZeroException class

- - -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- IntegerDivisionByZeroException() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IntegerDivisionByZeroException/IntegerDivisionByZeroException.html b/doc/api/dart-core/IntegerDivisionByZeroException/IntegerDivisionByZeroException.html deleted file mode 100644 index cd410237..00000000 --- a/doc/api/dart-core/IntegerDivisionByZeroException/IntegerDivisionByZeroException.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - IntegerDivisionByZeroException constructor - IntegerDivisionByZeroException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
IntegerDivisionByZeroException
- -
- -
- - - -
-

IntegerDivisionByZeroException constructor

- -
- const - IntegerDivisionByZeroException() -
- - -
-

Implementation

-
@pragma("vm:entry-point")
-const IntegerDivisionByZeroException();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/IntegerDivisionByZeroException/toString.html b/doc/api/dart-core/IntegerDivisionByZeroException/toString.html deleted file mode 100644 index 87995e9d..00000000 --- a/doc/api/dart-core/IntegerDivisionByZeroException/toString.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - toString method - IntegerDivisionByZeroException class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "IntegerDivisionByZeroException";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation-class.html b/doc/api/dart-core/Invocation-class.html deleted file mode 100644 index ac959347..00000000 --- a/doc/api/dart-core/Invocation-class.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Invocation
- -
- -
- - - -
-

Invocation class

- -
-

Representation of the invocation of a member on an object.

-

This is the type of objects passed to Object.noSuchMethod when -an object doesn't support the member invocation that was attempted -on it.

-
- - -
-

Constructors

- -
-
- Invocation() -
-
- -
-
- Invocation.genericMethod(Symbol memberName, Iterable<Type> typeArguments, Iterable<Object> positionalArguments, [ Map<Symbol, Object> namedArguments ]) -
-
- Creates an invocation corresponding to a generic method invocation. [...] -
factory
-
-
- Invocation.getter(Symbol name) -
-
- Creates an invocation corresponding to a getter invocation. -
factory
-
-
- Invocation.method(Symbol memberName, Iterable<Object> positionalArguments, [ Map<Symbol, Object> namedArguments ]) -
-
- Creates an invocation corresponding to a method invocation. [...] -
factory
-
-
- Invocation.setter(Symbol memberName, Object argument) -
-
- Creates an invocation corresponding to a setter invocation. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- isAccessor - bool -
-
- Whether the invocation was a getter or a setter call. -
read-only
-
-
- isGetter - bool -
-
- Whether the invocation was a getter call. -If so, all three types of arguments lists are empty. -
read-only
-
-
- isMethod - bool -
-
- Whether the invocation was a method call. -
read-only
-
-
- isSetter - bool -
-
- Whether the invocation was a setter call. [...] -
read-only
-
-
- memberName - Symbol -
-
- The name of the invoked member. -
read-only
-
-
- namedArguments - Map<Symbol, dynamic> -
-
- An unmodifiable view of the named arguments of the call. [...] -
read-only
-
-
- positionalArguments - List -
-
- An unmodifiable view of the positional arguments of the call. [...] -
read-only
-
-
- typeArguments - List<Type> -
-
- An unmodifiable view of the type arguments of the call. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/Invocation.genericMethod.html b/doc/api/dart-core/Invocation/Invocation.genericMethod.html deleted file mode 100644 index e3670703..00000000 --- a/doc/api/dart-core/Invocation/Invocation.genericMethod.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - Invocation.genericMethod constructor - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Invocation.genericMethod
- -
- -
- - - -
-

Invocation.genericMethod constructor

- -
- - Invocation.genericMethod(Symbol memberName, Iterable<Type> typeArguments, Iterable<Object> positionalArguments, [ Map<Symbol, Object> namedArguments ]) -
- -
-

Creates an invocation corresponding to a generic method invocation.

-

If typeArguments is null or empty, the constructor is equivalent to -calling Invocation.method with the remaining arguments. -All the individual type arguments must be non-null.

-

If the named arguments are omitted, they default to no named arguments.

-
- -
-

Implementation

-
factory Invocation.genericMethod(Symbol memberName,
-        Iterable<Type>? typeArguments, Iterable<Object?>? positionalArguments,
-        [Map<Symbol, Object?>? namedArguments]) =>
-    _Invocation.method(
-        memberName, typeArguments, positionalArguments, namedArguments);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/Invocation.getter.html b/doc/api/dart-core/Invocation/Invocation.getter.html deleted file mode 100644 index ab229466..00000000 --- a/doc/api/dart-core/Invocation/Invocation.getter.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - Invocation.getter constructor - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Invocation.getter
- -
- -
- - - -
-

Invocation.getter constructor

- -
- - Invocation.getter(Symbol name) -
- -
-

Creates an invocation corresponding to a getter invocation.

-
- -
-

Implementation

-
factory Invocation.getter(Symbol name) = _Invocation.getter;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/Invocation.html b/doc/api/dart-core/Invocation/Invocation.html deleted file mode 100644 index 74112813..00000000 --- a/doc/api/dart-core/Invocation/Invocation.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - Invocation constructor - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Invocation
- -
- -
- - - -
-

Invocation constructor

- -
- - Invocation() -
- - -
-

Implementation

-
Invocation();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/Invocation.method.html b/doc/api/dart-core/Invocation/Invocation.method.html deleted file mode 100644 index da3b493d..00000000 --- a/doc/api/dart-core/Invocation/Invocation.method.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - Invocation.method constructor - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Invocation.method
- -
- -
- - - -
-

Invocation.method constructor

- -
- - Invocation.method(Symbol memberName, Iterable<Object> positionalArguments, [ Map<Symbol, Object> namedArguments ]) -
- -
-

Creates an invocation corresponding to a method invocation.

-

The method invocation has no type arguments. -If the named arguments are omitted, they default to no named arguments.

-
- -
-

Implementation

-
factory Invocation.method(
-        Symbol memberName, Iterable<Object?>? positionalArguments,
-        [Map<Symbol, Object?>? namedArguments]) =>
-    _Invocation.method(memberName, null, positionalArguments, namedArguments);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/Invocation.setter.html b/doc/api/dart-core/Invocation/Invocation.setter.html deleted file mode 100644 index f9052e26..00000000 --- a/doc/api/dart-core/Invocation/Invocation.setter.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - Invocation.setter constructor - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Invocation.setter
- -
- -
- - - -
-

Invocation.setter constructor

- -
- - Invocation.setter(Symbol memberName, Object argument) -
- -
-

Creates an invocation corresponding to a setter invocation.

-

This constructor accepts any Symbol as memberName, but remember that -actual setter names end in =, so the invocation corresponding -to object.member = value is

-
Invocation.setter(const Symbol("member="), value)
-
-
- -
-

Implementation

-
factory Invocation.setter(Symbol memberName, Object? argument) =
-    _Invocation.setter;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/isAccessor.html b/doc/api/dart-core/Invocation/isAccessor.html deleted file mode 100644 index 6d601d7a..00000000 --- a/doc/api/dart-core/Invocation/isAccessor.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - isAccessor property - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isAccessor
- -
- -
- - - -
-

isAccessor property

- - -
- -
- bool - isAccessor - -
- -
-

Whether the invocation was a getter or a setter call.

-
-
-

Implementation

-
bool get isAccessor => isGetter || isSetter;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/isGetter.html b/doc/api/dart-core/Invocation/isGetter.html deleted file mode 100644 index da0ecf5a..00000000 --- a/doc/api/dart-core/Invocation/isGetter.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - isGetter property - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isGetter
- -
- -
- - - -
-

isGetter property

- - -
- -
- bool - isGetter - -
- -
-

Whether the invocation was a getter call. -If so, all three types of arguments lists are empty.

-
-
-

Implementation

-
bool get isGetter;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/isMethod.html b/doc/api/dart-core/Invocation/isMethod.html deleted file mode 100644 index 02765c28..00000000 --- a/doc/api/dart-core/Invocation/isMethod.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - isMethod property - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isMethod
- -
- -
- - - -
-

isMethod property

- - -
- -
- bool - isMethod - -
- -
-

Whether the invocation was a method call.

-
-
-

Implementation

-
bool get isMethod;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/isSetter.html b/doc/api/dart-core/Invocation/isSetter.html deleted file mode 100644 index 7502e29e..00000000 --- a/doc/api/dart-core/Invocation/isSetter.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - isSetter property - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isSetter
- -
- -
- - - -
-

isSetter property

- - -
- -
- bool - isSetter - -
- -
-

Whether the invocation was a setter call.

-

If so, positionalArguments has exactly one positional -argument, namedArguments is empty, and typeArguments is -empty.

-
-
-

Implementation

-
bool get isSetter;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/memberName.html b/doc/api/dart-core/Invocation/memberName.html deleted file mode 100644 index 5ed41197..00000000 --- a/doc/api/dart-core/Invocation/memberName.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - memberName property - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
memberName
- -
- -
- - - -
-

memberName property

- - -
- -
- Symbol - memberName - -
- -
-

The name of the invoked member.

-
-
-

Implementation

-
Symbol get memberName;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/namedArguments.html b/doc/api/dart-core/Invocation/namedArguments.html deleted file mode 100644 index 18caf109..00000000 --- a/doc/api/dart-core/Invocation/namedArguments.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - namedArguments property - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
namedArguments
- -
- -
- - - -
-

namedArguments property

- - -
- -
- Map<Symbol, dynamic> - namedArguments - -
- -
-

An unmodifiable view of the named arguments of the call.

-

If the member is a getter, setter or operator, -the named arguments map is always empty.

-
-
-

Implementation

-
Map<Symbol, dynamic> get namedArguments;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/positionalArguments.html b/doc/api/dart-core/Invocation/positionalArguments.html deleted file mode 100644 index 9709fa80..00000000 --- a/doc/api/dart-core/Invocation/positionalArguments.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - positionalArguments property - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
positionalArguments
- -
- -
- - - -
-

positionalArguments property

- - -
- -
- List - positionalArguments - -
- -
-

An unmodifiable view of the positional arguments of the call.

-

If the member is a getter, the positional arguments list is -always empty.

-
-
-

Implementation

-
List<dynamic> get positionalArguments;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Invocation/typeArguments.html b/doc/api/dart-core/Invocation/typeArguments.html deleted file mode 100644 index 3888117b..00000000 --- a/doc/api/dart-core/Invocation/typeArguments.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - typeArguments property - Invocation class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
typeArguments
- -
- -
- - - -
-

typeArguments property

- - -
- -
- List<Type> - typeArguments - -
- -
-

An unmodifiable view of the type arguments of the call.

-

If the member is a getter, setter or operator, -the type argument list is always empty.

-
-
-

Implementation

-
List<Type> get typeArguments => const <Type>[];
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable-class.html b/doc/api/dart-core/Iterable-class.html deleted file mode 100644 index d4485554..00000000 --- a/doc/api/dart-core/Iterable-class.html +++ /dev/null @@ -1,690 +0,0 @@ - - - - - - - - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Iterable
- -
- -
- - - -
-

Iterable<E> class

- -
-

A collection of values, or "elements", that can be accessed sequentially.

-

The elements of the iterable are accessed by getting an Iterator -using the iterator getter, and using it to step through the values. -Stepping with the iterator is done by calling Iterator.moveNext, -and if the call returns true, -the iterator has now moved to the next element, -which is then available as Iterator.current. -If the call returns false, there are no more elements. -The Iterator.current value must only be used when the most -recent call to Iterator.moveNext has returned true. -If it is used before calling Iterator.moveNext the first time -on an iterator, or after a call has returned false or has thrown an error, -reading Iterator.current may throw or may return an arbitrary value.

-

You can create more than one iterator from the same Iterable. -Each time iterator is read, it returns a new iterator, -and different iterators can be stepped through independently, -each giving access to all the elements of the iterable. -The iterators of the same iterable should provide the same values -in the same order (unless the underlying collection is modified between -the iterations, which some collections allow).

-

You can also iterate over the elements of an Iterable -using the for-in loop construct, which uses the iterator getter behind the -scenes. -For example, you can iterate over all of the keys of a Map, -because Map keys are iterable.

-
Map kidsBooks = {'Matilda': 'Roald Dahl',
-                 'Green Eggs and Ham': 'Dr Seuss',
-                 'Where the Wild Things Are': 'Maurice Sendak'};
-for (var book in kidsBooks.keys) {
-  print('$book was written by ${kidsBooks[book]}');
-}
-
-

The List and Set classes are both Iterable, -as are most classes in the dart:collection library.

-

Some Iterable collections can be modified. -Adding an element to a List or Set will change which elements it -contains, and adding a new key to a Map changes the elements of Map.keys. -Iterators created after the change will provide the new elements, and may -or may not preserve the order of existing elements -(for example, a HashSet may completely change its order when a single -element is added).

-

Changing a collection while it is being iterated -is generally not allowed. -Doing so will break the iteration, which is typically signalled -by throwing a ConcurrentModificationError -the next time Iterator.moveNext is called. -The current value of Iterator.current getter -should not be affected by the change in the collection, -the current value was set by the previous call to Iterator.moveNext.

-

Some iterables compute their elements dynamically every time they are -iterated, like the one returned by Iterable.generate or the iterable -returned by a sync* generator function. If the computation doesn't depend -on other objects that may change, then the generated sequence should be -the same one every time it's iterated.

-

The members of Iterable, other than iterator itself, -work by looking at the elements of the iterable. -This can be implemented by running through the iterator, but some classes -may have more efficient ways of finding the result -(like last or length on a List, or contains on a Set).

-

The methods that return another Iterable (like map and where) -are all lazy - they will iterate the original (as necessary) -every time the returned iterable is iterated, and not before.

-

Since an iterable may be iterated more than once, it's not recommended to -have detectable side-effects in the iterator. -For methods like map and where, the returned iterable will execute the -argument function on every iteration, so those functions should also not -have side effects.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Iterable() -
-
- -
const
-
-
- Iterable.empty() -
-
- Creates an empty iterable. [...] -
const
-
factory
-
-
- Iterable.generate(int count, [ E generator(int index) ]) -
-
- Creates an Iterable which generates its elements dynamically. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- first - → E -
-
- Returns the first element. [...] -
read-only
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only
-
-
- length - int -
-
- Returns the number of elements in this. [...] -
read-only
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] - -
-
- cast<R>() - Iterable<R> - -
-
- Provides a view of this iterable as an iterable of R instances. [...] - -
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] - -
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] - -
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] - -
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] - -
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] - -
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] - -
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] - -
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. - -
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] - -
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] - -
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] - -
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] - -
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] - -
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] - -
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] - -
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] - -
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] - -
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] - -
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] - -
-
- toString() - String - -
-
- Returns a string representation of (some of) the elements of this. [...] -
override
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] - -
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- castFrom<S, T>(Iterable<S> source) - Iterable<T> - -
-
- Adapts source to be an Iterable<T>. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/Iterable.empty.html b/doc/api/dart-core/Iterable/Iterable.empty.html deleted file mode 100644 index d995a50f..00000000 --- a/doc/api/dart-core/Iterable/Iterable.empty.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - Iterable.empty constructor - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Iterable.empty
- -
- -
- - - -
-

Iterable<E>.empty constructor

- -
- const - Iterable<E>.empty() -
- -
-

Creates an empty iterable.

-

The empty iterable has no elements, and iterating it always stops -immediately.

-
- -
-

Implementation

-
const factory Iterable.empty() = EmptyIterable<E>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/Iterable.generate.html b/doc/api/dart-core/Iterable/Iterable.generate.html deleted file mode 100644 index d158ec64..00000000 --- a/doc/api/dart-core/Iterable/Iterable.generate.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - Iterable.generate constructor - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Iterable.generate
- -
- -
- - - -
-

Iterable<E>.generate constructor

- -
- - Iterable<E>.generate(int count, [ E generator(int index) ]) -
- -
-

Creates an Iterable which generates its elements dynamically.

-

The generated iterable has count elements, -and the element at index n is computed by calling generator(n). -Values are not cached, so each iteration computes the values again.

-

If generator is omitted, it defaults to an identity function -on integers (int x) => x, so it may only be omitted if the type -parameter allows integer values. That is, if E is a super-type -of int.

-

As an Iterable, new Iterable.generate(n, generator)) is equivalent to -const [0, ..., n - 1].map(generator).

-
- -
-

Implementation

-
factory Iterable.generate(int count, [E generator(int index)?]) {
-  if (count <= 0) return EmptyIterable<E>();
-  return _GeneratorIterable<E>(count, generator);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/Iterable.html b/doc/api/dart-core/Iterable/Iterable.html deleted file mode 100644 index 88dc5bc9..00000000 --- a/doc/api/dart-core/Iterable/Iterable.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - Iterable constructor - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Iterable
- -
- -
- - - -
-

Iterable<E> constructor

- -
- const - Iterable<E>() -
- - -
-

Implementation

-
const Iterable();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/any.html b/doc/api/dart-core/Iterable/any.html deleted file mode 100644 index 8f85167b..00000000 --- a/doc/api/dart-core/Iterable/any.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - any method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
any
- -
- -
- - - -
-

any method

- -
- bool - any -(bool test(E element)) - -
-
-

Checks whether any element of this iterable satisfies test.

-

Checks every element in iteration order, and returns true if -any of them make test return true, otherwise returns false.

-
- -
-

Implementation

-
bool any(bool test(E element)) {
-  for (E element in this) {
-    if (test(element)) return true;
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/cast.html b/doc/api/dart-core/Iterable/cast.html deleted file mode 100644 index 4aff269b..00000000 --- a/doc/api/dart-core/Iterable/cast.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - cast method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Iterable<R> - cast -<R>() - -
-
-

Provides a view of this iterable as an iterable of R instances.

-

If this iterable only contains instances of R, all operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

When the returned iterable creates a new object that depends on -the type R, e.g., from toList, it will have exactly the type R.

-
- -
-

Implementation

-
Iterable<R> cast<R>() => Iterable.castFrom<E, R>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/castFrom.html b/doc/api/dart-core/Iterable/castFrom.html deleted file mode 100644 index 0f431c34..00000000 --- a/doc/api/dart-core/Iterable/castFrom.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - castFrom method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
castFrom
- -
- -
- - - -
-

castFrom<S, T> method

- -
- Iterable<T> - castFrom -<S, T>(Iterable<S> source) - -
-
-

Adapts source to be an Iterable<T>.

-

Any time the iterable would produce an element that is not a T, -the element access will throw. If all elements of source are actually -instances of T, or if only elements that are actually instances of T -are accessed, then the resulting iterable can be used as an Iterable<T>.

-
- -
-

Implementation

-
static Iterable<T> castFrom<S, T>(Iterable<S> source) =>
-    CastIterable<S, T>(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/contains.html b/doc/api/dart-core/Iterable/contains.html deleted file mode 100644 index 865f5dd0..00000000 --- a/doc/api/dart-core/Iterable/contains.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - contains method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- bool - contains -(Object element) - -
-
-

Returns true if the collection contains an element equal to element.

-

This operation will check each element in order for being equal to -element, unless it has a more efficient way to find an element -equal to element.

-

The equality used to determine whether element is equal to an element of -the iterable defaults to the Object.== of the element.

-

Some types of iterable may have a different equality used for its elements. -For example, a Set may have a custom equality -(see Set.identity) that its contains uses. -Likewise the Iterable returned by a Map.keys call -should use the same equality that the Map uses for keys.

-
- -
-

Implementation

-
bool contains(Object? element) {
-  for (E e in this) {
-    if (e == element) return true;
-  }
-  return false;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/elementAt.html b/doc/api/dart-core/Iterable/elementAt.html deleted file mode 100644 index 574bfc08..00000000 --- a/doc/api/dart-core/Iterable/elementAt.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - elementAt method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
elementAt
- -
- -
- - - -
-

elementAt method

- -
- E - elementAt -(int index) - -
-
-

Returns the indexth element.

-

The index must be non-negative and less than length. -Index zero represents the first element (so iterable.elementAt(0) is -equivalent to iterable.first).

-

May iterate through the elements in iteration order, ignoring the -first index elements and then returning the next. -Some iterables may have a more efficient way to find the element.

-
- -
-

Implementation

-
E elementAt(int index) {
-  RangeError.checkNotNegative(index, "index");
-  int elementIndex = 0;
-  for (E element in this) {
-    if (index == elementIndex) return element;
-    elementIndex++;
-  }
-  throw RangeError.index(index, this, "index", null, elementIndex);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/every.html b/doc/api/dart-core/Iterable/every.html deleted file mode 100644 index eb04b7e8..00000000 --- a/doc/api/dart-core/Iterable/every.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - every method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
every
- -
- -
- - - -
-

every method

- -
- bool - every -(bool test(E element)) - -
-
-

Checks whether every element of this iterable satisfies test.

-

Checks every element in iteration order, and returns false if -any of them make test return false, otherwise returns true.

-
- -
-

Implementation

-
bool every(bool test(E element)) {
-  for (E element in this) {
-    if (!test(element)) return false;
-  }
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/expand.html b/doc/api/dart-core/Iterable/expand.html deleted file mode 100644 index 6ed5c8d0..00000000 --- a/doc/api/dart-core/Iterable/expand.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - expand method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
expand
- -
- -
- - - -
-

expand<T> method

- -
- Iterable<T> - expand -<T>(Iterable<T> f(E element)) - -
-
-

Expands each element of this Iterable into zero or more elements.

-

The resulting Iterable runs through the elements returned -by f for each element of this, in iteration order.

-

The returned Iterable is lazy, and calls f for each element -of this every time it's iterated.

-

Example:

-
var pairs = [[1, 2], [3, 4]];
-var flattened = pairs.expand((pair) => pair).toList();
-print(flattened); // => [1, 2, 3, 4];
-
-var input = [1, 2, 3];
-var duplicated = input.expand((i) => [i, i]).toList();
-print(duplicated); // => [1, 1, 2, 2, 3, 3]
-
-
- -
-

Implementation

-
Iterable<T> expand<T>(Iterable<T> f(E element)) =>
-    ExpandIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/first.html b/doc/api/dart-core/Iterable/first.html deleted file mode 100644 index 486d523c..00000000 --- a/doc/api/dart-core/Iterable/first.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - first property - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first - -
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  return it.current;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/firstWhere.html b/doc/api/dart-core/Iterable/firstWhere.html deleted file mode 100644 index a8e998ea..00000000 --- a/doc/api/dart-core/Iterable/firstWhere.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - firstWhere method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstWhere
- -
- -
- - - -
-

firstWhere method

- -
- E - firstWhere -(bool test(E element), { E orElse() }) - -
-
-

Returns the first element that satisfies the given predicate test.

-

Iterates through elements and returns the first to satisfy test.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E firstWhere(bool test(E element), {E orElse()?}) {
-  for (E element in this) {
-    if (test(element)) return element;
-  }
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/fold.html b/doc/api/dart-core/Iterable/fold.html deleted file mode 100644 index 41f688ec..00000000 --- a/doc/api/dart-core/Iterable/fold.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - fold method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
fold
- -
- -
- - - -
-

fold<T> method

- -
- T - fold -<T>(T initialValue, T combine(T previousValue, E element)) - -
-
-

Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value

-

Uses initialValue as the initial value, -then iterates through the elements and updates the value with -each element using the combine function, as if by:

-
var value = initialValue;
-for (E element in this) {
-  value = combine(value, element);
-}
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.fold(0, (prev, element) => prev + element);
-
-
- -
-

Implementation

-
T fold<T>(T initialValue, T combine(T previousValue, E element)) {
-  var value = initialValue;
-  for (E element in this) value = combine(value, element);
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/followedBy.html b/doc/api/dart-core/Iterable/followedBy.html deleted file mode 100644 index a500b227..00000000 --- a/doc/api/dart-core/Iterable/followedBy.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - followedBy method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
followedBy
- -
- -
- - - -
-

followedBy method

- -
- Iterable<E> - followedBy -(Iterable<E> other) - -
-
-

Returns the lazy concatentation of this iterable and other.

-

The returned iterable will provide the same elements as this iterable, -and, after that, the elements of other, in the same order as in the -original iterables.

-
- -
-

Implementation

-
Iterable<E> followedBy(Iterable<E> other) {
-  var self = this; // TODO(lrn): Remove when we can promote `this`.
-  if (self is EfficientLengthIterable<E>) {
-    return FollowedByIterable<E>.firstEfficient(self, other);
-  }
-  return FollowedByIterable<E>(this, other);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/forEach.html b/doc/api/dart-core/Iterable/forEach.html deleted file mode 100644 index 24a9bc2e..00000000 --- a/doc/api/dart-core/Iterable/forEach.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - forEach method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void f(E element)) - -
-
-

Applies the function f to each element of this collection in iteration -order.

-
- -
-

Implementation

-
void forEach(void f(E element)) {
-  for (E element in this) f(element);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/isEmpty.html b/doc/api/dart-core/Iterable/isEmpty.html deleted file mode 100644 index a002c062..00000000 --- a/doc/api/dart-core/Iterable/isEmpty.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - isEmpty property - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty - -
- -
-

Returns true if there are no elements in this collection.

-

May be computed by checking if iterator.moveNext() returns false.

-
-
-

Implementation

-
bool get isEmpty => !iterator.moveNext();
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/isNotEmpty.html b/doc/api/dart-core/Iterable/isNotEmpty.html deleted file mode 100644 index c8b5c793..00000000 --- a/doc/api/dart-core/Iterable/isNotEmpty.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - isNotEmpty property - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty - -
- -
-

Returns true if there is at least one element in this collection.

-

May be computed by checking if iterator.moveNext() returns true.

-
-
-

Implementation

-
bool get isNotEmpty => !isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/iterator.html b/doc/api/dart-core/Iterable/iterator.html deleted file mode 100644 index e123fa5b..00000000 --- a/doc/api/dart-core/Iterable/iterator.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - iterator property - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator - -
- -
-

Returns a new Iterator that allows iterating the elements of this -Iterable.

-

Iterable classes may specify the iteration order of their elements -(for example List always iterate in index order), -or they may leave it unspecified (for example a hash-based Set -may iterate in any order).

-

Each time iterator is read, it returns a new iterator, -which can be used to iterate through all the elements again. -The iterators of the same iterable can be stepped through independently, -but should return the same elements in the same order, -as long as the underlying collection isn't changed.

-

Modifying the collection may cause new iterators to produce -different elements, and may change the order of existing elements. -A List specifies its iteration order precisely, -so modifying the list changes the iteration order predictably. -A hash-based Set may change its iteration order completely -when adding a new element to the set.

-

Modifying the underlying collection after creating the new iterator -may cause an error the next time Iterator.moveNext is called -on that iterator. -Any modifiable iterable class should specify which operations will -break iteration.

-
-
-

Implementation

-
Iterator<E> get iterator;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/join.html b/doc/api/dart-core/Iterable/join.html deleted file mode 100644 index 8d4ba496..00000000 --- a/doc/api/dart-core/Iterable/join.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - join method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
join
- -
- -
- - - -
-

join method

- -
- String - join -([String separator = "" ]) - -
-
-

Converts each element to a String and concatenates the strings.

-

Iterates through elements of this iterable, -converts each one to a String by calling Object.toString, -and then concatenates the strings, with the -separator string interleaved between the elements.

-
- -
-

Implementation

-
String join([String separator = ""]) {
-  Iterator<E> iterator = this.iterator;
-  if (!iterator.moveNext()) return "";
-  StringBuffer buffer = StringBuffer();
-  if (separator == null || separator == "") {
-    do {
-      buffer.write(iterator.current.toString());
-    } while (iterator.moveNext());
-  } else {
-    buffer.write(iterator.current.toString());
-    while (iterator.moveNext()) {
-      buffer.write(separator);
-      buffer.write(iterator.current.toString());
-    }
-  }
-  return buffer.toString();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/last.html b/doc/api/dart-core/Iterable/last.html deleted file mode 100644 index cc13eb60..00000000 --- a/doc/api/dart-core/Iterable/last.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - last property - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last - -
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  E result;
-  do {
-    result = it.current;
-  } while (it.moveNext());
-  return result;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/lastWhere.html b/doc/api/dart-core/Iterable/lastWhere.html deleted file mode 100644 index 4752ff57..00000000 --- a/doc/api/dart-core/Iterable/lastWhere.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - lastWhere method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastWhere
- -
- -
- - - -
-

lastWhere method

- -
- E - lastWhere -(bool test(E element), { E orElse() }) - -
-
-

Returns the last element that satisfies the given predicate test.

-

An iterable that can access its elements directly may check its -elements in any order (for example a list starts by checking the -last element and then moves towards the start of the list). -The default implementation iterates elements in iteration order, -checks test(element) for each, -and finally returns that last one that matched.

-

If no element satisfies test, the result of invoking the orElse -function is returned. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E lastWhere(bool test(E element), {E orElse()?}) {
-  late E result;
-  bool foundMatching = false;
-  for (E element in this) {
-    if (test(element)) {
-      result = element;
-      foundMatching = true;
-    }
-  }
-  if (foundMatching) return result;
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/length.html b/doc/api/dart-core/Iterable/length.html deleted file mode 100644 index a62f6991..00000000 --- a/doc/api/dart-core/Iterable/length.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - length property - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length - -
- -
-

Returns the number of elements in this.

-

Counting all elements may involve iterating through all elements and can -therefore be slow. -Some iterables have a more efficient way to find the number of elements.

-
-
-

Implementation

-
int get length {
-  assert(this is! EfficientLengthIterable);
-  int count = 0;
-  Iterator it = iterator;
-  while (it.moveNext()) {
-    count++;
-  }
-  return count;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/map.html b/doc/api/dart-core/Iterable/map.html deleted file mode 100644 index 2b265517..00000000 --- a/doc/api/dart-core/Iterable/map.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - map method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<T> method

- -
- Iterable<T> - map -<T>(T f(E e)) - -
-
-

Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order.

-

This method returns a view of the mapped elements. As long as the -returned Iterable is not iterated over, the supplied function f will -not be invoked. The transformed elements will not be cached. Iterating -multiple times over the returned Iterable will invoke the supplied -function f multiple times on the same element.

-

Methods on the returned iterable are allowed to omit calling f -on any element where the result isn't needed. -For example, elementAt may call f only once.

-
- -
-

Implementation

-
Iterable<T> map<T>(T f(E e)) => MappedIterable<E, T>(this, f);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/reduce.html b/doc/api/dart-core/Iterable/reduce.html deleted file mode 100644 index def546d1..00000000 --- a/doc/api/dart-core/Iterable/reduce.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - reduce method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
reduce
- -
- -
- - - -
-

reduce method

- -
- E - reduce -(E combine(E value E element)) - -
-
-

Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function.

-

The iterable must have at least one element. -If it has only one element, that element is returned.

-

Otherwise this method starts with the first element from the iterator, -and then combines it with the remaining elements in iteration order, -as if by:

-
E value = iterable.first;
-iterable.skip(1).forEach((element) {
-  value = combine(value, element);
-});
-return value;
-
-

Example of calculating the sum of an iterable:

-
iterable.reduce((value, element) => value + element);
-
-
- -
-

Implementation

-
E reduce(E combine(E value, E element)) {
-  Iterator<E> iterator = this.iterator;
-  if (!iterator.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  E value = iterator.current;
-  while (iterator.moveNext()) {
-    value = combine(value, iterator.current);
-  }
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/single.html b/doc/api/dart-core/Iterable/single.html deleted file mode 100644 index b893982c..00000000 --- a/doc/api/dart-core/Iterable/single.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - single property - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
single
- -
- -
- - - -
-

single property

- - -
- -
- E - single - -
- -
-

Checks that this iterable has only one element, and returns that element.

-

Throws a StateError if this is empty or has more than one element.

-
-
-

Implementation

-
E get single {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) throw IterableElementError.noElement();
-  E result = it.current;
-  if (it.moveNext()) throw IterableElementError.tooMany();
-  return result;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/singleWhere.html b/doc/api/dart-core/Iterable/singleWhere.html deleted file mode 100644 index 29a72cb6..00000000 --- a/doc/api/dart-core/Iterable/singleWhere.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - singleWhere method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
singleWhere
- -
- -
- - - -
-

singleWhere method

- -
- E - singleWhere -(bool test(E element), { E orElse() }) - -
-
-

Returns the single element that satisfies test.

-

Checks elements to see if test(element) returns true. -If exactly one element satisfies test, that element is returned. -If more than one matching element is found, throws StateError. -If no matching element is found, returns the result of orElse. -If orElse is omitted, it defaults to throwing a StateError.

-
- -
-

Implementation

-
E singleWhere(bool test(E element), {E orElse()?}) {
-  late E result;
-  bool foundMatching = false;
-  for (E element in this) {
-    if (test(element)) {
-      if (foundMatching) {
-        throw IterableElementError.tooMany();
-      }
-      result = element;
-      foundMatching = true;
-    }
-  }
-  if (foundMatching) return result;
-  if (orElse != null) return orElse();
-  throw IterableElementError.noElement();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/skip.html b/doc/api/dart-core/Iterable/skip.html deleted file mode 100644 index 6a20685d..00000000 --- a/doc/api/dart-core/Iterable/skip.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - skip method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
skip
- -
- -
- - - -
-

skip method

- -
- Iterable<E> - skip -(int count) - -
-
-

Returns an Iterable that provides all but the first count elements.

-

When the returned iterable is iterated, it starts iterating over this, -first skipping past the initial count elements. -If this has fewer than count elements, then the resulting Iterable is -empty. -After that, the remaining elements are iterated in the same order as -in this iterable.

-

Some iterables may be able to find later elements without first iterating -through earlier elements, for example when iterating a List. -Such iterables are allowed to ignore the initial skipped elements.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> skip(int count) {
-  return SkipIterable<E>(this, count);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/skipWhile.html b/doc/api/dart-core/Iterable/skipWhile.html deleted file mode 100644 index 8e1a45a5..00000000 --- a/doc/api/dart-core/Iterable/skipWhile.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - skipWhile method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
skipWhile
- -
- -
- - - -
-

skipWhile method

- -
- Iterable<E> - skipWhile -(bool test(E value)) - -
-
-

Returns an Iterable that skips leading elements while test is satisfied.

-

The filtering happens lazily. Every new Iterator of the returned -iterable iterates over all elements of this.

-

The returned iterable provides elements by iterating this iterable, -but skipping over all initial elements where test(element) returns -true. If all elements satisfy test the resulting iterable is empty, -otherwise it iterates the remaining elements in their original order, -starting with the first element for which test(element) returns false.

-
- -
-

Implementation

-
Iterable<E> skipWhile(bool test(E value)) {
-  return SkipWhileIterable<E>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/take.html b/doc/api/dart-core/Iterable/take.html deleted file mode 100644 index ac0d4987..00000000 --- a/doc/api/dart-core/Iterable/take.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - take method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
take
- -
- -
- - - -
-

take method

- -
- Iterable<E> - take -(int count) - -
-
-

Returns a lazy iterable of the count first elements of this iterable.

-

The returned Iterable may contain fewer than count elements, if this -contains fewer than count elements.

-

The elements can be computed by stepping through iterator until count -elements have been seen.

-

The count must not be negative.

-
- -
-

Implementation

-
Iterable<E> take(int count) {
-  return TakeIterable<E>(this, count);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/takeWhile.html b/doc/api/dart-core/Iterable/takeWhile.html deleted file mode 100644 index 12fc0b10..00000000 --- a/doc/api/dart-core/Iterable/takeWhile.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - takeWhile method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
takeWhile
- -
- -
- - - -
-

takeWhile method

- -
- Iterable<E> - takeWhile -(bool test(E value)) - -
-
-

Returns a lazy iterable of the leading elements satisfying test.

-

The filtering happens lazily. Every new iterator of the returned -iterable starts iterating over the elements of this.

-

The elements can be computed by stepping through iterator until an -element is found where test(element) is false. At that point, -the returned iterable stops (its moveNext() returns false).

-
- -
-

Implementation

-
Iterable<E> takeWhile(bool test(E value)) {
-  return TakeWhileIterable<E>(this, test);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/toList.html b/doc/api/dart-core/Iterable/toList.html deleted file mode 100644 index bbd764a1..00000000 --- a/doc/api/dart-core/Iterable/toList.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - toList method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toList
- -
- -
- - - -
-

toList method

- -
- List<E> - toList -({bool growable: true }) - -
-
-

Creates a List containing the elements of this Iterable.

-

The elements are in iteration order. -The list is fixed-length if growable is false.

-
- -
-

Implementation

-
List<E> toList({bool growable = true}) {
-  return List<E>.of(this, growable: growable);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/toSet.html b/doc/api/dart-core/Iterable/toSet.html deleted file mode 100644 index 4270ca34..00000000 --- a/doc/api/dart-core/Iterable/toSet.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - toSet method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSet
- -
- -
- - - -
-

toSet method

- -
- Set<E> - toSet -() - -
-
-

Creates a Set containing the same elements as this iterable.

-

The set may contain fewer elements than the iterable, -if the iterable contains an element more than once, -or it contains one or more elements that are equal. -The order of the elements in the set is not guaranteed to be the same -as for the iterable.

-
- -
-

Implementation

-
Set<E> toSet() => Set<E>.of(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/toString.html b/doc/api/dart-core/Iterable/toString.html deleted file mode 100644 index 4f343c86..00000000 --- a/doc/api/dart-core/Iterable/toString.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - toString method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of (some of) the elements of this.

-

Elements are represented by their own toString results.

-

The default representation always contains the first three elements. -If there are less than a hundred elements in the iterable, it also -contains the last two elements.

-

If the resulting string isn't above 80 characters, more elements are -included from the start of the iterable.

-

The conversion may omit calling toString on some elements if they -are known to not occur in the output, and it may stop iterating after -a hundred elements.

-
- -
-

Implementation

-
String toString() => IterableBase.iterableToShortString(this, '(', ')');
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/where.html b/doc/api/dart-core/Iterable/where.html deleted file mode 100644 index 25873485..00000000 --- a/doc/api/dart-core/Iterable/where.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - where method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
where
- -
- -
- - - -
-

where method

- -
- Iterable<E> - where -(bool test(E element)) - -
-
-

Returns a new lazy Iterable with all elements that satisfy the -predicate test.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -As long as the returned Iterable is not iterated over, -the supplied function test will not be invoked. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may invoke the supplied -function test multiple times on the same element.

-
- -
-

Implementation

-
Iterable<E> where(bool test(E element)) => WhereIterable<E>(this, test);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterable/whereType.html b/doc/api/dart-core/Iterable/whereType.html deleted file mode 100644 index 5e5f2163..00000000 --- a/doc/api/dart-core/Iterable/whereType.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - whereType method - Iterable class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
whereType
- -
- -
- - - -
-

whereType<T> method

- -
- Iterable<T> - whereType -<T>() - -
-
-

Returns a new lazy Iterable with all elements that have type T.

-

The matching elements have the same order in the returned iterable -as they have in iterator.

-

This method returns a view of the mapped elements. -Iterating will not cache results, and thus iterating multiple times over -the returned Iterable may yield different results, -if the underlying elements change between iterations.

-
- -
-

Implementation

-
Iterable<T> whereType<T>() => WhereTypeIterable<T>(this);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterator-class.html b/doc/api/dart-core/Iterator-class.html deleted file mode 100644 index 98d03b9f..00000000 --- a/doc/api/dart-core/Iterator-class.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - - - Iterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Iterator
- -
- -
- - - -
-

Iterator<E> class

- -
-

An interface for getting items, one at a time, from an object.

-

The for-in construct transparently uses Iterator to test for the end -of the iteration, and to get each item (or element).

-

If the object iterated over is changed during the iteration, the -behavior is unspecified.

-

The Iterator is initially positioned before the first element. -Before accessing the first element the iterator must thus be advanced using -moveNext to point to the first element. -If no element is left, then moveNext returns false, -and all further calls to moveNext will also return false.

-

The current value must not be accessed before calling moveNext -or after a call to moveNext has returned false.

-

A typical usage of an Iterator looks as follows:

-
var it = obj.iterator;
-while (it.moveNext()) {
-  use(it.current);
-}
-
-

See also: -Iteration -in the library tour

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Iterator() -
-
- -
-
-
- -
-

Properties

- -
-
- current - → E -
-
- Returns the current element. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- moveNext() - bool - -
-
- Advances the iterator to the next element of the iteration. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterator/Iterator.html b/doc/api/dart-core/Iterator/Iterator.html deleted file mode 100644 index 676b3e5d..00000000 --- a/doc/api/dart-core/Iterator/Iterator.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - Iterator constructor - Iterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Iterator
- -
- -
- - - -
-

Iterator<E> constructor

- -
- - Iterator<E>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterator/current.html b/doc/api/dart-core/Iterator/current.html deleted file mode 100644 index 5f806526..00000000 --- a/doc/api/dart-core/Iterator/current.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - current property - Iterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
current
- -
- -
- - - -
-

current property

- - -
- -
- E - current - -
- -
-

Returns the current element.

-

If the iterator has not yet been moved to the first element -(moveNext has not been called yet), -or if the iterator has been moved past the last element of the Iterable -(moveNext has returned false), -then current is unspecified. -An Iterator may either throw or return an iterator specific default value -in that case.

-

The current getter should keep its value until the next call to -moveNext, even if an underlying collection changes. -After a successful call to moveNext, the user doesn't need to cache -the current value, but can keep reading it from the iterator.

-
-
-

Implementation

-
E get current;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Iterator/moveNext.html b/doc/api/dart-core/Iterator/moveNext.html deleted file mode 100644 index 4bd5a871..00000000 --- a/doc/api/dart-core/Iterator/moveNext.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - moveNext method - Iterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
moveNext
- -
- -
- - - -
-

moveNext method

- -
- bool - moveNext -() - -
-
-

Advances the iterator to the next element of the iteration.

-

Should be called before reading current. -It the call to moveNext returns true, -then current will contain the next element of the iteration -until moveNext is called again. -If the call returns false, there are no further elements -and current should not be used any more.

-

It is safe to call moveNext after it has already returned false, -but it must keep returning false and not have any other effect.

-

A call to moveNext may throw for various reasons, -including a concurrent change to an underlying collection. -If that happens, the iterator may be in an inconsistent -state, and any further behavior of the iterator is unspecified, -including the effect of reading current.

-
- -
-

Implementation

-
bool moveNext();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/LateInitializationError-class.html b/doc/api/dart-core/LateInitializationError-class.html deleted file mode 100644 index 3abfb5ca..00000000 --- a/doc/api/dart-core/LateInitializationError-class.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - LateInitializationError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
LateInitializationError
- -
- -
- - - -
-

LateInitializationError class

- -
-

Error thrown when a late variable is accessed in an invalid manner.

-

A late variable must be initialized before it's read. -If a late variable has no initializer expression and has not -been written to, then reading it will throw a -late initialization error.

-

A late final variable with no initializer expression may only -be written to once. -If it is written to again, the writing will throw a -late initialization error.

-
- -
-
-
Inheritance
-
- - - - - -
-
- - -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List-class.html b/doc/api/dart-core/List-class.html deleted file mode 100644 index f1834719..00000000 --- a/doc/api/dart-core/List-class.html +++ /dev/null @@ -1,1029 +0,0 @@ - - - - - - - - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
List
- -
- -
- - - -
-

List<E> class

- -
-

An indexable collection of objects with a length.

-

Subclasses of this class implement different kinds of lists. -The most common kinds of lists are:

-
    -
  • -

    Fixed-length list. -An error occurs when attempting to use operations -that can change the length of the list.

    -
  • -
  • -

    Growable list. Full implementation of the API defined in this class.

    -
  • -
-

The default growable list, as created by [], keeps -an internal buffer, and grows that buffer when necessary. This guarantees -that a sequence of add operations will each execute in amortized constant -time. Setting the length directly may take time proportional to the new -length, and may change the internal capacity so that a following add -operation will need to immediately increase the buffer capacity. -Other list implementations may have different performance behavior.

-

The following code illustrates that some List implementations support -only a subset of the API.

-
List<int> fixedLengthList = new List(5);
-fixedLengthList.length = 0;  // Error
-fixedLengthList.add(499);    // Error
-fixedLengthList[0] = 87;
-List<int> growableList = [1, 2];
-growableList.length = 0;
-growableList.add(499);
-growableList[0] = 87;
-
-

Lists are Iterable. Iteration occurs over values in index order. Changing -the values does not affect iteration, but changing the valid -indices—that is, changing the list's length—between iteration -steps causes a ConcurrentModificationError. This means that only growable -lists can throw ConcurrentModificationError. If the length changes -temporarily and is restored before continuing the iteration, the iterator -does not detect it.

-

It is generally not allowed to modify the list's length (adding or removing -elements) while an operation on the list is being performed, -for example during a call to forEach or sort. -Changing the list's length while it is being iterated, either by iterating it -directly or through iterating an Iterable that is backed by the list, will -break the iteration.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- List([int length ]) -
-
- Creates a list of the given length. [...] -
factory
-
-
- List.empty({bool growable: false }) -
-
- Creates a new empty list. [...] -
factory
-
-
- List.filled(int length, E fill, { bool growable: false }) -
-
- Creates a list of the given length with fill at each position. [...] -
factory
-
-
- List.from(Iterable elements, { bool growable: true }) -
-
- Creates a list containing all elements. [...] -
factory
-
-
- List.generate(int length, E generator(int index), { bool growable: true }) -
-
- Generates a list of values. [...] -
factory
-
-
- List.of(Iterable<E> elements, { bool growable: true }) -
-
- Creates a list from elements. [...] -
factory
-
-
- List.unmodifiable(Iterable elements) -
-
- Creates an unmodifiable list containing all elements. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- first - ↔ E -
-
- Returns the first element. [...] -
read / write, inherited-getter
-
-
- last - ↔ E -
-
- Returns the last element. [...] -
read / write, inherited-getter
-
-
- length - int -
-
- The number of objects in this list. [...] -
read / write
-
-
- reversed - Iterable<E> -
-
- Returns an Iterable of the objects in this list in reverse order. -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- iterator - Iterator<E> -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E value) - → void - -
-
- Adds value to the end of this list, -extending the length by one. [...] - -
-
- addAll(Iterable<E> iterable) - → void - -
-
- Appends all objects of iterable to the end of this list. [...] - -
-
- asMap() - Map<int, E> - -
-
- Returns an unmodifiable Map view of this. [...] - -
-
- cast<R>() - List<R> - -
-
- Returns a view of this list as a list of R instances. [...] -
override
-
-
- clear() - → void - -
-
- Removes all objects from this list; -the length of the list becomes zero. [...] - -
-
- fillRange(int start, [ int end, [ E fillValue ]) - → void - -
-
- Sets the objects in the range start inclusive to end exclusive -to the given fillValue. [...] - -
-
- getRange(int start int end) - Iterable<E> - -
-
- Returns an Iterable that iterates over the objects in the range -start inclusive to end exclusive. [...] - -
-
- indexOf(E element, [ int start = 0 ]) - int - -
-
- Returns the first index of element in this list. [...] - -
-
- indexWhere(bool test(E element), [ int start = 0 ]) - int - -
-
- Returns the first index in the list that satisfies the provided test. [...] - -
-
- insert(int index, E element) - → void - -
-
- Inserts the object at position index in this list. [...] - -
-
- insertAll(int index, Iterable<E> iterable) - → void - -
-
- Inserts all objects of iterable at position index in this list. [...] - -
-
- lastIndexOf(E element, [ int start ]) - int - -
-
- Returns the last index of element in this list. [...] - -
-
- lastIndexWhere(bool test(E element), [ int start ]) - int - -
-
- Returns the last index in the list that satisfies the provided test. [...] - -
-
- remove(Object value) - bool - -
-
- Removes the first occurrence of value from this list. [...] - -
-
- removeAt(int index) - → E - -
-
- Removes the object at position index from this list. [...] - -
-
- removeLast() - → E - -
-
- Pops and returns the last object in this list. [...] - -
-
- removeRange(int start int end) - → void - -
-
- Removes the objects in the range start inclusive to end exclusive. [...] - -
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all objects from this list that satisfy test. [...] - -
-
- replaceRange(int start, int end, Iterable<E> replacement) - → void - -
-
- Removes the objects in the range start inclusive to end exclusive -and inserts the contents of replacement in its place. [...] - -
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all objects from this list that fail to satisfy test. [...] - -
-
- setAll(int index, Iterable<E> iterable) - → void - -
-
- Overwrites objects of this with the objects of iterable, starting -at position index in this list. [...] - -
-
- setRange(int start, int end, Iterable<E> iterable, [ int skipCount = 0 ]) - → void - -
-
- Copies the objects of iterable, skipping skipCount objects first, -into the range start, inclusive, to end, exclusive, of the list. [...] - -
-
- shuffle([Random random ]) - → void - -
-
- Shuffles the elements of this list randomly. - -
-
- sort([int compare(E a E b) ]) - → void - -
-
- Sorts this list according to the order specified by the compare function. [...] - -
-
- sublist(int start, [ int end ]) - List<E> - -
-
- Returns a new list containing the elements between start and end. [...] - -
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator +(List<E> other) - List<E> - -
-
- Returns the concatenation of this list and other. [...] - -
-
- operator ==(Object other) - bool - -
-
- Whether this list is equal to other. [...] -
override
-
-
- operator [](int index) - → E - -
-
- Returns the object at the given index in the list -or throws a RangeError if index is out of bounds. - -
-
- operator []=(int index, E value) - → void - -
-
- Sets the value at the given index in the list to value -or throws a RangeError if index is out of bounds. - -
-
-
- - -
-

Static Methods

-
-
- castFrom<S, T>(List<S> source) - List<T> - -
-
- Adapts source to be a List<T>. [...] -
override
-
-
- copyRange<T>(List<T> target, [ int at, List<T> source, [ int start int end ]) - → void - -
-
- Copy a range of one list into another list. [...] - -
-
- writeIterable<T>(List<T> target, int at, Iterable<T> source) - → void - -
-
- Write the elements of an iterable into a list. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/List.empty.html b/doc/api/dart-core/List/List.empty.html deleted file mode 100644 index 9bd882f1..00000000 --- a/doc/api/dart-core/List/List.empty.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - List.empty constructor - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
List.empty
- -
- -
- - - -
-

List<E>.empty constructor

- -
-
-
    -
  1. @Since("2.8")
  2. -
-
- - List<E>.empty({bool growable: false }) -
- -
-

Creates a new empty list.

-

If growable is false, which is the default, -the list is a fixed-length list of length zero. -If growable is true, the list is growable and equivalent to <E>[].

-
- -
-

Implementation

-
@Since("2.8")
-external factory List.empty({bool growable = false});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/List.filled.html b/doc/api/dart-core/List/List.filled.html deleted file mode 100644 index 2c40bb17..00000000 --- a/doc/api/dart-core/List/List.filled.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - List.filled constructor - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
List.filled
- -
- -
- - - -
-

List<E>.filled constructor

- -
- - List<E>.filled(int length, E fill, { bool growable: false }) -
- -
-

Creates a list of the given length with fill at each position.

-

The length must be a non-negative integer.

-

Example:

-
new List<int>.filled(3, 0, growable: true); // [0, 0, 0]
-
-

The created list is fixed-length if growable is false (the default) -and growable if growable is true. -If the list is growable, changing its length will not initialize new -entries with fill. -After being created and filled, the list is no different from any other -growable or fixed-length list created using List.

-

All elements of the returned list share the same fill value.

-
var shared = new List.filled(3, []);
-shared[0].add(499);
-print(shared);  // => [[499], [499], [499]]
-
-

You can use List.generate to create a list with a new object at -each position.

-
var unique = new List.generate(3, (_) => []);
-unique[0].add(499);
-print(unique); // => [[499], [], []]
-
-
- -
-

Implementation

-
external factory List.filled(int length, E fill, {bool growable = false});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/List.from.html b/doc/api/dart-core/List/List.from.html deleted file mode 100644 index 5a990f24..00000000 --- a/doc/api/dart-core/List/List.from.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - List.from constructor - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
List.from
- -
- -
- - - -
-

List<E>.from constructor

- -
- - List<E>.from(Iterable elements, { bool growable: true }) -
- -
-

Creates a list containing all elements.

-

The Iterator of elements provides the order of the elements.

-

All the elements should be instances of E. -The elements iterable itself may have any element type, so this -constructor can be used to down-cast a List, for example as:

-
List<SuperType> superList = ...;
-List<SubType> subList =
-    new List<SubType>.from(superList.whereType<SubType>());
-
-

This constructor creates a growable list when growable is true; -otherwise, it returns a fixed-length list.

-
- -
-

Implementation

-
external factory List.from(Iterable elements, {bool growable = true});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/List.generate.html b/doc/api/dart-core/List/List.generate.html deleted file mode 100644 index 4775c95a..00000000 --- a/doc/api/dart-core/List/List.generate.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - List.generate constructor - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
List.generate
- -
- -
- - - -
-

List<E>.generate constructor

- -
- - List<E>.generate(int length, E generator(int index), { bool growable: true }) -
- -
-

Generates a list of values.

-

Creates a list with length positions and fills it with values created by -calling generator for each index in the range 0 .. length - 1 -in increasing order.

-
List<int>.generate(3, (int index) => index * index); // [0, 1, 4]
-
-

The created list is fixed-length if growable is set to false.

-

The length must be non-negative.

-
- -
-

Implementation

-
external factory List.generate(int length, E generator(int index),
-    {bool growable = true});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/List.html b/doc/api/dart-core/List/List.html deleted file mode 100644 index 17331f24..00000000 --- a/doc/api/dart-core/List/List.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - List constructor - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
List
- -
- -
- - - -
-

List<E> constructor

- -
- - List<E>([int length ]) -
- -
-

Creates a list of the given length.

-

This constructor will throw an exception if E is not a nullable type. -In this case, another constructor such as List.filled must be used -instead.

-

The created list is fixed-length if length is provided.

-
List fixedLengthList = new List(3);
-fixedLengthList.length;     // 3
-fixedLengthList.length = 1; // Error
-
-

The list has length 0 and is growable if length is omitted.

-
List growableList = [];
-growableList.length; // 0;
-growableList.length = 3;
-
-

To create a growable list with a given length, for a nullable element type, -just assign the length right after creation:

-
List growableList = []..length = 500;
-
-

For a non-nullable element type, an alternative is the following:

-
List<int> growableList = List<int>.filled(500, 0, growable: true);
-
-

The length must not be negative or null, if it is provided.

-

If the element type is not nullable, length must not be greater than -zero.

-

This constructor cannot be used in null-safe code. -Use List.filled to create a non-empty list. -This requires a fill value to initialize the list elements with. -To create an empty list, use [] for a growable list or -List.empty for a fixed length list (or where growability is determined -at run-time).

-
- -
-

Implementation

-
external factory List([int? length]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/List.of.html b/doc/api/dart-core/List/List.of.html deleted file mode 100644 index ddd58547..00000000 --- a/doc/api/dart-core/List/List.of.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - List.of constructor - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
List.of
- -
- -
- - - -
-

List<E>.of constructor

- -
- - List<E>.of(Iterable<E> elements, { bool growable: true }) -
- -
-

Creates a list from elements.

-

The Iterator of elements provides the order of the elements.

-

This constructor creates a growable list when growable is true; -otherwise, it returns a fixed-length list.

-
- -
-

Implementation

-
external factory List.of(Iterable<E> elements, {bool growable = true});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/List.unmodifiable.html b/doc/api/dart-core/List/List.unmodifiable.html deleted file mode 100644 index fae0b908..00000000 --- a/doc/api/dart-core/List/List.unmodifiable.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - List.unmodifiable constructor - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
List.unmodifiable
- -
- -
- - - -
-

List<E>.unmodifiable constructor

- -
- - List<E>.unmodifiable(Iterable elements) -
- -
-

Creates an unmodifiable list containing all elements.

-

The Iterator of elements provides the order of the elements.

-

An unmodifiable list cannot have its length or elements changed. -If the elements are themselves immutable, then the resulting list -is also immutable.

-
- -
-

Implementation

-
external factory List.unmodifiable(Iterable elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/add.html b/doc/api/dart-core/List/add.html deleted file mode 100644 index a31e8da8..00000000 --- a/doc/api/dart-core/List/add.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - add method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(E value) - -
-
-

Adds value to the end of this list, -extending the length by one.

-

Throws an UnsupportedError if the list is fixed-length.

-
- -
-

Implementation

-
void add(E value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/addAll.html b/doc/api/dart-core/List/addAll.html deleted file mode 100644 index 91a674f3..00000000 --- a/doc/api/dart-core/List/addAll.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - addAll method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> iterable) - -
-
-

Appends all objects of iterable to the end of this list.

-

Extends the length of the list by the number of objects in iterable. -Throws an UnsupportedError if this list is fixed-length.

-
- -
-

Implementation

-
void addAll(Iterable<E> iterable);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/asMap.html b/doc/api/dart-core/List/asMap.html deleted file mode 100644 index 47329865..00000000 --- a/doc/api/dart-core/List/asMap.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - asMap method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
asMap
- -
- -
- - - -
-

asMap method

- -
- Map<int, E> - asMap -() - -
-
-

Returns an unmodifiable Map view of this.

-

The map uses the indices of this list as keys and the corresponding objects -as values. The Map.keys Iterable iterates the indices of this list -in numerical order.

-
List<String> words = ['fee', 'fi', 'fo', 'fum'];
-Map<int, String> map = words.asMap();
-map[0] + map[1];   // 'feefi';
-map.keys.toList(); // [0, 1, 2, 3]
-
-
- -
-

Implementation

-
Map<int, E> asMap();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/cast.html b/doc/api/dart-core/List/cast.html deleted file mode 100644 index e400018b..00000000 --- a/doc/api/dart-core/List/cast.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - cast method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- List<R> - cast -<R>() -
override
-
-
-

Returns a view of this list as a list of R instances.

-

If this list contains only instances of R, all read operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

Elements added to the list (e.g., by using add or addAll) -must be instance of R to be valid arguments to the adding function, -and they must be instances of E as well to be accepted by -this list as well.

-

Typically implemented as List.castFrom<E, R>(this).

-
- -
-

Implementation

-
List<R> cast<R>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/castFrom.html b/doc/api/dart-core/List/castFrom.html deleted file mode 100644 index a16ab639..00000000 --- a/doc/api/dart-core/List/castFrom.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - castFrom method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
castFrom
- -
- -
- - - -
-

castFrom<S, T> method

- -
- List<T> - castFrom -<S, T>(List<S> source) -
override
-
-
-

Adapts source to be a List<T>.

-

Any time the list would produce an element that is not a T, -the element access will throw.

-

Any time a T value is attempted stored into the adapted list, -the store will throw unless the value is also an instance of S.

-

If all accessed elements of source are actually instances of T, -and if all elements stored into the returned list are actually instance -of S, -then the returned list can be used as a List<T>.

-
- -
-

Implementation

-
static List<T> castFrom<S, T>(List<S> source) => CastList<S, T>(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/clear.html b/doc/api/dart-core/List/clear.html deleted file mode 100644 index 0c129fbc..00000000 --- a/doc/api/dart-core/List/clear.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - clear method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() - -
-
-

Removes all objects from this list; -the length of the list becomes zero.

-

Throws an UnsupportedError, and retains all objects, if this -is a fixed-length list.

-
- -
-

Implementation

-
void clear();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/copyRange.html b/doc/api/dart-core/List/copyRange.html deleted file mode 100644 index a7742603..00000000 --- a/doc/api/dart-core/List/copyRange.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - copyRange method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
copyRange
- -
- -
- - - -
-

copyRange<T> method

- -
- void - copyRange -<T>(List<T> target, [ int at, List<T> source, [ int start int end ]) - -
-
-

Copy a range of one list into another list.

-

This is a utility function that can be used to implement methods like -setRange.

-

The range from start to end must be a valid range of source, -and there must be room for end - start elements from position at. -If start is omitted, it defaults to zero. -If end is omitted, it defaults to source.length.

-

If source and target is the same list, overlapping source and target -ranges are respected so that the target range ends up containing the -initial content of the source range. -Otherwise the order of element copying is not guaranteed.

-
- -
-

Implementation

-
static void copyRange<T>(List<T> target, int at, List<T> source,
-    [int? start, int? end]) {
-  start ??= 0;
-  end = RangeError.checkValidRange(start, end, source.length);
-  if (end == null) {
-    // TODO(dart-lang/language#440): Remove when promotion works.
-    throw "unreachable";
-  }
-  int length = end - start;
-  if (target.length < at + length) {
-    throw ArgumentError.value(target, "target",
-        "Not big enough to hold $length elements at position $at");
-  }
-  if (!identical(source, target) || start >= at) {
-    for (int i = 0; i < length; i++) {
-      target[at + i] = source[start + i];
-    }
-  } else {
-    for (int i = length; --i >= 0;) {
-      target[at + i] = source[start + i];
-    }
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/fillRange.html b/doc/api/dart-core/List/fillRange.html deleted file mode 100644 index ff28e1a7..00000000 --- a/doc/api/dart-core/List/fillRange.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - fillRange method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
fillRange
- -
- -
- - - -
-

fillRange method

- -
- void - fillRange -(int start, [ int end, [ E fillValue ]) - -
-
-

Sets the objects in the range start inclusive to end exclusive -to the given fillValue.

-

The provided range, given by start and end, must be valid. -A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

Example:

-
 List<int> list = new List(3);
-    list.fillRange(0, 2, 1);
-    print(list); //  [1, 1, null]
-
-

If the element type is not nullable, omitting fillValue or passing null -as fillValue will make the fillRange fail.

-
- -
-

Implementation

-
void fillRange(int start, int end, [E? fillValue]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/first.html b/doc/api/dart-core/List/first.html deleted file mode 100644 index 558f0681..00000000 --- a/doc/api/dart-core/List/first.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - first property - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
first
- -
- -
- - - -
-

first property

- - -
- -
- E - first -
inherited
-
- -
-

Returns the first element.

-

Throws a StateError if this is empty. -Otherwise returns the first element in the iteration order, -equivalent to this.elementAt(0).

-
-
-

Implementation

-
E get first {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  return it.current;
-}
-
-
- -
- -
- void - first= -(E value) - -
- -
-

Updates the first position of the list to contain value.

-

Equivalent to theList[0] = value;.

-

The list must be non-empty.

-
-
-

Implementation

-
void set first(E value);
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/getRange.html b/doc/api/dart-core/List/getRange.html deleted file mode 100644 index e516963f..00000000 --- a/doc/api/dart-core/List/getRange.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - getRange method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
getRange
- -
- -
- - - -
-

getRange method

- -
- Iterable<E> - getRange -(int start int end) - -
-
-

Returns an Iterable that iterates over the objects in the range -start inclusive to end exclusive.

-

The provided range, given by start and end, must be valid at the time -of the call.

-

A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

The returned Iterable behaves like skip(start).take(end - start). -That is, it does not throw if this list changes size.

-
List<String> colors = ['red', 'green', 'blue', 'orange', 'pink'];
-Iterable<String> range = colors.getRange(1, 4);
-range.join(', ');  // 'green, blue, orange'
-colors.length = 3;
-range.join(', ');  // 'green, blue'
-
-
- -
-

Implementation

-
Iterable<E> getRange(int start, int end);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/indexOf.html b/doc/api/dart-core/List/indexOf.html deleted file mode 100644 index a0141dad..00000000 --- a/doc/api/dart-core/List/indexOf.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - indexOf method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
indexOf
- -
- -
- - - -
-

indexOf method

- -
- int - indexOf -(E element, [ int start = 0 ]) - -
-
-

Returns the first index of element in this list.

-

Searches the list from index start to the end of the list. -The first time an object o is encountered so that o == element, -the index of o is returned.

-
List<String> notes = ['do', 're', 'mi', 're'];
-notes.indexOf('re');    // 1
-notes.indexOf('re', 2); // 3
-
-

Returns -1 if element is not found.

-
notes.indexOf('fa');    // -1
-
-
- -
-

Implementation

-
int indexOf(E element, [int start = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/indexWhere.html b/doc/api/dart-core/List/indexWhere.html deleted file mode 100644 index afd0ca66..00000000 --- a/doc/api/dart-core/List/indexWhere.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - indexWhere method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
indexWhere
- -
- -
- - - -
-

indexWhere method

- -
- int - indexWhere -(bool test(E element), [ int start = 0 ]) - -
-
-

Returns the first index in the list that satisfies the provided test.

-

Searches the list from index start to the end of the list. -The first time an object o is encountered so that test(o) is true, -the index of o is returned.

-
List<String> notes = ['do', 're', 'mi', 're'];
-notes.indexWhere((note) => note.startsWith('r'));       // 1
-notes.indexWhere((note) => note.startsWith('r'), 2);    // 3
-
-

Returns -1 if element is not found.

-
notes.indexWhere((note) => note.startsWith('k'));    // -1
-
-
- -
-

Implementation

-
int indexWhere(bool test(E element), [int start = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/insert.html b/doc/api/dart-core/List/insert.html deleted file mode 100644 index 322c1200..00000000 --- a/doc/api/dart-core/List/insert.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - insert method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
insert
- -
- -
- - - -
-

insert method

- -
- void - insert -(int index, E element) - -
-
-

Inserts the object at position index in this list.

-

This increases the length of the list by one and shifts all objects -at or after the index towards the end of the list.

-

The list must be growable. -The index value must be non-negative and no greater than length.

-
- -
-

Implementation

-
void insert(int index, E element);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/insertAll.html b/doc/api/dart-core/List/insertAll.html deleted file mode 100644 index 4191d2eb..00000000 --- a/doc/api/dart-core/List/insertAll.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - insertAll method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
insertAll
- -
- -
- - - -
-

insertAll method

- -
- void - insertAll -(int index, Iterable<E> iterable) - -
-
-

Inserts all objects of iterable at position index in this list.

-

This increases the length of the list by the length of iterable and -shifts all later objects towards the end of the list.

-

The list must be growable. -The index value must be non-negative and no greater than length.

-
- -
-

Implementation

-
void insertAll(int index, Iterable<E> iterable);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/last.html b/doc/api/dart-core/List/last.html deleted file mode 100644 index d04b27a5..00000000 --- a/doc/api/dart-core/List/last.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - last property - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- E - last -
inherited
-
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
E get last {
-  Iterator<E> it = iterator;
-  if (!it.moveNext()) {
-    throw IterableElementError.noElement();
-  }
-  E result;
-  do {
-    result = it.current;
-  } while (it.moveNext());
-  return result;
-}
-
-
- -
- -
- void - last= -(E value) - -
- -
-

Updates the last position of the list to contain value.

-

Equivalent to theList[theList.length - 1] = value;.

-

The list must be non-empty.

-
-
-

Implementation

-
void set last(E value);
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/lastIndexOf.html b/doc/api/dart-core/List/lastIndexOf.html deleted file mode 100644 index a6fd04eb..00000000 --- a/doc/api/dart-core/List/lastIndexOf.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - lastIndexOf method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastIndexOf
- -
- -
- - - -
-

lastIndexOf method

- -
- int - lastIndexOf -(E element, [ int start ]) - -
-
-

Returns the last index of element in this list.

-

Searches the list backwards from index start to 0.

-

The first time an object o is encountered so that o == element, -the index of o is returned.

-
List<String> notes = ['do', 're', 'mi', 're'];
-notes.lastIndexOf('re', 2); // 1
-
-

If start is not provided, this method searches from the end of the -list.

-
notes.lastIndexOf('re');  // 3
-
-

Returns -1 if element is not found.

-
notes.lastIndexOf('fa');  // -1
-
-
- -
-

Implementation

-
int lastIndexOf(E element, [int? start]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/lastIndexWhere.html b/doc/api/dart-core/List/lastIndexWhere.html deleted file mode 100644 index 1323d6db..00000000 --- a/doc/api/dart-core/List/lastIndexWhere.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - lastIndexWhere method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastIndexWhere
- -
- -
- - - -
-

lastIndexWhere method

- -
- int - lastIndexWhere -(bool test(E element), [ int start ]) - -
-
-

Returns the last index in the list that satisfies the provided test.

-

Searches the list from index start to 0. -The first time an object o is encountered so that test(o) is true, -the index of o is returned. -If start is omitted, it defaults to the length of the list.

-
List<String> notes = ['do', 're', 'mi', 're'];
-notes.lastIndexWhere((note) => note.startsWith('r'));       // 3
-notes.lastIndexWhere((note) => note.startsWith('r'), 2);    // 1
-
-

Returns -1 if element is not found.

-
notes.lastIndexWhere((note) => note.startsWith('k'));    // -1
-
-
- -
-

Implementation

-
int lastIndexWhere(bool test(E element), [int? start]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/length.html b/doc/api/dart-core/List/length.html deleted file mode 100644 index 9316735a..00000000 --- a/doc/api/dart-core/List/length.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - length property - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length - -
- -
-

The number of objects in this list.

-

The valid indices for a list are 0 through length - 1.

-
-
-

Implementation

-
int get length;
-
-
- -
- -
- void - length= -(int newLength) - -
- -
-

Changes the length of this list.

-

If newLength is greater than -the current length, entries are initialized to null. -Increasing the length fails if the element type does not allow null.

-

Throws an UnsupportedError if the list is fixed-length or -if attempting tp enlarge the list when null is not a valid element.

-
-
-

Implementation

-
set length(int newLength);
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/operator_equals.html b/doc/api/dart-core/List/operator_equals.html deleted file mode 100644 index 63df73a4..00000000 --- a/doc/api/dart-core/List/operator_equals.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - operator == method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) -
override
-
-
-

Whether this list is equal to other.

-

Lists are, by default, only equal to themselves. -Even if other is also a list, the equality comparison -does not compare the elements of the two lists.

-
- -
-

Implementation

-
bool operator ==(Object other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/operator_get.html b/doc/api/dart-core/List/operator_get.html deleted file mode 100644 index 8e80bd19..00000000 --- a/doc/api/dart-core/List/operator_get.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - operator [] method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- E - operator [] -(int index) - -
-
-

Returns the object at the given index in the list -or throws a RangeError if index is out of bounds.

-
- -
-

Implementation

-
E operator [](int index);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/operator_plus.html b/doc/api/dart-core/List/operator_plus.html deleted file mode 100644 index 37cbc046..00000000 --- a/doc/api/dart-core/List/operator_plus.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - operator + method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator +
- -
- -
- - - -
-

operator + method

- -
- List<E> - operator + -(List<E> other) - -
-
-

Returns the concatenation of this list and other.

-

Returns a new list containing the elements of this list followed by -the elements of other.

-

The default behavior is to return a normal growable list. -Some list types may choose to return a list of the same type as themselves -(see Uint8List.+);

-
- -
-

Implementation

-
List<E> operator +(List<E> other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/operator_put.html b/doc/api/dart-core/List/operator_put.html deleted file mode 100644 index a020239d..00000000 --- a/doc/api/dart-core/List/operator_put.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - operator []= method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(int index, E value) - -
-
-

Sets the value at the given index in the list to value -or throws a RangeError if index is out of bounds.

-
- -
-

Implementation

-
void operator []=(int index, E value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/remove.html b/doc/api/dart-core/List/remove.html deleted file mode 100644 index 35f2037c..00000000 --- a/doc/api/dart-core/List/remove.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - remove method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object value) - -
-
-

Removes the first occurrence of value from this list.

-

Returns true if value was in the list, false otherwise.

-
List<String> parts = ['head', 'shoulders', 'knees', 'toes'];
-parts.remove('head'); // true
-parts.join(', ');     // 'shoulders, knees, toes'
-
-

The method has no effect if value was not in the list.

-
// Note: 'head' has already been removed.
-parts.remove('head'); // false
-parts.join(', ');     // 'shoulders, knees, toes'
-
-

An UnsupportedError occurs if the list is fixed-length.

-
- -
-

Implementation

-
bool remove(Object? value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/removeAt.html b/doc/api/dart-core/List/removeAt.html deleted file mode 100644 index 4ec883d3..00000000 --- a/doc/api/dart-core/List/removeAt.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - removeAt method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeAt
- -
- -
- - - -
-

removeAt method

- -
- E - removeAt -(int index) - -
-
-

Removes the object at position index from this list.

-

This method reduces the length of this by one and moves all later objects -down by one position.

-

Returns the removed object.

-

The index must be in the range 0 ≤ index < length.

-

Throws an UnsupportedError if this is a fixed-length list. In that case -the list is not modified.

-
- -
-

Implementation

-
E removeAt(int index);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/removeLast.html b/doc/api/dart-core/List/removeLast.html deleted file mode 100644 index c787df29..00000000 --- a/doc/api/dart-core/List/removeLast.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - removeLast method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeLast
- -
- -
- - - -
-

removeLast method

- -
- E - removeLast -() - -
-
-

Pops and returns the last object in this list.

-

The list must not be empty.

-

Throws an UnsupportedError if this is a fixed-length list.

-
- -
-

Implementation

-
E removeLast();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/removeRange.html b/doc/api/dart-core/List/removeRange.html deleted file mode 100644 index 43af4d6d..00000000 --- a/doc/api/dart-core/List/removeRange.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - removeRange method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeRange
- -
- -
- - - -
-

removeRange method

- -
- void - removeRange -(int start int end) - -
-
-

Removes the objects in the range start inclusive to end exclusive.

-

The provided range, given by start and end, must be valid. -A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

Throws an UnsupportedError if this is a fixed-length list. In that case -the list is not modified.

-
- -
-

Implementation

-
void removeRange(int start, int end);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/removeWhere.html b/doc/api/dart-core/List/removeWhere.html deleted file mode 100644 index ad10a1da..00000000 --- a/doc/api/dart-core/List/removeWhere.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - removeWhere method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(E element)) - -
-
-

Removes all objects from this list that satisfy test.

-

An object o satisfies test if test(o) is true.

-
List<String> numbers = ['one', 'two', 'three', 'four'];
-numbers.removeWhere((item) => item.length == 3);
-numbers.join(', '); // 'three, four'
-
-

Throws an UnsupportedError if this is a fixed-length list.

-
- -
-

Implementation

-
void removeWhere(bool test(E element));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/replaceRange.html b/doc/api/dart-core/List/replaceRange.html deleted file mode 100644 index 1a6947d1..00000000 --- a/doc/api/dart-core/List/replaceRange.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - replaceRange method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
replaceRange
- -
- -
- - - -
-

replaceRange method

- -
- void - replaceRange -(int start, int end, Iterable<E> replacement) - -
-
-

Removes the objects in the range start inclusive to end exclusive -and inserts the contents of replacement in its place.

-
List<int> list = [1, 2, 3, 4, 5];
-list.replaceRange(1, 4, [6, 7]);
-list.join(', '); // '1, 6, 7, 5'
-
-

The provided range, given by start and end, must be valid. -A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

This method does not work on fixed-length lists, even when replacement -has the same number of elements as the replaced range. In that case use -setRange instead.

-
- -
-

Implementation

-
void replaceRange(int start, int end, Iterable<E> replacement);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/retainWhere.html b/doc/api/dart-core/List/retainWhere.html deleted file mode 100644 index 8c0a4172..00000000 --- a/doc/api/dart-core/List/retainWhere.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - retainWhere method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainWhere
- -
- -
- - - -
-

retainWhere method

- -
- void - retainWhere -(bool test(E element)) - -
-
-

Removes all objects from this list that fail to satisfy test.

-

An object o satisfies test if test(o) is true.

-
List<String> numbers = ['one', 'two', 'three', 'four'];
-numbers.retainWhere((item) => item.length == 3);
-numbers.join(', '); // 'one, two'
-
-

Throws an UnsupportedError if this is a fixed-length list.

-
- -
-

Implementation

-
void retainWhere(bool test(E element));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/reversed.html b/doc/api/dart-core/List/reversed.html deleted file mode 100644 index aadabc69..00000000 --- a/doc/api/dart-core/List/reversed.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - reversed property - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
reversed
- -
- -
- - - -
-

reversed property

- - -
- -
- Iterable<E> - reversed - -
- -
-

Returns an Iterable of the objects in this list in reverse order.

-
-
-

Implementation

-
Iterable<E> get reversed;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/setAll.html b/doc/api/dart-core/List/setAll.html deleted file mode 100644 index 5aea7e83..00000000 --- a/doc/api/dart-core/List/setAll.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - setAll method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
setAll
- -
- -
- - - -
-

setAll method

- -
- void - setAll -(int index, Iterable<E> iterable) - -
-
-

Overwrites objects of this with the objects of iterable, starting -at position index in this list.

-
List<String> list = ['a', 'b', 'c'];
-list.setAll(1, ['bee', 'sea']);
-list.join(', '); // 'a, bee, sea'
-
-

This operation does not increase the length of this.

-

The index must be non-negative and no greater than length.

-

The iterable must not have more elements than what can fit from index -to length.

-

If iterable is based on this list, its values may change /during/ the -setAll operation.

-
- -
-

Implementation

-
void setAll(int index, Iterable<E> iterable);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/setRange.html b/doc/api/dart-core/List/setRange.html deleted file mode 100644 index 1bf23b5b..00000000 --- a/doc/api/dart-core/List/setRange.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - setRange method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
setRange
- -
- -
- - - -
-

setRange method

- -
- void - setRange -(int start, int end, Iterable<E> iterable, [ int skipCount = 0 ]) - -
-
-

Copies the objects of iterable, skipping skipCount objects first, -into the range start, inclusive, to end, exclusive, of the list.

-
List<int> list1 = [1, 2, 3, 4];
-List<int> list2 = [5, 6, 7, 8, 9];
-// Copies the 4th and 5th items in list2 as the 2nd and 3rd items
-// of list1.
-list1.setRange(1, 3, list2, 3);
-list1.join(', '); // '1, 8, 9, 4'
-
-

The provided range, given by start and end, must be valid. -A range from start to end is valid if 0 <= start <= end <= len, where -len is this list's length. The range starts at start and has length -end - start. An empty range (with end == start) is valid.

-

The iterable must have enough objects to fill the range from start -to end after skipping skipCount objects.

-

If iterable is this list, the operation copies the elements -originally in the range from skipCount to skipCount + (end - start) to -the range start to end, even if the two ranges overlap.

-

If iterable depends on this list in some other way, no guarantees are -made.

-
- -
-

Implementation

-
void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/shuffle.html b/doc/api/dart-core/List/shuffle.html deleted file mode 100644 index 9dba78db..00000000 --- a/doc/api/dart-core/List/shuffle.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - shuffle method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
shuffle
- -
- -
- - - -
-

shuffle method

- -
- void - shuffle -([Random random ]) - -
-
-

Shuffles the elements of this list randomly.

-
- -
-

Implementation

-
void shuffle([Random? random]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/sort.html b/doc/api/dart-core/List/sort.html deleted file mode 100644 index fb6f588d..00000000 --- a/doc/api/dart-core/List/sort.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - sort method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
sort
- -
- -
- - - -
-

sort method

- -
- void - sort -([int compare(E a E b) ]) - -
-
-

Sorts this list according to the order specified by the compare function.

-

The compare function must act as a Comparator.

-
List<String> numbers = ['two', 'three', 'four'];
-// Sort from shortest to longest.
-numbers.sort((a, b) => a.length.compareTo(b.length));
-print(numbers);  // [two, four, three]
-
-

The default List implementations use Comparable.compare if -compare is omitted.

-
List<int> nums = [13, 2, -11];
-nums.sort();
-print(nums);  // [-11, 2, 13]
-
-

A Comparator may compare objects as equal (return zero), even if they -are distinct objects. -The sort function is not guaranteed to be stable, so distinct objects -that compare as equal may occur in any order in the result:

-
List<String> numbers = ['one', 'two', 'three', 'four'];
-numbers.sort((a, b) => a.length.compareTo(b.length));
-print(numbers);  // [one, two, four, three] OR [two, one, four, three]
-
-
- -
-

Implementation

-
void sort([int compare(E a, E b)?]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/sublist.html b/doc/api/dart-core/List/sublist.html deleted file mode 100644 index 500963b5..00000000 --- a/doc/api/dart-core/List/sublist.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - sublist method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
sublist
- -
- -
- - - -
-

sublist method

- -
- List<E> - sublist -(int start, [ int end ]) - -
-
-

Returns a new list containing the elements between start and end.

-

The new list is a List<E> containing the elements of this list at -positions greater than or equal to start and less than end in the same -order as they occur in this list.

-
var colors = ["red", "green", "blue", "orange", "pink"];
-print(colors.sublist(1, 3)); // [green, blue]
-
-

If end is omitted, it defaults to the length of this list.

-
print(colors.sublist(1)); // [green, blue, orange, pink]
-
-

The start and end positions must satisfy the relations -0 ≤ startendthis.length -If end is equal to start, then the returned list is empty.

-
- -
-

Implementation

-
List<E> sublist(int start, [int? end]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/List/writeIterable.html b/doc/api/dart-core/List/writeIterable.html deleted file mode 100644 index 486b4660..00000000 --- a/doc/api/dart-core/List/writeIterable.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - writeIterable method - List class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
writeIterable
- -
- -
- - - -
-

writeIterable<T> method

- -
- void - writeIterable -<T>(List<T> target, int at, Iterable<T> source) - -
-
-

Write the elements of an iterable into a list.

-

This is a utility function that can be used to implement methods like -setAll.

-

The elements of source are written into target from position at. -The source must not contain more elements after writing the last -position of target.

-

If the source is a list, the copyRange function is likely to be more -efficient.

-
- -
-

Implementation

-
static void writeIterable<T>(List<T> target, int at, Iterable<T> source) {
-  RangeError.checkValueInInterval(at, 0, target.length, "at");
-  int index = at;
-  int targetLength = target.length;
-  for (var element in source) {
-    if (index == targetLength) {
-      throw IndexError(targetLength, target);
-    }
-    target[index] = element;
-    index++;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map-class.html b/doc/api/dart-core/Map-class.html deleted file mode 100644 index 06516caf..00000000 --- a/doc/api/dart-core/Map-class.html +++ /dev/null @@ -1,591 +0,0 @@ - - - - - - - - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Map
- -
- -
- - - -
-

Map<K, V> class

- -
-

A collection of key/value pairs, from which you retrieve a value -using its associated key.

-

There is a finite number of keys in the map, -and each key has exactly one value associated with it.

-

Maps, and their keys and values, can be iterated. -The order of iteration is defined by the individual type of map. -Examples:

-
    -
  • The plain HashMap is unordered (no order is guaranteed),
  • -
  • the LinkedHashMap iterates in key insertion order,
  • -
  • and a sorted map like SplayTreeMap iterates the keys in sorted order.
  • -
-

It is generally not allowed to modify the map (add or remove keys) while -an operation is being performed on the map, for example in functions called -during a forEach or putIfAbsent call. -Modifying the map while iterating the keys or values -may also break the iteration.

-

It is generally not allowed to modify the equality of keys (and thus not -their hashcode) while they are in the map. Some specialized subtypes may be -more permissive, in which case they should document this behavior.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Map() -
-
- Creates a Map instance with the default implementation, LinkedHashMap. [...] -
factory
-
-
- Map.from(Map other) -
-
- Creates a LinkedHashMap instance that contains all key/value pairs of -other. [...] -
factory
-
-
- Map.fromEntries(Iterable<MapEntry<K, V>> entries) -
-
- Creates a new map and adds all entries. [...] -
factory
-
-
- Map.fromIterable(Iterable iterable, { K key(dynamic element), V value(dynamic element) }) -
-
- Creates a Map instance in which the keys and values are computed from the -iterable. [...] -
factory
-
-
- Map.fromIterables(Iterable<K> keys, Iterable<V> values) -
-
- Creates a Map instance associating the given keys to values. [...] -
factory
-
-
- Map.identity() -
-
- Creates an identity map with the default implementation, LinkedHashMap. [...] -
factory
-
-
- Map.of(Map<K, V> other) -
-
- Creates a LinkedHashMap with the same keys and values as other. [...] -
factory
-
-
- Map.unmodifiable(Map other) -
-
- Creates an unmodifiable hash based map containing the entries of other. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- entries - Iterable<MapEntry<K, V>> -
-
- The map entries of this. -
read-only
-
-
- isEmpty - bool -
-
- Returns true if there is no key/value pair in the map. -
read-only
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one key/value pair in the map. -
read-only
-
-
- keys - Iterable<K> -
-
- The keys of this. [...] -
read-only
-
-
- length - int -
-
- The number of key/value pairs in the map. -
read-only
-
-
- values - Iterable<V> -
-
- The values of this. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- addAll(Map<K, V> other) - → void - -
-
- Adds all key/value pairs of other to this map. [...] - -
-
- addEntries(Iterable<MapEntry<K, V>> newEntries) - → void - -
-
- Adds all key/value pairs of newEntries to this map. [...] - -
-
- cast<RK, RV>() - Map<RK, RV> - -
-
- Provides a view of this map as having RK keys and RV instances, -if necessary. [...] - -
-
- clear() - → void - -
-
- Removes all pairs from the map. [...] - -
-
- containsKey(Object key) - bool - -
-
- Returns true if this map contains the given key. [...] - -
-
- containsValue(Object value) - bool - -
-
- Returns true if this map contains the given value. [...] - -
-
- forEach(void f(K key, V value)) - → void - -
-
- Applies f to each key/value pair of the map. [...] - -
-
- map<K2, V2>(MapEntry<K2, V2> f(K key, V value)) - Map<K2, V2> - -
-
- Returns a new map where all entries of this map are transformed by -the given f function. - -
-
- putIfAbsent(K key, V ifAbsent()) - → V - -
-
- Look up the value of key, or add a new value if it isn't there. [...] - -
-
- remove(Object key) - → V - -
-
- Removes key and its associated value, if present, from the map. [...] - -
-
- removeWhere(bool predicate(K key, V value)) - → void - -
-
- Removes all entries of this map that satisfy the given predicate. - -
-
- update(K key, V update(V value), { V ifAbsent() }) - → V - -
-
- Updates the value for the provided key. [...] - -
-
- updateAll(V update(K key, V value)) - → void - -
-
- Updates all values. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator [](Object key) - → V - -
-
- Returns the value for the given key or null if key is not in the map. [...] - -
-
- operator []=(K key, V value) - → void - -
-
- Associates the key with the given value. [...] - -
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- castFrom<K, V, K2, V2>(Map<K, V> source) - Map<K2, V2> - -
-
- Adapts source to be a Map<K2, V2>. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/Map.from.html b/doc/api/dart-core/Map/Map.from.html deleted file mode 100644 index 5f950faf..00000000 --- a/doc/api/dart-core/Map/Map.from.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - Map.from constructor - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Map.from
- -
- -
- - - -
-

Map<K, V>.from constructor

- -
- - Map<K, V>.from(Map other) -
- -
-

Creates a LinkedHashMap instance that contains all key/value pairs of -other.

-

The keys must all be instances of K and the values of V. -The other map itself can have any type.

-

A LinkedHashMap requires the keys to implement compatible -operator== and hashCode, and it allows null as a key. -It iterates in key insertion order.

-
- -
-

Implementation

-
factory Map.from(Map other) = LinkedHashMap<K, V>.from;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/Map.fromEntries.html b/doc/api/dart-core/Map/Map.fromEntries.html deleted file mode 100644 index b070ba41..00000000 --- a/doc/api/dart-core/Map/Map.fromEntries.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - Map.fromEntries constructor - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Map.fromEntries
- -
- -
- - - -
-

Map<K, V>.fromEntries constructor

- -
- - Map<K, V>.fromEntries(Iterable<MapEntry<K, V>> entries) -
- -
-

Creates a new map and adds all entries.

-

Returns a new Map<K, V> where all entries of entries -have been added in iteration order.

-

If multiple entries have the same key, -later occurrences overwrite the earlier ones.

-
- -
-

Implementation

-
factory Map.fromEntries(Iterable<MapEntry<K, V>> entries) =>
-    <K, V>{}..addEntries(entries);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/Map.fromIterable.html b/doc/api/dart-core/Map/Map.fromIterable.html deleted file mode 100644 index 8c5d007e..00000000 --- a/doc/api/dart-core/Map/Map.fromIterable.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - Map.fromIterable constructor - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Map.fromIterable
- -
- -
- - - -
-

Map<K, V>.fromIterable constructor

- -
- - Map<K, V>.fromIterable(Iterable iterable, { K key(dynamic element), V value(dynamic element) }) -
- -
-

Creates a Map instance in which the keys and values are computed from the -iterable.

-

The created map is a LinkedHashMap. -A LinkedHashMap requires the keys to implement compatible -operator== and hashCode, and it allows null as a key. -It iterates in key insertion order.

-

For each element of the iterable this constructor computes a key/value -pair, by applying key and value respectively.

-

The example below creates a new Map from a List. The keys of map are -list values converted to strings, and the values of the map are the -squares of the list values:

-
List<int> list = [1, 2, 3];
-Map<String, int> map = new Map.fromIterable(list,
-    key: (item) => item.toString(),
-    value: (item) => item * item);
-
-map['1'] + map['2']; // 1 + 4
-map['3'] - map['2']; // 9 - 4
-
-

If no values are specified for key and value the default is the -identity function.

-

In the following example, the keys and corresponding values of map -are list values:

-
map = new Map.fromIterable(list);
-map[1] + map[2]; // 1 + 2
-map[3] - map[2]; // 3 - 2
-
-

The keys computed by the source iterable do not need to be unique. The -last occurrence of a key will simply overwrite any previous value.

-
- -
-

Implementation

-
factory Map.fromIterable(Iterable iterable,
-    {K key(element)?, V value(element)?}) = LinkedHashMap<K, V>.fromIterable;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/Map.fromIterables.html b/doc/api/dart-core/Map/Map.fromIterables.html deleted file mode 100644 index cd632ea3..00000000 --- a/doc/api/dart-core/Map/Map.fromIterables.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - Map.fromIterables constructor - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Map.fromIterables
- -
- -
- - - -
-

Map<K, V>.fromIterables constructor

- -
- - Map<K, V>.fromIterables(Iterable<K> keys, Iterable<V> values) -
- -
-

Creates a Map instance associating the given keys to values.

-

The created map is a LinkedHashMap. -A LinkedHashMap requires the keys to implement compatible -operator== and hashCode, and it allows null as a key. -It iterates in key insertion order.

-

This constructor iterates over keys and values and maps each element of -keys to the corresponding element of values.

-
List<String> letters = ['b', 'c'];
-List<String> words = ['bad', 'cat'];
-Map<String, String> map = new Map.fromIterables(letters, words);
-map['b'] + map['c'];  // badcat
-
-

If keys contains the same object multiple times, the last occurrence -overwrites the previous value.

-

The two Iterables must have the same length.

-
- -
-

Implementation

-
factory Map.fromIterables(Iterable<K> keys, Iterable<V> values) =
-    LinkedHashMap<K, V>.fromIterables;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/Map.html b/doc/api/dart-core/Map/Map.html deleted file mode 100644 index 77c7312f..00000000 --- a/doc/api/dart-core/Map/Map.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - map method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
map
- -
- -
- - - -
-

map<K2, V2> method

- -
- Map<K2, V2> - map -<K2, V2>(MapEntry<K2, V2> f(K key, V value)) - -
-
-

Returns a new map where all entries of this map are transformed by -the given f function.

-
- -
-

Implementation

-
Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> f(K key, V value));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/Map.identity.html b/doc/api/dart-core/Map/Map.identity.html deleted file mode 100644 index 20f7cf79..00000000 --- a/doc/api/dart-core/Map/Map.identity.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - Map.identity constructor - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Map.identity
- -
- -
- - - -
-

Map<K, V>.identity constructor

- -
- - Map<K, V>.identity() -
- -
-

Creates an identity map with the default implementation, LinkedHashMap.

-

An identity map uses identical for equality and identityHashCode -for hash codes of keys instead of the intrinsic Object.== and -Object.hashCode of the keys.

-

The returned map allows null as a key. -It iterates in key insertion order.

-
- -
-

Implementation

-
factory Map.identity() = LinkedHashMap<K, V>.identity;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/Map.of.html b/doc/api/dart-core/Map/Map.of.html deleted file mode 100644 index b2e964a3..00000000 --- a/doc/api/dart-core/Map/Map.of.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - Map.of constructor - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Map.of
- -
- -
- - - -
-

Map<K, V>.of constructor

- -
- - Map<K, V>.of(Map<K, V> other) -
- -
-

Creates a LinkedHashMap with the same keys and values as other.

-

A LinkedHashMap requires the keys to implement compatible -operator== and hashCode, and it allows null as a key. -It iterates in key insertion order.

-
- -
-

Implementation

-
factory Map.of(Map<K, V> other) = LinkedHashMap<K, V>.of;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/Map.unmodifiable.html b/doc/api/dart-core/Map/Map.unmodifiable.html deleted file mode 100644 index 2f02e1ef..00000000 --- a/doc/api/dart-core/Map/Map.unmodifiable.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - Map.unmodifiable constructor - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Map.unmodifiable
- -
- -
- - - -
-

Map<K, V>.unmodifiable constructor

- -
- - Map<K, V>.unmodifiable(Map other) -
- -
-

Creates an unmodifiable hash based map containing the entries of other.

-

The keys must all be instances of K and the values of V. -The other map itself can have any type.

-

The map requires the keys to implement compatible -operator== and hashCode, and it allows null as a key. -The created map iterates keys in a fixed order, -preserving the order provided by other.

-

The resulting map behaves like the result of Map.from, -except that the map returned by this constructor is not modifiable.

-
- -
-

Implementation

-
external factory Map.unmodifiable(Map<dynamic, dynamic> other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/addAll.html b/doc/api/dart-core/Map/addAll.html deleted file mode 100644 index fbaed391..00000000 --- a/doc/api/dart-core/Map/addAll.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - addAll method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Map<K, V> other) - -
-
-

Adds all key/value pairs of other to this map.

-

If a key of other is already in this map, its value is overwritten.

-

The operation is equivalent to doing this[key] = value for each key -and associated value in other. It iterates over other, which must -therefore not change during the iteration.

-
- -
-

Implementation

-
void addAll(Map<K, V> other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/addEntries.html b/doc/api/dart-core/Map/addEntries.html deleted file mode 100644 index abfc084f..00000000 --- a/doc/api/dart-core/Map/addEntries.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - addEntries method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
addEntries
- -
- -
- - - -
-

addEntries method

- -
- void - addEntries -(Iterable<MapEntry<K, V>> newEntries) - -
-
-

Adds all key/value pairs of newEntries to this map.

-

If a key of newEntries is already in this map, -the corresponding value is overwritten.

-

The operation is equivalent to doing this[entry.key] = entry.value -for each MapEntry of the iterable.

-
- -
-

Implementation

-
void addEntries(Iterable<MapEntry<K, V>> newEntries);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/cast.html b/doc/api/dart-core/Map/cast.html deleted file mode 100644 index 20350d09..00000000 --- a/doc/api/dart-core/Map/cast.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - cast method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<RK, RV> method

- -
- Map<RK, RV> - cast -<RK, RV>() - -
-
-

Provides a view of this map as having RK keys and RV instances, -if necessary.

-

If this map is already a Map<RK, RV>, it is returned unchanged.

-

If this set contains only keys of type RK and values of type RV, -all read operations will work correctly. -If any operation exposes a non-RK key or non-RV value, -the operation will throw instead.

-

Entries added to the map must be valid for both a Map<K, V> and a -Map<RK, RV>.

-
- -
-

Implementation

-
Map<RK, RV> cast<RK, RV>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/castFrom.html b/doc/api/dart-core/Map/castFrom.html deleted file mode 100644 index 4a7f9235..00000000 --- a/doc/api/dart-core/Map/castFrom.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - castFrom method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
castFrom
- -
- -
- - - -
-

castFrom<K, V, K2, V2> method

- -
- Map<K2, V2> - castFrom -<K, V, K2, V2>(Map<K, V> source) - -
-
-

Adapts source to be a Map<K2, V2>.

-

Any time the set would produce a key or value that is not a K2 or V2, -the access will throw.

-

Any time K2 key or V2 value is attempted added into the adapted map, -the store will throw unless the key is also an instance of K and -the value is also an instance of V.

-

If all accessed entries of source are have K2 keys and V2 values -and if all entries added to the returned map have K keys and V] values, -then the returned map can be used as a Map<K2, V2>.

-
- -
-

Implementation

-
static Map<K2, V2> castFrom<K, V, K2, V2>(Map<K, V> source) =>
-    CastMap<K, V, K2, V2>(source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/clear.html b/doc/api/dart-core/Map/clear.html deleted file mode 100644 index 2d1fb07c..00000000 --- a/doc/api/dart-core/Map/clear.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - clear method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() - -
-
-

Removes all pairs from the map.

-

After this, the map is empty.

-
- -
-

Implementation

-
void clear();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/containsKey.html b/doc/api/dart-core/Map/containsKey.html deleted file mode 100644 index 22447a8a..00000000 --- a/doc/api/dart-core/Map/containsKey.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - containsKey method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsKey
- -
- -
- - - -
-

containsKey method

- -
- bool - containsKey -(Object key) - -
-
-

Returns true if this map contains the given key.

-

Returns true if any of the keys in the map are equal to key -according to the equality used by the map.

-
- -
-

Implementation

-
bool containsKey(Object? key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/containsValue.html b/doc/api/dart-core/Map/containsValue.html deleted file mode 100644 index e8466cf7..00000000 --- a/doc/api/dart-core/Map/containsValue.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - containsValue method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsValue
- -
- -
- - - -
-

containsValue method

- -
- bool - containsValue -(Object value) - -
-
-

Returns true if this map contains the given value.

-

Returns true if any of the values in the map are equal to value -according to the == operator.

-
- -
-

Implementation

-
bool containsValue(Object? value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/entries.html b/doc/api/dart-core/Map/entries.html deleted file mode 100644 index 2893c8e9..00000000 --- a/doc/api/dart-core/Map/entries.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - entries property - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
entries
- -
- -
- - - -
-

entries property

- - -
- -
- Iterable<MapEntry<K, V>> - entries - -
- -
-

The map entries of this.

-
-
-

Implementation

-
Iterable<MapEntry<K, V>> get entries;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/forEach.html b/doc/api/dart-core/Map/forEach.html deleted file mode 100644 index fac3ee37..00000000 --- a/doc/api/dart-core/Map/forEach.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - forEach method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
forEach
- -
- -
- - - -
-

forEach method

- -
- void - forEach -(void f(K key, V value)) - -
-
-

Applies f to each key/value pair of the map.

-

Calling f must not add or remove keys from the map.

-
- -
-

Implementation

-
void forEach(void f(K key, V value));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/isEmpty.html b/doc/api/dart-core/Map/isEmpty.html deleted file mode 100644 index c306d452..00000000 --- a/doc/api/dart-core/Map/isEmpty.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - isEmpty property - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty - -
- -
-

Returns true if there is no key/value pair in the map.

-
-
-

Implementation

-
bool get isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/isNotEmpty.html b/doc/api/dart-core/Map/isNotEmpty.html deleted file mode 100644 index ea678c71..00000000 --- a/doc/api/dart-core/Map/isNotEmpty.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - isNotEmpty property - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty - -
- -
-

Returns true if there is at least one key/value pair in the map.

-
-
-

Implementation

-
bool get isNotEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/keys.html b/doc/api/dart-core/Map/keys.html deleted file mode 100644 index 79fb6c86..00000000 --- a/doc/api/dart-core/Map/keys.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - keys property - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
keys
- -
- -
- - - -
-

keys property

- - -
- -
- Iterable<K> - keys - -
- -
-

The keys of this.

-

The returned iterable has efficient length and contains operations, -based on length and containsKey of the map.

-

The order of iteration is defined by the individual Map implementation, -but must be consistent between changes to the map.

-

Modifying the map while iterating the keys -may break the iteration.

-
-
-

Implementation

-
Iterable<K> get keys;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/length.html b/doc/api/dart-core/Map/length.html deleted file mode 100644 index 0c0f2fe8..00000000 --- a/doc/api/dart-core/Map/length.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - length property - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length - -
- -
-

The number of key/value pairs in the map.

-
-
-

Implementation

-
int get length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/operator_get.html b/doc/api/dart-core/Map/operator_get.html deleted file mode 100644 index e7d1be6b..00000000 --- a/doc/api/dart-core/Map/operator_get.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - operator [] method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- V - operator [] -(Object key) - -
-
-

Returns the value for the given key or null if key is not in the map.

-

Some maps allow keys to have null as a value. -For those maps, a lookup using this operator cannot distinguish between a -key not being in the map and the key having a null value. -Methods like containsKey or putIfAbsent can be used if the distinction -is important.

-
- -
-

Implementation

-
V? operator [](Object? key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/operator_put.html b/doc/api/dart-core/Map/operator_put.html deleted file mode 100644 index 6eb3cc01..00000000 --- a/doc/api/dart-core/Map/operator_put.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - operator []= method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []=
- -
- -
- - - -
-

operator []= method

- -
- void - operator []= -(K key, V value) - -
-
-

Associates the key with the given value.

-

If the key was already in the map, its associated value is changed. -Otherwise the key/value pair is added to the map.

-
- -
-

Implementation

-
void operator []=(K key, V value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/putIfAbsent.html b/doc/api/dart-core/Map/putIfAbsent.html deleted file mode 100644 index 122926c8..00000000 --- a/doc/api/dart-core/Map/putIfAbsent.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - putIfAbsent method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
putIfAbsent
- -
- -
- - - -
-

putIfAbsent method

- -
- V - putIfAbsent -(K key, V ifAbsent()) - -
-
-

Look up the value of key, or add a new value if it isn't there.

-

Returns the value associated to key, if there is one. -Otherwise calls ifAbsent to get a new value, associates key to -that value, and then returns the new value.

-
Map<String, int> scores = {'Bob': 36};
-for (var key in ['Bob', 'Rohan', 'Sophena']) {
-  scores.putIfAbsent(key, () => key.length);
-}
-scores['Bob'];      // 36
-scores['Rohan'];    //  5
-scores['Sophena'];  //  7
-
-

Calling ifAbsent must not add or remove keys from the map.

-
- -
-

Implementation

-
V putIfAbsent(K key, V ifAbsent());
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/remove.html b/doc/api/dart-core/Map/remove.html deleted file mode 100644 index e349ade0..00000000 --- a/doc/api/dart-core/Map/remove.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - remove method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- V - remove -(Object key) - -
-
-

Removes key and its associated value, if present, from the map.

-

Returns the value associated with key before it was removed. -Returns null if key was not in the map.

-

Note that values can be null and a returned null value doesn't -always mean that the key was absent.

-
- -
-

Implementation

-
V? remove(Object? key);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/removeWhere.html b/doc/api/dart-core/Map/removeWhere.html deleted file mode 100644 index dadba01a..00000000 --- a/doc/api/dart-core/Map/removeWhere.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - removeWhere method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool predicate(K key, V value)) - -
-
-

Removes all entries of this map that satisfy the given predicate.

-
- -
-

Implementation

-
void removeWhere(bool predicate(K key, V value));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/update.html b/doc/api/dart-core/Map/update.html deleted file mode 100644 index c525f85a..00000000 --- a/doc/api/dart-core/Map/update.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - update method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
update
- -
- -
- - - -
-

update method

- -
- V - update -(K key, V update(V value), { V ifAbsent() }) - -
-
-

Updates the value for the provided key.

-

Returns the new value of the key.

-

If the key is present, invokes update with the current value and stores -the new value in the map.

-

If the key is not present and ifAbsent is provided, calls ifAbsent -and adds the key with the returned value to the map.

-

It's an error if the key is not present and ifAbsent is not provided.

-
- -
-

Implementation

-
V update(K key, V update(V value), {V ifAbsent()?});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/updateAll.html b/doc/api/dart-core/Map/updateAll.html deleted file mode 100644 index 059764cf..00000000 --- a/doc/api/dart-core/Map/updateAll.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - updateAll method - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
updateAll
- -
- -
- - - -
-

updateAll method

- -
- void - updateAll -(V update(K key, V value)) - -
-
-

Updates all values.

-

Iterates over all entries in the map and updates them with the result -of invoking update.

-
- -
-

Implementation

-
void updateAll(V update(K key, V value));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Map/values.html b/doc/api/dart-core/Map/values.html deleted file mode 100644 index d95afced..00000000 --- a/doc/api/dart-core/Map/values.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - values property - Map class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
values
- -
- -
- - - -
-

values property

- - -
- -
- Iterable<V> - values - -
- -
-

The values of this.

-

The values are iterated in the order of their corresponding keys. -This means that iterating keys and values in parallel will -provide matching pairs of keys and values.

-

The returned iterable has an efficient length method based on the -length of the map. Its Iterable.contains method is based on -== comparison.

-

Modifying the map while iterating the -values may break the iteration.

-
-
-

Implementation

-
Iterable<V> get values;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/MapEntry-class.html b/doc/api/dart-core/MapEntry-class.html deleted file mode 100644 index 28c6e43d..00000000 --- a/doc/api/dart-core/MapEntry-class.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - MapEntry class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
MapEntry
- -
- -
- - - -
-

MapEntry<K, V> class

- -
-

A key/value pair representing an entry in a Map.

-
- - -
-

Constructors

- -
-
- MapEntry(K key, V value) -
-
- Creates an entry with key and value. -
const
-
factory
-
-
-
- -
-

Properties

- -
-
- key - → K -
-
- The key of the entry. -
final
-
-
- value - → V -
-
- The value associated to key in the map. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/MapEntry/MapEntry.html b/doc/api/dart-core/MapEntry/MapEntry.html deleted file mode 100644 index 075b73d1..00000000 --- a/doc/api/dart-core/MapEntry/MapEntry.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - MapEntry constructor - MapEntry class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
MapEntry
- -
- -
- - - -
-

MapEntry<K, V> constructor

- -
- const - MapEntry<K, V>(K key, V value) -
- -
-

Creates an entry with key and value.

-
- -
-

Implementation

-
const factory MapEntry(K key, V value) = MapEntry<K, V>._;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/MapEntry/key.html b/doc/api/dart-core/MapEntry/key.html deleted file mode 100644 index f8bc77d8..00000000 --- a/doc/api/dart-core/MapEntry/key.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - key property - MapEntry class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
key
- -
- -
- - - -
-

key property

- -
- K - key -
final
-
-
-

The key of the entry.

-
-
-

Implementation

-
final K key
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/MapEntry/toString.html b/doc/api/dart-core/MapEntry/toString.html deleted file mode 100644 index b592f6e4..00000000 --- a/doc/api/dart-core/MapEntry/toString.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - toString method - MapEntry class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "MapEntry(${key.toString()}: ${value.toString()})";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/MapEntry/value.html b/doc/api/dart-core/MapEntry/value.html deleted file mode 100644 index dd8e8b92..00000000 --- a/doc/api/dart-core/MapEntry/value.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - value property - MapEntry class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
value
- -
- -
- - - -
-

value property

- -
- V - value -
final
-
-
-

The value associated to key in the map.

-
-
-

Implementation

-
final V value
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match-class.html b/doc/api/dart-core/Match-class.html deleted file mode 100644 index 99f446e8..00000000 --- a/doc/api/dart-core/Match-class.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - - - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Match
- -
- -
- - - -
-

Match class

- -
-

A result from searching within a string.

-

A Match or an Iterable of Match objects is returned from Pattern -matching methods.

-

The following example finds all matches of a RegExp in a String -and iterates through the returned iterable of Match objects.

-
RegExp exp = new RegExp(r"(\w+)");
-String str = "Parse my string";
-Iterable<Match> matches = exp.allMatches(str);
-for (Match m in matches) {
-  String match = m.group(0);
-  print(match);
-}
-
-

The output of the example is:

-
Parse
-my
-string
-
-

Some patterns, regular expressions in particular, may record substrings -that were part of the matching. These are called groups in the Match -object. Some patterns may never have any groups, and their matches always -have zero groupCount.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Match() -
-
- -
-
-
- -
-

Properties

- -
-
- end - int -
-
- Returns the index in the string after the last character of the -match. -
read-only
-
-
- groupCount - int -
-
- Returns the number of captured groups in the match. [...] -
read-only
-
-
- input - String -
-
- The string on which this match was computed. -
read-only
-
-
- pattern - Pattern -
-
- The pattern used to search in input. -
read-only
-
-
- start - int -
-
- Returns the index in the string where the match starts. -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- group(int group) - String - -
-
- Returns the string matched by the given group. [...] - -
-
- groups(List<int> groupIndices) - List<String> - -
-
- Returns a list of the groups with the given indices. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator [](int group) - String - -
-
- Returns the string matched by the given group. [...] - -
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/Match.html b/doc/api/dart-core/Match/Match.html deleted file mode 100644 index 9bc40c82..00000000 --- a/doc/api/dart-core/Match/Match.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - Match constructor - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Match
- -
- -
- - - -
-

Match constructor

- -
- - Match() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/end.html b/doc/api/dart-core/Match/end.html deleted file mode 100644 index 5e326b84..00000000 --- a/doc/api/dart-core/Match/end.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - end property - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
end
- -
- -
- - - -
-

end property

- - -
- -
- int - end - -
- -
-

Returns the index in the string after the last character of the -match.

-
-
-

Implementation

-
int get end;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/group.html b/doc/api/dart-core/Match/group.html deleted file mode 100644 index 37595525..00000000 --- a/doc/api/dart-core/Match/group.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - group method - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
group
- -
- -
- - - -
-

group method

- -
- String - group -(int group) - -
-
-

Returns the string matched by the given group.

-

If group is 0, returns the match of the pattern.

-

The result may be null if the pattern didn't assign a value to it -as part of this match.

-
- -
-

Implementation

-
String? group(int group);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/groupCount.html b/doc/api/dart-core/Match/groupCount.html deleted file mode 100644 index f6a1078a..00000000 --- a/doc/api/dart-core/Match/groupCount.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - groupCount property - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
groupCount
- -
- -
- - - -
-

groupCount property

- - -
- -
- int - groupCount - -
- -
-

Returns the number of captured groups in the match.

-

Some patterns may capture parts of the input that was used to -compute the full match. This is the number of captured groups, -which is also the maximal allowed argument to the group method.

-
-
-

Implementation

-
int get groupCount;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/groups.html b/doc/api/dart-core/Match/groups.html deleted file mode 100644 index 4a08849e..00000000 --- a/doc/api/dart-core/Match/groups.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - groups method - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
groups
- -
- -
- - - -
-

groups method

- -
- List<String> - groups -(List<int> groupIndices) - -
-
-

Returns a list of the groups with the given indices.

-

The list contains the strings returned by group for each index in -groupIndices.

-
- -
-

Implementation

-
List<String?> groups(List<int> groupIndices);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/input.html b/doc/api/dart-core/Match/input.html deleted file mode 100644 index a1d16289..00000000 --- a/doc/api/dart-core/Match/input.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - input property - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
input
- -
- -
- - - -
-

input property

- - -
- -
- String - input - -
- -
-

The string on which this match was computed.

-
-
-

Implementation

-
String get input;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/operator_get.html b/doc/api/dart-core/Match/operator_get.html deleted file mode 100644 index d88bbd97..00000000 --- a/doc/api/dart-core/Match/operator_get.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - operator [] method - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- String - operator [] -(int group) - -
-
-

Returns the string matched by the given group.

-

If group is 0, returns the match of the pattern.

-

Short alias for Match.group.

-
- -
-

Implementation

-
String? operator [](int group);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/pattern.html b/doc/api/dart-core/Match/pattern.html deleted file mode 100644 index bf1d72c4..00000000 --- a/doc/api/dart-core/Match/pattern.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - pattern property - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
pattern
- -
- -
- - - -
-

pattern property

- - -
- -
- Pattern - pattern - -
- -
-

The pattern used to search in input.

-
-
-

Implementation

-
Pattern get pattern;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Match/start.html b/doc/api/dart-core/Match/start.html deleted file mode 100644 index b085f40c..00000000 --- a/doc/api/dart-core/Match/start.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - start property - Match class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
start
- -
- -
- - - -
-

start property

- - -
- -
- int - start - -
- -
-

Returns the index in the string where the match starts.

-
-
-

Implementation

-
int get start;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/NoSuchMethodError-class.html b/doc/api/dart-core/NoSuchMethodError-class.html deleted file mode 100644 index 868922d2..00000000 --- a/doc/api/dart-core/NoSuchMethodError-class.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - - NoSuchMethodError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
NoSuchMethodError
- -
- -
- - - -
-

NoSuchMethodError class

- -
-

Error thrown by the default implementation of noSuchMethod on Object.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- NoSuchMethodError(Object receiver, Symbol memberName, List positionalArguments, Map<Symbol, dynamic> namedArguments) -
-
- Create a NoSuchMethodError corresponding to a failed method call. [...] -
-
- NoSuchMethodError.withInvocation(Object receiver, Invocation invocation) -
-
- Create a NoSuchMethodError corresponding to a failed method call. [...] -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/NoSuchMethodError/NoSuchMethodError.html b/doc/api/dart-core/NoSuchMethodError/NoSuchMethodError.html deleted file mode 100644 index 74d13a00..00000000 --- a/doc/api/dart-core/NoSuchMethodError/NoSuchMethodError.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - NoSuchMethodError constructor - NoSuchMethodError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
NoSuchMethodError
- -
- -
- - - -
-

NoSuchMethodError constructor

- -
-
-
    -
  1. @Deprecated("Use NoSuchMethod.withInvocation instead")
  2. -
-
- - NoSuchMethodError(Object receiver, Symbol memberName, List positionalArguments, Map<Symbol, dynamic> namedArguments) -
- -
-

Create a NoSuchMethodError corresponding to a failed method call.

-

The receiver is the receiver of the method call. -That is, the object on which the method was attempted called. -If the receiver is null, it is interpreted as a call to a top-level -function of a library.

-

The memberName is a Symbol representing the name of the called method -or accessor. It should not be null.

-

The positionalArguments is a list of the positional arguments that the -method was called with. If null, it is considered equivalent to the -empty list.

-

The namedArguments is a map from Symbols to the values of named -arguments that the method was called with. If null, it is considered -equivalent to the empty map.

-

This constructor does not handle type arguments. -To include type variables, create an Invocation and use -NoSuchMethodError.withInvocation.

-
- -
-

Implementation

-
@Deprecated("Use NoSuchMethod.withInvocation instead")
-external NoSuchMethodError(Object? receiver, Symbol memberName,
-    List? positionalArguments, Map<Symbol, dynamic>? namedArguments);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/NoSuchMethodError/NoSuchMethodError.withInvocation.html b/doc/api/dart-core/NoSuchMethodError/NoSuchMethodError.withInvocation.html deleted file mode 100644 index efb38150..00000000 --- a/doc/api/dart-core/NoSuchMethodError/NoSuchMethodError.withInvocation.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - NoSuchMethodError.withInvocation constructor - NoSuchMethodError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
NoSuchMethodError.withInvocation
- -
- -
- - - -
-

NoSuchMethodError.withInvocation constructor

- -
- - NoSuchMethodError.withInvocation(Object receiver, Invocation invocation) -
- -
-

Create a NoSuchMethodError corresponding to a failed method call.

-

The receiver is the receiver of the method call. -That is, the object on which the method was attempted called.

-

The invocation represents the method call that failed. It -should not be null.

-
- -
-

Implementation

-
external NoSuchMethodError.withInvocation(
-    Object? receiver, Invocation invocation);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/NoSuchMethodError/toString.html b/doc/api/dart-core/NoSuchMethodError/toString.html deleted file mode 100644 index 83eb6950..00000000 --- a/doc/api/dart-core/NoSuchMethodError/toString.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - toString method - NoSuchMethodError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
external String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Null-class.html b/doc/api/dart-core/Null-class.html deleted file mode 100644 index 03e2b9a6..00000000 --- a/doc/api/dart-core/Null-class.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - Null class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Null
- -
- -
- - - -
-

Null class

- -
-

The reserved word null denotes an object that is the sole instance of -this class.

-

It is a compile-time error for a class to attempt to extend or implement -Null.

-
- - - -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, override
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns the string "null". -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Null/hashCode.html b/doc/api/dart-core/Null/hashCode.html deleted file mode 100644 index 47aad184..00000000 --- a/doc/api/dart-core/Null/hashCode.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - hashCode property - Null class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

The hash code for this object.

-

A hash code is a single integer which represents the state of the object -that affects operator == comparisons.

-

All objects have hash codes. -The default hash code represents only the identity of the object, -the same way as the default operator == implementation only considers objects -equal if they are identical (see identityHashCode).

-

If operator == is overridden to use the object state instead, -the hash code must also be changed to represent that state.

-

Hash codes must be the same for objects that are equal to each other -according to operator ==. -The hash code of an object should only change if the object changes -in a way that affects equality. -There are no further requirements for the hash codes. -They need not be consistent between executions of the same program -and there are no distribution guarantees.

-

Objects that are not equal are allowed to have the same hash code, -it is even technically allowed that all instances have the same hash code, -but if clashes happen too often, it may reduce the efficiency of hash-based -data structures like HashSet or HashMap.

-

If a subclass overrides hashCode, it should override the -operator == operator as well to maintain consistency.

-
-
-

Implementation

-
external int get hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Null/toString.html b/doc/api/dart-core/Null/toString.html deleted file mode 100644 index 80167d0d..00000000 --- a/doc/api/dart-core/Null/toString.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - toString method - Null class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns the string "null".

-
- -
-

Implementation

-
String toString() => "null";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/NullThrownError-class.html b/doc/api/dart-core/NullThrownError-class.html deleted file mode 100644 index 8c75da0e..00000000 --- a/doc/api/dart-core/NullThrownError-class.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - - NullThrownError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
NullThrownError
- -
- -
- - - -
-

NullThrownError class

- -
-

Error thrown when attempting to throw null.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- NullThrownError() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/NullThrownError/NullThrownError.html b/doc/api/dart-core/NullThrownError/NullThrownError.html deleted file mode 100644 index c4195d46..00000000 --- a/doc/api/dart-core/NullThrownError/NullThrownError.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - NullThrownError constructor - NullThrownError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
NullThrownError
- -
- -
- - - -
-

NullThrownError constructor

- -
- - NullThrownError() -
- - -
-

Implementation

-
@pragma("vm:entry-point")
-NullThrownError();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/NullThrownError/toString.html b/doc/api/dart-core/NullThrownError/toString.html deleted file mode 100644 index 01b0c8bb..00000000 --- a/doc/api/dart-core/NullThrownError/toString.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - toString method - NullThrownError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "Throw of null.";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Object-class.html b/doc/api/dart-core/Object-class.html deleted file mode 100644 index d6c6fdff..00000000 --- a/doc/api/dart-core/Object-class.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - - Object class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Object
- -
- -
- - - -
-

Object class

- -
-

The base class for all Dart objects.

-

Because Object is the root of the Dart class hierarchy, -every other Dart class is a subclass of Object.

-

When you define a class, you should override toString -to return a string describing an instance of that class. -You might also need to define hashCode and operator ==, as described in the -Implementing map -keys -section of the library -tour.

-
- - -
-

Constructors

- -
-
- Object() -
-
- Creates a new Object instance. [...] -
const
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] - -
-
- toString() - String - -
-
- Returns a string representation of this object. - -
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] - -
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Object/Object.html b/doc/api/dart-core/Object/Object.html deleted file mode 100644 index 3205308b..00000000 --- a/doc/api/dart-core/Object/Object.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - Object constructor - Object class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Object
- -
- -
- - - -
-

Object constructor

- -
- const - Object() -
- -
-

Creates a new Object instance.

-

Object instances have no meaningful state, and are only useful -through their identity. An Object instance is equal to itself -only.

-
- -
-

Implementation

-
const Object();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Object/hashCode.html b/doc/api/dart-core/Object/hashCode.html deleted file mode 100644 index 3deedfa7..00000000 --- a/doc/api/dart-core/Object/hashCode.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - hashCode property - Object class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode - -
- -
-

The hash code for this object.

-

A hash code is a single integer which represents the state of the object -that affects operator == comparisons.

-

All objects have hash codes. -The default hash code represents only the identity of the object, -the same way as the default operator == implementation only considers objects -equal if they are identical (see identityHashCode).

-

If operator == is overridden to use the object state instead, -the hash code must also be changed to represent that state.

-

Hash codes must be the same for objects that are equal to each other -according to operator ==. -The hash code of an object should only change if the object changes -in a way that affects equality. -There are no further requirements for the hash codes. -They need not be consistent between executions of the same program -and there are no distribution guarantees.

-

Objects that are not equal are allowed to have the same hash code, -it is even technically allowed that all instances have the same hash code, -but if clashes happen too often, it may reduce the efficiency of hash-based -data structures like HashSet or HashMap.

-

If a subclass overrides hashCode, it should override the -operator == operator as well to maintain consistency.

-
-
-

Implementation

-
external int get hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Object/noSuchMethod.html b/doc/api/dart-core/Object/noSuchMethod.html deleted file mode 100644 index 3d9ecce8..00000000 --- a/doc/api/dart-core/Object/noSuchMethod.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - noSuchMethod method - Object class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
noSuchMethod
- -
- -
- - - -
-

noSuchMethod method

- -
- dynamic - noSuchMethod -(Invocation invocation) - -
-
-

Invoked when a non-existent method or property is accessed.

-

Classes can override noSuchMethod to provide custom behavior.

-

If a value is returned, it becomes the result of the original invocation.

-

The default behavior is to throw a NoSuchMethodError.

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-external dynamic noSuchMethod(Invocation invocation);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Object/operator_equals.html b/doc/api/dart-core/Object/operator_equals.html deleted file mode 100644 index 4f2414ca..00000000 --- a/doc/api/dart-core/Object/operator_equals.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - operator == method - Object class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) - -
-
-

The equality operator.

-

The default behavior for all Objects is to return true if and -only if this and other are the same object.

-

Override this method to specify a different equality relation on -a class. The overriding method must still be an equivalence relation. -That is, it must be:

-
    -
  • -

    Total: It must return a boolean for all arguments. It should never throw -or return null.

    -
  • -
  • -

    Reflexive: For all objects o, o == o must be true.

    -
  • -
  • -

    Symmetric: For all objects o1 and o2, o1 == o2 and o2 == o1 must -either both be true, or both be false.

    -
  • -
  • -

    Transitive: For all objects o1, o2, and o3, if o1 == o2 and -o2 == o3 are true, then o1 == o3 must be true.

    -
  • -
-

The method should also be consistent over time, -so whether two objects are equal should only change -if at least one of the objects was modified.

-

If a subclass overrides the equality operator it should override -the hashCode method as well to maintain consistency.

-
- -
-

Implementation

-
external bool operator ==(Object other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Object/runtimeType.html b/doc/api/dart-core/Object/runtimeType.html deleted file mode 100644 index 6893ee2e..00000000 --- a/doc/api/dart-core/Object/runtimeType.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - runtimeType property - Object class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
runtimeType
- -
- -
- - - -
-

runtimeType property

- - -
- -
- Type - runtimeType - -
- -
-

A representation of the runtime type of the object.

-
-
-

Implementation

-
external Type get runtimeType;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Object/toString.html b/doc/api/dart-core/Object/toString.html deleted file mode 100644 index ad232f9b..00000000 --- a/doc/api/dart-core/Object/toString.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - toString method - Object class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() - -
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
external String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/OutOfMemoryError-class.html b/doc/api/dart-core/OutOfMemoryError-class.html deleted file mode 100644 index a8c6126f..00000000 --- a/doc/api/dart-core/OutOfMemoryError-class.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - OutOfMemoryError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
OutOfMemoryError
- -
- -
- - - -
-

OutOfMemoryError class

- - -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- OutOfMemoryError() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- stackTrace - StackTrace -
-
- -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/OutOfMemoryError/OutOfMemoryError.html b/doc/api/dart-core/OutOfMemoryError/OutOfMemoryError.html deleted file mode 100644 index 15b54c97..00000000 --- a/doc/api/dart-core/OutOfMemoryError/OutOfMemoryError.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - OutOfMemoryError constructor - OutOfMemoryError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
OutOfMemoryError
- -
- -
- - - -
-

OutOfMemoryError constructor

- -
- const - OutOfMemoryError() -
- - -
-

Implementation

-
@pragma("vm:entry-point")
-const OutOfMemoryError();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/OutOfMemoryError/stackTrace.html b/doc/api/dart-core/OutOfMemoryError/stackTrace.html deleted file mode 100644 index df5b054f..00000000 --- a/doc/api/dart-core/OutOfMemoryError/stackTrace.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - stackTrace property - OutOfMemoryError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
stackTrace
- -
- -
- - - -
-

stackTrace property

- - -
- -
- StackTrace - stackTrace -
override
-
- -
-

Implementation

-
StackTrace? get stackTrace => null;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/OutOfMemoryError/toString.html b/doc/api/dart-core/OutOfMemoryError/toString.html deleted file mode 100644 index 9125dd28..00000000 --- a/doc/api/dart-core/OutOfMemoryError/toString.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - toString method - OutOfMemoryError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "Out of Memory";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Pattern-class.html b/doc/api/dart-core/Pattern-class.html deleted file mode 100644 index 6e5eccde..00000000 --- a/doc/api/dart-core/Pattern-class.html +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - Pattern class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Pattern
- -
- -
- - - -
-

Pattern class

- -
-

An interface for basic searches within strings.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Pattern() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- allMatches(String string, [ int start = 0 ]) - Iterable<Match> - -
-
- Match this pattern against the string repeatedly. [...] - -
-
- matchAsPrefix(String string, [ int start = 0 ]) - Match - -
-
- Match this pattern against the start of string. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Pattern/Pattern.html b/doc/api/dart-core/Pattern/Pattern.html deleted file mode 100644 index 65cc37e6..00000000 --- a/doc/api/dart-core/Pattern/Pattern.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - Pattern constructor - Pattern class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Pattern
- -
- -
- - - -
-

Pattern constructor

- -
- - Pattern() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Pattern/allMatches.html b/doc/api/dart-core/Pattern/allMatches.html deleted file mode 100644 index be047aa5..00000000 --- a/doc/api/dart-core/Pattern/allMatches.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - allMatches method - Pattern class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
allMatches
- -
- -
- - - -
-

allMatches method

- -
- Iterable<Match> - allMatches -(String string, [ int start = 0 ]) - -
-
-

Match this pattern against the string repeatedly.

-

If start is provided, matching will start at that index.

-

The returned iterable lazily computes all the non-overlapping matches -of the pattern on the string, ordered by start index. -If a user only requests the first -match, this function should not compute all possible matches.

-

The matches are found by repeatedly finding the first match -of the pattern on the string, starting from the end of the previous -match, and initially starting from index zero.

-

If the pattern matches the empty string at some point, the next -match is found by starting at the previous match's end plus one.

-
- -
-

Implementation

-
Iterable<Match> allMatches(String string, [int start = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Pattern/matchAsPrefix.html b/doc/api/dart-core/Pattern/matchAsPrefix.html deleted file mode 100644 index e2ab96f7..00000000 --- a/doc/api/dart-core/Pattern/matchAsPrefix.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - matchAsPrefix method - Pattern class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
matchAsPrefix
- -
- -
- - - -
-

matchAsPrefix method

- -
- Match - matchAsPrefix -(String string, [ int start = 0 ]) - -
-
-

Match this pattern against the start of string.

-

If start is provided, it must be an integer in the range 0 .. -string.length. In that case, this patten is tested against the -string at the start position. That is, a Match is returned if the -pattern can match a part of the string starting from position start. -Returns null if the pattern doesn't match.

-
- -
-

Implementation

-
Match? matchAsPrefix(String string, [int start = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Provisional-class.html b/doc/api/dart-core/Provisional-class.html deleted file mode 100644 index 6d7bfa51..00000000 --- a/doc/api/dart-core/Provisional-class.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - - Provisional class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Provisional
- -
- -
- - - -
-

Provisional class

- -
-

An annotation class that was used during development of Dart 2.

-

Should not be used any more.

-
- -
-
- - - - - -
Annotations
-
    -
  • @deprecated
  • -
-
-
- -
-

Constructors

- -
-
- Provisional({String message }) -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- message - String -
-
- -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Provisional/Provisional.html b/doc/api/dart-core/Provisional/Provisional.html deleted file mode 100644 index 8b4a27ec..00000000 --- a/doc/api/dart-core/Provisional/Provisional.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - Provisional constructor - Provisional class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Provisional
- -
- -
- - - -
-

Provisional constructor

- -
- const - Provisional({String message }) -
- - -
-

Implementation

-
const Provisional({String? message});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Provisional/message.html b/doc/api/dart-core/Provisional/message.html deleted file mode 100644 index c3491804..00000000 --- a/doc/api/dart-core/Provisional/message.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - message property - Provisional class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- - -
- -
- String - message - -
- -
-

Implementation

-
String? get message => null;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError-class.html b/doc/api/dart-core/RangeError-class.html deleted file mode 100644 index b9baf316..00000000 --- a/doc/api/dart-core/RangeError-class.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RangeError
- -
- -
- - - -
-

RangeError class

- -
-

Error thrown due to an index being outside a valid range.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- RangeError(dynamic message) -
-
- Create a new RangeError with the given message. -
-
- RangeError.index(int index, dynamic indexable, [ String name, String message, int length ]) -
-
- Creates a new RangeError stating that index is not a valid index -into indexable. [...] -
factory
-
-
- RangeError.range(num invalidValue, int minValue, [ int maxValue, [ String name String message ]) -
-
- Create a new RangeError for a value being outside the valid range. [...] -
-
- RangeError.value(num value, [ String name String message ]) -
-
- Create a new RangeError with a message for the given value. [...] -
-
-
- -
-

Properties

- -
-
- end - num -
-
- The maximum value that value is allowed to assume. -
final
-
-
- start - num -
-
- The minimum value that value is allowed to assume. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- invalidValue - → dynamic -
-
- The invalid value. -
final, inherited
-
-
- message - → dynamic -
-
- Message describing the problem. -
final, inherited
-
-
- name - String -
-
- Name of the invalid argument, if available. -
final, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- checkNotNegative(int value, [ String name String message ]) - int - -
-
- Check that an integer value is non-negative. [...] - -
-
- checkValidIndex(int index, dynamic indexable, [ String name int length, String message ]) - int - -
-
- Check that index is a valid index into an indexable object. [...] - -
-
- checkValidRange(int start, [ int end, [ int length, [ String startName String endName String message ]) - int - -
-
- Check that a range represents a slice of an indexable object. [...] - -
-
- checkValueInInterval(int value, [ int minValue, [ int maxValue, [ String name String message ]) - int - -
-
- Check that an integer value lies in a specific interval. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/RangeError.html b/doc/api/dart-core/RangeError/RangeError.html deleted file mode 100644 index 5ca76d9c..00000000 --- a/doc/api/dart-core/RangeError/RangeError.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - RangeError constructor - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RangeError
- -
- -
- - - -
-

RangeError constructor

- -
- - RangeError(dynamic message) -
- -
-

Create a new RangeError with the given message.

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-RangeError(var message)
-    : start = null,
-      end = null,
-      super(message);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/RangeError.index.html b/doc/api/dart-core/RangeError/RangeError.index.html deleted file mode 100644 index bce245e7..00000000 --- a/doc/api/dart-core/RangeError/RangeError.index.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - RangeError.index constructor - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RangeError.index
- -
- -
- - - -
-

RangeError.index constructor

- -
- - RangeError.index(int index, dynamic indexable, [ String name, String message, int length ]) -
- -
-

Creates a new RangeError stating that index is not a valid index -into indexable.

-

An optional name can specify the argument name that has the -invalid value, and the message can override the default error -description.

-

The length is the length of indexable at the time of the error. -If length is omitted, it defaults to indexable.length.

-
- -
-

Implementation

-
factory RangeError.index(int index, dynamic indexable,
-    [String? name, String? message, int? length]) = IndexError;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/RangeError.range.html b/doc/api/dart-core/RangeError/RangeError.range.html deleted file mode 100644 index 7dc97b6a..00000000 --- a/doc/api/dart-core/RangeError/RangeError.range.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - RangeError.range constructor - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RangeError.range
- -
- -
- - - -
-

RangeError.range constructor

- -
- - RangeError.range(num invalidValue, int minValue, [ int maxValue, [ String name String message ]) -
- -
-

Create a new RangeError for a value being outside the valid range.

-

The allowed range is from minValue to maxValue, inclusive. -If minValue or maxValue are null, the range is infinite in -that direction.

-

For a range from 0 to the length of something, end exclusive, use -RangeError.index.

-

An optional name can specify the argument name that has the -invalid value, and the message can override the default error -description.

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-RangeError.range(num invalidValue, int? minValue, int? maxValue,
-    [String? name, String? message])
-    : start = minValue,
-      end = maxValue,
-      super.value(invalidValue, name, message ?? "Invalid value");
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/RangeError.value.html b/doc/api/dart-core/RangeError/RangeError.value.html deleted file mode 100644 index a56f900f..00000000 --- a/doc/api/dart-core/RangeError/RangeError.value.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - RangeError.value constructor - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RangeError.value
- -
- -
- - - -
-

RangeError.value constructor

- -
- - RangeError.value(num value, [ String name String message ]) -
- -
-

Create a new RangeError with a message for the given value.

-

An optional name can specify the argument name that has the -invalid value, and the message can override the default error -description.

-
- -
-

Implementation

-
RangeError.value(num value, [String? name, String? message])
-    : start = null,
-      end = null,
-      super.value(value, name, message ?? "Value not in range");
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/checkNotNegative.html b/doc/api/dart-core/RangeError/checkNotNegative.html deleted file mode 100644 index 02560aa9..00000000 --- a/doc/api/dart-core/RangeError/checkNotNegative.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - checkNotNegative method - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
checkNotNegative
- -
- -
- - - -
-

checkNotNegative method

- -
- int - checkNotNegative -(int value, [ String name String message ]) - -
-
-

Check that an integer value is non-negative.

-

Throws if the value is negative.

-

If name or message are provided, they are used as the parameter -name and message text of the thrown error. If name is omitted, it -defaults to index.

-

Returns value if it is not negative.

-
- -
-

Implementation

-
static int checkNotNegative(int value, [String? name, String? message]) {
-  if (value < 0) throw RangeError.range(value, 0, null, name, message);
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/checkValidIndex.html b/doc/api/dart-core/RangeError/checkValidIndex.html deleted file mode 100644 index f12b7994..00000000 --- a/doc/api/dart-core/RangeError/checkValidIndex.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - checkValidIndex method - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
checkValidIndex
- -
- -
- - - -
-

checkValidIndex method

- -
- int - checkValidIndex -(int index, dynamic indexable, [ String name int length, String message ]) - -
-
-

Check that index is a valid index into an indexable object.

-

Throws if index is not a valid index into indexable.

-

An indexable object is one that has a length and a and index-operator -[] that accepts an index if 0 <= index < length.

-

If name or message are provided, they are used as the parameter -name and message text of the thrown error. If name is omitted, it -defaults to "index".

-

If length is provided, it is used as the length of the indexable object, -otherwise the length is found as indexable.length.

-

Returns index if it is a valid index.

-
- -
-

Implementation

-
static int checkValidIndex(int index, dynamic indexable,
-    [String? name, int? length, String? message]) {
-  length ??= (indexable.length as int);
-  // Comparing with `0` as receiver produces better dart2js type inference.
-  if (0 > index || index >= length) {
-    name ??= "index";
-    throw RangeError.index(index, indexable, name, message, length);
-  }
-  return index;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/checkValidRange.html b/doc/api/dart-core/RangeError/checkValidRange.html deleted file mode 100644 index f8da0265..00000000 --- a/doc/api/dart-core/RangeError/checkValidRange.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - checkValidRange method - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
checkValidRange
- -
- -
- - - -
-

checkValidRange method

- -
- int - checkValidRange -(int start, [ int end, [ int length, [ String startName String endName String message ]) - -
-
-

Check that a range represents a slice of an indexable object.

-

Throws if the range is not valid for an indexable object with -the given length. -A range is valid for an indexable object with a given length

-

if 0 <= [start] <= [end] <= [length]. -An end of null is considered equivalent to length.

-

The startName and endName defaults to "start" and "end", -respectively.

-

Returns the actual end value, which is length if end is null, -and end otherwise.

-
- -
-

Implementation

-
static int checkValidRange(int start, int? end, int length,
-    [String? startName, String? endName, String? message]) {
-  // Comparing with `0` as receiver produces better dart2js type inference.
-  // Ditto `start > end` below.
-  if (0 > start || start > length) {
-    startName ??= "start";
-    throw RangeError.range(start, 0, length, startName, message);
-  }
-  if (end != null) {
-    if (start > end || end > length) {
-      endName ??= "end";
-      throw RangeError.range(end, start, length, endName, message);
-    }
-    return end;
-  }
-  return length;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/checkValueInInterval.html b/doc/api/dart-core/RangeError/checkValueInInterval.html deleted file mode 100644 index df0c041e..00000000 --- a/doc/api/dart-core/RangeError/checkValueInInterval.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - checkValueInInterval method - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
checkValueInInterval
- -
- -
- - - -
-

checkValueInInterval method

- -
- int - checkValueInInterval -(int value, [ int minValue, [ int maxValue, [ String name String message ]) - -
-
-

Check that an integer value lies in a specific interval.

-

Throws if value is not in the interval. -The interval is from minValue to maxValue, both inclusive.

-

If name or message are provided, they are used as the parameter -name and message text of the thrown error.

-

Returns value if it is in the interval.

-
- -
-

Implementation

-
static int checkValueInInterval(int value, int minValue, int maxValue,
-    [String? name, String? message]) {
-  if (value < minValue || value > maxValue) {
-    throw RangeError.range(value, minValue, maxValue, name, message);
-  }
-  return value;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/end.html b/doc/api/dart-core/RangeError/end.html deleted file mode 100644 index 9d1fb5cb..00000000 --- a/doc/api/dart-core/RangeError/end.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - end property - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
end
- -
- -
- - - -
-

end property

- -
- num - end -
final
-
-
-

The maximum value that value is allowed to assume.

-
-
-

Implementation

-
final num? end
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RangeError/start.html b/doc/api/dart-core/RangeError/start.html deleted file mode 100644 index 90e7e8b2..00000000 --- a/doc/api/dart-core/RangeError/start.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - start property - RangeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
start
- -
- -
- - - -
-

start property

- -
- num - start -
final
-
-
-

The minimum value that value is allowed to assume.

-
-
-

Implementation

-
final num? start
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp-class.html b/doc/api/dart-core/RegExp-class.html deleted file mode 100644 index 00ac8f2f..00000000 --- a/doc/api/dart-core/RegExp-class.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RegExp
- -
- -
- - - -
-

RegExp class

- -
-

A regular expression pattern.

-

Regular expressions are Patterns, and can as such be used to match strings -or parts of strings.

-

Dart regular expressions have the same syntax and semantics as -JavaScript regular expressions. See -ecma-international.org/ecma-262/9.0/#sec-regexp-regular-expression-objects -for the specification of JavaScript regular expressions.

-

firstMatch is the main implementation method that applies a regular -expression to a string and returns the first RegExpMatch. All -other methods in RegExp can build on it.

-

Use allMatches to look for all matches of a regular expression in -a string.

-

The following example finds all matches of a regular expression in -a string.

-
RegExp exp = new RegExp(r"(\w+)");
-String str = "Parse my string";
-Iterable<RegExpMatch> matches = exp.allMatches(str);
-
-

Note the use of a raw string (a string prefixed with r) -in the example above. Use a raw string to treat each character in a string -as a literal character.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- RegExp(String source, { bool multiLine: false bool caseSensitive: true @Since("2.4") bool unicode: false @Since("2.4") bool dotAll: false }) -
-
- Constructs a regular expression. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- isCaseSensitive - bool -
-
- Whether this regular expression is case sensitive. [...] -
read-only
-
-
- isDotAll - bool -
-
- Whether "." in this regular expression matches line terminators. [...] -
@Since("2.4"), read-only
-
-
- isMultiLine - bool -
-
- Whether this regular expression matches multiple lines. [...] -
read-only
-
-
- isUnicode - bool -
-
- Whether this regular expression is in Unicode mode. [...] -
@Since("2.4"), read-only
-
-
- pattern - String -
-
- The source regular expression string used to create this RegExp. -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- allMatches(String input, [ int start = 0 ]) - Iterable<RegExpMatch> - -
-
- Returns an iterable of the matches of the regular expression on input. [...] -
override
-
-
- firstMatch(String input) - RegExpMatch - -
-
- Searches for the first match of the regular expression -in the string input. Returns null if there is no match. - -
-
- hasMatch(String input) - bool - -
-
- Returns whether the regular expression has a match in the string input. - -
-
- stringMatch(String input) - String - -
-
- Returns the first substring match of this regular expression in input. - -
-
- matchAsPrefix(String string, [ int start = 0 ]) - Match - -
-
- Match this pattern against the start of string. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- escape(String text) - String - -
-
- Returns a regular expression that matches text. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/RegExp.html b/doc/api/dart-core/RegExp/RegExp.html deleted file mode 100644 index a9bfea97..00000000 --- a/doc/api/dart-core/RegExp/RegExp.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - RegExp constructor - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RegExp
- -
- -
- - - -
-

RegExp constructor

- -
- - RegExp(String source, { bool multiLine: false bool caseSensitive: true @Since("2.4") bool unicode: false @Since("2.4") bool dotAll: false }) -
- -
-

Constructs a regular expression.

-

Throws a FormatException if source is not valid regular -expression syntax.

-

If multiLine is enabled, then ^ and $ will match the beginning and -end of a line, in addition to matching beginning and end of input, -respectively.

-

If caseSensitive is disabled, then case is ignored.

-

If unicode is enabled, then the pattern is treated as a Unicode -pattern as described by the ECMAScript standard.

-

If dotAll is enabled, then the . pattern will match all characters, -including line terminators.

-

Example:

-
var wordPattern = RegExp(r"(\w+)");
-var bracketedNumberValue = RegExp("$key: \\[\\d+\\]");
-
-

Notice the use of a raw string in the first example, and a regular -string in the second. Because of the many character classes used in -regular expressions, it is common to use a raw string here, unless string -interpolation is required.

-
- -
-

Implementation

-
external factory RegExp(String source,
-    {bool multiLine = false,
-    bool caseSensitive = true,
-    @Since("2.4") bool unicode = false,
-    @Since("2.4") bool dotAll = false});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/allMatches.html b/doc/api/dart-core/RegExp/allMatches.html deleted file mode 100644 index 08e76282..00000000 --- a/doc/api/dart-core/RegExp/allMatches.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - allMatches method - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
allMatches
- -
- -
- - - -
-

allMatches method

- -
- Iterable<RegExpMatch> - allMatches -(String input, [ int start = 0 ]) -
override
-
-
-

Returns an iterable of the matches of the regular expression on input.

-

If start is provided, only start looking for matches at start.

-
- -
-

Implementation

-
Iterable<RegExpMatch> allMatches(String input, [int start = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/escape.html b/doc/api/dart-core/RegExp/escape.html deleted file mode 100644 index ceb466f2..00000000 --- a/doc/api/dart-core/RegExp/escape.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - escape method - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
escape
- -
- -
- - - -
-

escape method

- -
- String - escape -(String text) - -
-
-

Returns a regular expression that matches text.

-

If text contains characters that are meaningful in regular expressions, -the resulting regular expression will match those characters literally. -If text contains no characters that have special meaning in a regular -expression, it is returned unmodified.

-

The characters that have special meaning in regular expressions are: -(, ), [, ], {, }, *, +, ?, ., ^, $, | and \.

-
- -
-

Implementation

-
external static String escape(String text);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/firstMatch.html b/doc/api/dart-core/RegExp/firstMatch.html deleted file mode 100644 index 2fca205b..00000000 --- a/doc/api/dart-core/RegExp/firstMatch.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - firstMatch method - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
firstMatch
- -
- -
- - - -
-

firstMatch method

- -
- RegExpMatch - firstMatch -(String input) - -
-
-

Searches for the first match of the regular expression -in the string input. Returns null if there is no match.

-
- -
-

Implementation

-
RegExpMatch? firstMatch(String input);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/hasMatch.html b/doc/api/dart-core/RegExp/hasMatch.html deleted file mode 100644 index 64a3b308..00000000 --- a/doc/api/dart-core/RegExp/hasMatch.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - hasMatch method - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasMatch
- -
- -
- - - -
-

hasMatch method

- -
- bool - hasMatch -(String input) - -
-
-

Returns whether the regular expression has a match in the string input.

-
- -
-

Implementation

-
bool hasMatch(String input);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/isCaseSensitive.html b/doc/api/dart-core/RegExp/isCaseSensitive.html deleted file mode 100644 index df9bfbaf..00000000 --- a/doc/api/dart-core/RegExp/isCaseSensitive.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - isCaseSensitive property - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isCaseSensitive
- -
- -
- - - -
-

isCaseSensitive property

- - -
- -
- bool - isCaseSensitive - -
- -
-

Whether this regular expression is case sensitive.

-

If the regular expression is not case sensitive, it will match an input -letter with a pattern letter even if the two letters are different case -versions of the same letter.

-
-
-

Implementation

-
bool get isCaseSensitive;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/isDotAll.html b/doc/api/dart-core/RegExp/isDotAll.html deleted file mode 100644 index d5b227d7..00000000 --- a/doc/api/dart-core/RegExp/isDotAll.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - isDotAll property - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isDotAll
- -
- -
- - - -
-

isDotAll property

- - -
- -
- bool - isDotAll -
@Since("2.4")
-
- -
-

Whether "." in this regular expression matches line terminators.

-

When false, the "." character matches a single character, unless that -character is a line terminator. When true, then the "." character will -match any single character including line terminators.

-

This feature is distinct from isMultiLine, as they affect the behavior -of different pattern characters, and so they can be used together or -separately.

-
-
-

Implementation

-
@Since("2.4")
-bool get isDotAll;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/isMultiLine.html b/doc/api/dart-core/RegExp/isMultiLine.html deleted file mode 100644 index 4a02d49a..00000000 --- a/doc/api/dart-core/RegExp/isMultiLine.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - isMultiLine property - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isMultiLine
- -
- -
- - - -
-

isMultiLine property

- - -
- -
- bool - isMultiLine - -
- -
-

Whether this regular expression matches multiple lines.

-

If the regexp does match multiple lines, the "^" and "$" characters -match the beginning and end of lines. If not, the character match the -beginning and end of the input.

-
-
-

Implementation

-
bool get isMultiLine;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/isUnicode.html b/doc/api/dart-core/RegExp/isUnicode.html deleted file mode 100644 index ec1c6931..00000000 --- a/doc/api/dart-core/RegExp/isUnicode.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - isUnicode property - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isUnicode
- -
- -
- - - -
-

isUnicode property

- - -
- -
- bool - isUnicode -
@Since("2.4")
-
- -
-

Whether this regular expression is in Unicode mode.

-

In Unicode mode, UTF-16 surrogate pairs in the original string will be -treated as a single code point and will not match separately. Otherwise, -the target string will be treated purely as a sequence of individual code -units and surrogates will not be treated specially.

-

In Unicode mode, the syntax of the RegExp pattern is more restricted, but -some pattern features, like Unicode property escapes, are only available in -this mode.

-
-
-

Implementation

-
@Since("2.4")
-bool get isUnicode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/pattern.html b/doc/api/dart-core/RegExp/pattern.html deleted file mode 100644 index c3f89664..00000000 --- a/doc/api/dart-core/RegExp/pattern.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - pattern property - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
pattern
- -
- -
- - - -
-

pattern property

- - -
- -
- String - pattern - -
- -
-

The source regular expression string used to create this RegExp.

-
-
-

Implementation

-
String get pattern;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExp/stringMatch.html b/doc/api/dart-core/RegExp/stringMatch.html deleted file mode 100644 index 8035754d..00000000 --- a/doc/api/dart-core/RegExp/stringMatch.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - stringMatch method - RegExp class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
stringMatch
- -
- -
- - - -
-

stringMatch method

- -
- String - stringMatch -(String input) - -
-
-

Returns the first substring match of this regular expression in input.

-
- -
-

Implementation

-
String? stringMatch(String input);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExpMatch-class.html b/doc/api/dart-core/RegExpMatch-class.html deleted file mode 100644 index 61065fbe..00000000 --- a/doc/api/dart-core/RegExpMatch-class.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - RegExpMatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RegExpMatch
- -
- -
- - - -
-

RegExpMatch class

- -
-

A regular expression match.

-

Regular expression matches are Matches, but also include the ability -to retrieve the names for any named capture groups and to retrieve -matches for named capture groups by name instead of their index.

-
- -
-
- -
Implemented types
-
- -
- - - - -
Annotations
-
    -
  • @Since("2.3")
  • -
-
-
- -
-

Constructors

- -
-
- RegExpMatch() -
-
- -
-
-
- -
-

Properties

- -
-
- groupNames - Iterable<String> -
-
- The names of the captured groups in the match. -
read-only
-
-
- end - int -
-
- Returns the index in the string after the last character of the -match. -
read-only, inherited
-
-
- groupCount - int -
-
- Returns the number of captured groups in the match. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- input - String -
-
- The string on which this match was computed. -
read-only, inherited
-
-
- pattern - Pattern -
-
- The pattern used to search in input. -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- start - int -
-
- Returns the index in the string where the match starts. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- namedGroup(String name) - String - -
-
- The string matched by the group named name. [...] - -
-
- group(int group) - String - -
-
- Returns the string matched by the given group. [...] -
inherited
-
-
- groups(List<int> groupIndices) - List<String> - -
-
- Returns a list of the groups with the given indices. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator [](int group) - String - -
-
- Returns the string matched by the given group. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExpMatch/RegExpMatch.html b/doc/api/dart-core/RegExpMatch/RegExpMatch.html deleted file mode 100644 index 520e6d5b..00000000 --- a/doc/api/dart-core/RegExpMatch/RegExpMatch.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - RegExpMatch constructor - RegExpMatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RegExpMatch
- -
- -
- - - -
-

RegExpMatch constructor

- -
- - RegExpMatch() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExpMatch/groupNames.html b/doc/api/dart-core/RegExpMatch/groupNames.html deleted file mode 100644 index 23e29b61..00000000 --- a/doc/api/dart-core/RegExpMatch/groupNames.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - groupNames property - RegExpMatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
groupNames
- -
- -
- - - -
-

groupNames property

- - -
- -
- Iterable<String> - groupNames - -
- -
-

The names of the captured groups in the match.

-
-
-

Implementation

-
Iterable<String> get groupNames;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RegExpMatch/namedGroup.html b/doc/api/dart-core/RegExpMatch/namedGroup.html deleted file mode 100644 index 1980128f..00000000 --- a/doc/api/dart-core/RegExpMatch/namedGroup.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - namedGroup method - RegExpMatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
namedGroup
- -
- -
- - - -
-

namedGroup method

- -
- String - namedGroup -(String name) - -
-
-

The string matched by the group named name.

-

Returns the string matched by the capture group named name, or -null if no string was matched by that capture group as part of -this match.

-

The name must be the name of a named capture group in the regular -expression creating this match (that is, the name must be in -groupNames).

-
- -
-

Implementation

-
String? namedGroup(String name);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator-class.html b/doc/api/dart-core/RuneIterator-class.html deleted file mode 100644 index 43975719..00000000 --- a/doc/api/dart-core/RuneIterator-class.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RuneIterator
- -
- -
- - - -
-

RuneIterator class

- -
-

Iterator for reading runes (integer Unicode code points) of a Dart string.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- RuneIterator(String string) -
-
- Create an iterator positioned at the beginning of the string. -
-
- RuneIterator.at(String string, int index) -
-
- Create an iterator positioned before the indexth code unit of the string. [...] -
-
-
- -
-

Properties

- -
-
- current - int -
-
- The rune (integer Unicode code point) starting at the current position in -the string. [...] -
read-only, override
-
-
- currentAsString - String -
-
- A string containing the current rune. [...] -
read-only
-
-
- currentSize - int -
-
- The number of code units comprising the current rune. [...] -
read-only
-
-
- rawIndex - int -
-
- The starting position of the current rune in the string. [...] -
read / write
-
-
- string - String -
-
- String being iterated. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- moveNext() - bool - -
-
- Advances the iterator to the next element of the iteration. [...] -
override
-
-
- movePrevious() - bool - -
-
- Move back to the previous element. [...] -
override
-
-
- reset([int rawIndex = 0 ]) - → void - -
-
- Resets the iterator to the given index into the string. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/RuneIterator.at.html b/doc/api/dart-core/RuneIterator/RuneIterator.at.html deleted file mode 100644 index 66b27b81..00000000 --- a/doc/api/dart-core/RuneIterator/RuneIterator.at.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - RuneIterator.at constructor - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RuneIterator.at
- -
- -
- - - -
-

RuneIterator.at constructor

- -
- - RuneIterator.at(String string, int index) -
- -
-

Create an iterator positioned before the indexth code unit of the string.

-

When created, there is no current value. -A moveNext will use the rune starting at index the current value, -and a movePrevious will use the rune ending just before index as the -the current value.

-

The index position must not be in the middle of a surrogate pair.

-
- -
-

Implementation

-
RuneIterator.at(String string, int index)
-    : string = string,
-      _position = index,
-      _nextPosition = index {
-  RangeError.checkValueInInterval(index, 0, string.length);
-  _checkSplitSurrogate(index);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/RuneIterator.html b/doc/api/dart-core/RuneIterator/RuneIterator.html deleted file mode 100644 index da30f2d1..00000000 --- a/doc/api/dart-core/RuneIterator/RuneIterator.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - RuneIterator constructor - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
RuneIterator
- -
- -
- - - -
-

RuneIterator constructor

- -
- - RuneIterator(String string) -
- -
-

Create an iterator positioned at the beginning of the string.

-
- -
-

Implementation

-
RuneIterator(String string)
-    : this.string = string,
-      _position = 0,
-      _nextPosition = 0;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/current.html b/doc/api/dart-core/RuneIterator/current.html deleted file mode 100644 index 26d95543..00000000 --- a/doc/api/dart-core/RuneIterator/current.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - current property - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
current
- -
- -
- - - -
-

current property

- - -
- -
- int - current -
override
-
- -
-

The rune (integer Unicode code point) starting at the current position in -the string.

-

The value is -1 if there is no current code point.

-
-
-

Implementation

-
int get current => _currentCodePoint;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/currentAsString.html b/doc/api/dart-core/RuneIterator/currentAsString.html deleted file mode 100644 index 99be568e..00000000 --- a/doc/api/dart-core/RuneIterator/currentAsString.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - currentAsString property - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
currentAsString
- -
- -
- - - -
-

currentAsString property

- - -
- -
- String - currentAsString - -
- -
-

A string containing the current rune.

-

For runes outside the basic multilingual plane, this will be -a String of length 2, containing two code units.

-

Returns an empty string if there is no current value.

-
-
-

Implementation

-
String get currentAsString {
-  if (_position == _nextPosition) return "";
-  if (_position + 1 == _nextPosition) return string[_position];
-  return string.substring(_position, _nextPosition);
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/currentSize.html b/doc/api/dart-core/RuneIterator/currentSize.html deleted file mode 100644 index 495f248c..00000000 --- a/doc/api/dart-core/RuneIterator/currentSize.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - currentSize property - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
currentSize
- -
- -
- - - -
-

currentSize property

- - -
- -
- int - currentSize - -
- -
-

The number of code units comprising the current rune.

-

Returns zero if there is no current rune (current is -1).

-
-
-

Implementation

-
int get currentSize => _nextPosition - _position;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/moveNext.html b/doc/api/dart-core/RuneIterator/moveNext.html deleted file mode 100644 index 51219630..00000000 --- a/doc/api/dart-core/RuneIterator/moveNext.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - moveNext method - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
moveNext
- -
- -
- - - -
-

moveNext method

- -
- bool - moveNext -() -
override
-
-
-

Advances the iterator to the next element of the iteration.

-

Should be called before reading current. -It the call to moveNext returns true, -then current will contain the next element of the iteration -until moveNext is called again. -If the call returns false, there are no further elements -and current should not be used any more.

-

It is safe to call moveNext after it has already returned false, -but it must keep returning false and not have any other effect.

-

A call to moveNext may throw for various reasons, -including a concurrent change to an underlying collection. -If that happens, the iterator may be in an inconsistent -state, and any further behavior of the iterator is unspecified, -including the effect of reading current.

-
- -
-

Implementation

-
bool moveNext() {
-  _position = _nextPosition;
-  if (_position == string.length) {
-    _currentCodePoint = -1;
-    return false;
-  }
-  int codeUnit = string.codeUnitAt(_position);
-  int nextPosition = _position + 1;
-  if (_isLeadSurrogate(codeUnit) && nextPosition < string.length) {
-    int nextCodeUnit = string.codeUnitAt(nextPosition);
-    if (_isTrailSurrogate(nextCodeUnit)) {
-      _nextPosition = nextPosition + 1;
-      _currentCodePoint = _combineSurrogatePair(codeUnit, nextCodeUnit);
-      return true;
-    }
-  }
-  _nextPosition = nextPosition;
-  _currentCodePoint = codeUnit;
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/movePrevious.html b/doc/api/dart-core/RuneIterator/movePrevious.html deleted file mode 100644 index 017fbe50..00000000 --- a/doc/api/dart-core/RuneIterator/movePrevious.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - movePrevious method - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
movePrevious
- -
- -
- - - -
-

movePrevious method

- -
- bool - movePrevious -() -
override
-
-
-

Move back to the previous element.

-

Returns true and updates current if successful. Returns false -and updates current to an implementation defined state if there is no -previous element

-
- -
-

Implementation

-
bool movePrevious() {
-  _nextPosition = _position;
-  if (_position == 0) {
-    _currentCodePoint = -1;
-    return false;
-  }
-  int position = _position - 1;
-  int codeUnit = string.codeUnitAt(position);
-  if (_isTrailSurrogate(codeUnit) && position > 0) {
-    int prevCodeUnit = string.codeUnitAt(position - 1);
-    if (_isLeadSurrogate(prevCodeUnit)) {
-      _position = position - 1;
-      _currentCodePoint = _combineSurrogatePair(prevCodeUnit, codeUnit);
-      return true;
-    }
-  }
-  _position = position;
-  _currentCodePoint = codeUnit;
-  return true;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/rawIndex.html b/doc/api/dart-core/RuneIterator/rawIndex.html deleted file mode 100644 index 18935b13..00000000 --- a/doc/api/dart-core/RuneIterator/rawIndex.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - rawIndex property - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
rawIndex
- -
- -
- - - -
-

rawIndex property

- - -
- -
- int - rawIndex - -
- -
-

The starting position of the current rune in the string.

-

Returns -1 if there is no current rune (current is -1).

-
-
-

Implementation

-
int get rawIndex => (_position != _nextPosition) ? _position : -1;
-
-
- -
- -
- void - rawIndex= -(int rawIndex) - -
- -
-

Resets the iterator to the rune at the specified index of the string.

-

Setting a negative rawIndex, or one greater than or equal to -string.length, is an error. So is setting it in the middle of a surrogate - pair.

-

Setting the position to the end of then string means that there is no -current rune.

-
-
-

Implementation

-
void set rawIndex(int rawIndex) {
-  RangeError.checkValidIndex(rawIndex, string, "rawIndex");
-  reset(rawIndex);
-  moveNext();
-}
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/reset.html b/doc/api/dart-core/RuneIterator/reset.html deleted file mode 100644 index 4fc2ecdd..00000000 --- a/doc/api/dart-core/RuneIterator/reset.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - reset method - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
reset
- -
- -
- - - -
-

reset method

- -
- void - reset -([int rawIndex = 0 ]) - -
-
-

Resets the iterator to the given index into the string.

-

After this the current value is unset. -You must call moveNext make the rune at the position current, -or movePrevious for the last rune before the position.

-

The rawIndex must be non-negative and no greater than string.length. -It must also not be the index of the trailing surrogate of a surrogate -pair.

-
- -
-

Implementation

-
void reset([int rawIndex = 0]) {
-  RangeError.checkValueInInterval(rawIndex, 0, string.length, "rawIndex");
-  _checkSplitSurrogate(rawIndex);
-  _position = _nextPosition = rawIndex;
-  _currentCodePoint = -1;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/RuneIterator/string.html b/doc/api/dart-core/RuneIterator/string.html deleted file mode 100644 index a6994af7..00000000 --- a/doc/api/dart-core/RuneIterator/string.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - string property - RuneIterator class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
string
- -
- -
- - - -
-

string property

- -
- String - string -
final
-
-
-

String being iterated.

-
-
-

Implementation

-
final String string
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Runes-class.html b/doc/api/dart-core/Runes-class.html deleted file mode 100644 index 0848ee6e..00000000 --- a/doc/api/dart-core/Runes-class.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - - - - - Runes class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Runes
- -
- -
- - - -
-

Runes class

- -
-

The runes (integer Unicode code points) of a String.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Runes(String string) -
-
- -
-
-
- -
-

Properties

- -
-
- iterator - RuneIterator -
-
- Returns a new Iterator that allows iterating the elements of this -Iterable. [...] -
read-only, override
-
-
- last - int -
-
- Returns the last element. [...] -
read-only, override
-
-
- string - String -
-
- -
final
-
-
- first - int -
-
- Returns the first element. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- length - int -
-
- Returns the number of elements in this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - int -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- any(bool test(int element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- cast<R>() - Iterable<R> - -
-
- Provides a view of this iterable as an iterable of R instances. [...] -
inherited
-
-
- contains(Object element) - bool - -
-
- Returns true if the collection contains an element equal to element. [...] -
inherited
-
-
- elementAt(int index) - int - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(int element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(int element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(int element), { int orElse() }) - int - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, int element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<int> other) - Iterable<int> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(int element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(int element), { int orElse() }) - int - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(int e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(int combine(int value int element)) - int - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- singleWhere(bool test(int element), { int orElse() }) - int - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<int> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(int value)) - Iterable<int> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<int> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(int value)) - Iterable<int> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<int> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toSet() - Set<int> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of (some of) the elements of this. [...] -
inherited
-
-
- where(bool test(int element)) - Iterable<int> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Runes/Runes.html b/doc/api/dart-core/Runes/Runes.html deleted file mode 100644 index d9c2557a..00000000 --- a/doc/api/dart-core/Runes/Runes.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - Runes constructor - Runes class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Runes
- -
- -
- - - -
-

Runes constructor

- -
- - Runes(String string) -
- - -
-

Implementation

-
Runes(this.string);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Runes/iterator.html b/doc/api/dart-core/Runes/iterator.html deleted file mode 100644 index dd3f5ca9..00000000 --- a/doc/api/dart-core/Runes/iterator.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - iterator property - Runes class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- RuneIterator - iterator -
override
-
- -
-

Returns a new Iterator that allows iterating the elements of this -Iterable.

-

Iterable classes may specify the iteration order of their elements -(for example List always iterate in index order), -or they may leave it unspecified (for example a hash-based Set -may iterate in any order).

-

Each time iterator is read, it returns a new iterator, -which can be used to iterate through all the elements again. -The iterators of the same iterable can be stepped through independently, -but should return the same elements in the same order, -as long as the underlying collection isn't changed.

-

Modifying the collection may cause new iterators to produce -different elements, and may change the order of existing elements. -A List specifies its iteration order precisely, -so modifying the list changes the iteration order predictably. -A hash-based Set may change its iteration order completely -when adding a new element to the set.

-

Modifying the underlying collection after creating the new iterator -may cause an error the next time Iterator.moveNext is called -on that iterator. -Any modifiable iterable class should specify which operations will -break iteration.

-
-
-

Implementation

-
RuneIterator get iterator => RuneIterator(string);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Runes/last.html b/doc/api/dart-core/Runes/last.html deleted file mode 100644 index b39d37ac..00000000 --- a/doc/api/dart-core/Runes/last.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - last property - Runes class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
last
- -
- -
- - - -
-

last property

- - -
- -
- int - last -
override
-
- -
-

Returns the last element.

-

Throws a StateError if this is empty. -Otherwise may iterate through the elements and returns the last one -seen. -Some iterables may have more efficient ways to find the last element -(for example a list can directly access the last element, -without iterating through the previous ones).

-
-
-

Implementation

-
int get last {
-  if (string.length == 0) {
-    throw StateError('No elements.');
-  }
-  int length = string.length;
-  int code = string.codeUnitAt(length - 1);
-  if (_isTrailSurrogate(code) && string.length > 1) {
-    int previousCode = string.codeUnitAt(length - 2);
-    if (_isLeadSurrogate(previousCode)) {
-      return _combineSurrogatePair(previousCode, code);
-    }
-  }
-  return code;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Runes/string.html b/doc/api/dart-core/Runes/string.html deleted file mode 100644 index ebf5a854..00000000 --- a/doc/api/dart-core/Runes/string.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - string property - Runes class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
string
- -
- -
- - - -
-

string property

- -
- String - string -
final
-
-
-

Implementation

-
final String string
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set-class.html b/doc/api/dart-core/Set-class.html deleted file mode 100644 index 615bf96a..00000000 --- a/doc/api/dart-core/Set-class.html +++ /dev/null @@ -1,790 +0,0 @@ - - - - - - - - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Set
- -
- -
- - - -
-

Set<E> class

- -
-

A collection of objects in which each object can occur only once.

-

That is, for each object of the element type, the object is either considered -to be in the set, or to not be in the set.

-

Set implementations may consider some elements indistinguishable. These -elements are treated as being the same for any operation on the set.

-

The default Set implementation, LinkedHashSet, considers objects -indistinguishable if they are equal with regard to -operator Object.==.

-

Iterating over elements of a set may be either unordered -or ordered in some way. Examples:

-
    -
  • A HashSet is unordered, which means that its iteration order is -unspecified,
  • -
  • LinkedHashSet iterates in the insertion order of its elements, and
  • -
  • a sorted set like SplayTreeSet iterates the elements in sorted order.
  • -
-

It is generally not allowed to modify the set (add or remove elements) while -an operation on the set is being performed, for example during a call to -forEach or containsAll. Nor is it allowed to modify the set while -iterating either the set itself or any Iterable that is backed by the set, -such as the ones returned by methods like where and map.

-

It is generally not allowed to modify the equality of elements (and thus not -their hashcode) while they are in the set. Some specialized subtypes may be -more permissive, in which case they should document this behavior.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Set() -
-
- Creates an empty Set. [...] -
factory
-
-
- Set.from(Iterable elements) -
-
- Creates a Set that contains all elements. [...] -
factory
-
-
- Set.identity() -
-
- Creates an empty identity Set. [...] -
factory
-
-
- Set.of(Iterable<E> elements) -
-
- Creates a Set from elements. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- iterator - Iterator<E> -
-
- Provides an iterator that iterates over the elements of this set. [...] -
read-only, override
-
-
- first - → E -
-
- Returns the first element. [...] -
read-only, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isEmpty - bool -
-
- Returns true if there are no elements in this collection. [...] -
read-only, inherited
-
-
- isNotEmpty - bool -
-
- Returns true if there is at least one element in this collection. [...] -
read-only, inherited
-
-
- last - → E -
-
- Returns the last element. [...] -
read-only, inherited
-
-
- length - int -
-
- Returns the number of elements in this. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- single - → E -
-
- Checks that this iterable has only one element, and returns that element. [...] -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(E value) - bool - -
-
- Adds value to the set. [...] - -
-
- addAll(Iterable<E> elements) - → void - -
-
- Adds all elements to this Set. [...] - -
-
- cast<R>() - Set<R> - -
-
- Provides a view of this set as a set of R instances. [...] -
override
-
-
- clear() - → void - -
-
- Removes all elements in the set. - -
-
- contains(Object value) - bool - -
-
- Returns true if value is in the set. -
override
-
-
- containsAll(Iterable<Object> other) - bool - -
-
- Returns whether this Set contains all the elements of other. - -
-
- difference(Set<Object> other) - Set<E> - -
-
- Returns a new set with the elements of this that are not in other. [...] - -
-
- intersection(Set<Object> other) - Set<E> - -
-
- Returns a new set which is the intersection between this set and other. [...] - -
-
- lookup(Object object) - → E - -
-
- If an object equal to object is in the set, return it. [...] - -
-
- remove(Object value) - bool - -
-
- Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set. - -
-
- removeAll(Iterable<Object> elements) - → void - -
-
- Removes each element of elements from this set. - -
-
- removeWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that satisfy test. - -
-
- retainAll(Iterable<Object> elements) - → void - -
-
- Removes all elements of this set that are not elements in elements. [...] - -
-
- retainWhere(bool test(E element)) - → void - -
-
- Removes all elements of this set that fail to satisfy test. - -
-
- toSet() - Set<E> - -
-
- Creates a Set containing the same elements as this iterable. [...] -
override
-
-
- union(Set<E> other) - Set<E> - -
-
- Returns a new set which contains all the elements of this set and other. [...] - -
-
- any(bool test(E element)) - bool - -
-
- Checks whether any element of this iterable satisfies test. [...] -
inherited
-
-
- elementAt(int index) - → E - -
-
- Returns the indexth element. [...] -
inherited
-
-
- every(bool test(E element)) - bool - -
-
- Checks whether every element of this iterable satisfies test. [...] -
inherited
-
-
- expand<T>(Iterable<T> f(E element)) - Iterable<T> - -
-
- Expands each element of this Iterable into zero or more elements. [...] -
inherited
-
-
- firstWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the first element that satisfies the given predicate test. [...] -
inherited
-
-
- fold<T>(T initialValue, T combine(T previousValue, E element)) - → T - -
-
- Reduces a collection to a single value by iteratively combining each -element of the collection with an existing value [...] -
inherited
-
-
- followedBy(Iterable<E> other) - Iterable<E> - -
-
- Returns the lazy concatentation of this iterable and other. [...] -
inherited
-
-
- forEach(void f(E element)) - → void - -
-
- Applies the function f to each element of this collection in iteration -order. -
inherited
-
-
- join([String separator = "" ]) - String - -
-
- Converts each element to a String and concatenates the strings. [...] -
inherited
-
-
- lastWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the last element that satisfies the given predicate test. [...] -
inherited
-
-
- map<T>(T f(E e)) - Iterable<T> - -
-
- Returns a new lazy Iterable with elements that are created by -calling f on each element of this Iterable in iteration order. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- reduce(E combine(E value E element)) - → E - -
-
- Reduces a collection to a single value by iteratively combining elements -of the collection using the provided function. [...] -
inherited
-
-
- singleWhere(bool test(E element), { E orElse() }) - → E - -
-
- Returns the single element that satisfies test. [...] -
inherited
-
-
- skip(int count) - Iterable<E> - -
-
- Returns an Iterable that provides all but the first count elements. [...] -
inherited
-
-
- skipWhile(bool test(E value)) - Iterable<E> - -
-
- Returns an Iterable that skips leading elements while test is satisfied. [...] -
inherited
-
-
- take(int count) - Iterable<E> - -
-
- Returns a lazy iterable of the count first elements of this iterable. [...] -
inherited
-
-
- takeWhile(bool test(E value)) - Iterable<E> - -
-
- Returns a lazy iterable of the leading elements satisfying test. [...] -
inherited
-
-
- toList({bool growable: true }) - List<E> - -
-
- Creates a List containing the elements of this Iterable. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of (some of) the elements of this. [...] -
inherited
-
-
- where(bool test(E element)) - Iterable<E> - -
-
- Returns a new lazy Iterable with all elements that satisfy the -predicate test. [...] -
inherited
-
-
- whereType<T>() - Iterable<T> - -
-
- Returns a new lazy Iterable with all elements that have type T. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- castFrom<S, T>(Set<S> source, { Set<R> newSet() }) - Set<T> - -
-
- Adapts source to be a Set<T>. [...] -
override
-
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/Set.from.html b/doc/api/dart-core/Set/Set.from.html deleted file mode 100644 index 5e6ff8f7..00000000 --- a/doc/api/dart-core/Set/Set.from.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - Set.from constructor - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Set.from
- -
- -
- - - -
-

Set<E>.from constructor

- -
- - Set<E>.from(Iterable elements) -
- -
-

Creates a Set that contains all elements.

-

All the elements should be instances of E. -The elements iterable itself can have any type, -so this constructor can be used to down-cast a Set, for example as:

-
Set<SuperType> superSet = ...;
-Set<SubType> subSet =
-    new Set<SubType>.from(superSet.where((e) => e is SubType));
-
-

The created Set is a LinkedHashSet. As such, it considers elements that -are equal (using operator ==) to be indistinguishable, and requires them to -have a compatible Object.hashCode implementation.

-

The set is equivalent to one created by -new LinkedHashSet<E>.from(elements).

-
- -
-

Implementation

-
factory Set.from(Iterable elements) = LinkedHashSet<E>.from;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/Set.html b/doc/api/dart-core/Set/Set.html deleted file mode 100644 index b7b8756e..00000000 --- a/doc/api/dart-core/Set/Set.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - Set constructor - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Set
- -
- -
- - - -
-

Set<E> constructor

- -
- - Set<E>() -
- -
-

Creates an empty Set.

-

The created Set is a plain LinkedHashSet. -As such, it considers elements that are equal (using operator ==) to be -indistinguishable, and requires them to have a compatible -Object.hashCode implementation.

-

The set is equivalent to one created by new LinkedHashSet<E>().

-
- -
-

Implementation

-
factory Set() = LinkedHashSet<E>;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/Set.identity.html b/doc/api/dart-core/Set/Set.identity.html deleted file mode 100644 index 5ac89496..00000000 --- a/doc/api/dart-core/Set/Set.identity.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - Set.identity constructor - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Set.identity
- -
- -
- - - -
-

Set<E>.identity constructor

- -
- - Set<E>.identity() -
- -
-

Creates an empty identity Set.

-

The created Set is a LinkedHashSet that uses identity as equality -relation.

-

The set is equivalent to one created by new LinkedHashSet<E>.identity().

-
- -
-

Implementation

-
factory Set.identity() = LinkedHashSet<E>.identity;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/Set.of.html b/doc/api/dart-core/Set/Set.of.html deleted file mode 100644 index 93bb9ec7..00000000 --- a/doc/api/dart-core/Set/Set.of.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - Set.of constructor - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Set.of
- -
- -
- - - -
-

Set<E>.of constructor

- -
- - Set<E>.of(Iterable<E> elements) -
- -
-

Creates a Set from elements.

-

The created Set is a LinkedHashSet. As such, it considers elements that -are equal (using operator ==) to be indistinguishable, and requires them to -have a compatible Object.hashCode implementation.

-

The set is equivalent to one created by -new LinkedHashSet<E>.of(elements).

-
- -
-

Implementation

-
factory Set.of(Iterable<E> elements) = LinkedHashSet<E>.of;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/add.html b/doc/api/dart-core/Set/add.html deleted file mode 100644 index ceaecdb9..00000000 --- a/doc/api/dart-core/Set/add.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - add method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- bool - add -(E value) - -
-
-

Adds value to the set.

-

Returns true if value (or an equal value) was not yet in the set. -Otherwise returns false and the set is not changed.

-

Example:

-
var set = new Set();
-var time1 = new DateTime.fromMillisecondsSinceEpoch(0);
-var time2 = new DateTime.fromMillisecondsSinceEpoch(0);
-// time1 and time2 are equal, but not identical.
-Expect.isTrue(time1 == time2);
-Expect.isFalse(identical(time1, time2));
-set.add(time1);  // => true.
-// A value equal to time2 exists already in the set, and the call to
-// add doesn't change the set.
-set.add(time2);  // => false.
-Expect.isTrue(set.length == 1);
-Expect.isTrue(identical(time1, set.first));
-
-
- -
-

Implementation

-
bool add(E value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/addAll.html b/doc/api/dart-core/Set/addAll.html deleted file mode 100644 index 29d97fe1..00000000 --- a/doc/api/dart-core/Set/addAll.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - addAll method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
addAll
- -
- -
- - - -
-

addAll method

- -
- void - addAll -(Iterable<E> elements) - -
-
-

Adds all elements to this Set.

-

Equivalent to adding each element in elements using add, -but some collections may be able to optimize it.

-
- -
-

Implementation

-
void addAll(Iterable<E> elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/cast.html b/doc/api/dart-core/Set/cast.html deleted file mode 100644 index e08541bc..00000000 --- a/doc/api/dart-core/Set/cast.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - cast method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
cast
- -
- -
- - - -
-

cast<R> method

- -
- Set<R> - cast -<R>() -
override
-
-
-

Provides a view of this set as a set of R instances.

-

If this set contains only instances of R, all read operations -will work correctly. If any operation tries to access an element -that is not an instance of R, the access will throw instead.

-

Elements added to the set (e.g., by using add or addAll) -must be instance of R to be valid arguments to the adding function, -and they must be instances of E as well to be accepted by -this set as well.

-
- -
-

Implementation

-
Set<R> cast<R>();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/castFrom.html b/doc/api/dart-core/Set/castFrom.html deleted file mode 100644 index c4c06678..00000000 --- a/doc/api/dart-core/Set/castFrom.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - castFrom method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
castFrom
- -
- -
- - - -
-

castFrom<S, T> method

- -
- Set<T> - castFrom -<S, T>(Set<S> source, { Set<R> newSet() }) -
override
-
-
-

Adapts source to be a Set<T>.

-

If newSet is provided, it is used to create the new sets returned -by toSet, union, and is also used for intersection and difference. -If newSet is omitted, it defaults to creating a new set using the -default Set constructor, and intersection and difference -returns an adapted version of calling the same method on the source.

-

Any time the set would produce an element that is not a T, -the element access will throw.

-

Any time a T value is attempted added into the adapted set, -the store will throw unless the value is also an instance of S.

-

If all accessed elements of source are actually instances of T, -and if all elements added to the returned set are actually instance -of S, -then the returned set can be used as a Set<T>.

-
- -
-

Implementation

-
static Set<T> castFrom<S, T>(Set<S> source, {Set<R> Function<R>()? newSet}) =>
-    CastSet<S, T>(source, newSet);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/clear.html b/doc/api/dart-core/Set/clear.html deleted file mode 100644 index 8cb4a474..00000000 --- a/doc/api/dart-core/Set/clear.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - clear method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() - -
-
-

Removes all elements in the set.

-
- -
-

Implementation

-
void clear();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/contains.html b/doc/api/dart-core/Set/contains.html deleted file mode 100644 index 51706980..00000000 --- a/doc/api/dart-core/Set/contains.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - contains method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- bool - contains -(Object value) -
override
-
-
-

Returns true if value is in the set.

-
- -
-

Implementation

-
bool contains(Object? value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/containsAll.html b/doc/api/dart-core/Set/containsAll.html deleted file mode 100644 index bbf5c365..00000000 --- a/doc/api/dart-core/Set/containsAll.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - containsAll method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
containsAll
- -
- -
- - - -
-

containsAll method

- -
- bool - containsAll -(Iterable<Object> other) - -
-
-

Returns whether this Set contains all the elements of other.

-
- -
-

Implementation

-
bool containsAll(Iterable<Object?> other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/difference.html b/doc/api/dart-core/Set/difference.html deleted file mode 100644 index d15545f9..00000000 --- a/doc/api/dart-core/Set/difference.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - difference method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
difference
- -
- -
- - - -
-

difference method

- -
- Set<E> - difference -(Set<Object> other) - -
-
-

Returns a new set with the elements of this that are not in other.

-

That is, the returned set contains all the elements of this Set that -are not elements of other according to other.contains.

-
- -
-

Implementation

-
Set<E> difference(Set<Object?> other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/intersection.html b/doc/api/dart-core/Set/intersection.html deleted file mode 100644 index 76d9424c..00000000 --- a/doc/api/dart-core/Set/intersection.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - intersection method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
intersection
- -
- -
- - - -
-

intersection method

- -
- Set<E> - intersection -(Set<Object> other) - -
-
-

Returns a new set which is the intersection between this set and other.

-

That is, the returned set contains all the elements of this Set that -are also elements of other according to other.contains.

-
- -
-

Implementation

-
Set<E> intersection(Set<Object?> other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/iterator.html b/doc/api/dart-core/Set/iterator.html deleted file mode 100644 index 3056dcba..00000000 --- a/doc/api/dart-core/Set/iterator.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - iterator property - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
iterator
- -
- -
- - - -
-

iterator property

- - -
- -
- Iterator<E> - iterator -
override
-
- -
-

Provides an iterator that iterates over the elements of this set.

-

The order of iteration is defined by the individual Set implementation, -but must be consistent between changes to the set.

-
-
-

Implementation

-
Iterator<E> get iterator;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/lookup.html b/doc/api/dart-core/Set/lookup.html deleted file mode 100644 index f03d707f..00000000 --- a/doc/api/dart-core/Set/lookup.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - lookup method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
lookup
- -
- -
- - - -
-

lookup method

- -
- E - lookup -(Object object) - -
-
-

If an object equal to object is in the set, return it.

-

Checks whether object is in the set, like contains, and if so, -returns the object in the set, otherwise returns null.

-

If the equality relation used by the set is not identity, -then the returned object may not be identical to object. -Some set implementations may not be able to implement this method. -If the contains method is computed, -rather than being based on an actual object instance, -then there may not be a specific object instance representing the -set element.

-
- -
-

Implementation

-
E? lookup(Object? object);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/remove.html b/doc/api/dart-core/Set/remove.html deleted file mode 100644 index 77659a9d..00000000 --- a/doc/api/dart-core/Set/remove.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - remove method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
remove
- -
- -
- - - -
-

remove method

- -
- bool - remove -(Object value) - -
-
-

Removes value from the set. Returns true if value was -in the set. Returns false otherwise. The method has no effect -if value value was not in the set.

-
- -
-

Implementation

-
bool remove(Object? value);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/removeAll.html b/doc/api/dart-core/Set/removeAll.html deleted file mode 100644 index 62862c39..00000000 --- a/doc/api/dart-core/Set/removeAll.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - removeAll method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeAll
- -
- -
- - - -
-

removeAll method

- -
- void - removeAll -(Iterable<Object> elements) - -
-
-

Removes each element of elements from this set.

-
- -
-

Implementation

-
void removeAll(Iterable<Object?> elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/removeWhere.html b/doc/api/dart-core/Set/removeWhere.html deleted file mode 100644 index 23482178..00000000 --- a/doc/api/dart-core/Set/removeWhere.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - removeWhere method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeWhere
- -
- -
- - - -
-

removeWhere method

- -
- void - removeWhere -(bool test(E element)) - -
-
-

Removes all elements of this set that satisfy test.

-
- -
-

Implementation

-
void removeWhere(bool test(E element));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/retainAll.html b/doc/api/dart-core/Set/retainAll.html deleted file mode 100644 index 2f324be3..00000000 --- a/doc/api/dart-core/Set/retainAll.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - retainAll method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainAll
- -
- -
- - - -
-

retainAll method

- -
- void - retainAll -(Iterable<Object> elements) - -
-
-

Removes all elements of this set that are not elements in elements.

-

Checks for each element of elements whether there is an element in this -set that is equal to it (according to this.contains), and if so, the -equal element in this set is retained, and elements that are not equal -to any element in elements are removed.

-
- -
-

Implementation

-
void retainAll(Iterable<Object?> elements);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/retainWhere.html b/doc/api/dart-core/Set/retainWhere.html deleted file mode 100644 index 694dfec4..00000000 --- a/doc/api/dart-core/Set/retainWhere.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - retainWhere method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
retainWhere
- -
- -
- - - -
-

retainWhere method

- -
- void - retainWhere -(bool test(E element)) - -
-
-

Removes all elements of this set that fail to satisfy test.

-
- -
-

Implementation

-
void retainWhere(bool test(E element));
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/toSet.html b/doc/api/dart-core/Set/toSet.html deleted file mode 100644 index 358657e9..00000000 --- a/doc/api/dart-core/Set/toSet.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - toSet method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSet
- -
- -
- - - -
-

toSet method

- -
- Set<E> - toSet -() -
override
-
-
-

Creates a Set containing the same elements as this iterable.

-

The set may contain fewer elements than the iterable, -if the iterable contains an element more than once, -or it contains one or more elements that are equal. -The order of the elements in the set is not guaranteed to be the same -as for the iterable.

-
- -
-

Implementation

-
Set<E> toSet();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Set/union.html b/doc/api/dart-core/Set/union.html deleted file mode 100644 index 6db5b725..00000000 --- a/doc/api/dart-core/Set/union.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - union method - Set class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
union
- -
- -
- - - -
-

union method

- -
- Set<E> - union -(Set<E> other) - -
-
-

Returns a new set which contains all the elements of this set and other.

-

That is, the returned set contains all the elements of this Set and -all the elements of other.

-
- -
-

Implementation

-
Set<E> union(Set<E> other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Sink-class.html b/doc/api/dart-core/Sink-class.html deleted file mode 100644 index 7ddd1202..00000000 --- a/doc/api/dart-core/Sink-class.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - - Sink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Sink
- -
- -
- - - -
-

Sink<T> class

- -
-

A generic destination for data.

-

Multiple data values can be put into a sink, and when no more data is -available, the sink should be closed.

-

This is a generic interface that other data receivers can implement.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Sink() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- add(T data) - → void - -
-
- Adds data to the sink. [...] - -
-
- close() - → void - -
-
- Closes the sink. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Sink/Sink.html b/doc/api/dart-core/Sink/Sink.html deleted file mode 100644 index 630c0ba4..00000000 --- a/doc/api/dart-core/Sink/Sink.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - Sink constructor - Sink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Sink
- -
- -
- - - -
-

Sink<T> constructor

- -
- - Sink<T>() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Sink/add.html b/doc/api/dart-core/Sink/add.html deleted file mode 100644 index f14b84e5..00000000 --- a/doc/api/dart-core/Sink/add.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - add method - Sink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
add
- -
- -
- - - -
-

add method

- -
- void - add -(T data) - -
-
-

Adds data to the sink.

-

Must not be called after a call to close.

-
- -
-

Implementation

-
void add(T data);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Sink/close.html b/doc/api/dart-core/Sink/close.html deleted file mode 100644 index 7e8b1752..00000000 --- a/doc/api/dart-core/Sink/close.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - close method - Sink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
close
- -
- -
- - - -
-

close method

- -
- void - close -() - -
-
-

Closes the sink.

-

The add method must not be called after this method.

-

Calling this method more than once is allowed, but does nothing.

-
- -
-

Implementation

-
void close();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackOverflowError-class.html b/doc/api/dart-core/StackOverflowError-class.html deleted file mode 100644 index 31c07c63..00000000 --- a/doc/api/dart-core/StackOverflowError-class.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - StackOverflowError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StackOverflowError
- -
- -
- - - -
-

StackOverflowError class

- - -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- StackOverflowError() -
-
- -
const
-
-
-
- -
-

Properties

- -
-
- stackTrace - StackTrace -
-
- -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackOverflowError/StackOverflowError.html b/doc/api/dart-core/StackOverflowError/StackOverflowError.html deleted file mode 100644 index 1051f56f..00000000 --- a/doc/api/dart-core/StackOverflowError/StackOverflowError.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - StackOverflowError constructor - StackOverflowError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StackOverflowError
- -
- -
- - - -
-

StackOverflowError constructor

- -
- const - StackOverflowError() -
- - -
-

Implementation

-
@pragma("vm:entry-point")
-const StackOverflowError();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackOverflowError/stackTrace.html b/doc/api/dart-core/StackOverflowError/stackTrace.html deleted file mode 100644 index 3d2470fb..00000000 --- a/doc/api/dart-core/StackOverflowError/stackTrace.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - stackTrace property - StackOverflowError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
stackTrace
- -
- -
- - - -
-

stackTrace property

- - -
- -
- StackTrace - stackTrace -
override
-
- -
-

Implementation

-
StackTrace? get stackTrace => null;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackOverflowError/toString.html b/doc/api/dart-core/StackOverflowError/toString.html deleted file mode 100644 index ea54bb9f..00000000 --- a/doc/api/dart-core/StackOverflowError/toString.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - toString method - StackOverflowError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "Stack Overflow";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackTrace-class.html b/doc/api/dart-core/StackTrace-class.html deleted file mode 100644 index 346739b7..00000000 --- a/doc/api/dart-core/StackTrace-class.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - - - StackTrace class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StackTrace
- -
- -
- - - -
-

StackTrace class

- -
-

An interface implemented by all stack trace objects.

-

A StackTrace is intended to convey information to the user about the call -sequence that triggered an exception.

-

These objects are created by the runtime, it is not possible to create -them programmatically.

-
- - -
-

Constructors

- -
-
- StackTrace() -
-
- -
-
- StackTrace.fromString(String stackTraceString) -
-
- Create a StackTrace object from stackTraceString. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a String representation of the stack trace. [...] -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- -
-

Static Properties

- -
-
- current - StackTrace -
-
- Returns a representation of the current stack trace. [...] -
read-only
-
-
-
- - -
-

Constants

- -
-
- empty - → const _StringStackTrace -
-
- A stack trace object with no information. [...] -
@Since("2.8")
-
- const _StringStackTrace("") -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackTrace/StackTrace.fromString.html b/doc/api/dart-core/StackTrace/StackTrace.fromString.html deleted file mode 100644 index 401634a9..00000000 --- a/doc/api/dart-core/StackTrace/StackTrace.fromString.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - StackTrace.fromString constructor - StackTrace class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StackTrace.fromString
- -
- -
- - - -
-

StackTrace.fromString constructor

- -
- - StackTrace.fromString(String stackTraceString) -
- -
-

Create a StackTrace object from stackTraceString.

-

The created stack trace will have a toString method returning -stackTraceString.

-

The stackTraceString can be a string returned by some other -stack trace, or it can be any string at all. -If the string doesn't look like a stack trace, code that interprets -stack traces is likely to fail, so fake stack traces should be used -with care.

-
- -
-

Implementation

-
factory StackTrace.fromString(String stackTraceString) = _StringStackTrace;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackTrace/StackTrace.html b/doc/api/dart-core/StackTrace/StackTrace.html deleted file mode 100644 index 4714d736..00000000 --- a/doc/api/dart-core/StackTrace/StackTrace.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - StackTrace constructor - StackTrace class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StackTrace
- -
- -
- - - -
-

StackTrace constructor

- -
- - StackTrace() -
- - -
-

Implementation

-
StackTrace();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackTrace/current.html b/doc/api/dart-core/StackTrace/current.html deleted file mode 100644 index 032ef34e..00000000 --- a/doc/api/dart-core/StackTrace/current.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - current property - StackTrace class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
current
- -
- -
- - - -
-

current property

- - -
- -
- StackTrace - current - -
- -
-

Returns a representation of the current stack trace.

-

This is similar to what can be achieved by doing:

-
try { throw 0; } catch (_, stack) { return stack; }
-
-

The getter achieves this without throwing, except on platforms that -have no other way to get a stack trace.

-
-
-

Implementation

-
external static StackTrace get current;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackTrace/empty-constant.html b/doc/api/dart-core/StackTrace/empty-constant.html deleted file mode 100644 index 89f9e0f8..00000000 --- a/doc/api/dart-core/StackTrace/empty-constant.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - empty constant - StackTrace class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
empty
- -
- -
- - - -
-

empty constant

- -
- _StringStackTrace - const empty - = - const _StringStackTrace("") -
- -
-

A stack trace object with no information.

-

This stack trace is used as the default in situations where -a stack trace is required, but the user has not supplied one.

-
-
-

Implementation

-
static const empty = const _StringStackTrace("")
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StackTrace/toString.html b/doc/api/dart-core/StackTrace/toString.html deleted file mode 100644 index 0ffac978..00000000 --- a/doc/api/dart-core/StackTrace/toString.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - toString method - StackTrace class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a String representation of the stack trace.

-

The string represents the full stack trace starting from -the point where a throw occurred to the top of the current call sequence.

-

The exact format of the string representation is not final.

-
- -
-

Implementation

-
String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StateError-class.html b/doc/api/dart-core/StateError-class.html deleted file mode 100644 index 3dfd58ec..00000000 --- a/doc/api/dart-core/StateError-class.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - - StateError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StateError
- -
- -
- - - -
-

StateError class

- -
-

The operation was not allowed by the current state of the object.

-

This is a generic error used for a variety of different erroneous -actions. The message should be descriptive.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- StateError(String message) -
-
- -
-
-
- -
-

Properties

- -
-
- message - String -
-
- -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StateError/StateError.html b/doc/api/dart-core/StateError/StateError.html deleted file mode 100644 index 7ceb14ad..00000000 --- a/doc/api/dart-core/StateError/StateError.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - StateError constructor - StateError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StateError
- -
- -
- - - -
-

StateError constructor

- -
- - StateError(String message) -
- - -
-

Implementation

-
StateError(this.message);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StateError/message.html b/doc/api/dart-core/StateError/message.html deleted file mode 100644 index 2ad7da72..00000000 --- a/doc/api/dart-core/StateError/message.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - message property - StateError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- -
- String - message -
final
-
-
-

Implementation

-
final String message
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StateError/toString.html b/doc/api/dart-core/StateError/toString.html deleted file mode 100644 index 1e9a0662..00000000 --- a/doc/api/dart-core/StateError/toString.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - toString method - StateError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "Bad state: $message";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch-class.html b/doc/api/dart-core/Stopwatch-class.html deleted file mode 100644 index 6652081c..00000000 --- a/doc/api/dart-core/Stopwatch-class.html +++ /dev/null @@ -1,359 +0,0 @@ - - - - - - - - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stopwatch
- -
- -
- - - -
-

Stopwatch class

- -
-

A simple stopwatch interface to measure elapsed time.

-
- - -
-

Constructors

- -
-
- Stopwatch() -
-
- Creates a Stopwatch in stopped state with a zero elapsed count. [...] -
-
-
- -
-

Properties

- -
-
- elapsed - Duration -
-
- The elapsedTicks counter converted to a Duration. -
read-only
-
-
- elapsedMicroseconds - int -
-
- The elapsedTicks counter converted to microseconds. -
read-only
-
-
- elapsedMilliseconds - int -
-
- The elapsedTicks counter converted to milliseconds. -
read-only
-
-
- elapsedTicks - int -
-
- The elapsed number of clock ticks since calling start while the -Stopwatch is running. [...] -
read-only
-
-
- frequency - int -
-
- Frequency of the elapsed counter in Hz. -
read-only
-
-
- isRunning - bool -
-
- Whether the Stopwatch is currently running. -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- reset() - → void - -
-
- Resets the elapsed count to zero. [...] - -
-
- start() - → void - -
-
- Starts the Stopwatch. [...] - -
-
- stop() - → void - -
-
- Stops the Stopwatch. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/Stopwatch.html b/doc/api/dart-core/Stopwatch/Stopwatch.html deleted file mode 100644 index af07d9f0..00000000 --- a/doc/api/dart-core/Stopwatch/Stopwatch.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - Stopwatch constructor - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Stopwatch
- -
- -
- - - -
-

Stopwatch constructor

- -
- - Stopwatch() -
- -
-

Creates a Stopwatch in stopped state with a zero elapsed count.

-

The following example shows how to start a Stopwatch -immediately after allocation.

-
var stopwatch = new Stopwatch()..start();
-
-
- -
-

Implementation

-
Stopwatch() {
-  _frequency; // Ensures initialization before using any method.
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/elapsed.html b/doc/api/dart-core/Stopwatch/elapsed.html deleted file mode 100644 index d400187d..00000000 --- a/doc/api/dart-core/Stopwatch/elapsed.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - elapsed property - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
elapsed
- -
- -
- - - -
-

elapsed property

- - -
- -
- Duration - elapsed - -
- -
-

The elapsedTicks counter converted to a Duration.

-
-
-

Implementation

-
Duration get elapsed {
-  return Duration(microseconds: elapsedMicroseconds);
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/elapsedMicroseconds.html b/doc/api/dart-core/Stopwatch/elapsedMicroseconds.html deleted file mode 100644 index b9eb1523..00000000 --- a/doc/api/dart-core/Stopwatch/elapsedMicroseconds.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - elapsedMicroseconds property - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
elapsedMicroseconds
- -
- -
- - - -
-

elapsedMicroseconds property

- - -
- -
- int - elapsedMicroseconds - -
- -
-

The elapsedTicks counter converted to microseconds.

-
-
-

Implementation

-
external int get elapsedMicroseconds;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/elapsedMilliseconds.html b/doc/api/dart-core/Stopwatch/elapsedMilliseconds.html deleted file mode 100644 index b80e27ae..00000000 --- a/doc/api/dart-core/Stopwatch/elapsedMilliseconds.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - elapsedMilliseconds property - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
elapsedMilliseconds
- -
- -
- - - -
-

elapsedMilliseconds property

- - -
- -
- int - elapsedMilliseconds - -
- -
-

The elapsedTicks counter converted to milliseconds.

-
-
-

Implementation

-
external int get elapsedMilliseconds;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/elapsedTicks.html b/doc/api/dart-core/Stopwatch/elapsedTicks.html deleted file mode 100644 index 5cf03746..00000000 --- a/doc/api/dart-core/Stopwatch/elapsedTicks.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - elapsedTicks property - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
elapsedTicks
- -
- -
- - - -
-

elapsedTicks property

- - -
- -
- int - elapsedTicks - -
- -
-

The elapsed number of clock ticks since calling start while the -Stopwatch is running.

-

This is the elapsed number of clock ticks between calling start and -calling stop.

-

Is 0 if the Stopwatch has never been started.

-

The elapsed number of clock ticks increases by frequency every second.

-
-
-

Implementation

-
int get elapsedTicks {
-  return (_stop ?? _now()) - _start;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/frequency.html b/doc/api/dart-core/Stopwatch/frequency.html deleted file mode 100644 index 381a5ffe..00000000 --- a/doc/api/dart-core/Stopwatch/frequency.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - frequency property - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
frequency
- -
- -
- - - -
-

frequency property

- - -
- -
- int - frequency - -
- -
-

Frequency of the elapsed counter in Hz.

-
-
-

Implementation

-
int get frequency => _frequency;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/isRunning.html b/doc/api/dart-core/Stopwatch/isRunning.html deleted file mode 100644 index cb391132..00000000 --- a/doc/api/dart-core/Stopwatch/isRunning.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - isRunning property - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isRunning
- -
- -
- - - -
-

isRunning property

- - -
- -
- bool - isRunning - -
- -
-

Whether the Stopwatch is currently running.

-
-
-

Implementation

-
bool get isRunning => _stop == null;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/reset.html b/doc/api/dart-core/Stopwatch/reset.html deleted file mode 100644 index c12b02a1..00000000 --- a/doc/api/dart-core/Stopwatch/reset.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - reset method - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
reset
- -
- -
- - - -
-

reset method

- -
- void - reset -() - -
-
-

Resets the elapsed count to zero.

-

This method does not stop or start the Stopwatch.

-
- -
-

Implementation

-
void reset() {
-  _start = _stop ?? _now();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/start.html b/doc/api/dart-core/Stopwatch/start.html deleted file mode 100644 index ce19a168..00000000 --- a/doc/api/dart-core/Stopwatch/start.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - start method - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
start
- -
- -
- - - -
-

start method

- -
- void - start -() - -
-
-

Starts the Stopwatch.

-

The elapsed count is increasing monotonically. If the Stopwatch has -been stopped, then calling start again restarts it without resetting the -elapsed count.

-

If the Stopwatch is currently running, then calling start does nothing.

-
- -
-

Implementation

-
void start() {
-  int? stop = _stop;
-  if (stop != null) {
-    // (Re)start this stopwatch.
-    // Don't count the time while the stopwatch has been stopped.
-    _start += _now() - stop;
-    _stop = null;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Stopwatch/stop.html b/doc/api/dart-core/Stopwatch/stop.html deleted file mode 100644 index 0c43b564..00000000 --- a/doc/api/dart-core/Stopwatch/stop.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - stop method - Stopwatch class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
stop
- -
- -
- - - -
-

stop method

- -
- void - stop -() - -
-
-

Stops the Stopwatch.

-

The elapsedTicks count stops increasing after this call. If the -Stopwatch is currently not running, then calling this method has no -effect.

-
- -
-

Implementation

-
void stop() {
-  _stop ??= _now();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String-class.html b/doc/api/dart-core/String-class.html deleted file mode 100644 index 7ea52d4e..00000000 --- a/doc/api/dart-core/String-class.html +++ /dev/null @@ -1,707 +0,0 @@ - - - - - - - - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
String
- -
- -
- - - -
-

String class

- -
-

A sequence of UTF-16 code units.

-

Strings are mainly used to represent text. A character may be represented by -multiple code points, each code point consisting of one or two code -units. For example the Papua New Guinea flag character requires four code -units to represent two code points, but should be treated like a single -character: "🇵🇬". Platforms that do not support the flag character may show -the letters "PG" instead. If the code points are swapped, it instead becomes -the Guadeloupe flag "🇬🇵" ("GP").

-

A string can be either single or multiline. Single line strings are -written using matching single or double quotes, and multiline strings are -written using triple quotes. The following are all valid Dart strings:

-
'Single quotes';
-"Double quotes";
-'Double quotes in "single" quotes';
-"Single quotes in 'double' quotes";
-
-'''A
-multiline
-string''';
-
-"""
-Another
-multiline
-string""";
-
-

Strings are immutable. Although you cannot change a string, you can perform -an operation on a string and assign the result to a new string:

-
var string = 'Dart is fun';
-var newString = string.substring(0, 5);
-
-

You can use the plus (+) operator to concatenate strings:

-
'Dart ' + 'is ' + 'fun!'; // 'Dart is fun!'
-
-

You can also use adjacent string literals for concatenation:

-
'Dart ' 'is ' 'fun!';    // 'Dart is fun!'
-
-

You can use ${} to interpolate the value of Dart expressions -within strings. The curly braces can be omitted when evaluating identifiers:

-
string = 'dartlang';
-'$string has ${string.length} letters'; // 'dartlang has 8 letters'
-
-

A string is represented by a sequence of Unicode UTF-16 code units -accessible through the codeUnitAt or the codeUnits members:

-
string = 'Dart';
-string.codeUnitAt(0); // 68
-string.codeUnits;     // [68, 97, 114, 116]
-
-

The string representation of code units is accessible through the index -operator:

-
string[0];            // 'D'
-
-

The characters of a string are encoded in UTF-16. Decoding UTF-16, which -combines surrogate pairs, yields Unicode code points. Following a similar -terminology to Go, we use the name 'rune' for an integer representing a -Unicode code point. Use the runes property to get the runes of a string:

-
string.runes.toList(); // [68, 97, 114, 116]
-
-

For a character outside the Basic Multilingual Plane (plane 0) that is -composed of a surrogate pair, runes combines the pair and returns a -single integer. For example, the Unicode character for a -musical G-clef ('𝄞') with rune value 0x1D11E consists of a UTF-16 surrogate -pair: 0xD834 and 0xDD1E. Using codeUnits returns the surrogate pair, -and using runes returns their combined value:

-
var clef = '\u{1D11E}';
-clef.codeUnits;         // [0xD834, 0xDD1E]
-clef.runes.toList();    // [0x1D11E]
-
-

The String class can not be extended or implemented. Attempting to do so -yields a compile-time error.

-

Other resources

-

See StringBuffer to efficiently build a string incrementally. See -RegExp to work with regular expressions.

-

Also see:

- -
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- String.fromCharCode(int charCode) -
-
- Allocates a new String for the specified charCode. [...] -
factory
-
-
- String.fromCharCodes(Iterable<int> charCodes, [ int start = 0 int end ]) -
-
- Allocates a new String for the specified charCodes. [...] -
factory
-
-
- String.fromEnvironment(String name, { String defaultValue: "" }) -
-
- Returns the string value of the environment declaration name. [...] -
const
-
factory
-
-
-
- -
-

Properties

- -
-
- codeUnits - List<int> -
-
- Returns an unmodifiable list of the UTF-16 code units of this string. -
read-only
-
-
- hashCode - int -
-
- Returns a hash code derived from the code units of the string. [...] -
read-only, override
-
-
- isEmpty - bool -
-
- Returns true if this string is empty. -
read-only
-
-
- isNotEmpty - bool -
-
- Returns true if this string is not empty. -
read-only
-
-
- length - int -
-
- The length of the string. [...] -
read-only
-
-
- runes - Runes -
-
- Returns an Iterable of Unicode code-points of this string. [...] -
read-only
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- codeUnitAt(int index) - int - -
-
- Returns the 16-bit UTF-16 code unit at the given index. - -
-
- compareTo(String other) - int - -
-
- Compares this string to other. [...] -
override
-
-
- contains(Pattern other, [ int startIndex = 0 ]) - bool - -
-
- Returns true if this string contains a match of other: [...] - -
-
- endsWith(String other) - bool - -
-
- Returns true if this string ends with other. For example: [...] - -
-
- indexOf(Pattern pattern, [ int start = 0 ]) - int - -
-
- Returns the position of the first match of pattern in this string, -starting at start, inclusive: [...] - -
-
- lastIndexOf(Pattern pattern, [ int start ]) - int - -
-
- Returns the starting position of the last match pattern in this string, -searching backward starting at start, inclusive: [...] - -
-
- padLeft(int width, [ String padding = ' ' ]) - String - -
-
- Pads this string on the left if it is shorter than width. [...] - -
-
- padRight(int width, [ String padding = ' ' ]) - String - -
-
- Pads this string on the right if it is shorter than width. [...] - -
-
- replaceAll(Pattern from, String replace) - String - -
-
- Replaces all substrings that match from with replace. [...] - -
-
- replaceAllMapped(Pattern from, String replace(Match match)) - String - -
-
- Replace all substrings that match from by a string computed from the -match. [...] - -
-
- replaceFirst(Pattern from, String to, [ int startIndex = 0 ]) - String - -
-
- Returns a new string in which the first occurrence of from in this string -is replaced with to, starting from startIndex: [...] - -
-
- replaceFirstMapped(Pattern from, String replace(Match match), [ int startIndex = 0 ]) - String - -
-
- Replace the first occurrence of from in this string. [...] - -
-
- replaceRange(int start, int end, String replacement) - String - -
-
- Replaces the substring from start to end with replacement. [...] - -
-
- split(Pattern pattern) - List<String> - -
-
- Splits the string at matches of pattern and returns a list of substrings. [...] - -
-
- splitMapJoin(Pattern pattern, { String onMatch(Match), String onNonMatch(String) }) - String - -
-
- Splits the string, converts its parts, and combines them into a new -string. [...] - -
-
- startsWith(Pattern pattern, [ int index = 0 ]) - bool - -
-
- Returns true if this string starts with a match of pattern. [...] - -
-
- substring(int startIndex, [ int endIndex ]) - String - -
-
- Returns the substring of this string that extends from startIndex, -inclusive, to endIndex, exclusive. [...] - -
-
- toLowerCase() - String - -
-
- Converts all characters in this string to lower case. -If the string is already in all lower case, this method returns this. [...] - -
-
- toUpperCase() - String - -
-
- Converts all characters in this string to upper case. -If the string is already in all upper case, this method returns this. [...] - -
-
- trim() - String - -
-
- Returns the string without any leading and trailing whitespace. [...] - -
-
- trimLeft() - String - -
-
- Returns the string without any leading whitespace. [...] - -
-
- trimRight() - String - -
-
- Returns the string without any trailing whitespace. [...] - -
-
- allMatches(String string, [ int start = 0 ]) - Iterable<Match> - -
-
- Match this pattern against the string repeatedly. [...] -
inherited
-
-
- matchAsPrefix(String string, [ int start = 0 ]) - Match - -
-
- Match this pattern against the start of string. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator *(int times) - String - -
-
- Creates a new string by concatenating this string with itself a number -of times. [...] - -
-
- operator +(String other) - String - -
-
- Creates a new string by concatenating this string with other. [...] - -
-
- operator ==(Object other) - bool - -
-
- Returns true if other is a String with the same sequence of code units. [...] -
override
-
-
- operator [](int index) - String - -
-
- Gets the character (as a single-code-unit String) at the given index. [...] - -
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/String.fromCharCode.html b/doc/api/dart-core/String/String.fromCharCode.html deleted file mode 100644 index e7a5ba3f..00000000 --- a/doc/api/dart-core/String/String.fromCharCode.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - String.fromCharCode constructor - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
String.fromCharCode
- -
- -
- - - -
-

String.fromCharCode constructor

- -
- - String.fromCharCode(int charCode) -
- -
-

Allocates a new String for the specified charCode.

-

If the charCode can be represented by a single UTF-16 code unit, the new -string contains a single code unit. Otherwise, the length is 2 and -the code units form a surrogate pair. See documentation for -fromCharCodes.

-

Creating a String with one half of a surrogate pair is allowed.

-
- -
-

Implementation

-
external factory String.fromCharCode(int charCode);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/String.fromCharCodes.html b/doc/api/dart-core/String/String.fromCharCodes.html deleted file mode 100644 index 0d312fd0..00000000 --- a/doc/api/dart-core/String/String.fromCharCodes.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - String.fromCharCodes constructor - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
String.fromCharCodes
- -
- -
- - - -
-

String.fromCharCodes constructor

- -
- - String.fromCharCodes(Iterable<int> charCodes, [ int start = 0 int end ]) -
- -
-

Allocates a new String for the specified charCodes.

-

The charCodes can be UTF-16 code units or runes. If a char-code value is -16-bit, it is copied verbatim:

-
new String.fromCharCodes([68]); // 'D'
-
-

If a char-code value is greater than 16-bits, it is decomposed into a -surrogate pair:

-
var clef = new String.fromCharCodes([0x1D11E]);
-clef.codeUnitAt(0); // 0xD834
-clef.codeUnitAt(1); // 0xDD1E
-
-

If start and end is provided, only the values of charCodes -at positions from start to, but not including, end, are used. -The start and end values must satisfy -0 <= start <= end <= charCodes.length.

-
- -
-

Implementation

-
external factory String.fromCharCodes(Iterable<int> charCodes,
-    [int start = 0, int? end]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/String.fromEnvironment.html b/doc/api/dart-core/String/String.fromEnvironment.html deleted file mode 100644 index 65d47caf..00000000 --- a/doc/api/dart-core/String/String.fromEnvironment.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - String.fromEnvironment constructor - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
String.fromEnvironment
- -
- -
- - - -
-

String.fromEnvironment constructor

- -
- const - String.fromEnvironment(String name, { String defaultValue: "" }) -
- -
-

Returns the string value of the environment declaration name.

-

Environment declarations are provided by the surrounding system compiling -or running the Dart program. Declarations map a string key to a string -value.

-

If name is not declared in the environment, the result is instead -defaultValue.

-

Example of getting a value:

-
const String.fromEnvironment("defaultFloo", defaultValue: "no floo")
-
-

In order to check whether a declaration is there at all, use -bool.hasEnvironment. Example:

-
const maybeDeclared = bool.hasEnvironment("maybeDeclared")
-    ? String.fromEnvironment("maybeDeclared")
-    : null;
-
-
- -
-

Implementation

-
// The .fromEnvironment() constructors are special in that we do not want
-// users to call them using "new". We prohibit that by giving them bodies
-// that throw, even though const constructors are not allowed to have bodies.
-// Disable those static errors.
-//ignore: const_constructor_with_body
-//ignore: const_factory
-external const factory String.fromEnvironment(String name,
-    {String defaultValue = ""});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/codeUnitAt.html b/doc/api/dart-core/String/codeUnitAt.html deleted file mode 100644 index ab94f717..00000000 --- a/doc/api/dart-core/String/codeUnitAt.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - codeUnitAt method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
codeUnitAt
- -
- -
- - - -
-

codeUnitAt method

- -
- int - codeUnitAt -(int index) - -
-
-

Returns the 16-bit UTF-16 code unit at the given index.

-
- -
-

Implementation

-
int codeUnitAt(int index);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/codeUnits.html b/doc/api/dart-core/String/codeUnits.html deleted file mode 100644 index 6c997839..00000000 --- a/doc/api/dart-core/String/codeUnits.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - codeUnits property - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
codeUnits
- -
- -
- - - -
-

codeUnits property

- - -
- -
- List<int> - codeUnits - -
- -
-

Returns an unmodifiable list of the UTF-16 code units of this string.

-
-
-

Implementation

-
List<int> get codeUnits;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/compareTo.html b/doc/api/dart-core/String/compareTo.html deleted file mode 100644 index 97b918e7..00000000 --- a/doc/api/dart-core/String/compareTo.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - compareTo method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
compareTo
- -
- -
- - - -
-

compareTo method

- -
- int - compareTo -(String other) -
override
-
-
-

Compares this string to other.

-

Returns a negative value if this is ordered before other, -a positive value if this is ordered after other, -or zero if this and other are equivalent.

-

The ordering is the same as the ordering of the code points at the first -position where the two strings differ. -If one string is a prefix of the other, -then the shorter string is ordered before the longer string. -If the strings have exactly the same content, they are equivalent with -regard to the ordering. -Ordering does not check for Unicode equivalence. -The comparison is case sensitive.

-
- -
-

Implementation

-
int compareTo(String other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/contains.html b/doc/api/dart-core/String/contains.html deleted file mode 100644 index fdaee831..00000000 --- a/doc/api/dart-core/String/contains.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - contains method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
contains
- -
- -
- - - -
-

contains method

- -
- bool - contains -(Pattern other, [ int startIndex = 0 ]) - -
-
-

Returns true if this string contains a match of other:

-
var string = 'Dart strings';
-string.contains('D');                     // true
-string.contains(new RegExp(r'[A-Z]'));    // true
-
-

If startIndex is provided, this method matches only at or after that -index:

-
string.contains('X', 1);                  // false
-string.contains(new RegExp(r'[A-Z]'), 1); // false
-
-

startIndex must not be negative or greater than length.

-
- -
-

Implementation

-
bool contains(Pattern other, [int startIndex = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/endsWith.html b/doc/api/dart-core/String/endsWith.html deleted file mode 100644 index 315212c6..00000000 --- a/doc/api/dart-core/String/endsWith.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - endsWith method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
endsWith
- -
- -
- - - -
-

endsWith method

- -
- bool - endsWith -(String other) - -
-
-

Returns true if this string ends with other. For example:

-
'Dart'.endsWith('t'); // true
-
-
- -
-

Implementation

-
bool endsWith(String other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/hashCode.html b/doc/api/dart-core/String/hashCode.html deleted file mode 100644 index e435dc49..00000000 --- a/doc/api/dart-core/String/hashCode.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - hashCode property - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

Returns a hash code derived from the code units of the string.

-

This is compatible with operator ==. Strings with the same sequence -of code units have the same hash code.

-
-
-

Implementation

-
int get hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/indexOf.html b/doc/api/dart-core/String/indexOf.html deleted file mode 100644 index 9c037eef..00000000 --- a/doc/api/dart-core/String/indexOf.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - indexOf method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
indexOf
- -
- -
- - - -
-

indexOf method

- -
- int - indexOf -(Pattern pattern, [ int start = 0 ]) - -
-
-

Returns the position of the first match of pattern in this string, -starting at start, inclusive:

-
var string = 'Dartisans';
-string.indexOf('art');                     // 1
-string.indexOf(new RegExp(r'[A-Z][a-z]')); // 0
-
-

Returns -1 if no match is found:

-
string.indexOf(new RegExp(r'dart'));       // -1
-
-

start must be non-negative and not greater than length.

-
- -
-

Implementation

-
int indexOf(Pattern pattern, [int start = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/isEmpty.html b/doc/api/dart-core/String/isEmpty.html deleted file mode 100644 index bb9feaa3..00000000 --- a/doc/api/dart-core/String/isEmpty.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - isEmpty property - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty - -
- -
-

Returns true if this string is empty.

-
-
-

Implementation

-
bool get isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/isNotEmpty.html b/doc/api/dart-core/String/isNotEmpty.html deleted file mode 100644 index f038ee28..00000000 --- a/doc/api/dart-core/String/isNotEmpty.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - isNotEmpty property - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty - -
- -
-

Returns true if this string is not empty.

-
-
-

Implementation

-
bool get isNotEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/lastIndexOf.html b/doc/api/dart-core/String/lastIndexOf.html deleted file mode 100644 index 762a1df0..00000000 --- a/doc/api/dart-core/String/lastIndexOf.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - lastIndexOf method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
lastIndexOf
- -
- -
- - - -
-

lastIndexOf method

- -
- int - lastIndexOf -(Pattern pattern, [ int start ]) - -
-
-

Returns the starting position of the last match pattern in this string, -searching backward starting at start, inclusive:

-
var string = 'Dartisans';
-string.lastIndexOf('a');                    // 6
-string.lastIndexOf(RegExp(r'a(r|n)'));      // 6
-
-

Returns -1 if pattern could not be found in this string.

-
string.lastIndexOf(RegExp(r'DART'));        // -1
-
-

If start is omitted, search starts from the end of the string. -If supplied, start must be non-negative and not greater than length.

-
- -
-

Implementation

-
int lastIndexOf(Pattern pattern, [int? start]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/length.html b/doc/api/dart-core/String/length.html deleted file mode 100644 index 0d5e631c..00000000 --- a/doc/api/dart-core/String/length.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - length property - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length - -
- -
-

The length of the string.

-

Returns the number of UTF-16 code units in this string. The number -of runes might be fewer, if the string contains characters outside -the Basic Multilingual Plane (plane 0):

-
'Dart'.length;          // 4
-'Dart'.runes.length;    // 4
-
-var clef = '\u{1D11E}';
-clef.length;            // 2
-clef.runes.length;      // 1
-
-
-
-

Implementation

-
int get length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/operator_equals.html b/doc/api/dart-core/String/operator_equals.html deleted file mode 100644 index 591141dc..00000000 --- a/doc/api/dart-core/String/operator_equals.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - operator == method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) -
override
-
-
-

Returns true if other is a String with the same sequence of code units.

-

This method compares each individual code unit of the strings. -It does not check for Unicode equivalence. -For example, both the following strings represent the string 'Amélie', -but due to their different encoding, are not equal:

-
'Am\xe9lie' == 'Ame\u{301}lie'; // false
-
-

The first string encodes 'é' as a single unicode code unit (also -a single rune), whereas the second string encodes it as 'e' with the -combining accent character '◌́'.

-
- -
-

Implementation

-
bool operator ==(Object other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/operator_get.html b/doc/api/dart-core/String/operator_get.html deleted file mode 100644 index b19445d1..00000000 --- a/doc/api/dart-core/String/operator_get.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - operator [] method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator []
- -
- -
- - - -
-

operator [] method

- -
- String - operator [] -(int index) - -
-
-

Gets the character (as a single-code-unit String) at the given index.

-

The returned string represents exactly one UTF-16 code unit, which may be -half of a surrogate pair. A single member of a surrogate pair is an -invalid UTF-16 string:

-
var clef = '\u{1D11E}';
-// These represent invalid UTF-16 strings.
-clef[0].codeUnits;      // [0xD834]
-clef[1].codeUnits;      // [0xDD1E]
-
-

This method is equivalent to -new String.fromCharCode(this.codeUnitAt(index)).

-
- -
-

Implementation

-
String operator [](int index);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/operator_multiply.html b/doc/api/dart-core/String/operator_multiply.html deleted file mode 100644 index 397eaa6d..00000000 --- a/doc/api/dart-core/String/operator_multiply.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - operator * method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator *
- -
- -
- - - -
-

operator * method

- -
- String - operator * -(int times) - -
-
-

Creates a new string by concatenating this string with itself a number -of times.

-

The result of str * n is equivalent to -str + str + ...(n times)... + str.

-

Returns an empty string if times is zero or negative.

-
- -
-

Implementation

-
String operator *(int times);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/operator_plus.html b/doc/api/dart-core/String/operator_plus.html deleted file mode 100644 index f26d5093..00000000 --- a/doc/api/dart-core/String/operator_plus.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator + method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator +
- -
- -
- - - -
-

operator + method

- -
- String - operator + -(String other) - -
-
-

Creates a new string by concatenating this string with other.

-
'dart' + 'lang'; // 'dartlang'
-
-
- -
-

Implementation

-
String operator +(String other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/padLeft.html b/doc/api/dart-core/String/padLeft.html deleted file mode 100644 index 876a3837..00000000 --- a/doc/api/dart-core/String/padLeft.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - padLeft method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
padLeft
- -
- -
- - - -
-

padLeft method

- -
- String - padLeft -(int width, [ String padding = ' ' ]) - -
-
-

Pads this string on the left if it is shorter than width.

-

Return a new string that prepends padding onto this string -one time for each position the length is less than width.

-

If width is already smaller than or equal to this.length, -no padding is added. A negative width is treated as zero.

-

If padding has length different from 1, the result will not -have length width. This may be useful for cases where the -padding is a longer string representing a single character, like -"&nbsp;" or "\u{10002}". -In that case, the user should make sure that this.length is -the correct measure of the strings length.

-
- -
-

Implementation

-
String padLeft(int width, [String padding = ' ']);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/padRight.html b/doc/api/dart-core/String/padRight.html deleted file mode 100644 index 6da126da..00000000 --- a/doc/api/dart-core/String/padRight.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - padRight method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
padRight
- -
- -
- - - -
-

padRight method

- -
- String - padRight -(int width, [ String padding = ' ' ]) - -
-
-

Pads this string on the right if it is shorter than width.

-

Return a new string that appends padding after this string -one time for each position the length is less than width.

-

If width is already smaller than or equal to this.length, -no padding is added. A negative width is treated as zero.

-

If padding has length different from 1, the result will not -have length width. This may be useful for cases where the -padding is a longer string representing a single character, like -"&nbsp;" or "\u{10002}". -In that case, the user should make sure that this.length is -the correct measure of the strings length.

-
- -
-

Implementation

-
String padRight(int width, [String padding = ' ']);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/replaceAll.html b/doc/api/dart-core/String/replaceAll.html deleted file mode 100644 index cb335069..00000000 --- a/doc/api/dart-core/String/replaceAll.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - replaceAll method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
replaceAll
- -
- -
- - - -
-

replaceAll method

- -
- String - replaceAll -(Pattern from, String replace) - -
-
-

Replaces all substrings that match from with replace.

-

Returns a new string in which the non-overlapping substrings matching -from (the ones iterated by from.allMatches(thisString)) are replaced -by the literal string replace.

-
'resume'.replaceAll(new RegExp(r'e'), 'é'); // 'résumé'
-
-

Notice that the replace string is not interpreted. If the replacement -depends on the match (for example on a RegExp's capture groups), use -the replaceAllMapped method instead.

-
- -
-

Implementation

-
String replaceAll(Pattern from, String replace);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/replaceAllMapped.html b/doc/api/dart-core/String/replaceAllMapped.html deleted file mode 100644 index 3178df51..00000000 --- a/doc/api/dart-core/String/replaceAllMapped.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - replaceAllMapped method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
replaceAllMapped
- -
- -
- - - -
-

replaceAllMapped method

- -
- String - replaceAllMapped -(Pattern from, String replace(Match match)) - -
-
-

Replace all substrings that match from by a string computed from the -match.

-

Returns a new string in which the non-overlapping substrings that match -from (the ones iterated by from.allMatches(thisString)) are replaced -by the result of calling replace on the corresponding Match object.

-

This can be used to replace matches with new content that depends on the -match, unlike replaceAll where the replacement string is always the same.

-

The replace function is called with the Match generated -by the pattern, and its result is used as replacement.

-

The function defined below converts each word in a string to simplified -'pig latin' using replaceAllMapped:

-
pigLatin(String words) => words.replaceAllMapped(
-    new RegExp(r'\b(\w*?)([aeiou]\w*)', caseSensitive: false),
-    (Match m) => "${m[2]}${m[1]}${m[1].isEmpty ? 'way' : 'ay'}");
-
-pigLatin('I have a secret now!'); // 'Iway avehay away ecretsay ownay!'
-
-
- -
-

Implementation

-
String replaceAllMapped(Pattern from, String Function(Match match) replace);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/replaceFirst.html b/doc/api/dart-core/String/replaceFirst.html deleted file mode 100644 index 0513bfba..00000000 --- a/doc/api/dart-core/String/replaceFirst.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - replaceFirst method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
replaceFirst
- -
- -
- - - -
-

replaceFirst method

- -
- String - replaceFirst -(Pattern from, String to, [ int startIndex = 0 ]) - -
-
-

Returns a new string in which the first occurrence of from in this string -is replaced with to, starting from startIndex:

-
'0.0001'.replaceFirst(new RegExp(r'0'), ''); // '.0001'
-'0.0001'.replaceFirst(new RegExp(r'0'), '7', 1); // '0.7001'
-
-
- -
-

Implementation

-
String replaceFirst(Pattern from, String to, [int startIndex = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/replaceFirstMapped.html b/doc/api/dart-core/String/replaceFirstMapped.html deleted file mode 100644 index cbb58513..00000000 --- a/doc/api/dart-core/String/replaceFirstMapped.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - replaceFirstMapped method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
replaceFirstMapped
- -
- -
- - - -
-

replaceFirstMapped method

- -
- String - replaceFirstMapped -(Pattern from, String replace(Match match), [ int startIndex = 0 ]) - -
-
-

Replace the first occurrence of from in this string.

-

Returns a new string, which is this string -except that the first match of from, starting from startIndex, -is replaced by the result of calling replace with the match object.

-

The optional startIndex is by default set to 0. If provided, it must be -an integer in the range [0 .. len], where len is this string's length.

-
- -
-

Implementation

-
String replaceFirstMapped(Pattern from, String replace(Match match),
-    [int startIndex = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/replaceRange.html b/doc/api/dart-core/String/replaceRange.html deleted file mode 100644 index 66789bd0..00000000 --- a/doc/api/dart-core/String/replaceRange.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - replaceRange method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
replaceRange
- -
- -
- - - -
-

replaceRange method

- -
- String - replaceRange -(int start, int end, String replacement) - -
-
-

Replaces the substring from start to end with replacement.

-

Returns a new string equivalent to:

-
this.substring(0, start) + replacement + this.substring(end)
-
-

The start and end indices must specify a valid range of this string. -That is 0 <= start <= end <= this.length. -If end is null, it defaults to length.

-
- -
-

Implementation

-
String replaceRange(int start, int? end, String replacement);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/runes.html b/doc/api/dart-core/String/runes.html deleted file mode 100644 index 02844c2c..00000000 --- a/doc/api/dart-core/String/runes.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - runes property - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
runes
- -
- -
- - - -
-

runes property

- - -
- -
- Runes - runes - -
- -
-

Returns an Iterable of Unicode code-points of this string.

-

If the string contains surrogate pairs, they are combined and returned -as one integer by this iterator. Unmatched surrogate halves are treated -like valid 16-bit code-units.

-
-
-

Implementation

-
Runes get runes;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/split.html b/doc/api/dart-core/String/split.html deleted file mode 100644 index 8b25c229..00000000 --- a/doc/api/dart-core/String/split.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - split method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
split
- -
- -
- - - -
-

split method

- -
- List<String> - split -(Pattern pattern) - -
-
-

Splits the string at matches of pattern and returns a list of substrings.

-

Finds all the matches of pattern in this string, -and returns the list of the substrings between the matches.

-
var string = "Hello world!";
-string.split(" ");                      // ['Hello', 'world!'];
-
-

Empty matches at the beginning and end of the strings are ignored, -and so are empty matches right after another match.

-
var string = "abba";
-string.split(new RegExp(r"b*"));        // ['a', 'a']
-                                        // not ['', 'a', 'a', '']
-
-

If this string is empty, the result is an empty list if pattern matches -the empty string, and it is [""] if the pattern doesn't match.

-
var string = '';
-string.split('');                       // []
-string.split("a");                      // ['']
-
-

Splitting with an empty pattern splits the string into single-code unit -strings.

-
var string = 'Pub';
-string.split('');                       // ['P', 'u', 'b']
-
-string.codeUnits.map((unit) {
-  return new String.fromCharCode(unit);
-}).toList();                            // ['P', 'u', 'b']
-
-

Splitting happens at UTF-16 code unit boundaries, -and not at rune boundaries:

-
// String made up of two code units, but one rune.
-string = '\u{1D11E}';
-string.split('').length;                 // 2 surrogate values
-
-

To get a list of strings containing the individual runes of a string, -you should not use split. You can instead map each rune to a string -as follows:

-
string.runes.map((rune) => new String.fromCharCode(rune)).toList();
-
-
- -
-

Implementation

-
List<String> split(Pattern pattern);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/splitMapJoin.html b/doc/api/dart-core/String/splitMapJoin.html deleted file mode 100644 index 955c7252..00000000 --- a/doc/api/dart-core/String/splitMapJoin.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - splitMapJoin method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
splitMapJoin
- -
- -
- - - -
-

splitMapJoin method

- -
- String - splitMapJoin -(Pattern pattern, { String onMatch(Match), String onNonMatch(String) }) - -
-
-

Splits the string, converts its parts, and combines them into a new -string.

-

pattern is used to split the string into parts and separating matches.

-

Each match is converted to a string by calling onMatch. If onMatch -is omitted, the matched string is used.

-

Each non-matched part is converted by a call to onNonMatch. If -onNonMatch is omitted, the non-matching part is used.

-

Then all the converted parts are combined into the resulting string.

-
'Eats shoots leaves'.splitMapJoin((new RegExp(r'shoots')),
-    onMatch:    (m) => '${m.group(0)}',
-    onNonMatch: (n) => '*'); // *shoots*
-
-
- -
-

Implementation

-
String splitMapJoin(Pattern pattern,
-    {String Function(Match)? onMatch, String Function(String)? onNonMatch});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/startsWith.html b/doc/api/dart-core/String/startsWith.html deleted file mode 100644 index 61e6ba8a..00000000 --- a/doc/api/dart-core/String/startsWith.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - startsWith method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
startsWith
- -
- -
- - - -
-

startsWith method

- -
- bool - startsWith -(Pattern pattern, [ int index = 0 ]) - -
-
-

Returns true if this string starts with a match of pattern.

-
var string = 'Dart';
-string.startsWith('D');                       // true
-string.startsWith(new RegExp(r'[A-Z][a-z]')); // true
-
-

If index is provided, this method checks if the substring starting -at that index starts with a match of pattern:

-
string.startsWith('art', 1);                  // true
-string.startsWith(new RegExp(r'\w{3}'));      // true
-
-

index must not be negative or greater than length.

-

A RegExp containing '^' does not match if the index is greater than -zero. The pattern works on the string as a whole, and does not extract -a substring starting at index first:

-
string.startsWith(new RegExp(r'^art'), 1);    // false
-string.startsWith(new RegExp(r'art'), 1);     // true
-
-
- -
-

Implementation

-
bool startsWith(Pattern pattern, [int index = 0]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/substring.html b/doc/api/dart-core/String/substring.html deleted file mode 100644 index 9c1067f9..00000000 --- a/doc/api/dart-core/String/substring.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - substring method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
substring
- -
- -
- - - -
-

substring method

- -
- String - substring -(int startIndex, [ int endIndex ]) - -
-
-

Returns the substring of this string that extends from startIndex, -inclusive, to endIndex, exclusive.

-
var string = 'dartlang';
-string.substring(1);    // 'artlang'
-string.substring(1, 4); // 'art'
-
-
- -
-

Implementation

-
String substring(int startIndex, [int? endIndex]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/toLowerCase.html b/doc/api/dart-core/String/toLowerCase.html deleted file mode 100644 index bbc19670..00000000 --- a/doc/api/dart-core/String/toLowerCase.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - toLowerCase method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toLowerCase
- -
- -
- - - -
-

toLowerCase method

- -
- String - toLowerCase -() - -
-
-

Converts all characters in this string to lower case. -If the string is already in all lower case, this method returns this.

-
'ALPHABET'.toLowerCase(); // 'alphabet'
-'abc'.toLowerCase();      // 'abc'
-
-

This function uses the language independent Unicode mapping and thus only -works in some languages.

-
- -
-

Implementation

-
// TODO(floitsch): document better. (See EcmaScript for description).
-String toLowerCase();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/toUpperCase.html b/doc/api/dart-core/String/toUpperCase.html deleted file mode 100644 index c761cb0a..00000000 --- a/doc/api/dart-core/String/toUpperCase.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - toUpperCase method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toUpperCase
- -
- -
- - - -
-

toUpperCase method

- -
- String - toUpperCase -() - -
-
-

Converts all characters in this string to upper case. -If the string is already in all upper case, this method returns this.

-
'alphabet'.toUpperCase(); // 'ALPHABET'
-'ABC'.toUpperCase();      // 'ABC'
-
-

This function uses the language independent Unicode mapping and thus only -works in some languages.

-
- -
-

Implementation

-
// TODO(floitsch): document better. (See EcmaScript for description).
-String toUpperCase();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/trim.html b/doc/api/dart-core/String/trim.html deleted file mode 100644 index 376ccadc..00000000 --- a/doc/api/dart-core/String/trim.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - trim method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
trim
- -
- -
- - - -
-

trim method

- -
- String - trim -() - -
-
-

Returns the string without any leading and trailing whitespace.

-

If the string contains leading or trailing whitespace, a new string with no -leading and no trailing whitespace is returned:

-
'\tDart is fun\n'.trim(); // 'Dart is fun'
-
-

Otherwise, the original string itself is returned:

-
var str1 = 'Dart';
-var str2 = str1.trim();
-identical(str1, str2);    // true
-
-

Whitespace is defined by the Unicode White_Space property (as defined in -version 6.2 or later) and the BOM character, 0xFEFF.

-

Here is the list of trimmed characters according to Unicode version 6.3:

-
    0009..000D    ; White_Space # Cc   <control-0009>..<control-000D>
-    0020          ; White_Space # Zs   SPACE
-    0085          ; White_Space # Cc   <control-0085>
-    00A0          ; White_Space # Zs   NO-BREAK SPACE
-    1680          ; White_Space # Zs   OGHAM SPACE MARK
-    2000..200A    ; White_Space # Zs   EN QUAD..HAIR SPACE
-    2028          ; White_Space # Zl   LINE SEPARATOR
-    2029          ; White_Space # Zp   PARAGRAPH SEPARATOR
-    202F          ; White_Space # Zs   NARROW NO-BREAK SPACE
-    205F          ; White_Space # Zs   MEDIUM MATHEMATICAL SPACE
-    3000          ; White_Space # Zs   IDEOGRAPHIC SPACE
-
-    FEFF          ; BOM                ZERO WIDTH NO_BREAK SPACE
-
-

Some later versions of Unicode do not include U+0085 as a whitespace -character. Whether it is trimmed depends on the Unicode version -used by the system.

-
- -
-

Implementation

-
String trim();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/trimLeft.html b/doc/api/dart-core/String/trimLeft.html deleted file mode 100644 index b1e9b0cd..00000000 --- a/doc/api/dart-core/String/trimLeft.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - trimLeft method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
trimLeft
- -
- -
- - - -
-

trimLeft method

- -
- String - trimLeft -() - -
-
-

Returns the string without any leading whitespace.

-

As trim, but only removes leading whitespace.

-
- -
-

Implementation

-
String trimLeft();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/String/trimRight.html b/doc/api/dart-core/String/trimRight.html deleted file mode 100644 index 8f480632..00000000 --- a/doc/api/dart-core/String/trimRight.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - trimRight method - String class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
trimRight
- -
- -
- - - -
-

trimRight method

- -
- String - trimRight -() - -
-
-

Returns the string without any trailing whitespace.

-

As trim, but only removes trailing whitespace.

-
- -
-

Implementation

-
String trimRight();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer-class.html b/doc/api/dart-core/StringBuffer-class.html deleted file mode 100644 index 661194fd..00000000 --- a/doc/api/dart-core/StringBuffer-class.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringBuffer
- -
- -
- - - -
-

StringBuffer class

- -
-

A class for concatenating strings efficiently.

-

Allows for the incremental building of a string using write*() methods. -The strings are concatenated to a single string only when toString is -called.

-
- -
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- StringBuffer([Object content = "" ]) -
-
- Creates the string buffer with an initial content. -
-
-
- -
-

Properties

- -
-
- isEmpty - bool -
-
- Returns whether the buffer is empty. This is a constant-time operation. -
read-only
-
-
- isNotEmpty - bool -
-
- Returns whether the buffer is not empty. This is a constant-time -operation. -
read-only
-
-
- length - int -
-
- Returns the length of the content that has been accumulated so far. -This is a constant-time operation. -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- clear() - → void - -
-
- Clears the string buffer. - -
-
- toString() - String - -
-
- Returns the contents of buffer as a concatenated string. -
override
-
-
- write(Object obj) - → void - -
-
- Adds the contents of obj, converted to a string, to the buffer. -
override
-
-
- writeAll(Iterable objects, [ String separator = "" ]) - → void - -
-
- Iterates over the given objects and writes them in sequence. -
override
-
-
- writeCharCode(int charCode) - → void - -
-
- Adds the string representation of charCode to the buffer. -
override
-
-
- writeln([Object obj = "" ]) - → void - -
-
- Converts obj to a String by invoking Object.toString and -adds the result to this, followed by a newline. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/StringBuffer.html b/doc/api/dart-core/StringBuffer/StringBuffer.html deleted file mode 100644 index 0843504e..00000000 --- a/doc/api/dart-core/StringBuffer/StringBuffer.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - StringBuffer constructor - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringBuffer
- -
- -
- - - -
-

StringBuffer constructor

- -
- - StringBuffer([Object content = "" ]) -
- -
-

Creates the string buffer with an initial content.

-
- -
-

Implementation

-
external StringBuffer([Object content = ""]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/clear.html b/doc/api/dart-core/StringBuffer/clear.html deleted file mode 100644 index 23293e37..00000000 --- a/doc/api/dart-core/StringBuffer/clear.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - clear method - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
clear
- -
- -
- - - -
-

clear method

- -
- void - clear -() - -
-
-

Clears the string buffer.

-
- -
-

Implementation

-
external void clear();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/isEmpty.html b/doc/api/dart-core/StringBuffer/isEmpty.html deleted file mode 100644 index 72398793..00000000 --- a/doc/api/dart-core/StringBuffer/isEmpty.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - isEmpty property - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEmpty
- -
- -
- - - -
-

isEmpty property

- - -
- -
- bool - isEmpty - -
- -
-

Returns whether the buffer is empty. This is a constant-time operation.

-
-
-

Implementation

-
bool get isEmpty => length == 0;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/isNotEmpty.html b/doc/api/dart-core/StringBuffer/isNotEmpty.html deleted file mode 100644 index 8e7d826c..00000000 --- a/doc/api/dart-core/StringBuffer/isNotEmpty.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - isNotEmpty property - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNotEmpty
- -
- -
- - - -
-

isNotEmpty property

- - -
- -
- bool - isNotEmpty - -
- -
-

Returns whether the buffer is not empty. This is a constant-time -operation.

-
-
-

Implementation

-
bool get isNotEmpty => !isEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/length.html b/doc/api/dart-core/StringBuffer/length.html deleted file mode 100644 index 03e36229..00000000 --- a/doc/api/dart-core/StringBuffer/length.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - length property - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
length
- -
- -
- - - -
-

length property

- - -
- -
- int - length - -
- -
-

Returns the length of the content that has been accumulated so far. -This is a constant-time operation.

-
-
-

Implementation

-
external int get length;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/toString.html b/doc/api/dart-core/StringBuffer/toString.html deleted file mode 100644 index 401e727b..00000000 --- a/doc/api/dart-core/StringBuffer/toString.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - toString method - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns the contents of buffer as a concatenated string.

-
- -
-

Implementation

-
external String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/write.html b/doc/api/dart-core/StringBuffer/write.html deleted file mode 100644 index d9c7594b..00000000 --- a/doc/api/dart-core/StringBuffer/write.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - write method - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
write
- -
- -
- - - -
-

write method

- -
- void - write -(Object obj) -
override
-
-
-

Adds the contents of obj, converted to a string, to the buffer.

-
- -
-

Implementation

-
external void write(Object? obj);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/writeAll.html b/doc/api/dart-core/StringBuffer/writeAll.html deleted file mode 100644 index 8ba528c9..00000000 --- a/doc/api/dart-core/StringBuffer/writeAll.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - writeAll method - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
writeAll
- -
- -
- - - -
-

writeAll method

- -
- void - writeAll -(Iterable objects, [ String separator = "" ]) -
override
-
-
-

Iterates over the given objects and writes them in sequence.

-
- -
-

Implementation

-
external void writeAll(Iterable<dynamic> objects, [String separator = ""]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/writeCharCode.html b/doc/api/dart-core/StringBuffer/writeCharCode.html deleted file mode 100644 index 3b7aecc7..00000000 --- a/doc/api/dart-core/StringBuffer/writeCharCode.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - writeCharCode method - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
writeCharCode
- -
- -
- - - -
-

writeCharCode method

- -
- void - writeCharCode -(int charCode) -
override
-
-
-

Adds the string representation of charCode to the buffer.

-
- -
-

Implementation

-
external void writeCharCode(int charCode);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringBuffer/writeln.html b/doc/api/dart-core/StringBuffer/writeln.html deleted file mode 100644 index 552cfd28..00000000 --- a/doc/api/dart-core/StringBuffer/writeln.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - writeln method - StringBuffer class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
writeln
- -
- -
- - - -
-

writeln method

- -
- void - writeln -([Object obj = "" ]) -
override
-
-
-

Converts obj to a String by invoking Object.toString and -adds the result to this, followed by a newline.

-
- -
-

Implementation

-
external void writeln([Object? obj = ""]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringSink-class.html b/doc/api/dart-core/StringSink-class.html deleted file mode 100644 index 68f3e44b..00000000 --- a/doc/api/dart-core/StringSink-class.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - - - StringSink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringSink
- -
- -
- - - -
-

StringSink class

- - -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- StringSink() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- write(Object obj) - → void - -
-
- Converts obj to a String by invoking Object.toString and -adds the result to this. - -
-
- writeAll(Iterable objects, [ String separator = "" ]) - → void - -
-
- Iterates over the given objects and writes them in sequence. - -
-
- writeCharCode(int charCode) - → void - -
-
- Writes the charCode to this. [...] - -
-
- writeln([Object obj = "" ]) - → void - -
-
- Converts obj to a String by invoking Object.toString and -adds the result to this, followed by a newline. - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringSink/StringSink.html b/doc/api/dart-core/StringSink/StringSink.html deleted file mode 100644 index 5a501c23..00000000 --- a/doc/api/dart-core/StringSink/StringSink.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - StringSink constructor - StringSink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
StringSink
- -
- -
- - - -
-

StringSink constructor

- -
- - StringSink() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringSink/write.html b/doc/api/dart-core/StringSink/write.html deleted file mode 100644 index d670448e..00000000 --- a/doc/api/dart-core/StringSink/write.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - write method - StringSink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
write
- -
- -
- - - -
-

write method

- -
- void - write -(Object obj) - -
-
-

Converts obj to a String by invoking Object.toString and -adds the result to this.

-
- -
-

Implementation

-
void write(Object? obj);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringSink/writeAll.html b/doc/api/dart-core/StringSink/writeAll.html deleted file mode 100644 index e42eb795..00000000 --- a/doc/api/dart-core/StringSink/writeAll.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - writeAll method - StringSink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
writeAll
- -
- -
- - - -
-

writeAll method

- -
- void - writeAll -(Iterable objects, [ String separator = "" ]) - -
-
-

Iterates over the given objects and writes them in sequence.

-
- -
-

Implementation

-
void writeAll(Iterable<dynamic> objects, [String separator = ""]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringSink/writeCharCode.html b/doc/api/dart-core/StringSink/writeCharCode.html deleted file mode 100644 index 81cc8f27..00000000 --- a/doc/api/dart-core/StringSink/writeCharCode.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - writeCharCode method - StringSink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
writeCharCode
- -
- -
- - - -
-

writeCharCode method

- -
- void - writeCharCode -(int charCode) - -
-
-

Writes the charCode to this.

-

This method is equivalent to write(new String.fromCharCode(charCode)).

-
- -
-

Implementation

-
void writeCharCode(int charCode);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/StringSink/writeln.html b/doc/api/dart-core/StringSink/writeln.html deleted file mode 100644 index d5239261..00000000 --- a/doc/api/dart-core/StringSink/writeln.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - writeln method - StringSink class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
writeln
- -
- -
- - - -
-

writeln method

- -
- void - writeln -([Object obj = "" ]) - -
-
-

Converts obj to a String by invoking Object.toString and -adds the result to this, followed by a newline.

-
- -
-

Implementation

-
void writeln([Object? obj = ""]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Symbol-class.html b/doc/api/dart-core/Symbol-class.html deleted file mode 100644 index c8afb73a..00000000 --- a/doc/api/dart-core/Symbol-class.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - Symbol class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Symbol
- -
- -
- - - -
-

Symbol class

- -
-

Opaque name used by mirrors, invocations and Function.apply.

-
- - -
-

Constructors

- -
-
- Symbol(String name) -
-
- Constructs a new Symbol representing the provided name. [...] -
const
-
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- Returns a hash code compatible with operator==. [...] -
read-only, override
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- Symbols are equal to other symbols that correspond to the same member name. [...] -
override
-
-
-
- - - -
-

Constants

- -
-
- empty - → const Symbol -
-
- The empty symbol. [...] - -
- const Symbol("") -
-
-
- unaryMinus - → const Symbol -
-
- The symbol corresponding to the name of the unary minus operator. - -
- const Symbol("unary-") -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Symbol/Symbol.html b/doc/api/dart-core/Symbol/Symbol.html deleted file mode 100644 index b43ca685..00000000 --- a/doc/api/dart-core/Symbol/Symbol.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - Symbol constructor - Symbol class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Symbol
- -
- -
- - - -
-

Symbol constructor

- -
- const - Symbol(String name) -
- -
-

Constructs a new Symbol representing the provided name.

-

The name must be a valid public Dart member name, -public constructor name, or library name, optionally qualified.

-

A qualified name is a valid name preceded by a public identifier name -and a '.', e.g., foo.bar.baz= is a qualified version of baz=. -That means that the content of the name String must be either

-
    -
  • a valid public Dart identifier -(that is, an identifier not starting with "_"),
  • -
  • such an identifier followed by "=" (a setter name),
  • -
  • the name of a declarable operator -(one of "+", "-", "*", "/", "%", "~/", "&", "|", -"^", "~", "<<", ">>", "<", "<=", ">", ">=", "==", -"[]", "[]=", or "unary-"),
  • -
  • any of the above preceded by any number of qualifiers, -where a qualifier is a non-private identifier followed by '.',
  • -
  • or the empty string (the default name of a library with no library -name declaration).
  • -
-

Symbol instances created from the same name are equal, -but not necessarily identical, but symbols created as compile-time -constants are canonicalized, as all other constant object creations.

-
assert(new Symbol("foo") == new Symbol("foo"));
-assert(identical(const Symbol("foo"), const Symbol("foo")));
-
-

If name is a single identifier that does not start with an underscore, -or it is a qualified identifier, -or it is an operator name different from unary-, -then the result of const Symbol(name) is the same instance that -the symbol literal created by prefixing # to the content of name -would evaluate to.

-
assert(new Symbol("foo") == #foo);
-assert(new Symbol("[]=") == #[]=]);
-assert(new Symbol("foo.bar") == #foo.bar);
-assert(identical(const Symbol("foo"), #foo));
-assert(identical(const Symbol("[]="), #[]=]));
-assert(identical(const Symbol("foo.bar"), #foo.bar));
-
-

This constructor cannot create a Symbol instance that is equal to -a private symbol literal like #_foo.

-
const Symbol("_foo") // Invalid
-
-

The created instance overrides Object.==.

-

The following text is non-normative:

-

Creating non-const Symbol instances may result in larger output. If -possible, use MirrorsUsed from "dart:mirrors" to specify which names -might be passed to this constructor.

-
- -
-

Implementation

-
const factory Symbol(String name) = internal.Symbol;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Symbol/empty-constant.html b/doc/api/dart-core/Symbol/empty-constant.html deleted file mode 100644 index 4f034461..00000000 --- a/doc/api/dart-core/Symbol/empty-constant.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - empty constant - Symbol class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
empty
- -
- -
- - - -
-

empty constant

- -
- Symbol - const empty - = - const Symbol("") -
- -
-

The empty symbol.

-

The empty symbol is the name of libraries with no library declaration, -and the base-name of the unnamed constructor.

-
-
-

Implementation

-
static const Symbol empty = Symbol("")
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Symbol/hashCode.html b/doc/api/dart-core/Symbol/hashCode.html deleted file mode 100644 index fb949102..00000000 --- a/doc/api/dart-core/Symbol/hashCode.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - hashCode property - Symbol class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

Returns a hash code compatible with operator==.

-

Equal symbols have the same hash code.

-
-
-

Implementation

-
int get hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Symbol/operator_equals.html b/doc/api/dart-core/Symbol/operator_equals.html deleted file mode 100644 index 23c8c171..00000000 --- a/doc/api/dart-core/Symbol/operator_equals.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - operator == method - Symbol class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) -
override
-
-
-

Symbols are equal to other symbols that correspond to the same member name.

-

Qualified member names, like #foo.bar are equal only if they have the -same identifiers before the same final member name.

-
- -
-

Implementation

-
bool operator ==(Object other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Symbol/unaryMinus-constant.html b/doc/api/dart-core/Symbol/unaryMinus-constant.html deleted file mode 100644 index 14178dbd..00000000 --- a/doc/api/dart-core/Symbol/unaryMinus-constant.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - unaryMinus constant - Symbol class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
unaryMinus
- -
- -
- - - -
-

unaryMinus constant

- -
- Symbol - const unaryMinus - = - const Symbol("unary-") -
- -
-

The symbol corresponding to the name of the unary minus operator.

-
-
-

Implementation

-
static const Symbol unaryMinus = Symbol("unary-")
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Type-class.html b/doc/api/dart-core/Type-class.html deleted file mode 100644 index aa56f072..00000000 --- a/doc/api/dart-core/Type-class.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - - Type class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Type
- -
- -
- - - -
-

Type class

- -
-

Runtime representation of a type.

-
- - -
-

Constructors

- -
-
- Type() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Type/Type.html b/doc/api/dart-core/Type/Type.html deleted file mode 100644 index 3a83e8e2..00000000 --- a/doc/api/dart-core/Type/Type.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - Type constructor - Type class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Type
- -
- -
- - - -
-

Type constructor

- -
- - Type() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/TypeError-class.html b/doc/api/dart-core/TypeError-class.html deleted file mode 100644 index d1b7df26..00000000 --- a/doc/api/dart-core/TypeError-class.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - - TypeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
TypeError
- -
- -
- - - -
-

TypeError class

- -
-

Error thrown by the runtime system when a dynamic type error happens.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- TypeError() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/TypeError/TypeError.html b/doc/api/dart-core/TypeError/TypeError.html deleted file mode 100644 index 9f48b914..00000000 --- a/doc/api/dart-core/TypeError/TypeError.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - TypeError constructor - TypeError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
TypeError
- -
- -
- - - -
-

TypeError constructor

- -
- - TypeError() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UnimplementedError-class.html b/doc/api/dart-core/UnimplementedError-class.html deleted file mode 100644 index 22a38b16..00000000 --- a/doc/api/dart-core/UnimplementedError-class.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - UnimplementedError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnimplementedError
- -
- -
- - - -
-

UnimplementedError class

- -
-

Thrown by operations that have not been implemented yet.

-

This Error is thrown by unfinished code that hasn't yet implemented -all the features it needs.

-

If a class is not intending to implement the feature, it should throw -an UnsupportedError instead. This error is only intended for -use during development.

-
- -
-
-
Inheritance
-
- -
Implemented types
-
- -
- - - - -
-
- -
-

Constructors

- -
-
- UnimplementedError([String message ]) -
-
- -
-
-
- -
-

Properties

- -
-
- message - String -
-
- -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UnimplementedError/UnimplementedError.html b/doc/api/dart-core/UnimplementedError/UnimplementedError.html deleted file mode 100644 index cd65c6ab..00000000 --- a/doc/api/dart-core/UnimplementedError/UnimplementedError.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - UnimplementedError constructor - UnimplementedError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnimplementedError
- -
- -
- - - -
-

UnimplementedError constructor

- -
- - UnimplementedError([String message ]) -
- - -
-

Implementation

-
UnimplementedError([this.message]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UnimplementedError/message.html b/doc/api/dart-core/UnimplementedError/message.html deleted file mode 100644 index 6f4f85be..00000000 --- a/doc/api/dart-core/UnimplementedError/message.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - message property - UnimplementedError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- -
- String - message -
final
-
-
-

Implementation

-
final String? message
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UnimplementedError/toString.html b/doc/api/dart-core/UnimplementedError/toString.html deleted file mode 100644 index 5227dd3f..00000000 --- a/doc/api/dart-core/UnimplementedError/toString.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - toString method - UnimplementedError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() {
-  var message = this.message;
-  return (message != null)
-      ? "UnimplementedError: $message"
-      : "UnimplementedError";
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UnsupportedError-class.html b/doc/api/dart-core/UnsupportedError-class.html deleted file mode 100644 index 9d796494..00000000 --- a/doc/api/dart-core/UnsupportedError-class.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - UnsupportedError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnsupportedError
- -
- -
- - - -
-

UnsupportedError class

- -
-

The operation was not allowed by the object.

-

This Error is thrown when an instance cannot implement one of the methods -in its signature.

-
- -
-
-
Inheritance
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- UnsupportedError(String message) -
-
- -
-
-
- -
-

Properties

- -
-
- message - String -
-
- -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
- stackTrace - StackTrace -
-
- -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UnsupportedError/UnsupportedError.html b/doc/api/dart-core/UnsupportedError/UnsupportedError.html deleted file mode 100644 index 0f4e5e17..00000000 --- a/doc/api/dart-core/UnsupportedError/UnsupportedError.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - UnsupportedError constructor - UnsupportedError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
UnsupportedError
- -
- -
- - - -
-

UnsupportedError constructor

- -
- - UnsupportedError(String message) -
- - -
-

Implementation

-
@pragma("vm:entry-point")
-UnsupportedError(String this.message);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UnsupportedError/message.html b/doc/api/dart-core/UnsupportedError/message.html deleted file mode 100644 index 78d03f1d..00000000 --- a/doc/api/dart-core/UnsupportedError/message.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - message property - UnsupportedError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
message
- -
- -
- - - -
-

message property

- -
- String - message -
final
-
-
-

Implementation

-
final String? message
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UnsupportedError/toString.html b/doc/api/dart-core/UnsupportedError/toString.html deleted file mode 100644 index 17644e54..00000000 --- a/doc/api/dart-core/UnsupportedError/toString.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - toString method - UnsupportedError class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() => "Unsupported operation: $message";
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri-class.html b/doc/api/dart-core/Uri-class.html deleted file mode 100644 index c6e8b61b..00000000 --- a/doc/api/dart-core/Uri-class.html +++ /dev/null @@ -1,742 +0,0 @@ - - - - - - - - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Uri
- -
- -
- - - -
-

Uri class

- -
-

A parsed URI, such as a URL.

-

See also:

- -
- - -
-

Constructors

- -
-
- Uri({String scheme String userInfo String host int port, String path Iterable<String> pathSegments, String query Map<String, dynamic> queryParameters, String fragment }) -
-
- Creates a new URI from its components. [...] -
factory
-
-
- Uri.dataFromBytes(List<int> bytes, { String mimeType: "application/octet-stream", Map<String, String> parameters, bool percentEncoded: false }) -
-
- Creates a data: URI containing an encoding of bytes. [...] -
factory
-
-
- Uri.dataFromString(String content, { String mimeType, Encoding encoding, Map<String, String> parameters, bool base64: false }) -
-
- Creates a data: URI containing the content string. [...] -
factory
-
-
- Uri.directory(String path, { bool windows }) -
-
- Like Uri.file except that a non-empty URI path ends in a slash. [...] -
factory
-
-
- Uri.file(String path, { bool windows }) -
-
- Creates a new file URI from an absolute or relative file path. [...] -
factory
-
-
- Uri.http(String authority, [ String unencodedPath, [ Map<String, String> queryParameters ]) -
-
- Creates a new http URI from authority, path and query. [...] -
factory
-
-
- Uri.https(String authority, [ String unencodedPath, [ Map<String, String> queryParameters ]) -
-
- Creates a new https URI from authority, path and query. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- authority - String -
-
- Returns the authority component. [...] -
read-only
-
-
- data - UriData -
-
- Access the structure of a data: URI. [...] -
read-only
-
-
- fragment - String -
-
- Returns the fragment identifier component. [...] -
read-only
-
-
- hasAbsolutePath - bool -
-
- Returns whether the URI has an absolute path (starting with '/'). -
read-only
-
-
- hasAuthority - bool -
-
- Returns whether the URI has an authority component. -
read-only
-
-
- hasEmptyPath - bool -
-
- Returns whether the URI has an empty path. -
read-only
-
-
- hasFragment - bool -
-
- Returns whether the URI has a fragment part. -
read-only
-
-
- hashCode - int -
-
- Returns a hash code computed as toString().hashCode. [...] -
read-only, override
-
-
- hasPort - bool -
-
- Returns whether the URI has an explicit port. [...] -
read-only
-
-
- hasQuery - bool -
-
- Returns whether the URI has a query part. -
read-only
-
-
- hasScheme - bool -
-
- Returns whether the URI has a scheme component. -
read-only
-
-
- host - String -
-
- Returns the host part of the authority component. [...] -
read-only
-
-
- isAbsolute - bool -
-
- Returns whether the URI is absolute. [...] -
read-only
-
-
- origin - String -
-
- Returns the origin of the URI in the form scheme://host:port for the -schemes http and https. [...] -
read-only
-
-
- path - String -
-
- Returns the path component. [...] -
read-only
-
-
- pathSegments - List<String> -
-
- Returns the URI path split into its segments. Each of the segments in the -returned list have been decoded. If the path is empty the empty list will -be returned. A leading slash / does not affect the segments returned. [...] -
read-only
-
-
- port - int -
-
- Returns the port part of the authority component. [...] -
read-only
-
-
- query - String -
-
- Returns the query component. The returned query is encoded. To get -direct access to the decoded query use queryParameters. [...] -
read-only
-
-
- queryParameters - Map<String, String> -
-
- Returns the URI query split into a map according to the rules -specified for FORM post in the HTML 4.01 specification section -17.13.4. -Each key and value in the returned map has been decoded. -If there is no query the empty map is returned. [...] -
read-only
-
-
- queryParametersAll - Map<String, List<String>> -
-
- Returns the URI query split into a map according to the rules -specified for FORM post in the HTML 4.01 specification section -17.13.4. -Each key and value in the returned map has been decoded. If there is no -query the empty map is returned. [...] -
read-only
-
-
- scheme - String -
-
- The scheme component of the URI. [...] -
read-only
-
-
- userInfo - String -
-
- Returns the user info part of the authority component. [...] -
read-only
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- isScheme(String scheme) - bool - -
-
- Whether the scheme of this Uri is scheme. [...] - -
-
- normalizePath() - Uri - -
-
- Returns a URI where the path has been normalized. [...] - -
-
- removeFragment() - Uri - -
-
- Returns a Uri that differs from this only in not having a fragment. [...] - -
-
- replace({String scheme String userInfo String host int port, String path Iterable<String> pathSegments, String query Map<String, dynamic> queryParameters, String fragment }) - Uri - -
-
- Returns a new Uri based on this one, but with some parts replaced. [...] - -
-
- resolve(String reference) - Uri - -
-
- Resolve reference as an URI relative to this. [...] - -
-
- resolveUri(Uri reference) - Uri - -
-
- Resolve reference as an URI relative to this. [...] - -
-
- toFilePath({bool windows }) - String - -
-
- Returns the file path from a file URI. [...] - -
-
- toString() - String - -
-
- Returns the normalized string representation of the URI. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- A URI is equal to another URI with the same normalized representation. -
override
-
-
-
- -
-

Static Properties

- -
-
- base - Uri -
-
- Returns the natural base URI for the current platform. [...] -
read-only
-
-
-
- -
-

Static Methods

-
-
- decodeComponent(String encodedComponent) - String - -
-
- Decodes the percent-encoding in encodedComponent. [...] - -
-
- decodeFull(String uri) - String - -
-
- Decodes the percent-encoding in uri. [...] - -
-
- decodeQueryComponent(String encodedComponent, { Encoding encoding: utf8 }) - String - -
-
- Decodes the percent-encoding in encodedComponent, converting -pluses to spaces. [...] - -
-
- encodeComponent(String component) - String - -
-
- Encode the string component using percent-encoding to make it -safe for literal use as a URI component. [...] - -
-
- encodeFull(String uri) - String - -
-
- Encode the string uri using percent-encoding to make it -safe for literal use as a full URI. [...] - -
-
- encodeQueryComponent(String component, { Encoding encoding: utf8 }) - String - -
-
- Encode the string component according to the HTML 4.01 rules -for encoding the posting of a HTML form as a query string -component. [...] - -
-
- parse(String uri, [ int start = 0 int end ]) - Uri - -
-
- Creates a new Uri object by parsing a URI string. [...] - -
-
- parseIPv4Address(String host) - List<int> - -
-
- Parse the host as an IP version 4 (IPv4) address, returning the address -as a list of 4 bytes in network byte order (big endian). [...] - -
-
- parseIPv6Address(String host, [ int start = 0 int end ]) - List<int> - -
-
- Parse the host as an IP version 6 (IPv6) address, returning the address -as a list of 16 bytes in network byte order (big endian). [...] - -
-
- splitQueryString(String query, { Encoding encoding: utf8 }) - Map<String, String> - -
-
- Returns the query split into a map according to the rules -specified for FORM post in the HTML 4.01 specification section -17.13.4. -Each key and value in the returned map has been decoded. If the query -is the empty string an empty map is returned. [...] - -
-
- tryParse(String uri, [ int start = 0 int end ]) - Uri - -
-
- Creates a new Uri object by parsing a URI string. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/Uri.dataFromBytes.html b/doc/api/dart-core/Uri/Uri.dataFromBytes.html deleted file mode 100644 index 8591a101..00000000 --- a/doc/api/dart-core/Uri/Uri.dataFromBytes.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - Uri.dataFromBytes constructor - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Uri.dataFromBytes
- -
- -
- - - -
-

Uri.dataFromBytes constructor

- -
- - Uri.dataFromBytes(List<int> bytes, { String mimeType: "application/octet-stream", Map<String, String> parameters, bool percentEncoded: false }) -
- -
-

Creates a data: URI containing an encoding of bytes.

-

Defaults to Base64 encoding the bytes, but if percentEncoded -is true, the bytes will instead be percent encoded (any non-ASCII -or non-valid-ASCII-character byte is replaced by a percent encoding).

-

To read the bytes back, use UriData.contentAsBytes.

-

It defaults to having the mime-type application/octet-stream. -The mimeType and parameters are added to the created URI. -If any of these contain characters that are not allowed -in the data URI, the character is percent-escaped. If the character is -non-ASCII, it is first UTF-8 encoded and then the bytes are percent -encoded.

-
- -
-

Implementation

-
factory Uri.dataFromBytes(List<int> bytes,
-    {String mimeType = "application/octet-stream",
-    Map<String, String>? parameters,
-    bool percentEncoded = false}) {
-  UriData data = UriData.fromBytes(bytes,
-      mimeType: mimeType,
-      parameters: parameters,
-      percentEncoded: percentEncoded);
-  return data.uri;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/Uri.dataFromString.html b/doc/api/dart-core/Uri/Uri.dataFromString.html deleted file mode 100644 index 58dd0371..00000000 --- a/doc/api/dart-core/Uri/Uri.dataFromString.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - Uri.dataFromString constructor - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Uri.dataFromString
- -
- -
- - - -
-

Uri.dataFromString constructor

- -
- - Uri.dataFromString(String content, { String mimeType, Encoding encoding, Map<String, String> parameters, bool base64: false }) -
- -
-

Creates a data: URI containing the content string.

-

Converts the content to a bytes using encoding or the charset specified -in parameters (defaulting to US-ASCII if not specified or unrecognized), -then encodes the bytes into the resulting data URI.

-

Defaults to encoding using percent-encoding (any non-ASCII or non-URI-valid -bytes is replaced by a percent encoding). If base64 is true, the bytes -are instead encoded using base64.

-

If encoding is not provided and parameters has a charset entry, -that name is looked up using Encoding.getByName, -and if the lookup returns an encoding, that encoding is used to convert -content to bytes. -If providing both an encoding and a charset in parameters, they should -agree, otherwise decoding won't be able to use the charset parameter -to determine the encoding.

-

If mimeType and/or parameters are supplied, they are added to the -created URI. If any of these contain characters that are not allowed -in the data URI, the character is percent-escaped. If the character is -non-ASCII, it is first UTF-8 encoded and then the bytes are percent -encoded. An omitted mimeType in a data URI means text/plain, just -as an omitted charset parameter defaults to meaning US-ASCII.

-

To read the content back, use UriData.contentAsString.

-
- -
-

Implementation

-
factory Uri.dataFromString(String content,
-    {String? mimeType,
-    Encoding? encoding,
-    Map<String, String>? parameters,
-    bool base64 = false}) {
-  UriData data = UriData.fromString(content,
-      mimeType: mimeType,
-      encoding: encoding,
-      parameters: parameters,
-      base64: base64);
-  return data.uri;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/Uri.directory.html b/doc/api/dart-core/Uri/Uri.directory.html deleted file mode 100644 index baa74f22..00000000 --- a/doc/api/dart-core/Uri/Uri.directory.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - Uri.directory constructor - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Uri.directory
- -
- -
- - - -
-

Uri.directory constructor

- -
- - Uri.directory(String path, { bool windows }) -
- -
-

Like Uri.file except that a non-empty URI path ends in a slash.

-

If path is not empty, and it doesn't end in a directory separator, -then a slash is added to the returned URI's path. -In all other cases, the result is the same as returned by Uri.file.

-
- -
-

Implementation

-
factory Uri.directory(String path, {bool? windows}) = _Uri.directory;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/Uri.file.html b/doc/api/dart-core/Uri/Uri.file.html deleted file mode 100644 index 04444045..00000000 --- a/doc/api/dart-core/Uri/Uri.file.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - - Uri.file constructor - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Uri.file
- -
- -
- - - -
-

Uri.file constructor

- -
- - Uri.file(String path, { bool windows }) -
- -
-

Creates a new file URI from an absolute or relative file path.

-

The file path is passed in path.

-

This path is interpreted using either Windows or non-Windows -semantics.

-

With non-Windows semantics the slash (/) is used to separate -path segments in the input path.

-

With Windows semantics, backslash (\) and forward-slash (/) -are used to separate path segments in the input path, -except if the path starts with \\?\ in which case -only backslash (\) separates path segments in path.

-

If the path starts with a path separator, an absolute URI (with the -file scheme and an empty authority) is created. -Otherwise a relative URI reference with no scheme or authority is created. -One exception from this rule is that when Windows semantics is used -and the path starts with a drive letter followed by a colon (":") and a -path separator, then an absolute URI is created.

-

The default for whether to use Windows or non-Windows semantics -determined from the platform Dart is running on. When running in -the standalone VM, this is detected by the VM based on the -operating system. When running in a browser non-Windows semantics -is always used.

-

To override the automatic detection of which semantics to use pass -a value for windows. Passing true will use Windows -semantics and passing false will use non-Windows semantics.

-

Examples using non-Windows semantics:

-
// xxx/yyy
-new Uri.file("xxx/yyy", windows: false);
-
-// xxx/yyy/
-new Uri.file("xxx/yyy/", windows: false);
-
-// file:///xxx/yyy
-new Uri.file("/xxx/yyy", windows: false);
-
-// file:///xxx/yyy/
-new Uri.file("/xxx/yyy/", windows: false);
-
-// C%3A
-new Uri.file("C:", windows: false);
-
-

Examples using Windows semantics:

-
// xxx/yyy
-new Uri.file(r"xxx\yyy", windows: true);
-
-// xxx/yyy/
-new Uri.file(r"xxx\yyy\", windows: true);
-
-file:///xxx/yyy
-new Uri.file(r"\xxx\yyy", windows: true);
-
-file:///xxx/yyy/
-new Uri.file(r"\xxx\yyy/", windows: true);
-
-// file:///C:/xxx/yyy
-new Uri.file(r"C:\xxx\yyy", windows: true);
-
-// This throws an error. A path with a drive letter, but no following
-// path, is not allowed.
-new Uri.file(r"C:", windows: true);
-
-// This throws an error. A path with a drive letter is not absolute.
-new Uri.file(r"C:xxx\yyy", windows: true);
-
-// file://server/share/file
-new Uri.file(r"\\server\share\file", windows: true);
-
-

If the path passed is not a valid file path, an error is thrown.

-
- -
-

Implementation

-
factory Uri.file(String path, {bool? windows}) = _Uri.file;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/Uri.html b/doc/api/dart-core/Uri/Uri.html deleted file mode 100644 index 2709f079..00000000 --- a/doc/api/dart-core/Uri/Uri.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - Uri constructor - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Uri
- -
- -
- - - -
-

Uri constructor

- -
- - Uri({String scheme String userInfo String host int port, String path Iterable<String> pathSegments, String query Map<String, dynamic> queryParameters, String fragment }) -
- -
-

Creates a new URI from its components.

-

Each component is set through a named argument. Any number of -components can be provided. The path and query components can be set -using either of two different named arguments.

-

The scheme component is set through scheme. The scheme is -normalized to all lowercase letters. If the scheme is omitted or empty, -the URI will not have a scheme part.

-

The user info part of the authority component is set through -userInfo. It defaults to the empty string, which will be omitted -from the string representation of the URI.

-

The host part of the authority component is set through -host. The host can either be a hostname, an IPv4 address or an -IPv6 address, contained in '' and ''. If the host contains a -':' character, the '' and '' are added if not already provided. -The host is normalized to all lowercase letters.

-

The port part of the authority component is set through -port. -If port is omitted or null, it implies the default port for -the URI's scheme, and is equivalent to passing that port explicitly. -The recognized schemes, and their default ports, are "http" (80) and -"https" (443). All other schemes are considered as having zero as the -default port.

-

If any of userInfo, host or port are provided, -the URI has an authority according to hasAuthority.

-

The path component is set through either path or -pathSegments. -When path is used, it should be a valid URI path, -but invalid characters, except the general delimiters ':/@[]?#', -will be escaped if necessary. -When pathSegments is used, each of the provided segments -is first percent-encoded and then joined using the forward slash -separator.

-

The percent-encoding of the path segments encodes all -characters except for the unreserved characters and the following -list of characters: !$&'()*+,;=:@. If the other components -necessitate an absolute path, a leading slash / is prepended if -not already there.

-

The query component is set through either query or queryParameters. -When query is used, the provided string should be a valid URI query, -but invalid characters, other than general delimiters, -will be escaped if necessary. -When queryParameters is used the query is built from the -provided map. Each key and value in the map is percent-encoded -and joined using equal and ampersand characters. -A value in the map must be either a string, or an Iterable of strings, -where the latter corresponds to multiple values for the same key.

-

The percent-encoding of the keys and values encodes all characters -except for the unreserved characters, and replaces spaces with +. -If query is the empty string, it is equivalent to omitting it. -To have an actual empty query part, -use an empty map for queryParameters.

-

If both query and queryParameters are omitted or null, -the URI has no query part.

-

The fragment component is set through fragment. -It should be a valid URI fragment, but invalid characters other than -general delimiters, are escaped if necessary. -If fragment is omitted or null, the URI has no fragment part.

-
- -
-

Implementation

-
factory Uri(
-    {String? scheme,
-    String? userInfo,
-    String? host,
-    int? port,
-    String? path,
-    Iterable<String>? pathSegments,
-    String? query,
-    Map<String, dynamic /*String|Iterable<String>*/ >? queryParameters,
-    String? fragment}) = _Uri;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/Uri.http.html b/doc/api/dart-core/Uri/Uri.http.html deleted file mode 100644 index de5457d1..00000000 --- a/doc/api/dart-core/Uri/Uri.http.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - Uri.http constructor - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Uri.http
- -
- -
- - - -
-

Uri.http constructor

- -
- - Uri.http(String authority, [ String unencodedPath, [ Map<String, String> queryParameters ]) -
- -
-

Creates a new http URI from authority, path and query.

-

Examples:

-
// http://example.org/path?q=dart.
-new Uri.http("example.org", "/path", { "q" : "dart" });
-
-// http://user:pass@localhost:8080
-new Uri.http("user:pass@localhost:8080", "");
-
-// http://example.org/a%20b
-new Uri.http("example.org", "a b");
-
-// http://example.org/a%252F
-new Uri.http("example.org", "/a%2F");
-
-

The scheme is always set to http.

-

The userInfo, host and port components are set from the -authority argument. If authority is null or empty, -the created Uri has no authority, and isn't directly usable -as an HTTP URL, which must have a non-empty host.

-

The path component is set from the unencodedPath -argument. The path passed must not be encoded as this constructor -encodes the path.

-

The query component is set from the optional queryParameters -argument.

-
- -
-

Implementation

-
factory Uri.http(String authority, String unencodedPath,
-    [Map<String, String>? queryParameters]) = _Uri.http;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/Uri.https.html b/doc/api/dart-core/Uri/Uri.https.html deleted file mode 100644 index 78bfa059..00000000 --- a/doc/api/dart-core/Uri/Uri.https.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - Uri.https constructor - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
Uri.https
- -
- -
- - - -
-

Uri.https constructor

- -
- - Uri.https(String authority, [ String unencodedPath, [ Map<String, String> queryParameters ]) -
- -
-

Creates a new https URI from authority, path and query.

-

This constructor is the same as Uri.http except for the scheme -which is set to https.

-
- -
-

Implementation

-
factory Uri.https(String authority, String unencodedPath,
-    [Map<String, String>? queryParameters]) = _Uri.https;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/authority.html b/doc/api/dart-core/Uri/authority.html deleted file mode 100644 index b3582445..00000000 --- a/doc/api/dart-core/Uri/authority.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - authority property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
authority
- -
- -
- - - -
-

authority property

- - -
- -
- String - authority - -
- -
-

Returns the authority component.

-

The authority is formatted from the userInfo, host and port -parts.

-

Returns the empty string if there is no authority component.

-
-
-

Implementation

-
String get authority;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/base.html b/doc/api/dart-core/Uri/base.html deleted file mode 100644 index a7241a6f..00000000 --- a/doc/api/dart-core/Uri/base.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - base property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
base
- -
- -
- - - -
-

base property

- - -
- -
- Uri - base - -
- -
-

Returns the natural base URI for the current platform.

-

When running in a browser this is the current URL of the current page -(from window.location.href).

-

When not running in a browser this is the file URI referencing -the current working directory.

-
-
-

Implementation

-
external static Uri get base;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/data.html b/doc/api/dart-core/Uri/data.html deleted file mode 100644 index 35ec5169..00000000 --- a/doc/api/dart-core/Uri/data.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - data property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
data
- -
- -
- - - -
-

data property

- - -
- -
- UriData - data - -
- -
-

Access the structure of a data: URI.

-

Returns a UriData object for data: URIs and null for all other -URIs. -The UriData object can be used to access the media type and data -of a data: URI.

-
-
-

Implementation

-
UriData? get data;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/decodeComponent.html b/doc/api/dart-core/Uri/decodeComponent.html deleted file mode 100644 index 40cb6723..00000000 --- a/doc/api/dart-core/Uri/decodeComponent.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - decodeComponent method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
decodeComponent
- -
- -
- - - -
-

decodeComponent method

- -
- String - decodeComponent -(String encodedComponent) - -
-
-

Decodes the percent-encoding in encodedComponent.

-

Note that decoding a URI component might change its meaning as -some of the decoded characters could be characters with are -delimiters for a given URI component type. Always split a URI -component using the delimiters for the component before decoding -the individual parts.

-

For handling the path and query components consider using -pathSegments and queryParameters to get the separated and -decoded component.

-
- -
-

Implementation

-
static String decodeComponent(String encodedComponent) {
-  return _Uri._uriDecode(
-      encodedComponent, 0, encodedComponent.length, utf8, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/decodeFull.html b/doc/api/dart-core/Uri/decodeFull.html deleted file mode 100644 index a095a5ae..00000000 --- a/doc/api/dart-core/Uri/decodeFull.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - decodeFull method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
decodeFull
- -
- -
- - - -
-

decodeFull method

- -
- String - decodeFull -(String uri) - -
-
-

Decodes the percent-encoding in uri.

-

Note that decoding a full URI might change its meaning as some of -the decoded characters could be reserved characters. In most -cases an encoded URI should be parsed into components using -Uri.parse before decoding the separate components.

-
- -
-

Implementation

-
static String decodeFull(String uri) {
-  return _Uri._uriDecode(uri, 0, uri.length, utf8, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/decodeQueryComponent.html b/doc/api/dart-core/Uri/decodeQueryComponent.html deleted file mode 100644 index 2c7b60d9..00000000 --- a/doc/api/dart-core/Uri/decodeQueryComponent.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - decodeQueryComponent method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
decodeQueryComponent
- -
- -
- - - -
-

decodeQueryComponent method

- -
- String - decodeQueryComponent -(String encodedComponent, { Encoding encoding: utf8 }) - -
-
-

Decodes the percent-encoding in encodedComponent, converting -pluses to spaces.

-

It will create a byte-list of the decoded characters, and then use -encoding to decode the byte-list to a String. The default encoding is -UTF-8.

-
- -
-

Implementation

-
static String decodeQueryComponent(String encodedComponent,
-    {Encoding encoding = utf8}) {
-  return _Uri._uriDecode(
-      encodedComponent, 0, encodedComponent.length, encoding, true);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/encodeComponent.html b/doc/api/dart-core/Uri/encodeComponent.html deleted file mode 100644 index 64515772..00000000 --- a/doc/api/dart-core/Uri/encodeComponent.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - encodeComponent method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
encodeComponent
- -
- -
- - - -
-

encodeComponent method

- -
- String - encodeComponent -(String component) - -
-
-

Encode the string component using percent-encoding to make it -safe for literal use as a URI component.

-

All characters except uppercase and lowercase letters, digits and -the characters -_.!~*'() are percent-encoded. This is the -set of characters specified in RFC 2396 and the which is -specified for the encodeUriComponent in ECMA-262 version 5.1.

-

When manually encoding path segments or query components remember -to encode each part separately before building the path or query -string.

-

For encoding the query part consider using -encodeQueryComponent.

-

To avoid the need for explicitly encoding use the pathSegments -and queryParameters optional named arguments when constructing -a Uri.

-
- -
-

Implementation

-
static String encodeComponent(String component) {
-  return _Uri._uriEncode(_Uri._unreserved2396Table, component, utf8, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/encodeFull.html b/doc/api/dart-core/Uri/encodeFull.html deleted file mode 100644 index e396d9da..00000000 --- a/doc/api/dart-core/Uri/encodeFull.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - encodeFull method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
encodeFull
- -
- -
- - - -
-

encodeFull method

- -
- String - encodeFull -(String uri) - -
-
-

Encode the string uri using percent-encoding to make it -safe for literal use as a full URI.

-

All characters except uppercase and lowercase letters, digits and -the characters !#$&'()*+,-./:;=?@_~ are percent-encoded. This -is the set of characters specified in in ECMA-262 version 5.1 for -the encodeURI function .

-
- -
-

Implementation

-
static String encodeFull(String uri) {
-  return _Uri._uriEncode(_Uri._encodeFullTable, uri, utf8, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/encodeQueryComponent.html b/doc/api/dart-core/Uri/encodeQueryComponent.html deleted file mode 100644 index 40e7baec..00000000 --- a/doc/api/dart-core/Uri/encodeQueryComponent.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - encodeQueryComponent method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
encodeQueryComponent
- -
- -
- - - -
-

encodeQueryComponent method

- -
- String - encodeQueryComponent -(String component, { Encoding encoding: utf8 }) - -
-
-

Encode the string component according to the HTML 4.01 rules -for encoding the posting of a HTML form as a query string -component.

-

Encode the string component according to the HTML 4.01 rules -for encoding the posting of a HTML form as a query string -component.

-

The component is first encoded to bytes using encoding. -The default is to use utf8 encoding, which preserves all -the characters that don't need encoding.

-

Then the resulting bytes are "percent-encoded". This transforms -spaces (U+0020) to a plus sign ('+') and all bytes that are not -the ASCII decimal digits, letters or one of '-._~' are written as -a percent sign '%' followed by the two-digit hexadecimal -representation of the byte.

-

Note that the set of characters which are percent-encoded is a -superset of what HTML 4.01 requires, since it refers to RFC 1738 -for reserved characters.

-

When manually encoding query components remember to encode each -part separately before building the query string.

-

To avoid the need for explicitly encoding the query use the -queryParameters optional named arguments when constructing a -Uri.

-

See http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2 for more -details.

-
- -
-

Implementation

-
static String encodeQueryComponent(String component,
-    {Encoding encoding = utf8}) {
-  return _Uri._uriEncode(_Uri._unreservedTable, component, encoding, true);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/fragment.html b/doc/api/dart-core/Uri/fragment.html deleted file mode 100644 index 844fd08b..00000000 --- a/doc/api/dart-core/Uri/fragment.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - fragment property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
fragment
- -
- -
- - - -
-

fragment property

- - -
- -
- String - fragment - -
- -
-

Returns the fragment identifier component.

-

Returns the empty string if there is no fragment identifier -component.

-
-
-

Implementation

-
String get fragment;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/hasAbsolutePath.html b/doc/api/dart-core/Uri/hasAbsolutePath.html deleted file mode 100644 index 401bb977..00000000 --- a/doc/api/dart-core/Uri/hasAbsolutePath.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - hasAbsolutePath property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasAbsolutePath
- -
- -
- - - -
-

hasAbsolutePath property

- - -
- -
- bool - hasAbsolutePath - -
- -
-

Returns whether the URI has an absolute path (starting with '/').

-
-
-

Implementation

-
bool get hasAbsolutePath;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/hasAuthority.html b/doc/api/dart-core/Uri/hasAuthority.html deleted file mode 100644 index 7fd83c39..00000000 --- a/doc/api/dart-core/Uri/hasAuthority.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - hasAuthority property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasAuthority
- -
- -
- - - -
-

hasAuthority property

- - -
- -
- bool - hasAuthority - -
- -
-

Returns whether the URI has an authority component.

-
-
-

Implementation

-
bool get hasAuthority;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/hasEmptyPath.html b/doc/api/dart-core/Uri/hasEmptyPath.html deleted file mode 100644 index 495d8516..00000000 --- a/doc/api/dart-core/Uri/hasEmptyPath.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - hasEmptyPath property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasEmptyPath
- -
- -
- - - -
-

hasEmptyPath property

- - -
- -
- bool - hasEmptyPath - -
- -
-

Returns whether the URI has an empty path.

-
-
-

Implementation

-
bool get hasEmptyPath;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/hasFragment.html b/doc/api/dart-core/Uri/hasFragment.html deleted file mode 100644 index 60aa445b..00000000 --- a/doc/api/dart-core/Uri/hasFragment.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - hasFragment property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasFragment
- -
- -
- - - -
-

hasFragment property

- - -
- -
- bool - hasFragment - -
- -
-

Returns whether the URI has a fragment part.

-
-
-

Implementation

-
bool get hasFragment;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/hasPort.html b/doc/api/dart-core/Uri/hasPort.html deleted file mode 100644 index fb7e1f62..00000000 --- a/doc/api/dart-core/Uri/hasPort.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - hasPort property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasPort
- -
- -
- - - -
-

hasPort property

- - -
- -
- bool - hasPort - -
- -
-

Returns whether the URI has an explicit port.

-

If the port number is the default port number -(zero for unrecognized schemes, with http (80) and https (443) being -recognized), -then the port is made implicit and omitted from the URI.

-
-
-

Implementation

-
bool get hasPort;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/hasQuery.html b/doc/api/dart-core/Uri/hasQuery.html deleted file mode 100644 index 9cdddd15..00000000 --- a/doc/api/dart-core/Uri/hasQuery.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - hasQuery property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasQuery
- -
- -
- - - -
-

hasQuery property

- - -
- -
- bool - hasQuery - -
- -
-

Returns whether the URI has a query part.

-
-
-

Implementation

-
bool get hasQuery;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/hasScheme.html b/doc/api/dart-core/Uri/hasScheme.html deleted file mode 100644 index 6ad9d3f5..00000000 --- a/doc/api/dart-core/Uri/hasScheme.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - hasScheme property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hasScheme
- -
- -
- - - -
-

hasScheme property

- - -
- -
- bool - hasScheme - -
- -
-

Returns whether the URI has a scheme component.

-
-
-

Implementation

-
bool get hasScheme => scheme.isNotEmpty;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/hashCode.html b/doc/api/dart-core/Uri/hashCode.html deleted file mode 100644 index 37551b84..00000000 --- a/doc/api/dart-core/Uri/hashCode.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - hashCode property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

Returns a hash code computed as toString().hashCode.

-

This guarantees that URIs with the same normalized

-
-
-

Implementation

-
int get hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/host.html b/doc/api/dart-core/Uri/host.html deleted file mode 100644 index 43eb109e..00000000 --- a/doc/api/dart-core/Uri/host.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - host property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
host
- -
- -
- - - -
-

host property

- - -
- -
- String - host - -
- -
-

Returns the host part of the authority component.

-

Returns the empty string if there is no authority component and -hence no host.

-

If the host is an IP version 6 address, the surrounding [ and ] is -removed.

-

The host string is case-insensitive. -The returned host name is canonicalized to lower-case -with upper-case percent-escapes.

-
-
-

Implementation

-
String get host;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/isAbsolute.html b/doc/api/dart-core/Uri/isAbsolute.html deleted file mode 100644 index 40d3d929..00000000 --- a/doc/api/dart-core/Uri/isAbsolute.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - isAbsolute property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isAbsolute
- -
- -
- - - -
-

isAbsolute property

- - -
- -
- bool - isAbsolute - -
- -
-

Returns whether the URI is absolute.

-

A URI is an absolute URI in the sense of RFC 3986 if it has a scheme -and no fragment.

-
-
-

Implementation

-
bool get isAbsolute;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/isScheme.html b/doc/api/dart-core/Uri/isScheme.html deleted file mode 100644 index d5da4359..00000000 --- a/doc/api/dart-core/Uri/isScheme.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - isScheme method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isScheme
- -
- -
- - - -
-

isScheme method

- -
- bool - isScheme -(String scheme) - -
-
-

Whether the scheme of this Uri is scheme.

-

The scheme should be the same as the one returned by Uri.scheme, -but doesn't have to be case-normalized to lower-case characters.

-

Example:

-
var uri = Uri.parse("http://example.com/");
-print(uri.isScheme("HTTP"));  // Prints true.
-
-

A null or empty scheme string matches a URI with no scheme -(one where hasScheme returns false).

-
- -
-

Implementation

-
bool isScheme(String scheme);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/normalizePath.html b/doc/api/dart-core/Uri/normalizePath.html deleted file mode 100644 index aa0dea06..00000000 --- a/doc/api/dart-core/Uri/normalizePath.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - normalizePath method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
normalizePath
- -
- -
- - - -
-

normalizePath method

- -
- Uri - normalizePath -() - -
-
-

Returns a URI where the path has been normalized.

-

A normalized path does not contain . segments or non-leading .. -segments. -Only a relative path with no scheme or authority may contain -leading .. segments, -a path that starts with / will also drop any leading .. segments.

-

This uses the same normalization strategy as new Uri().resolve(this).

-

Does not change any part of the URI except the path.

-

The default implementation of Uri always normalizes paths, so calling -this function has no effect.

-
- -
-

Implementation

-
Uri normalizePath();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/operator_equals.html b/doc/api/dart-core/Uri/operator_equals.html deleted file mode 100644 index e70deef8..00000000 --- a/doc/api/dart-core/Uri/operator_equals.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - operator == method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) -
override
-
-
-

A URI is equal to another URI with the same normalized representation.

-
- -
-

Implementation

-
bool operator ==(Object other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/origin.html b/doc/api/dart-core/Uri/origin.html deleted file mode 100644 index 6ce2f635..00000000 --- a/doc/api/dart-core/Uri/origin.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - origin property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
origin
- -
- -
- - - -
-

origin property

- - -
- -
- String - origin - -
- -
-

Returns the origin of the URI in the form scheme://host:port for the -schemes http and https.

-

It is an error if the scheme is not "http" or "https", or if the host name -is missing or empty.

-

See: http://www.w3.org/TR/2011/WD-html5-20110405/origin-0.html#origin

-
-
-

Implementation

-
String get origin;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/parse.html b/doc/api/dart-core/Uri/parse.html deleted file mode 100644 index b5473868..00000000 --- a/doc/api/dart-core/Uri/parse.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - - - parse method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parse
- -
- -
- - - -
-

parse method

- -
- Uri - parse -(String uri, [ int start = 0 int end ]) - -
-
-

Creates a new Uri object by parsing a URI string.

-

If start and end are provided, they must specify a valid substring -of uri, and only the substring from start to end is parsed as a URI.

-

The uri must not be null. -If the uri string is not valid as a URI or URI reference, -a FormatException is thrown.

-
- -
-

Implementation

-
static Uri parse(String uri, [int start = 0, int? end]) {
-  // This parsing will not validate percent-encoding, IPv6, etc.
-  // When done splitting into parts, it will call, e.g., [_makeFragment]
-  // to do the final parsing.
-  //
-  // Important parts of the RFC 3986 used here:
-  // URI           = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
-  //
-  // hier-part     = "//" authority path-abempty
-  //               / path-absolute
-  //               / path-rootless
-  //               / path-empty
-  //
-  // URI-reference = URI / relative-ref
-  //
-  // absolute-URI  = scheme ":" hier-part [ "?" query ]
-  //
-  // relative-ref  = relative-part [ "?" query ] [ "#" fragment ]
-  //
-  // relative-part = "//" authority path-abempty
-  //               / path-absolute
-  //               / path-noscheme
-  //               / path-empty
-  //
-  // scheme        = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
-  //
-  // authority     = [ userinfo "@" ] host [ ":" port ]
-  // userinfo      = *( unreserved / pct-encoded / sub-delims / ":" )
-  // host          = IP-literal / IPv4address / reg-name
-  // IP-literal    = "[" ( IPv6address / IPv6addrz / IPvFuture ) "]"
-  // IPv6addrz     = IPv6address "%25" ZoneID
-  // ZoneID        = 1*( unreserved / pct-encoded )
-  // port          = *DIGIT
-  // reg-name      = *( unreserved / pct-encoded / sub-delims )
-  //
-  // path          = path-abempty    ; begins with "/" or is empty
-  //               / path-absolute   ; begins with "/" but not "//"
-  //               / path-noscheme   ; begins with a non-colon segment
-  //               / path-rootless   ; begins with a segment
-  //               / path-empty      ; zero characters
-  //
-  // path-abempty  = *( "/" segment )
-  // path-absolute = "/" [ segment-nz *( "/" segment ) ]
-  // path-noscheme = segment-nz-nc *( "/" segment )
-  // path-rootless = segment-nz *( "/" segment )
-  // path-empty    = 0<pchar>
-  //
-  // segment       = *pchar
-  // segment-nz    = 1*pchar
-  // segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
-  //               ; non-zero-length segment without any colon ":"
-  //
-  // pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
-  //
-  // query         = *( pchar / "/" / "?" )
-  //
-  // fragment      = *( pchar / "/" / "?" )
-  end ??= uri.length;
-
-  // Special case data:URIs. Ignore case when testing.
-  if (end >= start + 5) {
-    int dataDelta = _startsWithData(uri, start);
-    if (dataDelta == 0) {
-      // The case is right.
-      if (start > 0 || end < uri.length) uri = uri.substring(start, end);
-      return UriData._parse(uri, 5, null).uri;
-    } else if (dataDelta == 0x20) {
-      return UriData._parse(uri.substring(start + 5, end), 0, null).uri;
-    }
-    // Otherwise the URI doesn't start with "data:" or any case variant of it.
-  }
-
-  // The following index-normalization belongs with the scanning, but is
-  // easier to do here because we already have extracted variables from the
-  // indices list.
-  var indices = List<int>.filled(8, 0, growable: false);
-
-  // Set default values for each position.
-  // The value will either be correct in some cases where it isn't set
-  // by the scanner, or it is clearly recognizable as an unset value.
-  indices
-    ..[0] = 0
-    ..[_schemeEndIndex] = start - 1
-    ..[_hostStartIndex] = start - 1
-    ..[_notSimpleIndex] = start - 1
-    ..[_portStartIndex] = start
-    ..[_pathStartIndex] = start
-    ..[_queryStartIndex] = end
-    ..[_fragmentStartIndex] = end;
-  var state = _scan(uri, start, end, _uriStart, indices);
-  // Some states that should be non-simple, but the URI ended early.
-  // Paths that end at a ".." must be normalized to end in "../".
-  if (state >= _nonSimpleEndStates) {
-    indices[_notSimpleIndex] = end;
-  }
-  int schemeEnd = indices[_schemeEndIndex];
-  if (schemeEnd >= start) {
-    // Rescan the scheme part now that we know it's not a path.
-    state = _scan(uri, start, schemeEnd, _schemeStart, indices);
-    if (state == _schemeStart) {
-      // Empty scheme.
-      indices[_notSimpleIndex] = schemeEnd;
-    }
-  }
-  // The returned positions are limited by the scanners ability to write only
-  // one position per character, and only the current position.
-  // Scanning from left to right, we only know whether something is a scheme
-  // or a path when we see a `:` or `/`, and likewise we only know if the first
-  // `/` is part of the path or is leading an authority component when we see
-  // the next character.
-
-  int hostStart = indices[_hostStartIndex] + 1;
-  int portStart = indices[_portStartIndex];
-  int pathStart = indices[_pathStartIndex];
-  int queryStart = indices[_queryStartIndex];
-  int fragmentStart = indices[_fragmentStartIndex];
-
-  // We may discover the scheme while handling special cases.
-  String? scheme;
-
-  // Derive some positions that weren't set to normalize the indices.
-  if (fragmentStart < queryStart) queryStart = fragmentStart;
-  // If pathStart isn't set (it's before scheme end or host start), then
-  // the path is empty, or there is no authority part and the path
-  // starts with a non-simple character.
-  if (pathStart < hostStart) {
-    // There is an authority, but no path. The path would start with `/`
-    // if it was there.
-    pathStart = queryStart;
-  } else if (pathStart <= schemeEnd) {
-    // There is a scheme, but no authority.
-    pathStart = schemeEnd + 1;
-  }
-  // If there is an authority with no port, set the port position
-  // to be at the end of the authority (equal to pathStart).
-  // This also handles a ":" in a user-info component incorrectly setting
-  // the port start position.
-  if (portStart < hostStart) portStart = pathStart;
-
-  assert(hostStart == start || schemeEnd <= hostStart);
-  assert(hostStart <= portStart);
-  assert(schemeEnd <= pathStart);
-  assert(portStart <= pathStart);
-  assert(pathStart <= queryStart);
-  assert(queryStart <= fragmentStart);
-
-  bool isSimple = indices[_notSimpleIndex] < start;
-
-  if (isSimple) {
-    // Check/do normalizations that weren't detected by the scanner.
-    // This includes removal of empty port or userInfo,
-    // or scheme specific port and path normalizations.
-    if (hostStart > schemeEnd + 3) {
-      // Always be non-simple if URI contains user-info.
-      // The scanner doesn't set the not-simple position in this case because
-      // it's setting the host-start position instead.
-      isSimple = false;
-    } else if (portStart > start && portStart + 1 == pathStart) {
-      // If the port is empty, it should be omitted.
-      // Pathological case, don't bother correcting it.
-      isSimple = false;
-    } else if (queryStart < end &&
-            (queryStart == pathStart + 2 &&
-                uri.startsWith("..", pathStart)) ||
-        (queryStart > pathStart + 2 &&
-            uri.startsWith("/..", queryStart - 3))) {
-      // The path ends in a ".." segment. This should be normalized to "../".
-      // We didn't detect this while scanning because a query or fragment was
-      // detected at the same time (which is why we only need to check this
-      // if there is something after the path).
-      isSimple = false;
-    } else {
-      // There are a few scheme-based normalizations that
-      // the scanner couldn't check.
-      // That means that the input is very close to simple, so just do
-      // the normalizations.
-      if (schemeEnd == start + 4) {
-        // Do scheme based normalizations for file, http.
-        if (uri.startsWith("file", start)) {
-          scheme = "file";
-          if (hostStart <= start) {
-            // File URIs should have an authority.
-            // Paths after an authority should be absolute.
-            String schemeAuth = "file://";
-            int delta = 2;
-            if (!uri.startsWith("/", pathStart)) {
-              schemeAuth = "file:///";
-              delta = 3;
-            }
-            uri = schemeAuth + uri.substring(pathStart, end);
-            schemeEnd -= start;
-            hostStart = 7;
-            portStart = 7;
-            pathStart = 7;
-            queryStart += delta - start;
-            fragmentStart += delta - start;
-            start = 0;
-            end = uri.length;
-          } else if (pathStart == queryStart) {
-            // Uri has authority and empty path. Add "/" as path.
-            if (start == 0 && end == uri.length) {
-              uri = uri.replaceRange(pathStart, queryStart, "/");
-              queryStart += 1;
-              fragmentStart += 1;
-              end += 1;
-            } else {
-              uri = "${uri.substring(start, pathStart)}/"
-                  "${uri.substring(queryStart, end)}";
-              schemeEnd -= start;
-              hostStart -= start;
-              portStart -= start;
-              pathStart -= start;
-              queryStart += 1 - start;
-              fragmentStart += 1 - start;
-              start = 0;
-              end = uri.length;
-            }
-          }
-        } else if (uri.startsWith("http", start)) {
-          scheme = "http";
-          // HTTP URIs should not have an explicit port of 80.
-          if (portStart > start &&
-              portStart + 3 == pathStart &&
-              uri.startsWith("80", portStart + 1)) {
-            if (start == 0 && end == uri.length) {
-              uri = uri.replaceRange(portStart, pathStart, "");
-              pathStart -= 3;
-              queryStart -= 3;
-              fragmentStart -= 3;
-              end -= 3;
-            } else {
-              uri = uri.substring(start, portStart) +
-                  uri.substring(pathStart, end);
-              schemeEnd -= start;
-              hostStart -= start;
-              portStart -= start;
-              pathStart -= 3 + start;
-              queryStart -= 3 + start;
-              fragmentStart -= 3 + start;
-              start = 0;
-              end = uri.length;
-            }
-          }
-        }
-      } else if (schemeEnd == start + 5 && uri.startsWith("https", start)) {
-        scheme = "https";
-        // HTTPS URIs should not have an explicit port of 443.
-        if (portStart > start &&
-            portStart + 4 == pathStart &&
-            uri.startsWith("443", portStart + 1)) {
-          if (start == 0 && end == uri.length) {
-            uri = uri.replaceRange(portStart, pathStart, "");
-            pathStart -= 4;
-            queryStart -= 4;
-            fragmentStart -= 4;
-            end -= 3;
-          } else {
-            uri = uri.substring(start, portStart) +
-                uri.substring(pathStart, end);
-            schemeEnd -= start;
-            hostStart -= start;
-            portStart -= start;
-            pathStart -= 4 + start;
-            queryStart -= 4 + start;
-            fragmentStart -= 4 + start;
-            start = 0;
-            end = uri.length;
-          }
-        }
-      }
-    }
-  }
-
-  if (isSimple) {
-    if (start > 0 || end < uri.length) {
-      uri = uri.substring(start, end);
-      schemeEnd -= start;
-      hostStart -= start;
-      portStart -= start;
-      pathStart -= start;
-      queryStart -= start;
-      fragmentStart -= start;
-    }
-    return _SimpleUri(uri, schemeEnd, hostStart, portStart, pathStart,
-        queryStart, fragmentStart, scheme);
-  }
-
-  return _Uri.notSimple(uri, start, end, schemeEnd, hostStart, portStart,
-      pathStart, queryStart, fragmentStart, scheme);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/parseIPv4Address.html b/doc/api/dart-core/Uri/parseIPv4Address.html deleted file mode 100644 index 41320afd..00000000 --- a/doc/api/dart-core/Uri/parseIPv4Address.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - parseIPv4Address method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parseIPv4Address
- -
- -
- - - -
-

parseIPv4Address method

- -
- List<int> - parseIPv4Address -(String host) - -
-
-

Parse the host as an IP version 4 (IPv4) address, returning the address -as a list of 4 bytes in network byte order (big endian).

-

Throws a FormatException if host is not a valid IPv4 address -representation.

-
- -
-

Implementation

-
static List<int> parseIPv4Address(String host) =>
-    _parseIPv4Address(host, 0, host.length);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/parseIPv6Address.html b/doc/api/dart-core/Uri/parseIPv6Address.html deleted file mode 100644 index 4b5ba91d..00000000 --- a/doc/api/dart-core/Uri/parseIPv6Address.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - - - - parseIPv6Address method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parseIPv6Address
- -
- -
- - - -
-

parseIPv6Address method

- -
- List<int> - parseIPv6Address -(String host, [ int start = 0 int end ]) - -
-
-

Parse the host as an IP version 6 (IPv6) address, returning the address -as a list of 16 bytes in network byte order (big endian).

-

Throws a FormatException if host is not a valid IPv6 address -representation.

-

Acts on the substring from start to end. If end is omitted, it -defaults ot the end of the string.

-

Some examples of IPv6 addresses:

-
    -
  • ::1
  • -
  • FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
  • -
  • 3ffe:2a00:100:7031::1
  • -
  • ::FFFF:129.144.52.38
  • -
  • 2010:836B:4179::836B:4179
  • -
-
- -
-

Implementation

-
static List<int> parseIPv6Address(String host, [int start = 0, int? end]) {
-  end ??= host.length;
-  // An IPv6 address consists of exactly 8 parts of 1-4 hex digits, separated
-  // by `:`'s, with the following exceptions:
-  //
-  //  - One (and only one) wildcard (`::`) may be present, representing a fill
-  //    of 0's. The IPv6 `::` is thus 16 bytes of `0`.
-  //  - The last two parts may be replaced by an IPv4 "dotted-quad" address.
-
-  // Helper function for reporting a badly formatted IPv6 address.
-  void error(String msg, [position]) {
-    throw FormatException('Illegal IPv6 address, $msg', host, position);
-  }
-
-  // Parse a hex block.
-  int parseHex(int start, int end) {
-    if (end - start > 4) {
-      error('an IPv6 part can only contain a maximum of 4 hex digits', start);
-    }
-    int value = int.parse(host.substring(start, end), radix: 16);
-    if (value < 0 || value > 0xFFFF) {
-      error('each part must be in the range of `0x0..0xFFFF`', start);
-    }
-    return value;
-  }
-
-  if (host.length < 2) error('address is too short');
-  List<int> parts = [];
-  bool wildcardSeen = false;
-  // Set if seeing a ".", suggesting that there is an IPv4 address.
-  bool seenDot = false;
-  int partStart = start;
-  // Parse all parts, except a potential last one.
-  for (int i = start; i < end; i++) {
-    int char = host.codeUnitAt(i);
-    if (char == _COLON) {
-      if (i == start) {
-        // If we see a `:` in the beginning, expect wildcard.
-        i++;
-        if (host.codeUnitAt(i) != _COLON) {
-          error('invalid start colon.', i);
-        }
-        partStart = i;
-      }
-      if (i == partStart) {
-        // Wildcard. We only allow one.
-        if (wildcardSeen) {
-          error('only one wildcard `::` is allowed', i);
-        }
-        wildcardSeen = true;
-        parts.add(-1);
-      } else {
-        // Found a single colon. Parse [partStart..i] as a hex entry.
-        parts.add(parseHex(partStart, i));
-      }
-      partStart = i + 1;
-    } else if (char == _DOT) {
-      seenDot = true;
-    }
-  }
-  if (parts.length == 0) error('too few parts');
-  bool atEnd = (partStart == end);
-  bool isLastWildcard = (parts.last == -1);
-  if (atEnd && !isLastWildcard) {
-    error('expected a part after last `:`', end);
-  }
-  if (!atEnd) {
-    if (!seenDot) {
-      parts.add(parseHex(partStart, end));
-    } else {
-      List<int> last = _parseIPv4Address(host, partStart, end);
-      parts.add(last[0] << 8 | last[1]);
-      parts.add(last[2] << 8 | last[3]);
-    }
-  }
-  if (wildcardSeen) {
-    if (parts.length > 7) {
-      error('an address with a wildcard must have less than 7 parts');
-    }
-  } else if (parts.length != 8) {
-    error('an address without a wildcard must contain exactly 8 parts');
-  }
-  List<int> bytes = Uint8List(16);
-  for (int i = 0, index = 0; i < parts.length; i++) {
-    int value = parts[i];
-    if (value == -1) {
-      int wildCardLength = 9 - parts.length;
-      for (int j = 0; j < wildCardLength; j++) {
-        bytes[index] = 0;
-        bytes[index + 1] = 0;
-        index += 2;
-      }
-    } else {
-      bytes[index] = value >> 8;
-      bytes[index + 1] = value & 0xff;
-      index += 2;
-    }
-  }
-  return bytes;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/path.html b/doc/api/dart-core/Uri/path.html deleted file mode 100644 index 34eddf76..00000000 --- a/doc/api/dart-core/Uri/path.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - path property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
path
- -
- -
- - - -
-

path property

- - -
- -
- String - path - -
- -
-

Returns the path component.

-

The returned path is encoded. To get direct access to the decoded -path use pathSegments.

-

Returns the empty string if there is no path component.

-
-
-

Implementation

-
String get path;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/pathSegments.html b/doc/api/dart-core/Uri/pathSegments.html deleted file mode 100644 index 2fa8142b..00000000 --- a/doc/api/dart-core/Uri/pathSegments.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - pathSegments property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
pathSegments
- -
- -
- - - -
-

pathSegments property

- - -
- -
- List<String> - pathSegments - -
- -
-

Returns the URI path split into its segments. Each of the segments in the -returned list have been decoded. If the path is empty the empty list will -be returned. A leading slash / does not affect the segments returned.

-

The returned list is unmodifiable and will throw UnsupportedError on any -calls that would mutate it.

-
-
-

Implementation

-
List<String> get pathSegments;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/port.html b/doc/api/dart-core/Uri/port.html deleted file mode 100644 index 0b872436..00000000 --- a/doc/api/dart-core/Uri/port.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - port property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
port
- -
- -
- - - -
-

port property

- - -
- -
- int - port - -
- -
-

Returns the port part of the authority component.

-

Returns the default port if there is no port number in the authority -component. That's 80 for http, 443 for https, and 0 for everything else.

-
-
-

Implementation

-
int get port;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/query.html b/doc/api/dart-core/Uri/query.html deleted file mode 100644 index b108de6a..00000000 --- a/doc/api/dart-core/Uri/query.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - query property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
query
- -
- -
- - - -
-

query property

- - -
- -
- String - query - -
- -
-

Returns the query component. The returned query is encoded. To get -direct access to the decoded query use queryParameters.

-

Returns the empty string if there is no query component.

-
-
-

Implementation

-
String get query;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/queryParameters.html b/doc/api/dart-core/Uri/queryParameters.html deleted file mode 100644 index ae29d8b4..00000000 --- a/doc/api/dart-core/Uri/queryParameters.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - queryParameters property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
queryParameters
- -
- -
- - - -
-

queryParameters property

- - -
- -
- Map<String, String> - queryParameters - -
- -
-

Returns the URI query split into a map according to the rules -specified for FORM post in the HTML 4.01 specification section -17.13.4. -Each key and value in the returned map has been decoded. -If there is no query the empty map is returned.

-

Keys in the query string that have no value are mapped to the -empty string. -If a key occurs more than once in the query string, it is mapped to -an arbitrary choice of possible value. -The queryParametersAll getter can provide a map -that maps keys to all of their values.

-

The returned map is unmodifiable.

-
-
-

Implementation

-
Map<String, String> get queryParameters;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/queryParametersAll.html b/doc/api/dart-core/Uri/queryParametersAll.html deleted file mode 100644 index d38030b7..00000000 --- a/doc/api/dart-core/Uri/queryParametersAll.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - queryParametersAll property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
queryParametersAll
- -
- -
- - - -
-

queryParametersAll property

- - -
- -
- Map<String, List<String>> - queryParametersAll - -
- -
-

Returns the URI query split into a map according to the rules -specified for FORM post in the HTML 4.01 specification section -17.13.4. -Each key and value in the returned map has been decoded. If there is no -query the empty map is returned.

-

Keys are mapped to lists of their values. If a key occurs only once, -its value is a singleton list. If a key occurs with no value, the -empty string is used as the value for that occurrence.

-

The returned map and the lists it contains are unmodifiable.

-
-
-

Implementation

-
Map<String, List<String>> get queryParametersAll;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/removeFragment.html b/doc/api/dart-core/Uri/removeFragment.html deleted file mode 100644 index c4e6864b..00000000 --- a/doc/api/dart-core/Uri/removeFragment.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - removeFragment method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
removeFragment
- -
- -
- - - -
-

removeFragment method

- -
- Uri - removeFragment -() - -
-
-

Returns a Uri that differs from this only in not having a fragment.

-

If this Uri does not have a fragment, it is itself returned.

-
- -
-

Implementation

-
Uri removeFragment();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/replace.html b/doc/api/dart-core/Uri/replace.html deleted file mode 100644 index f2c9aedc..00000000 --- a/doc/api/dart-core/Uri/replace.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - replace method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
replace
- -
- -
- - - -
-

replace method

- -
- Uri - replace -({String scheme String userInfo String host int port, String path Iterable<String> pathSegments, String query Map<String, dynamic> queryParameters, String fragment }) - -
-
-

Returns a new Uri based on this one, but with some parts replaced.

-

This method takes the same parameters as the new Uri constructor, -and they have the same meaning.

-

At most one of path and pathSegments must be provided. -Likewise, at most one of query and queryParameters must be provided.

-

Each part that is not provided will default to the corresponding -value from this Uri instead.

-

This method is different from Uri.resolve which overrides in a -hierarchical manner, -and can instead replace each part of a Uri individually.

-

Example:

-
Uri uri1 = Uri.parse("a://b@c:4/d/e?f#g");
-Uri uri2 = uri1.replace(scheme: "A", path: "D/E/E", fragment: "G");
-print(uri2);  // prints "a://b@c:4/D/E/E?f#G"
-
-

This method acts similarly to using the new Uri constructor with -some of the arguments taken from this Uri. Example:

-
Uri uri3 = new Uri(
-    scheme: "A",
-    userInfo: uri1.userInfo,
-    host: uri1.host,
-    port: uri1.port,
-    path: "D/E/E",
-    query: uri1.query,
-    fragment: "G");
-print(uri3);  // prints "a://b@c:4/D/E/E?f#G"
-print(uri2 == uri3);  // prints true.
-
-

Using this method can be seen as a shorthand for the Uri constructor -call above, but may also be slightly faster because the parts taken -from this Uri need not be checked for validity again.

-
- -
-

Implementation

-
Uri replace(
-    {String? scheme,
-    String? userInfo,
-    String? host,
-    int? port,
-    String? path,
-    Iterable<String>? pathSegments,
-    String? query,
-    Map<String, dynamic /*String|Iterable<String>*/ >? queryParameters,
-    String? fragment});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/resolve.html b/doc/api/dart-core/Uri/resolve.html deleted file mode 100644 index 4a8b2abf..00000000 --- a/doc/api/dart-core/Uri/resolve.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - resolve method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
resolve
- -
- -
- - - -
-

resolve method

- -
- Uri - resolve -(String reference) - -
-
-

Resolve reference as an URI relative to this.

-

First turn reference into a URI using Uri.parse. Then resolve the -resulting URI relative to this.

-

Returns the resolved URI.

-

See resolveUri for details.

-
- -
-

Implementation

-
Uri resolve(String reference);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/resolveUri.html b/doc/api/dart-core/Uri/resolveUri.html deleted file mode 100644 index 5f61d912..00000000 --- a/doc/api/dart-core/Uri/resolveUri.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - resolveUri method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
resolveUri
- -
- -
- - - -
-

resolveUri method

- -
- Uri - resolveUri -(Uri reference) - -
-
-

Resolve reference as an URI relative to this.

-

Returns the resolved URI.

-

The algorithm "Transform Reference" for resolving a reference is described -in RFC-3986 Section 5.

-

Updated to handle the case where the base URI is just a relative path - -that is: when it has no scheme and no authority and the path does not start -with a slash. -In that case, the paths are combined without removing leading "..", and -an empty path is not converted to "/".

-
- -
-

Implementation

-
Uri resolveUri(Uri reference);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/scheme.html b/doc/api/dart-core/Uri/scheme.html deleted file mode 100644 index d236139a..00000000 --- a/doc/api/dart-core/Uri/scheme.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - scheme property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
scheme
- -
- -
- - - -
-

scheme property

- - -
- -
- String - scheme - -
- -
-

The scheme component of the URI.

-

Returns the empty string if there is no scheme component.

-

A URI scheme is case insensitive. -The returned scheme is canonicalized to lowercase letters.

-
-
-

Implementation

-
String get scheme;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/splitQueryString.html b/doc/api/dart-core/Uri/splitQueryString.html deleted file mode 100644 index 6f552502..00000000 --- a/doc/api/dart-core/Uri/splitQueryString.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - splitQueryString method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
splitQueryString
- -
- -
- - - -
-

splitQueryString method

- -
- Map<String, String> - splitQueryString -(String query, { Encoding encoding: utf8 }) - -
-
-

Returns the query split into a map according to the rules -specified for FORM post in the HTML 4.01 specification section -17.13.4. -Each key and value in the returned map has been decoded. If the query -is the empty string an empty map is returned.

-

Keys in the query string that have no value are mapped to the -empty string.

-

Each query component will be decoded using encoding. The default encoding -is UTF-8.

-
- -
-

Implementation

-
static Map<String, String> splitQueryString(String query,
-    {Encoding encoding = utf8}) {
-  return query.split("&").fold({}, (map, element) {
-    int index = element.indexOf("=");
-    if (index == -1) {
-      if (element != "") {
-        map[decodeQueryComponent(element, encoding: encoding)] = "";
-      }
-    } else if (index != 0) {
-      var key = element.substring(0, index);
-      var value = element.substring(index + 1);
-      map[decodeQueryComponent(key, encoding: encoding)] =
-          decodeQueryComponent(value, encoding: encoding);
-    }
-    return map;
-  });
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/toFilePath.html b/doc/api/dart-core/Uri/toFilePath.html deleted file mode 100644 index fdaf817b..00000000 --- a/doc/api/dart-core/Uri/toFilePath.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - toFilePath method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toFilePath
- -
- -
- - - -
-

toFilePath method

- -
- String - toFilePath -({bool windows }) - -
-
-

Returns the file path from a file URI.

-

The returned path has either Windows or non-Windows -semantics.

-

For non-Windows semantics the slash ("/") is used to separate -path segments.

-

For Windows semantics the backslash ("\") separator is used to -separate path segments.

-

If the URI is absolute the path starts with a path separator -unless Windows semantics is used and the first path segment is a -drive letter. When Windows semantics is used a host component in -the uri in interpreted as a file server and a UNC path is -returned.

-

The default for whether to use Windows or non-Windows semantics -determined from the platform Dart is running on. When running in -the standalone VM this is detected by the VM based on the -operating system. When running in a browser non-Windows semantics -is always used.

-

To override the automatic detection of which semantics to use pass -a value for windows. Passing true will use Windows -semantics and passing false will use non-Windows semantics.

-

If the URI ends with a slash (i.e. the last path component is -empty) the returned file path will also end with a slash.

-

With Windows semantics URIs starting with a drive letter cannot -be relative to the current drive on the designated drive. That is -for the URI file:///c:abc calling toFilePath will throw as a -path segment cannot contain colon on Windows.

-

Examples using non-Windows semantics (resulting of calling -toFilePath in comment):

-
Uri.parse("xxx/yyy");  // xxx/yyy
-Uri.parse("xxx/yyy/");  // xxx/yyy/
-Uri.parse("file:///xxx/yyy");  // /xxx/yyy
-Uri.parse("file:///xxx/yyy/");  // /xxx/yyy/
-Uri.parse("file:///C:");  // /C:
-Uri.parse("file:///C:a");  // /C:a
-
-

Examples using Windows semantics (resulting URI in comment):

-
Uri.parse("xxx/yyy");  // xxx\yyy
-Uri.parse("xxx/yyy/");  // xxx\yyy\
-Uri.parse("file:///xxx/yyy");  // \xxx\yyy
-Uri.parse("file:///xxx/yyy/");  // \xxx\yyy\
-Uri.parse("file:///C:/xxx/yyy");  // C:\xxx\yyy
-Uri.parse("file:C:xxx/yyy");  // Throws as a path segment
-                              // cannot contain colon on Windows.
-Uri.parse("file://server/share/file");  // \\server\share\file
-
-

If the URI is not a file URI calling this throws -UnsupportedError.

-

If the URI cannot be converted to a file path calling this throws -UnsupportedError.

-
- -
-

Implementation

-
// TODO(lrn): Deprecate and move functionality to File class or similar.
-// The core libraries should not worry about the platform.
-String toFilePath({bool? windows});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/toString.html b/doc/api/dart-core/Uri/toString.html deleted file mode 100644 index a26019b7..00000000 --- a/doc/api/dart-core/Uri/toString.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - toString method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns the normalized string representation of the URI.

-
- -
-

Implementation

-
String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/tryParse.html b/doc/api/dart-core/Uri/tryParse.html deleted file mode 100644 index 98be8daa..00000000 --- a/doc/api/dart-core/Uri/tryParse.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - tryParse method - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
tryParse
- -
- -
- - - -
-

tryParse method

- -
- Uri - tryParse -(String uri, [ int start = 0 int end ]) - -
-
-

Creates a new Uri object by parsing a URI string.

-

If start and end are provided, they must specify a valid substring -of uri, and only the substring from start to end is parsed as a URI. -The uri must not be null.

-

Returns null if the uri string is not valid as a URI or URI reference.

-
- -
-

Implementation

-
static Uri? tryParse(String uri, [int start = 0, int? end]) {
-  // TODO: Optimize to avoid throwing-and-recatching.
-  try {
-    return parse(uri, start, end);
-  } on FormatException {
-    return null;
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/Uri/userInfo.html b/doc/api/dart-core/Uri/userInfo.html deleted file mode 100644 index 21e47802..00000000 --- a/doc/api/dart-core/Uri/userInfo.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - userInfo property - Uri class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
userInfo
- -
- -
- - - -
-

userInfo property

- - -
- -
- String - userInfo - -
- -
-

Returns the user info part of the authority component.

-

Returns the empty string if there is no user info in the -authority component.

-
-
-

Implementation

-
String get userInfo;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData-class.html b/doc/api/dart-core/UriData-class.html deleted file mode 100644 index 8b476fd2..00000000 --- a/doc/api/dart-core/UriData-class.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
UriData
- -
- -
- - - -
-

UriData class

- -
-

A way to access the structure of a data: URI.

-

Data URIs are non-hierarchical URIs that can contain any binary data. -They are defined by RFC 2397.

-

This class allows parsing the URI text and extracting individual parts of the -URI, as well as building the URI text from structured parts.

-
- - -
-

Constructors

- -
-
- UriData.fromBytes(List<int> bytes, { String mimeType: "application/octet-stream", Map<String, String> parameters, bool percentEncoded: false }) -
-
- Creates a data: URI containing an encoding of bytes. [...] -
factory
-
-
- UriData.fromString(String content, { String mimeType, Encoding encoding, Map<String, String> parameters, bool base64: false }) -
-
- Creates a data: URI containing the content string. [...] -
factory
-
-
- UriData.fromUri(Uri uri) -
-
- Creates a DataUri from a Uri which must have data as Uri.scheme. [...] -
factory
-
-
-
- -
-

Properties

- -
-
- charset - String -
-
- The charset parameter of the media type. [...] -
read-only
-
-
- contentText - String -
-
- The content part of the data URI, as its actual representation. [...] -
read-only
-
-
- isBase64 - bool -
-
- Whether the data is Base64 encoded or not. -
read-only
-
-
- mimeType - String -
-
- The MIME type of the data URI. [...] -
read-only
-
-
- parameters - Map<String, String> -
-
- A map representing the parameters of the media type. [...] -
read-only
-
-
- uri - Uri -
-
- The Uri that this UriData is giving access to. [...] -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- contentAsBytes() - Uint8List - -
-
- The content part of the data URI as bytes. [...] - -
-
- contentAsString({Encoding encoding }) - String - -
-
- Returns a string created from the content of the data URI. [...] - -
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- parse(String uri) - UriData - -
-
- Parses a string as a data URI. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/UriData.fromBytes.html b/doc/api/dart-core/UriData/UriData.fromBytes.html deleted file mode 100644 index 0f574cbe..00000000 --- a/doc/api/dart-core/UriData/UriData.fromBytes.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - UriData.fromBytes constructor - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
UriData.fromBytes
- -
- -
- - - -
-

UriData.fromBytes constructor

- -
- - UriData.fromBytes(List<int> bytes, { String mimeType: "application/octet-stream", Map<String, String> parameters, bool percentEncoded: false }) -
- -
-

Creates a data: URI containing an encoding of bytes.

-

Equivalent to new Uri.dataFromBytes(...).data, but may -be more efficient if the uri itself isn't used.

-
- -
-

Implementation

-
factory UriData.fromBytes(List<int> bytes,
-    {String mimeType = "application/octet-stream",
-    Map<String, String>? parameters,
-    bool percentEncoded = false}) {
-  StringBuffer buffer = StringBuffer();
-  List<int> indices = [_noScheme];
-  _writeUri(mimeType, null, parameters, buffer, indices);
-  indices.add(buffer.length);
-  if (percentEncoded) {
-    buffer.write(',');
-    _uriEncodeBytes(_uricTable, bytes, buffer);
-  } else {
-    buffer.write(';base64,');
-    indices.add(buffer.length - 1);
-    _base64.encoder
-        .startChunkedConversion(StringConversionSink.fromStringSink(buffer))
-        .addSlice(bytes, 0, bytes.length, true);
-  }
-
-  return UriData._(buffer.toString(), indices, null);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/UriData.fromString.html b/doc/api/dart-core/UriData/UriData.fromString.html deleted file mode 100644 index 3dd58bd0..00000000 --- a/doc/api/dart-core/UriData/UriData.fromString.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - UriData.fromString constructor - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
UriData.fromString
- -
- -
- - - -
-

UriData.fromString constructor

- -
- - UriData.fromString(String content, { String mimeType, Encoding encoding, Map<String, String> parameters, bool base64: false }) -
- -
-

Creates a data: URI containing the content string.

-

Equivalent to new Uri.dataFromString(...).data, but may -be more efficient if the uri itself isn't used.

-
- -
-

Implementation

-
factory UriData.fromString(String content,
-    {String? mimeType,
-    Encoding? encoding,
-    Map<String, String>? parameters,
-    bool base64 = false}) {
-  StringBuffer buffer = StringBuffer();
-  List<int> indices = [_noScheme];
-  String? charsetName = parameters?["charset"];
-  String? encodingName;
-  if (encoding == null) {
-    if (charsetName != null) {
-      encoding = Encoding.getByName(charsetName);
-    }
-  } else if (charsetName == null) {
-    // Non-null only if parameters does not contain "charset".
-    encodingName = encoding.name;
-  }
-  encoding ??= ascii;
-  _writeUri(mimeType, encodingName, parameters, buffer, indices);
-  indices.add(buffer.length);
-  if (base64) {
-    buffer.write(';base64,');
-    indices.add(buffer.length - 1);
-    buffer.write(encoding.fuse(_base64).encode(content));
-  } else {
-    buffer.write(',');
-    _uriEncodeBytes(_uricTable, encoding.encode(content), buffer);
-  }
-  return UriData._(buffer.toString(), indices, null);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/UriData.fromUri.html b/doc/api/dart-core/UriData/UriData.fromUri.html deleted file mode 100644 index 0dc30bf5..00000000 --- a/doc/api/dart-core/UriData/UriData.fromUri.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - UriData.fromUri constructor - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
UriData.fromUri
- -
- -
- - - -
-

UriData.fromUri constructor

- -
- - UriData.fromUri(Uri uri) -
- -
-

Creates a DataUri from a Uri which must have data as Uri.scheme.

-

The uri must have scheme data and no authority or fragment, -and the path (concatenated with the query, if there is one) must be valid -as data URI content with the same rules as parse.

-
- -
-

Implementation

-
factory UriData.fromUri(Uri uri) {
-  if (uri.scheme != "data") {
-    throw ArgumentError.value(uri, "uri", "Scheme must be 'data'");
-  }
-  if (uri.hasAuthority) {
-    throw ArgumentError.value(uri, "uri", "Data uri must not have authority");
-  }
-  if (uri.hasFragment) {
-    throw ArgumentError.value(
-        uri, "uri", "Data uri must not have a fragment part");
-  }
-  if (!uri.hasQuery) {
-    return _parse(uri.path, 0, uri);
-  }
-  // Includes path and query (and leading "data:").
-  return _parse(uri.toString(), 5, uri);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/charset.html b/doc/api/dart-core/UriData/charset.html deleted file mode 100644 index d108296b..00000000 --- a/doc/api/dart-core/UriData/charset.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - charset property - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
charset
- -
- -
- - - -
-

charset property

- - -
- -
- String - charset - -
- -
-

The charset parameter of the media type.

-

If the parameters of the media type contains a charset parameter -then this returns its value, otherwise it returns US-ASCII, -which is the default charset for data URIs. -If the value contain non-ASCII percent escapes, they are decoded as UTF-8.

-

If the MIME type representation in the URI text contains URI escapes, -they are unescaped in the returned string.

-
-
-

Implementation

-
String get charset {
-  int parameterStart = 1;
-  int parameterEnd = _separatorIndices.length - 1; // The ',' before data.
-  if (isBase64) {
-    // There is a ";base64" separator, so subtract one for that as well.
-    parameterEnd -= 1;
-  }
-  for (int i = parameterStart; i < parameterEnd; i += 2) {
-    var keyStart = _separatorIndices[i] + 1;
-    var keyEnd = _separatorIndices[i + 1];
-    if (keyEnd == keyStart + 7 && _text.startsWith("charset", keyStart)) {
-      return _Uri._uriDecode(
-          _text, keyEnd + 1, _separatorIndices[i + 2], utf8, false);
-    }
-  }
-  return "US-ASCII";
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/contentAsBytes.html b/doc/api/dart-core/UriData/contentAsBytes.html deleted file mode 100644 index 6706afb9..00000000 --- a/doc/api/dart-core/UriData/contentAsBytes.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - contentAsBytes method - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
contentAsBytes
- -
- -
- - - -
-

contentAsBytes method

- -
- Uint8List - contentAsBytes -() - -
-
-

The content part of the data URI as bytes.

-

If the data is Base64 encoded, it will be decoded to bytes.

-

If the data is not Base64 encoded, it will be decoded by unescaping -percent-escaped characters and returning byte values of each unescaped -character. The bytes will not be, e.g., UTF-8 decoded.

-
- -
-

Implementation

-
Uint8List contentAsBytes() {
-  String text = _text;
-  int start = _separatorIndices.last + 1;
-  if (isBase64) {
-    return base64.decoder.convert(text, start);
-  }
-
-  // Not base64, do percent-decoding and return the remaining bytes.
-  // Compute result size.
-  const int percent = 0x25;
-  int length = text.length - start;
-  for (int i = start; i < text.length; i++) {
-    var codeUnit = text.codeUnitAt(i);
-    if (codeUnit == percent) {
-      i += 2;
-      length -= 2;
-    }
-  }
-  // Fill result array.
-  Uint8List result = Uint8List(length);
-  if (length == text.length) {
-    result.setRange(0, length, text.codeUnits, start);
-    return result;
-  }
-  int index = 0;
-  for (int i = start; i < text.length; i++) {
-    var codeUnit = text.codeUnitAt(i);
-    if (codeUnit != percent) {
-      result[index++] = codeUnit;
-    } else {
-      if (i + 2 < text.length) {
-        int byte = parseHexByte(text, i + 1);
-        if (byte >= 0) {
-          result[index++] = byte;
-          i += 2;
-          continue;
-        }
-      }
-      throw FormatException("Invalid percent escape", text, i);
-    }
-  }
-  assert(index == result.length);
-  return result;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/contentAsString.html b/doc/api/dart-core/UriData/contentAsString.html deleted file mode 100644 index bc2a214e..00000000 --- a/doc/api/dart-core/UriData/contentAsString.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - contentAsString method - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
contentAsString
- -
- -
- - - -
-

contentAsString method

- -
- String - contentAsString -({Encoding encoding }) - -
-
-

Returns a string created from the content of the data URI.

-

If the content is Base64 encoded, it will be decoded to bytes and then -decoded to a string using encoding. -If encoding is omitted, the value of a charset parameter is used -if it is recognized by Encoding.getByName, otherwise it defaults to -the ascii encoding, which is the default encoding for data URIs -that do not specify an encoding.

-

If the content is not Base64 encoded, it will first have percent-escapes -converted to bytes and then the character codes and byte values are -decoded using encoding.

-
- -
-

Implementation

-
String contentAsString({Encoding? encoding}) {
-  if (encoding == null) {
-    var charset = this.charset; // Returns "US-ASCII" if not present.
-    encoding = Encoding.getByName(charset);
-    if (encoding == null) {
-      throw UnsupportedError("Unknown charset: $charset");
-    }
-  }
-  String text = _text;
-  int start = _separatorIndices.last + 1;
-  if (isBase64) {
-    var converter = base64.decoder.fuse(encoding.decoder);
-    return converter.convert(text.substring(start));
-  }
-  return _Uri._uriDecode(text, start, text.length, encoding, false);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/contentText.html b/doc/api/dart-core/UriData/contentText.html deleted file mode 100644 index a5147ba5..00000000 --- a/doc/api/dart-core/UriData/contentText.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - contentText property - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
contentText
- -
- -
- - - -
-

contentText property

- - -
- -
- String - contentText - -
- -
-

The content part of the data URI, as its actual representation.

-

This string may contain percent escapes.

-
-
-

Implementation

-
String get contentText => _text.substring(_separatorIndices.last + 1);
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/isBase64.html b/doc/api/dart-core/UriData/isBase64.html deleted file mode 100644 index 88c38e85..00000000 --- a/doc/api/dart-core/UriData/isBase64.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - isBase64 property - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isBase64
- -
- -
- - - -
-

isBase64 property

- - -
- -
- bool - isBase64 - -
- -
-

Whether the data is Base64 encoded or not.

-
-
-

Implementation

-
bool get isBase64 => _separatorIndices.length.isOdd;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/mimeType.html b/doc/api/dart-core/UriData/mimeType.html deleted file mode 100644 index 2e8c0b0f..00000000 --- a/doc/api/dart-core/UriData/mimeType.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - mimeType property - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
mimeType
- -
- -
- - - -
-

mimeType property

- - -
- -
- String - mimeType - -
- -
-

The MIME type of the data URI.

-

A data URI consists of a "media type" followed by data. -The media type starts with a MIME type and can be followed by -extra parameters. -If the MIME type representation in the URI text contains URI escapes, -they are unescaped in the returned string. -If the value contain non-ASCII percent escapes, they are decoded as UTF-8.

-

Example:

-
data:text/plain;charset=utf-8,Hello%20World!
-
-

This data URI has the media type text/plain;charset=utf-8, which is the -MIME type text/plain with the parameter charset with value utf-8. -See RFC 2045 for more detail.

-

If the first part of the data URI is empty, it defaults to text/plain.

-
-
-

Implementation

-
String get mimeType {
-  int start = _separatorIndices[0] + 1;
-  int end = _separatorIndices[1];
-  if (start == end) return "text/plain";
-  return _Uri._uriDecode(_text, start, end, utf8, false);
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/parameters.html b/doc/api/dart-core/UriData/parameters.html deleted file mode 100644 index 956bc156..00000000 --- a/doc/api/dart-core/UriData/parameters.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - parameters property - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parameters
- -
- -
- - - -
-

parameters property

- - -
- -
- Map<String, String> - parameters - -
- -
-

A map representing the parameters of the media type.

-

A data URI may contain parameters between the MIME type and the -data. This converts these parameters to a map from parameter name -to parameter value. -The map only contains parameters that actually occur in the URI. -The charset parameter has a default value even if it doesn't occur -in the URI, which is reflected by the charset getter. This means that -charset may return a value even if parameters["charset"] is null.

-

If the values contain non-ASCII values or percent escapes, -they are decoded as UTF-8.

-
-
-

Implementation

-
Map<String, String> get parameters {
-  var result = <String, String>{};
-  for (int i = 3; i < _separatorIndices.length; i += 2) {
-    var start = _separatorIndices[i - 2] + 1;
-    var equals = _separatorIndices[i - 1];
-    var end = _separatorIndices[i];
-    String key = _Uri._uriDecode(_text, start, equals, utf8, false);
-    String value = _Uri._uriDecode(_text, equals + 1, end, utf8, false);
-    result[key] = value;
-  }
-  return result;
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/parse.html b/doc/api/dart-core/UriData/parse.html deleted file mode 100644 index 1c9f1caa..00000000 --- a/doc/api/dart-core/UriData/parse.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - parse method - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parse
- -
- -
- - - -
-

parse method

- -
- UriData - parse -(String uri) - -
-
-

Parses a string as a data URI.

-

The string must have the format:

-
'data:' (type '/' subtype)? (';' attribute '=' value)* (';base64')? ',' data
-
-

where type, subtype, attribute and value are specified in RFC-2045, -and data is a sequence of URI-characters (RFC-2396 uric).

-

This means that all the characters must be ASCII, but the URI may contain -percent-escapes for non-ASCII byte values that need an interpretation -to be converted to the corresponding string.

-

Parsing checks that Base64 encoded data is valid, and it normalizes it -to use the default Base64 alphabet and to use padding. -Non-Base64 data is escaped using percent-escapes as necessary to make -it valid, and existing escapes are case normalized.

-

Accessing the individual parts may fail later if they turn out to have -content that can't be decoded successfully as a string, for example if -existing percent escapes represent bytes that cannot be decoded -by the chosen Encoding (see contentAsString).

-

A FormatException is thrown if uri is not a valid data URI.

-
- -
-

Implementation

-
static UriData parse(String uri) {
-  if (uri.length >= 5) {
-    int dataDelta = _startsWithData(uri, 0);
-    if (dataDelta == 0) {
-      // Exact match on "data:".
-      return _parse(uri, 5, null);
-    }
-    if (dataDelta == 0x20) {
-      // Starts with a non-normalized "data" scheme containing upper-case
-      // letters. Parse anyway, but throw away the scheme.
-      return _parse(uri.substring(5), 0, null);
-    }
-  }
-  throw FormatException("Does not start with 'data:'", uri, 0);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/toString.html b/doc/api/dart-core/UriData/toString.html deleted file mode 100644 index 5ae77b59..00000000 --- a/doc/api/dart-core/UriData/toString.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - toString method - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() =>
-    (_separatorIndices[0] == _noScheme) ? "data:$_text" : _text;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/UriData/uri.html b/doc/api/dart-core/UriData/uri.html deleted file mode 100644 index ff4e593e..00000000 --- a/doc/api/dart-core/UriData/uri.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - uri property - UriData class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
uri
- -
- -
- - - -
-

uri property

- - -
- -
- Uri - uri - -
- -
-

The Uri that this UriData is giving access to.

-

Returns a Uri with scheme data and the remainder of the data URI -as path.

-
-
-

Implementation

-
Uri get uri {
-  return _uriCache ??= _computeUri();
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/bool-class.html b/doc/api/dart-core/bool-class.html deleted file mode 100644 index eca238e6..00000000 --- a/doc/api/dart-core/bool-class.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - bool class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
bool
- -
- -
- - - -
-

bool class

- -
-

The reserved words true and false denote objects that are the only two -instances of this class.

-

It is a compile-time error for a class to attempt to extend or implement -bool.

-
- - -
-

Constructors

- -
-
- bool.fromEnvironment(String name, { bool defaultValue: false }) -
-
- Returns the boolean value of the environment declaration name. [...] -
const
-
factory
-
-
- bool.hasEnvironment(String name) -
-
- Whether there is an environment declaration name. [...] -
const
-
factory
-
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, override
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns either "true" for true and "false" for false. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator &(bool other) - bool - -
-
- The logical conjunction ("and") of this and other. [...] -
@Since("2.1")
-
-
- operator ^(bool other) - bool - -
-
- The logical exclusive disjunction ("exclusive or") of this and other. [...] -
@Since("2.1")
-
-
- operator |(bool other) - bool - -
-
- The logical disjunction ("inclusive or") of this and other. [...] -
@Since("2.1")
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/bool/bool.fromEnvironment.html b/doc/api/dart-core/bool/bool.fromEnvironment.html deleted file mode 100644 index e7f0f9d1..00000000 --- a/doc/api/dart-core/bool/bool.fromEnvironment.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - bool.fromEnvironment constructor - bool class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
bool.fromEnvironment
- -
- -
- - - -
-

bool.fromEnvironment constructor

- -
- const - bool.fromEnvironment(String name, { bool defaultValue: false }) -
- -
-

Returns the boolean value of the environment declaration name.

-

The boolean value of the declaration is true if the declared value is -the string "true", and false if the value is "false".

-

In all other cases, including when there is no declaration for name, -the result is the defaultValue.

-

The result is the same as would be returned by:

-
(const String.fromEnvironment(name) == "true")
-    ? true
-    : (const String.fromEnvironment(name) == "false")
-        ? false
-        : defaultValue
-
-

Example:

-
const loggingFlag = const bool.fromEnvironment("logging");
-
-

If you want to use a different truth-string than "true", you can use the -String.fromEnvironment constructor directly:

-
const isLoggingOn = (const String.fromEnvironment("logging") == "on");
-
-
- -
-

Implementation

-
// The .fromEnvironment() constructors are special in that we do not want
-// users to call them using "new". We prohibit that by giving them bodies
-// that throw, even though const constructors are not allowed to have bodies.
-// Disable those static errors.
-//ignore: const_constructor_with_body
-//ignore: const_factory
-external const factory bool.fromEnvironment(String name,
-    {bool defaultValue = false});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/bool/bool.hasEnvironment.html b/doc/api/dart-core/bool/bool.hasEnvironment.html deleted file mode 100644 index 71a81484..00000000 --- a/doc/api/dart-core/bool/bool.hasEnvironment.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - bool.hasEnvironment constructor - bool class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
bool.hasEnvironment
- -
- -
- - - -
-

bool.hasEnvironment constructor

- -
- const - bool.hasEnvironment(String name) -
- -
-

Whether there is an environment declaration name.

-

Returns true iff there is an environment declaration with the name name -If there is then the value of that declaration can be accessed using -const String.fromEnvironment(name). Otherwise, -String.fromEnvironment(name, defaultValue: someString) -will evaluate to the given defaultValue.

-

This constructor can be used to handle an absent declaration -specifically, in ways that cannot be represented by providing -a default value to the C.fromEnvironment constructor where C -is String, int, or bool.

-

Example:

-
const loggingIsDeclared = const bool.hasEnvironment("logging");
-
-const String? logger = loggingIsDeclared
-    ? String.fromEnvironment("logging")
-    : null;
-
-
- -
-

Implementation

-
// The .hasEnvironment() constructor is special in that we do not want
-// users to call them using "new". We prohibit that by giving them bodies
-// that throw, even though const constructors are not allowed to have bodies.
-// Disable those static errors.
-//ignore: const_constructor_with_body
-//ignore: const_factory
-external const factory bool.hasEnvironment(String name);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/bool/hashCode.html b/doc/api/dart-core/bool/hashCode.html deleted file mode 100644 index edd1319d..00000000 --- a/doc/api/dart-core/bool/hashCode.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - hashCode property - bool class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

The hash code for this object.

-

A hash code is a single integer which represents the state of the object -that affects operator == comparisons.

-

All objects have hash codes. -The default hash code represents only the identity of the object, -the same way as the default operator == implementation only considers objects -equal if they are identical (see identityHashCode).

-

If operator == is overridden to use the object state instead, -the hash code must also be changed to represent that state.

-

Hash codes must be the same for objects that are equal to each other -according to operator ==. -The hash code of an object should only change if the object changes -in a way that affects equality. -There are no further requirements for the hash codes. -They need not be consistent between executions of the same program -and there are no distribution guarantees.

-

Objects that are not equal are allowed to have the same hash code, -it is even technically allowed that all instances have the same hash code, -but if clashes happen too often, it may reduce the efficiency of hash-based -data structures like HashSet or HashMap.

-

If a subclass overrides hashCode, it should override the -operator == operator as well to maintain consistency.

-
-
-

Implementation

-
external int get hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/bool/operator_bitwise_and.html b/doc/api/dart-core/bool/operator_bitwise_and.html deleted file mode 100644 index a06dcd86..00000000 --- a/doc/api/dart-core/bool/operator_bitwise_and.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - operator & method - bool class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator &
- -
- -
- - - -
-

operator & method

- -
-
-
    -
  1. @Since("2.1")
  2. -
-
- bool - operator & -(bool other) -
@Since("2.1")
-
-
-

The logical conjunction ("and") of this and other.

-

Returns true if both this and other are true, and false otherwise.

-
- -
-

Implementation

-
@Since("2.1")
-bool operator &(bool other) => other && this;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/bool/operator_bitwise_exclusive_or.html b/doc/api/dart-core/bool/operator_bitwise_exclusive_or.html deleted file mode 100644 index 65fa6cc5..00000000 --- a/doc/api/dart-core/bool/operator_bitwise_exclusive_or.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - operator ^ method - bool class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ^
- -
- -
- - - -
-

operator ^ method

- -
-
-
    -
  1. @Since("2.1")
  2. -
-
- bool - operator ^ -(bool other) -
@Since("2.1")
-
-
-

The logical exclusive disjunction ("exclusive or") of this and other.

-

Returns whether this and other are neither both true nor both false.

-
- -
-

Implementation

-
@Since("2.1")
-bool operator ^(bool other) => !other == this;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/bool/operator_bitwise_or.html b/doc/api/dart-core/bool/operator_bitwise_or.html deleted file mode 100644 index 9f40273b..00000000 --- a/doc/api/dart-core/bool/operator_bitwise_or.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - operator | method - bool class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator |
- -
- -
- - - -
-

operator | method

- -
-
-
    -
  1. @Since("2.1")
  2. -
-
- bool - operator | -(bool other) -
@Since("2.1")
-
-
-

The logical disjunction ("inclusive or") of this and other.

-

Returns true if either this or other is true, and false otherwise.

-
- -
-

Implementation

-
@Since("2.1")
-bool operator |(bool other) => other || this;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/bool/toString.html b/doc/api/dart-core/bool/toString.html deleted file mode 100644 index e622406a..00000000 --- a/doc/api/dart-core/bool/toString.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - toString method - bool class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns either "true" for true and "false" for false.

-
- -
-

Implementation

-
String toString() {
-  return this ? "true" : "false";
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/dart-core-library.html b/doc/api/dart-core/dart-core-library.html deleted file mode 100644 index e8cb869b..00000000 --- a/doc/api/dart-core/dart-core-library.html +++ /dev/null @@ -1,811 +0,0 @@ - - - - - - - - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
dart:core
- -
- -
- - - -
-

dart:core library

- -
-

Built-in types, collections, -and other core functionality for every Dart program.

-

This library is automatically imported.

-

Some classes in this library, -such as String and num, -support Dart's built-in data types. -Other classes, such as List and Map, provide data structures -for managing collections of objects. -And still other classes represent commonly used types of data -such as URIs, dates and times, and errors.

-

Numbers and booleans

-

int and double provide support for Dart's built-in numerical data types: -integers and double-precision floating point numbers, respectively. -An object of type bool is either true or false. -Variables of these types can be constructed from literals:

-
int meaningOfLife = 42;
-double valueOfPi  = 3.141592;
-bool visible      = true;
-
-

Strings and regular expressions

-

A String is immutable and represents a sequence of characters.

-
String shakespeareQuote = "All the world's a stage, ...";
-
-

StringBuffer provides a way to construct strings efficiently.

-
StringBuffer moreShakespeare = new StringBuffer();
-moreShakespeare.write('And all the men and women ');
-moreShakespeare.write('merely players; ...');
-
-

The String and StringBuffer classes implement string concatenation, -interpolation, and other string manipulation features.

-
String philosophy = 'Live on ';
-String get palindrome => philosophy + philosophy.split('').reversed.join();
-
-

RegExp implements Dart regular expressions, -which provide a grammar for matching patterns within text. -For example, here's a regular expression that matches -a string of one or more digits:

-
var numbers = new RegExp(r'\d+');
-
-

Dart regular expressions have the same syntax and semantics as -JavaScript regular expressions. See -ecma-international.org/ecma-262/5.1/#sec-15.10 -for the specification of JavaScript regular expressions.

-

Collections

-

The dart:core library provides basic collections, -such as List, Map, and Set.

-

A List is an ordered collection of objects, with a length. -Lists are sometimes called arrays. -Use a List when you need to access objects by index.

-
List superheroes = [ 'Batman', 'Superman', 'Harry Potter' ];
-
-

A Set is an unordered collection of unique objects. -You cannot get an item by index (position). -Adding a duplicate item has no effect.

-
Set villains = new Set();
-villains.add('Joker');
-villains.addAll( ['Lex Luther', 'Voldemort'] );
-
-

A Map is an unordered collection of key-value pairs. -Maps are sometimes called associative arrays because -maps associate a key to some value for easy retrieval. -Keys are unique. -Use a Map when you need to access objects -by a unique identifier.

-
Map sidekicks = { 'Batman': 'Robin',
-                  'Superman': 'Lois Lane',
-                  'Harry Potter': 'Ron and Hermione' };
-
-

In addition to these classes, -dart:core contains Iterable, -an interface that defines functionality -common in collections of objects. -Examples include the ability -to run a function on each element in the collection, -to apply a test to each element, -to retrieve an object, and to determine length.

-

Iterable is implemented by List and Set, -and used by Map for its keys and values.

-

For other kinds of collections, check out the -dart:collection library.

-

Date and time

-

Use DateTime to represent a point in time -and Duration to represent a span of time.

-

You can create DateTime objects with constructors -or by parsing a correctly formatted string.

-
DateTime now = new DateTime.now();
-DateTime berlinWallFell = new DateTime(1989, 11, 9);
-DateTime moonLanding = DateTime.parse("1969-07-20");
-
-

Create a Duration object specifying the individual time units.

-
Duration timeRemaining = new Duration(hours:56, minutes:14);
-
-

In addition to DateTime and Duration, -dart:core contains the Stopwatch class for measuring elapsed time.

-

Uri

-

A Uri object represents a uniform resource identifier, -which identifies a resource on the web.

-
Uri dartlang = Uri.parse('http://dartlang.org/');
-
-

Errors

-

The Error class represents the occurrence of an error -during runtime. -Subclasses of this class represent specific kinds of errors.

-

Other documentation

-

For more information about how to use the built-in types, refer to -Built-in Types -in -A tour of the Dart language.

-

Also, see -dart:core - numbers, collections, strings, and more -for more coverage of types in this library.

-

The Dart Language Specification -provides technical details.

-
- -
-

Classes

- -
-
- BidirectionalIterator<E> -
-
- An Iterator that allows moving backwards as well as forwards. -
-
- BigInt -
-
- An arbitrarily large integer. -
-
- bool -
-
- The reserved words true and false denote objects that are the only two -instances of this class. [...] -
-
- Comparable<T> -
-
- Interface used by types that have an intrinsic ordering. [...] -
-
- DateTime -
-
- An instant in time, such as July 20, 1969, 8:18pm GMT. [...] -
-
- Deprecated -
-
- The annotation @Deprecated('migration') marks a feature as deprecated. [...] -
-
- double -
-
- A double-precision floating point number. [...] -
-
- Duration -
-
- A span of time, such as 27 days, 4 hours, 12 minutes, and 3 seconds. [...] -
-
- Expando<T extends Object> -
-
- An Expando allows adding new properties to objects. [...] -
-
- Function -
-
- The base class for all function types. [...] -
-
- Future<T> -
-
- An object representing a delayed computation. [...] -
-
- int -
-
- An integer number. [...] -
-
- Invocation -
-
- Representation of the invocation of a member on an object. [...] -
-
- Iterable<E> -
-
- A collection of values, or "elements", that can be accessed sequentially. [...] -
-
- Iterator<E> -
-
- An interface for getting items, one at a time, from an object. [...] -
-
- List<E> -
-
- An indexable collection of objects with a length. [...] -
-
- Map<K, V> -
-
- A collection of key/value pairs, from which you retrieve a value -using its associated key. [...] -
-
- MapEntry<K, V> -
-
- A key/value pair representing an entry in a Map. -
-
- Match -
-
- A result from searching within a string. [...] -
-
- Null -
-
- The reserved word null denotes an object that is the sole instance of -this class. [...] -
-
- num -
-
- An integer or floating-point number. [...] -
-
- Object -
-
- The base class for all Dart objects. [...] -
-
- Pattern -
-
- An interface for basic searches within strings. -
-
- pragma -
-
- A hint to tools. [...] -
-
- Provisional -
-
- An annotation class that was used during development of Dart 2. [...] -
-
- RegExp -
-
- A regular expression pattern. [...] -
-
- RegExpMatch -
-
- A regular expression match. [...] -
-
- RuneIterator -
-
- Iterator for reading runes (integer Unicode code points) of a Dart string. -
-
- Runes -
-
- The runes (integer Unicode code points) of a String. -
-
- Set<E> -
-
- A collection of objects in which each object can occur only once. [...] -
-
- Sink<T> -
-
- A generic destination for data. [...] -
-
- StackTrace -
-
- An interface implemented by all stack trace objects. [...] -
-
- Stopwatch -
-
- A simple stopwatch interface to measure elapsed time. -
-
- Stream<T> -
-
- A source of asynchronous data events. [...] -
-
- String -
-
- A sequence of UTF-16 code units. [...] -
-
- StringBuffer -
-
- A class for concatenating strings efficiently. [...] -
-
- StringSink -
-
- -
-
- Symbol -
-
- Opaque name used by mirrors, invocations and Function.apply. -
-
- Type -
-
- Runtime representation of a type. -
-
- Uri -
-
- A parsed URI, such as a URL. [...] -
-
- UriData -
-
- A way to access the structure of a data: URI. [...] -
-
-
- - - -
-

Constants

- -
-
- deprecated - → const Deprecated -
-
- Marks a feature as Deprecated until the next release. - -
- const Deprecated("next release") -
-
-
- override - → const Object -
-
- The annotation @override marks an instance member as overriding a -superclass member with the same name. [...] - -
- const _Override() -
-
-
- provisional - → const Null -
-
- An annotation that was used during development of Dart 2. [...] - -
- null -
-
-
- proxy - → const Object -
-
- This annotation is deprecated and will be removed in Dart 2. [...] - -
- const _Proxy() -
-
-
-
- - -
-

Functions

- -
-
- identical(Object a Object b) - bool - -
-
- Check whether two references are to the same object. - -
-
- identityHashCode(Object object) - int - -
-
- Returns the identity hash code of object. [...] - -
-
- print(Object object) - → void - -
-
- Prints a string representation of the object to the console. - -
-
-
- - -
-

Typedefs

- -
-
- Comparator<T>(T a T b) - int - -
-
- The signature of a generic comparison function. [...] - -
-
-
- -
-

Exceptions / Errors

- -
-
- AbstractClassInstantiationError -
-
- Error thrown when trying to instantiate an abstract class. -
-
- ArgumentError -
-
- Error thrown when a function is passed an unacceptable argument. -
-
- AssertionError -
-
- Error thrown by the runtime system when an assert statement fails. -
-
- CastError -
-
- Error thrown by the runtime system when a cast operation fails. -
-
- ConcurrentModificationError -
-
- Error occurring when a collection is modified during iteration. [...] -
-
- CyclicInitializationError -
-
- Error thrown when a lazily initialized variable cannot be initialized. [...] -
-
- Error -
-
- Error objects thrown in the case of a program failure. [...] -
-
- Exception -
-
- A marker interface implemented by all core library exceptions. [...] -
-
- FallThroughError -
-
- Error thrown when control reaches the end of a switch case. [...] -
-
- FormatException -
-
- Exception thrown when a string or some other data does not have an expected -format and cannot be parsed or processed. -
-
- IndexError -
-
- A specialized RangeError used when an index is not in the range -0..indexable.length-1. [...] -
-
- IntegerDivisionByZeroException -
-
- -
-
- LateInitializationError -
-
- Error thrown when a late variable is accessed in an invalid manner. [...] -
-
- NoSuchMethodError -
-
- Error thrown by the default implementation of noSuchMethod on Object. -
-
- NullThrownError -
-
- Error thrown when attempting to throw null. -
-
- OutOfMemoryError -
-
- -
-
- RangeError -
-
- Error thrown due to an index being outside a valid range. -
-
- StackOverflowError -
-
- -
-
- StateError -
-
- The operation was not allowed by the current state of the object. [...] -
-
- TypeError -
-
- Error thrown by the runtime system when a dynamic type error happens. -
-
- UnimplementedError -
-
- Thrown by operations that have not been implemented yet. [...] -
-
- UnsupportedError -
-
- The operation was not allowed by the object. [...] -
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/deprecated-constant.html b/doc/api/dart-core/deprecated-constant.html deleted file mode 100644 index 3d32c6d1..00000000 --- a/doc/api/dart-core/deprecated-constant.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - deprecated constant - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
deprecated
- -
- -
- - - -
-

deprecated top-level constant

- -
- const deprecated - = - const Deprecated("next release") - -
-
-

Marks a feature as Deprecated until the next release.

-
-
-

Implementation

-
const Deprecated deprecated = Deprecated("next release")
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double-class.html b/doc/api/dart-core/double-class.html deleted file mode 100644 index 979f43a6..00000000 --- a/doc/api/dart-core/double-class.html +++ /dev/null @@ -1,719 +0,0 @@ - - - - - - - - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
double
- -
- -
- - - -
-

double class

- -
-

A double-precision floating point number.

-

Representation of Dart doubles containing double specific constants -and operations and specializations of operations inherited from -num. Dart doubles are 64-bit floating-point numbers as specified in the -IEEE 754 standard.

-

The double type is contagious. Operations on doubles return -double results.

-

It is a compile-time error for a class to attempt to extend or implement -double.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- double() -
-
- -
-
-
- -
-

Properties

- -
-
- sign - double -
-
- Returns the sign of the double's numerical value. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isFinite - bool -
-
- True if the number is finite; otherwise, false. [...] -
read-only, inherited
-
-
- isInfinite - bool -
-
- True if the number is positive infinity or negative infinity; otherwise, -false. -
read-only, inherited
-
-
- isNaN - bool -
-
- True if the number is the double Not-a-Number value; otherwise, false. -
read-only, inherited
-
-
- isNegative - bool -
-
- True if the number is negative; otherwise, false. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- abs() - double - -
-
- Returns the absolute value of this double. -
override
-
-
- ceil() - int - -
-
- Returns the least integer no smaller than this. [...] -
override
-
-
- ceilToDouble() - double - -
-
- Returns the least integer double value no smaller than this. [...] -
override
-
-
- floor() - int - -
-
- Returns the greatest integer no greater than this. [...] -
override
-
-
- floorToDouble() - double - -
-
- Returns the greatest integer double value no greater than this. [...] -
override
-
-
- remainder(num other) - double - -
-
- Returns the remainder of the truncating division of this by other. [...] -
override
-
-
- round() - int - -
-
- Returns the integer closest to this. [...] -
override
-
-
- roundToDouble() - double - -
-
- Returns the integer double value closest to this. [...] -
override
-
-
- toString() - String - -
-
- Provide a representation of this double value. [...] -
override
-
-
- truncate() - int - -
-
- Returns the integer obtained by discarding any fractional -digits from this. [...] -
override
-
-
- truncateToDouble() - double - -
-
- Returns the integer double value obtained by discarding any fractional -digits from this. [...] -
override
-
-
- clamp(num lowerLimit num upperLimit) - num - -
-
- Returns this num clamped to be in the range lowerLimit-upperLimit. [...] -
inherited
-
-
- compareTo(num other) - int - -
-
- Compares this to other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toDouble() - double - -
-
- Return this num as a double. [...] -
inherited
-
-
- toInt() - int - -
-
- Truncates this num to an integer and returns the result as an int. -
inherited
-
-
- toStringAsExponential([int fractionDigits ]) - String - -
-
- Returns an exponential string-representation of this. [...] -
inherited
-
-
- toStringAsFixed(int fractionDigits) - String - -
-
- Returns a decimal-point string-representation of this. [...] -
inherited
-
-
- toStringAsPrecision(int precision) - String - -
-
- Converts this to a double and returns a string representation with -exactly precision significant digits. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator %(num other) - double - -
-
- Euclidean modulo operator. [...] -
override
-
-
- operator *(num other) - double - -
-
- Multiplication operator. -
override
-
-
- operator +(num other) - double - -
-
- Addition operator. -
override
-
-
- operator -(num other) - double - -
-
- Subtraction operator. -
override
-
-
- operator /(num other) - double - -
-
- Division operator. -
override
-
-
- operator unary-() - double - -
-
- Negate operator. -
override
-
-
- operator ~/(num other) - int - -
-
- Truncating division operator. [...] -
override
-
-
- operator <(num other) - bool - -
-
- Relational less than operator. -
inherited
-
-
- operator <=(num other) - bool - -
-
- Relational less than or equal operator. -
inherited
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator >(num other) - bool - -
-
- Relational greater than operator. -
inherited
-
-
- operator >=(num other) - bool - -
-
- Relational greater than or equal operator. -
inherited
-
-
-
- - -
-

Static Methods

-
-
- parse(String source, [ double onError(String source) ]) - double - -
-
- Parse source as an double literal and return its value. [...] -
override
-
-
- tryParse(String source) - double - -
-
- Parse source as an double literal and return its value. [...] -
override
-
-
-
- -
-

Constants

- -
-
- infinity - → const double -
-
- - -
- 1.0 / 0.0 -
-
-
- maxFinite - → const double -
-
- - -
- 1.7976931348623157e+308 -
-
-
- minPositive - → const double -
-
- - -
- 5e-324 -
-
-
- nan - → const double -
-
- - -
- 0.0 / 0.0 -
-
-
- negativeInfinity - → const double -
-
- - -
- -infinity -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/abs.html b/doc/api/dart-core/double/abs.html deleted file mode 100644 index ddaff487..00000000 --- a/doc/api/dart-core/double/abs.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - abs method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
abs
- -
- -
- - - -
-

abs method

- -
- double - abs -() -
override
-
-
-

Returns the absolute value of this double.

-
- -
-

Implementation

-
double abs();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/ceil.html b/doc/api/dart-core/double/ceil.html deleted file mode 100644 index f2d8b97b..00000000 --- a/doc/api/dart-core/double/ceil.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - ceil method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ceil
- -
- -
- - - -
-

ceil method

- -
- int - ceil -() -
override
-
-
-

Returns the least integer no smaller than this.

-

If this is not finite (NaN or infinity), throws an UnsupportedError.

-
- -
-

Implementation

-
int ceil();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/ceilToDouble.html b/doc/api/dart-core/double/ceilToDouble.html deleted file mode 100644 index 0c6f7388..00000000 --- a/doc/api/dart-core/double/ceilToDouble.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - ceilToDouble method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ceilToDouble
- -
- -
- - - -
-

ceilToDouble method

- -
- double - ceilToDouble -() -
override
-
-
-

Returns the least integer double value no smaller than this.

-

If this is already an integer valued double, including -0.0, or it is not -a finite value, the value is returned unmodified.

-

For the purpose of rounding, -0.0 is considered to be below 0.0. -A number d in the range -1.0 < d < 0.0 will return -0.0.

-
- -
-

Implementation

-
double ceilToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/double.html b/doc/api/dart-core/double/double.html deleted file mode 100644 index 827434c8..00000000 --- a/doc/api/dart-core/double/double.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - double constructor - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
double
- -
- -
- - - -
-

double constructor

- -
- - double() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/floor.html b/doc/api/dart-core/double/floor.html deleted file mode 100644 index 847139cb..00000000 --- a/doc/api/dart-core/double/floor.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - floor method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
floor
- -
- -
- - - -
-

floor method

- -
- int - floor -() -
override
-
-
-

Returns the greatest integer no greater than this.

-

If this is not finite (NaN or infinity), throws an UnsupportedError.

-
- -
-

Implementation

-
int floor();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/floorToDouble.html b/doc/api/dart-core/double/floorToDouble.html deleted file mode 100644 index 94ae7948..00000000 --- a/doc/api/dart-core/double/floorToDouble.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - floorToDouble method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
floorToDouble
- -
- -
- - - -
-

floorToDouble method

- -
- double - floorToDouble -() -
override
-
-
-

Returns the greatest integer double value no greater than this.

-

If this is already an integer valued double, including -0.0, or it is not -a finite value, the value is returned unmodified.

-

For the purpose of rounding, -0.0 is considered to be below 0.0. -A number d in the range 0.0 < d < 1.0 will return 0.0.

-
- -
-

Implementation

-
double floorToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/infinity-constant.html b/doc/api/dart-core/double/infinity-constant.html deleted file mode 100644 index 7ce60116..00000000 --- a/doc/api/dart-core/double/infinity-constant.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - infinity constant - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
infinity
- -
- -
- - - -
-

infinity constant

- -
- double - const infinity - = - 1.0 / 0.0 -
- -
-

Implementation

-
static const double infinity = 1.0 / 0.0
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/maxFinite-constant.html b/doc/api/dart-core/double/maxFinite-constant.html deleted file mode 100644 index aa70b03e..00000000 --- a/doc/api/dart-core/double/maxFinite-constant.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - maxFinite constant - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
maxFinite
- -
- -
- - - -
-

maxFinite constant

- -
- double - const maxFinite - = - 1.7976931348623157e+308 -
- -
-

Implementation

-
static const double maxFinite = 1.7976931348623157e+308
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/minPositive-constant.html b/doc/api/dart-core/double/minPositive-constant.html deleted file mode 100644 index 730dc855..00000000 --- a/doc/api/dart-core/double/minPositive-constant.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - minPositive constant - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
minPositive
- -
- -
- - - -
-

minPositive constant

- -
- double - const minPositive - = - 5e-324 -
- -
-

Implementation

-
static const double minPositive = 5e-324
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/nan-constant.html b/doc/api/dart-core/double/nan-constant.html deleted file mode 100644 index 4b7720c1..00000000 --- a/doc/api/dart-core/double/nan-constant.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - nan constant - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
nan
- -
- -
- - - -
-

nan constant

- -
- double - const nan - = - 0.0 / 0.0 -
- -
-

Implementation

-
static const double nan = 0.0 / 0.0
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/negativeInfinity-constant.html b/doc/api/dart-core/double/negativeInfinity-constant.html deleted file mode 100644 index 5148e28b..00000000 --- a/doc/api/dart-core/double/negativeInfinity-constant.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - negativeInfinity constant - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
negativeInfinity
- -
- -
- - - -
-

negativeInfinity constant

- -
- double - const negativeInfinity - = - -infinity -
- -
-

Implementation

-
static const double negativeInfinity = -infinity
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/operator_divide.html b/doc/api/dart-core/double/operator_divide.html deleted file mode 100644 index 0f416257..00000000 --- a/doc/api/dart-core/double/operator_divide.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator / method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator /
- -
- -
- - - -
-

operator / method

- -
- double - operator / -(num other) -
override
-
-
-

Division operator.

-
- -
-

Implementation

-
double operator /(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/operator_minus.html b/doc/api/dart-core/double/operator_minus.html deleted file mode 100644 index 0bb689d9..00000000 --- a/doc/api/dart-core/double/operator_minus.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator - method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator -
- -
- -
- - - -
-

operator - method

- -
- double - operator - -(num other) -
override
-
-
-

Subtraction operator.

-
- -
-

Implementation

-
double operator -(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/operator_modulo.html b/doc/api/dart-core/double/operator_modulo.html deleted file mode 100644 index 70ca2716..00000000 --- a/doc/api/dart-core/double/operator_modulo.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - operator % method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator %
- -
- -
- - - -
-

operator % method

- -
- double - operator % -(num other) -
override
-
-
-

Euclidean modulo operator.

-

Returns the remainder of the Euclidean division. The Euclidean division of -two integers a and b yields two integers q and r such that -a == b * q + r and 0 <= r < b.abs().

-

The Euclidean division is only defined for integers, but can be easily -extended to work with doubles. In that case r may have a non-integer -value, but it still verifies 0 <= r < |b|.

-

The sign of the returned value r is always positive.

-

See remainder for the remainder of the truncating division.

-
- -
-

Implementation

-
double operator %(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/operator_multiply.html b/doc/api/dart-core/double/operator_multiply.html deleted file mode 100644 index 3908b943..00000000 --- a/doc/api/dart-core/double/operator_multiply.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator * method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator *
- -
- -
- - - -
-

operator * method

- -
- double - operator * -(num other) -
override
-
-
-

Multiplication operator.

-
- -
-

Implementation

-
double operator *(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/operator_plus.html b/doc/api/dart-core/double/operator_plus.html deleted file mode 100644 index f8edc38f..00000000 --- a/doc/api/dart-core/double/operator_plus.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator + method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator +
- -
- -
- - - -
-

operator + method

- -
- double - operator + -(num other) -
override
-
-
-

Addition operator.

-
- -
-

Implementation

-
double operator +(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/operator_truncate_divide.html b/doc/api/dart-core/double/operator_truncate_divide.html deleted file mode 100644 index b5e8c6c9..00000000 --- a/doc/api/dart-core/double/operator_truncate_divide.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - operator ~/ method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ~/
- -
- -
- - - -
-

operator ~/ method

- -
- int - operator ~/ -(num other) -
override
-
-
-

Truncating division operator.

-

The result of the truncating division a ~/ b is equivalent to -(a / b).truncate().

-
- -
-

Implementation

-
int operator ~/(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/operator_unary_minus.html b/doc/api/dart-core/double/operator_unary_minus.html deleted file mode 100644 index 6df05322..00000000 --- a/doc/api/dart-core/double/operator_unary_minus.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - operator unary- method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator unary-
- -
- -
- - - -
-

operator unary- method

- -
- double - operator unary- -() -
override
-
-
-

Negate operator.

-
- -
-

Implementation

-
double operator -();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/parse.html b/doc/api/dart-core/double/parse.html deleted file mode 100644 index 91867758..00000000 --- a/doc/api/dart-core/double/parse.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - parse method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parse
- -
- -
- - - -
-

parse method

- -
- double - parse -(String source, [ @deprecated double onError(String source) ]) -
override
-
-
-

Parse source as an double literal and return its value.

-

Accepts an optional sign (+ or -) followed by either the characters -"Infinity", the characters "NaN" or a floating-point representation. -A floating-point representation is composed of a mantissa and an optional -exponent part. The mantissa is either a decimal point (.) followed by a -sequence of (decimal) digits, or a sequence of digits -optionally followed by a decimal point and optionally more digits. The -(optional) exponent part consists of the character "e" or "E", an optional -sign, and one or more digits. -The source must not be null.

-

Leading and trailing whitespace is ignored.

-

If the source string is not a valid double literal, the onError -is called with the source as argument, and its return value is -used instead. If no onError is provided, a FormatException -is thrown instead.

-

The onError function is only invoked if source is a String with an -invalid format. It is not invoked if source is null.

-

Examples of accepted strings:

-
"3.14"
-"  3.14 \xA0"
-"0."
-".0"
-"-1.e3"
-"1234E+7"
-"+.12e-9"
-"-NaN"
-
-

The onError parameter is deprecated and will be removed. -Instead of double.parse(string, (string) { ... }), -you should use double.tryParse(string) ?? (...).

-
- -
-

Implementation

-
external static double parse(String source,
-    [@deprecated double onError(String source)?]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/remainder.html b/doc/api/dart-core/double/remainder.html deleted file mode 100644 index b046deab..00000000 --- a/doc/api/dart-core/double/remainder.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - remainder method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
remainder
- -
- -
- - - -
-

remainder method

- -
- double - remainder -(num other) -
override
-
-
-

Returns the remainder of the truncating division of this by other.

-

The result r of this operation satisfies: -this == (this ~/ other) * other + r. -As a consequence the remainder r has the same sign as the divider this.

-
- -
-

Implementation

-
double remainder(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/round.html b/doc/api/dart-core/double/round.html deleted file mode 100644 index bcc254e4..00000000 --- a/doc/api/dart-core/double/round.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - round method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
round
- -
- -
- - - -
-

round method

- -
- int - round -() -
override
-
-
-

Returns the integer closest to this.

-

Rounds away from zero when there is no closest integer: -(3.5).round() == 4 and (-3.5).round() == -4.

-

If this is not finite (NaN or infinity), throws an UnsupportedError.

-
- -
-

Implementation

-
int round();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/roundToDouble.html b/doc/api/dart-core/double/roundToDouble.html deleted file mode 100644 index 1539a1df..00000000 --- a/doc/api/dart-core/double/roundToDouble.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - roundToDouble method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
roundToDouble
- -
- -
- - - -
-

roundToDouble method

- -
- double - roundToDouble -() -
override
-
-
-

Returns the integer double value closest to this.

-

Rounds away from zero when there is no closest integer: -(3.5).roundToDouble() == 4 and (-3.5).roundToDouble() == -4.

-

If this is already an integer valued double, including -0.0, or it is not -a finite value, the value is returned unmodified.

-

For the purpose of rounding, -0.0 is considered to be below 0.0, -and -0.0 is therefore considered closer to negative numbers than 0.0. -This means that for a value, d in the range -0.5 < d < 0.0, -the result is -0.0.

-
- -
-

Implementation

-
double roundToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/sign.html b/doc/api/dart-core/double/sign.html deleted file mode 100644 index 992ec6f9..00000000 --- a/doc/api/dart-core/double/sign.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - sign property - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
sign
- -
- -
- - - -
-

sign property

- - -
- -
- double - sign -
override
-
- -
-

Returns the sign of the double's numerical value.

-

Returns -1.0 if the value is less than zero, -+1.0 if the value is greater than zero, -and the value itself if it is -0.0, 0.0 or NaN.

-
-
-

Implementation

-
double get sign;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/toString.html b/doc/api/dart-core/double/toString.html deleted file mode 100644 index 532844b2..00000000 --- a/doc/api/dart-core/double/toString.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - toString method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Provide a representation of this double value.

-

The representation is a number literal such that the closest double value -to the representation's mathematical value is this double.

-

Returns "NaN" for the Not-a-Number value. -Returns "Infinity" and "-Infinity" for positive and negative Infinity. -Returns "-0.0" for negative zero.

-

For all doubles, d, converting to a string and parsing the string back -gives the same value again: d == double.parse(d.toString()) (except when -d is NaN).

-
- -
-

Implementation

-
String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/truncate.html b/doc/api/dart-core/double/truncate.html deleted file mode 100644 index 0da9b0aa..00000000 --- a/doc/api/dart-core/double/truncate.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - truncate method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
truncate
- -
- -
- - - -
-

truncate method

- -
- int - truncate -() -
override
-
-
-

Returns the integer obtained by discarding any fractional -digits from this.

-

If this is not finite (NaN or infinity), throws an UnsupportedError.

-
- -
-

Implementation

-
int truncate();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/truncateToDouble.html b/doc/api/dart-core/double/truncateToDouble.html deleted file mode 100644 index 152fb06c..00000000 --- a/doc/api/dart-core/double/truncateToDouble.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - truncateToDouble method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
truncateToDouble
- -
- -
- - - -
-

truncateToDouble method

- -
- double - truncateToDouble -() -
override
-
-
-

Returns the integer double value obtained by discarding any fractional -digits from this.

-

If this is already an integer valued double, including -0.0, or it is not -a finite value, the value is returned unmodified.

-

For the purpose of rounding, -0.0 is considered to be below 0.0. -A number d in the range -1.0 < d < 0.0 will return -0.0, and -in the range 0.0 < d < 1.0 it will return 0.0.

-
- -
-

Implementation

-
double truncateToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/double/tryParse.html b/doc/api/dart-core/double/tryParse.html deleted file mode 100644 index 063eae60..00000000 --- a/doc/api/dart-core/double/tryParse.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - tryParse method - double class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
tryParse
- -
- -
- - - -
-

tryParse method

- -
- double - tryParse -(String source) -
override
-
-
-

Parse source as an double literal and return its value.

-

Like parse except that this function returns null for invalid inputs -instead of throwing, and the source must still not be null.

-
- -
-

Implementation

-
external static double? tryParse(String source);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/identical.html b/doc/api/dart-core/identical.html deleted file mode 100644 index 7958081f..00000000 --- a/doc/api/dart-core/identical.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - identical function - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
identical
- -
- -
- - - -
-

identical function

- -
- bool - identical -(Object a Object b) -
-
-

Check whether two references are to the same object.

-
- -
-

Implementation

-
external bool identical(Object? a, Object? b);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/identityHashCode.html b/doc/api/dart-core/identityHashCode.html deleted file mode 100644 index 02160019..00000000 --- a/doc/api/dart-core/identityHashCode.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - identityHashCode function - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
identityHashCode
- -
- -
- - - -
-

identityHashCode function

- -
- int - identityHashCode -(Object object) -
-
-

Returns the identity hash code of object.

-

Returns the same value as object.hashCode if object has not overridden -Object.hashCode. Returns the value that Object.hashCode would return -on this object, even if hashCode has been overridden.

-

This hash code is compatible with identical.

-
- -
-

Implementation

-
@pragma("vm:entry-point")
-external int identityHashCode(Object? object);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int-class.html b/doc/api/dart-core/int-class.html deleted file mode 100644 index 3f697c14..00000000 --- a/doc/api/dart-core/int-class.html +++ /dev/null @@ -1,809 +0,0 @@ - - - - - - - - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
int
- -
- -
- - - -
-

int class

- -
-

An integer number.

-

The default implementation of int is 64-bit two's complement integers -with operations that wrap to that range on overflow.

-

Note: When compiling to JavaScript, integers are restricted to values -that can be represented exactly by double-precision floating point values. -The available integer values include all integers between -2^53 and 2^53, -and some integers with larger magnitude. That includes some integers larger -than 2^63. -The behavior of the operators and methods in the int -class therefore sometimes differs between the Dart VM and Dart code -compiled to JavaScript. For example, the bitwise operators truncate their -operands to 32-bit integers when compiled to JavaScript.

-

Classes cannot extend, implement, or mix in int.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- int.fromEnvironment(String name, { int defaultValue: 0 }) -
-
- Returns the integer value of the given environment declaration name. [...] -
const
-
factory
-
-
-
- -
-

Properties

- -
-
- bitLength - int -
-
- Returns the minimum number of bits required to store this integer. [...] -
read-only
-
-
- isEven - bool -
-
- Returns true if and only if this integer is even. -
read-only
-
-
- isOdd - bool -
-
- Returns true if and only if this integer is odd. -
read-only
-
-
- sign - int -
-
- Returns the sign of this integer. [...] -
read-only, override
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- isFinite - bool -
-
- True if the number is finite; otherwise, false. [...] -
read-only, inherited
-
-
- isInfinite - bool -
-
- True if the number is positive infinity or negative infinity; otherwise, -false. -
read-only, inherited
-
-
- isNaN - bool -
-
- True if the number is the double Not-a-Number value; otherwise, false. -
read-only, inherited
-
-
- isNegative - bool -
-
- True if the number is negative; otherwise, false. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- abs() - int - -
-
- Returns the absolute value of this integer. [...] -
override
-
-
- ceil() - int - -
-
- Returns this. -
override
-
-
- ceilToDouble() - double - -
-
- Returns this.toDouble(). -
override
-
-
- floor() - int - -
-
- Returns this. -
override
-
-
- floorToDouble() - double - -
-
- Returns this.toDouble(). -
override
-
-
- gcd(int other) - int - -
-
- Returns the greatest common divisor of this integer and other. [...] - -
-
- modInverse(int modulus) - int - -
-
- Returns the modular multiplicative inverse of this integer -modulo modulus. [...] - -
-
- modPow(int exponent int modulus) - int - -
-
- Returns this integer to the power of exponent modulo modulus. [...] - -
-
- round() - int - -
-
- Returns this. -
override
-
-
- roundToDouble() - double - -
-
- Returns this.toDouble(). -
override
-
-
- toRadixString(int radix) - String - -
-
- Converts this to a string representation in the given radix. [...] - -
-
- toSigned(int width) - int - -
-
- Returns the least significant width bits of this integer, extending the -highest retained bit to the sign. This is the same as truncating the value -to fit in width bits using an signed 2-s complement representation. The -returned value has the same bit value in all positions higher than width. [...] - -
-
- toString() - String - -
-
- Returns a string representation of this integer. [...] -
override
-
-
- toUnsigned(int width) - int - -
-
- Returns the least significant width bits of this integer as a -non-negative number (i.e. unsigned representation). The returned value has -zeros in all bit positions higher than width. [...] - -
-
- truncate() - int - -
-
- Returns this. -
override
-
-
- truncateToDouble() - double - -
-
- Returns this.toDouble(). -
override
-
-
- clamp(num lowerLimit num upperLimit) - num - -
-
- Returns this num clamped to be in the range lowerLimit-upperLimit. [...] -
inherited
-
-
- compareTo(num other) - int - -
-
- Compares this to other. [...] -
inherited
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- remainder(num other) - num - -
-
- Returns the remainder of the truncating division of this by other. [...] -
inherited
-
-
- toDouble() - double - -
-
- Return this num as a double. [...] -
inherited
-
-
- toInt() - int - -
-
- Truncates this num to an integer and returns the result as an int. -
inherited
-
-
- toStringAsExponential([int fractionDigits ]) - String - -
-
- Returns an exponential string-representation of this. [...] -
inherited
-
-
- toStringAsFixed(int fractionDigits) - String - -
-
- Returns a decimal-point string-representation of this. [...] -
inherited
-
-
- toStringAsPrecision(int precision) - String - -
-
- Converts this to a double and returns a string representation with -exactly precision significant digits. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator &(int other) - int - -
-
- Bit-wise and operator. [...] - -
-
- operator <<(int shiftAmount) - int - -
-
- Shift the bits of this integer to the left by shiftAmount. [...] - -
-
- operator >>(int shiftAmount) - int - -
-
- Shift the bits of this integer to the right by shiftAmount. [...] - -
-
- operator ^(int other) - int - -
-
- Bit-wise exclusive-or operator. [...] - -
-
- operator unary-() - int - -
-
- Return the negative value of this integer. [...] -
override
-
-
- operator |(int other) - int - -
-
- Bit-wise or operator. [...] - -
-
- operator ~() - int - -
-
- The bit-wise negate operator. [...] - -
-
- operator %(num other) - num - -
-
- Euclidean modulo operator. [...] -
inherited
-
-
- operator *(num other) - num - -
-
- Multiplication operator. -
inherited
-
-
- operator +(num other) - num - -
-
- Addition operator. -
inherited
-
-
- operator -(num other) - num - -
-
- Subtraction operator. -
inherited
-
-
- operator /(num other) - double - -
-
- Division operator. -
inherited
-
-
- operator <(num other) - bool - -
-
- Relational less than operator. -
inherited
-
-
- operator <=(num other) - bool - -
-
- Relational less than or equal operator. -
inherited
-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
- operator >(num other) - bool - -
-
- Relational greater than operator. -
inherited
-
-
- operator >=(num other) - bool - -
-
- Relational greater than or equal operator. -
inherited
-
-
- operator ~/(num other) - int - -
-
- Truncating division operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- parse(String source, { int radix, int onError(String source) }) - int - -
-
- Parse source as a, possibly signed, integer literal and return its value. [...] -
override
-
-
- tryParse(String source, { int radix }) - int - -
-
- Parse source as a, possibly signed, integer literal and return its value. [...] -
override
-
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/abs.html b/doc/api/dart-core/int/abs.html deleted file mode 100644 index be7f456e..00000000 --- a/doc/api/dart-core/int/abs.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - abs method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
abs
- -
- -
- - - -
-

abs method

- -
- int - abs -() -
override
-
-
-

Returns the absolute value of this integer.

-

For any integer x, the result is the same as x < 0 ? -x : x.

-
- -
-

Implementation

-
int abs();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/bitLength.html b/doc/api/dart-core/int/bitLength.html deleted file mode 100644 index 9e77a4a6..00000000 --- a/doc/api/dart-core/int/bitLength.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - bitLength property - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
bitLength
- -
- -
- - - -
-

bitLength property

- - -
- -
- int - bitLength - -
- -
-

Returns the minimum number of bits required to store this integer.

-

The number of bits excludes the sign bit, which gives the natural length -for non-negative (unsigned) values. Negative values are complemented to -return the bit position of the first bit that differs from the sign bit.

-

To find the number of bits needed to store the value as a signed value, -add one, i.e. use x.bitLength + 1.

-
x.bitLength == (-x-1).bitLength
-
-3.bitLength == 2;     // 00000011
-2.bitLength == 2;     // 00000010
-1.bitLength == 1;     // 00000001
-0.bitLength == 0;     // 00000000
-(-1).bitLength == 0;  // 11111111
-(-2).bitLength == 1;  // 11111110
-(-3).bitLength == 2;  // 11111101
-(-4).bitLength == 2;  // 11111100
-
-
-
-

Implementation

-
int get bitLength;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/ceil.html b/doc/api/dart-core/int/ceil.html deleted file mode 100644 index c8214a0e..00000000 --- a/doc/api/dart-core/int/ceil.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - ceil method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ceil
- -
- -
- - - -
-

ceil method

- -
- int - ceil -() -
override
-
-
-

Returns this.

-
- -
-

Implementation

-
int ceil();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/ceilToDouble.html b/doc/api/dart-core/int/ceilToDouble.html deleted file mode 100644 index 1072c71e..00000000 --- a/doc/api/dart-core/int/ceilToDouble.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - ceilToDouble method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ceilToDouble
- -
- -
- - - -
-

ceilToDouble method

- -
- double - ceilToDouble -() -
override
-
-
-

Returns this.toDouble().

-
- -
-

Implementation

-
double ceilToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/floor.html b/doc/api/dart-core/int/floor.html deleted file mode 100644 index 7ef4929b..00000000 --- a/doc/api/dart-core/int/floor.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - floor method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
floor
- -
- -
- - - -
-

floor method

- -
- int - floor -() -
override
-
-
-

Returns this.

-
- -
-

Implementation

-
int floor();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/floorToDouble.html b/doc/api/dart-core/int/floorToDouble.html deleted file mode 100644 index 4a39c0ea..00000000 --- a/doc/api/dart-core/int/floorToDouble.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - floorToDouble method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
floorToDouble
- -
- -
- - - -
-

floorToDouble method

- -
- double - floorToDouble -() -
override
-
-
-

Returns this.toDouble().

-
- -
-

Implementation

-
double floorToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/gcd.html b/doc/api/dart-core/int/gcd.html deleted file mode 100644 index fb6d2b22..00000000 --- a/doc/api/dart-core/int/gcd.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - gcd method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
gcd
- -
- -
- - - -
-

gcd method

- -
- int - gcd -(int other) - -
-
-

Returns the greatest common divisor of this integer and other.

-

If either number is non-zero, the result is the numerically greatest -integer dividing both this and other.

-

The greatest common divisor is independent of the order, -so x.gcd(y) is always the same as y.gcd(x).

-

For any integer x, x.gcd(x) is x.abs().

-

If both this and other is zero, the result is also zero.

-
- -
-

Implementation

-
int gcd(int other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/int.fromEnvironment.html b/doc/api/dart-core/int/int.fromEnvironment.html deleted file mode 100644 index c6078def..00000000 --- a/doc/api/dart-core/int/int.fromEnvironment.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - int.fromEnvironment constructor - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
int.fromEnvironment
- -
- -
- - - -
-

int.fromEnvironment constructor

- -
- const - int.fromEnvironment(String name, { int defaultValue: 0 }) -
- -
-

Returns the integer value of the given environment declaration name.

-

The result is the same as would be returned by:

-
int.tryParse(const String.fromEnvironment(name, defaultValue: ""))
-    ?? defaultValue
-
-

Example:

-
const int.fromEnvironment("defaultPort", defaultValue: 80)
-
-
- -
-

Implementation

-
// The .fromEnvironment() constructors are special in that we do not want
-// users to call them using "new". We prohibit that by giving them bodies
-// that throw, even though const constructors are not allowed to have bodies.
-// Disable those static errors.
-//ignore: const_constructor_with_body
-//ignore: const_factory
-external const factory int.fromEnvironment(String name,
-    {int defaultValue = 0});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/isEven.html b/doc/api/dart-core/int/isEven.html deleted file mode 100644 index 4c41f784..00000000 --- a/doc/api/dart-core/int/isEven.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - isEven property - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isEven
- -
- -
- - - -
-

isEven property

- - -
- -
- bool - isEven - -
- -
-

Returns true if and only if this integer is even.

-
-
-

Implementation

-
bool get isEven;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/isOdd.html b/doc/api/dart-core/int/isOdd.html deleted file mode 100644 index e8f11da6..00000000 --- a/doc/api/dart-core/int/isOdd.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - isOdd property - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isOdd
- -
- -
- - - -
-

isOdd property

- - -
- -
- bool - isOdd - -
- -
-

Returns true if and only if this integer is odd.

-
-
-

Implementation

-
bool get isOdd;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/modInverse.html b/doc/api/dart-core/int/modInverse.html deleted file mode 100644 index 155c8e7c..00000000 --- a/doc/api/dart-core/int/modInverse.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - modInverse method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
modInverse
- -
- -
- - - -
-

modInverse method

- -
- int - modInverse -(int modulus) - -
-
-

Returns the modular multiplicative inverse of this integer -modulo modulus.

-

The modulus must be positive.

-

It is an error if no modular inverse exists.

-
- -
-

Implementation

-
int modInverse(int modulus);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/modPow.html b/doc/api/dart-core/int/modPow.html deleted file mode 100644 index 43a00a17..00000000 --- a/doc/api/dart-core/int/modPow.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - modPow method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
modPow
- -
- -
- - - -
-

modPow method

- -
- int - modPow -(int exponent int modulus) - -
-
-

Returns this integer to the power of exponent modulo modulus.

-

The exponent must be non-negative and modulus must be -positive.

-
- -
-

Implementation

-
int modPow(int exponent, int modulus);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/operator_bitwise_and.html b/doc/api/dart-core/int/operator_bitwise_and.html deleted file mode 100644 index 8fb22ede..00000000 --- a/doc/api/dart-core/int/operator_bitwise_and.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - operator & method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator &
- -
- -
- - - -
-

operator & method

- -
- int - operator & -(int other) - -
-
-

Bit-wise and operator.

-

Treating both this and other as sufficiently large two's component -integers, the result is a number with only the bits set that are set in -both this and other

-

If both operands are negative, the result is negative, otherwise -the result is non-negative.

-
- -
-

Implementation

-
int operator &(int other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/operator_bitwise_exclusive_or.html b/doc/api/dart-core/int/operator_bitwise_exclusive_or.html deleted file mode 100644 index 9de0df37..00000000 --- a/doc/api/dart-core/int/operator_bitwise_exclusive_or.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - operator ^ method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ^
- -
- -
- - - -
-

operator ^ method

- -
- int - operator ^ -(int other) - -
-
-

Bit-wise exclusive-or operator.

-

Treating both this and other as sufficiently large two's component -integers, the result is a number with the bits set that are set in one, -but not both, of this and other

-

If the operands have the same sign, the result is non-negative, -otherwise the result is negative.

-
- -
-

Implementation

-
int operator ^(int other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/operator_bitwise_negate.html b/doc/api/dart-core/int/operator_bitwise_negate.html deleted file mode 100644 index 72113432..00000000 --- a/doc/api/dart-core/int/operator_bitwise_negate.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - operator ~ method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ~
- -
- -
- - - -
-

operator ~ method

- -
- int - operator ~ -() - -
-
-

The bit-wise negate operator.

-

Treating this as a sufficiently large two's component integer, -the result is a number with the opposite bits set.

-

This maps any integer x to -x - 1.

-
- -
-

Implementation

-
int operator ~();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/operator_bitwise_or.html b/doc/api/dart-core/int/operator_bitwise_or.html deleted file mode 100644 index 70afa0ac..00000000 --- a/doc/api/dart-core/int/operator_bitwise_or.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - operator | method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator |
- -
- -
- - - -
-

operator | method

- -
- int - operator | -(int other) - -
-
-

Bit-wise or operator.

-

Treating both this and other as sufficiently large two's component -integers, the result is a number with the bits set that are set in either -of this and other

-

If both operands are non-negative, the result is non-negative, -otherwise the result is negative.

-
- -
-

Implementation

-
int operator |(int other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/operator_shift_left.html b/doc/api/dart-core/int/operator_shift_left.html deleted file mode 100644 index db032090..00000000 --- a/doc/api/dart-core/int/operator_shift_left.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - operator << method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator <<
- -
- -
- - - -
-

operator << method

- -
- int - operator << -(int shiftAmount) - -
-
-

Shift the bits of this integer to the left by shiftAmount.

-

Shifting to the left makes the number larger, effectively multiplying -the number by pow(2, shiftIndex).

-

There is no limit on the size of the result. It may be relevant to -limit intermediate values by using the "and" operator with a suitable -mask.

-

It is an error if shiftAmount is negative.

-
- -
-

Implementation

-
int operator <<(int shiftAmount);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/operator_shift_right.html b/doc/api/dart-core/int/operator_shift_right.html deleted file mode 100644 index 893e32d7..00000000 --- a/doc/api/dart-core/int/operator_shift_right.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - operator >> method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator >>
- -
- -
- - - -
-

operator >> method

- -
- int - operator >> -(int shiftAmount) - -
-
-

Shift the bits of this integer to the right by shiftAmount.

-

Shifting to the right makes the number smaller and drops the least -significant bits, effectively doing an integer division by -pow(2, shiftIndex).

-

It is an error if shiftAmount is negative.

-
- -
-

Implementation

-
int operator >>(int shiftAmount);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/operator_unary_minus.html b/doc/api/dart-core/int/operator_unary_minus.html deleted file mode 100644 index 5f3704ec..00000000 --- a/doc/api/dart-core/int/operator_unary_minus.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - operator unary- method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator unary-
- -
- -
- - - -
-

operator unary- method

- -
- int - operator unary- -() -
override
-
-
-

Return the negative value of this integer.

-

The result of negating an integer always has the opposite sign, except -for zero, which is its own negation.

-
- -
-

Implementation

-
int operator -();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/parse.html b/doc/api/dart-core/int/parse.html deleted file mode 100644 index 9360e43a..00000000 --- a/doc/api/dart-core/int/parse.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - parse method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parse
- -
- -
- - - -
-

parse method

- -
- int - parse -(String source, { int radix, @deprecated int onError(String source) }) -
override
-
-
-

Parse source as a, possibly signed, integer literal and return its value.

-

The source must be a non-empty sequence of base-radix digits, -optionally prefixed with a minus or plus sign ('-' or '+'). -It must not be null.

-

The radix must be in the range 2..36. The digits used are -first the decimal digits 0..9, and then the letters 'a'..'z' with -values 10 through 35. Also accepts upper-case letters with the same -values as the lower-case ones.

-

If no radix is given then it defaults to 10. In this case, the source -digits may also start with 0x, in which case the number is interpreted -as a hexadecimal integer literal, -When int is implemented by 64-bit signed integers, -hexadecimal integer literals may represent values larger than -263, in which case the value is parsed as if it is an -unsigned number, and the resulting value is the corresponding -signed integer value.

-

For any int n and valid radix r, it is guaranteed that -n == int.parse(n.toRadixString(r), radix: r).

-

If the source string does not contain a valid integer literal, -optionally prefixed by a sign, a FormatException is thrown -(unless the deprecated onError parameter is used, see below).

-

Instead of throwing and immediately catching the FormatException, -instead use tryParse to handle a parsing error. -Example:

-
var value = int.tryParse(text);
-if (value == null) ... handle the problem
-
-

The onError parameter is deprecated and will be removed. -Instead of int.parse(string, onError: (string) => ...), -you should use int.tryParse(string) ?? (...).

-

When the source string is not valid and onError is provided, -whenever a FormatException would be thrown, -onError is instead called with source as argument, -and the result of that call is returned by parse.

-
- -
-

Implementation

-
external static int parse(String source,
-    {int? radix, @deprecated int onError(String source)?});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/round.html b/doc/api/dart-core/int/round.html deleted file mode 100644 index b093f130..00000000 --- a/doc/api/dart-core/int/round.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - round method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
round
- -
- -
- - - -
-

round method

- -
- int - round -() -
override
-
-
-

Returns this.

-
- -
-

Implementation

-
int round();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/roundToDouble.html b/doc/api/dart-core/int/roundToDouble.html deleted file mode 100644 index 225c8d08..00000000 --- a/doc/api/dart-core/int/roundToDouble.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - roundToDouble method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
roundToDouble
- -
- -
- - - -
-

roundToDouble method

- -
- double - roundToDouble -() -
override
-
-
-

Returns this.toDouble().

-
- -
-

Implementation

-
double roundToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/sign.html b/doc/api/dart-core/int/sign.html deleted file mode 100644 index 03aba3ab..00000000 --- a/doc/api/dart-core/int/sign.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - sign property - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
sign
- -
- -
- - - -
-

sign property

- - -
- -
- int - sign -
override
-
- -
-

Returns the sign of this integer.

-

Returns 0 for zero, -1 for values less than zero and -+1 for values greater than zero.

-
-
-

Implementation

-
int get sign;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/toRadixString.html b/doc/api/dart-core/int/toRadixString.html deleted file mode 100644 index 6a0b1043..00000000 --- a/doc/api/dart-core/int/toRadixString.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - toRadixString method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toRadixString
- -
- -
- - - -
-

toRadixString method

- -
- String - toRadixString -(int radix) - -
-
-

Converts this to a string representation in the given radix.

-

In the string representation, lower-case letters are used for digits above -'9', with 'a' being 10 an 'z' being 35.

-

The radix argument must be an integer in the range 2 to 36.

-
- -
-

Implementation

-
String toRadixString(int radix);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/toSigned.html b/doc/api/dart-core/int/toSigned.html deleted file mode 100644 index 8b9efdd4..00000000 --- a/doc/api/dart-core/int/toSigned.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - toSigned method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toSigned
- -
- -
- - - -
-

toSigned method

- -
- int - toSigned -(int width) - -
-
-

Returns the least significant width bits of this integer, extending the -highest retained bit to the sign. This is the same as truncating the value -to fit in width bits using an signed 2-s complement representation. The -returned value has the same bit value in all positions higher than width.

-
                               V--sign bit-V
-16.toSigned(5) == -16   //  00010000 -> 11110000
-239.toSigned(5) == 15   //  11101111 -> 00001111
-                               ^           ^
-
-

This operation can be used to simulate arithmetic from low level languages. -For example, to increment an 8 bit signed quantity:

-
q = (q + 1).toSigned(8);
-
-

q will count from 0 up to 127, wrap to -128 and count back up to -127.

-

If the input value fits in width bits without truncation, the result is -the same as the input. The minimum width needed to avoid truncation of x -is x.bitLength + 1, i.e.

-
x == x.toSigned(x.bitLength + 1);
-
-
- -
-

Implementation

-
int toSigned(int width);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/toString.html b/doc/api/dart-core/int/toString.html deleted file mode 100644 index b347b2f2..00000000 --- a/doc/api/dart-core/int/toString.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - toString method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this integer.

-

The returned string is parsable by parse. -For any int i, it is guaranteed that -i == int.parse(i.toString()).

-
- -
-

Implementation

-
String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/toUnsigned.html b/doc/api/dart-core/int/toUnsigned.html deleted file mode 100644 index 2b6f0887..00000000 --- a/doc/api/dart-core/int/toUnsigned.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - toUnsigned method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toUnsigned
- -
- -
- - - -
-

toUnsigned method

- -
- int - toUnsigned -(int width) - -
-
-

Returns the least significant width bits of this integer as a -non-negative number (i.e. unsigned representation). The returned value has -zeros in all bit positions higher than width.

-
(-1).toUnsigned(5) == 31   // 11111111  ->  00011111
-
-

This operation can be used to simulate arithmetic from low level languages. -For example, to increment an 8 bit quantity:

-
q = (q + 1).toUnsigned(8);
-
-

q will count from 0 up to 255 and then wrap around to 0.

-

If the input fits in width bits without truncation, the result is the -same as the input. The minimum width needed to avoid truncation of x is -given by x.bitLength, i.e.

-
x == x.toUnsigned(x.bitLength);
-
-
- -
-

Implementation

-
int toUnsigned(int width);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/truncate.html b/doc/api/dart-core/int/truncate.html deleted file mode 100644 index f0472de8..00000000 --- a/doc/api/dart-core/int/truncate.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - truncate method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
truncate
- -
- -
- - - -
-

truncate method

- -
- int - truncate -() -
override
-
-
-

Returns this.

-
- -
-

Implementation

-
int truncate();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/truncateToDouble.html b/doc/api/dart-core/int/truncateToDouble.html deleted file mode 100644 index 8eaf96ad..00000000 --- a/doc/api/dart-core/int/truncateToDouble.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - truncateToDouble method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
truncateToDouble
- -
- -
- - - -
-

truncateToDouble method

- -
- double - truncateToDouble -() -
override
-
-
-

Returns this.toDouble().

-
- -
-

Implementation

-
double truncateToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/int/tryParse.html b/doc/api/dart-core/int/tryParse.html deleted file mode 100644 index 71223465..00000000 --- a/doc/api/dart-core/int/tryParse.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - tryParse method - int class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
tryParse
- -
- -
- - - -
-

tryParse method

- -
- int - tryParse -(String source, { int radix }) -
override
-
-
-

Parse source as a, possibly signed, integer literal and return its value.

-

Like parse except that this function returns null where a -similar call to parse would throw a FormatException, -and the source must still not be null.

-
- -
-

Implementation

-
external static int? tryParse(String source, {int? radix});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num-class.html b/doc/api/dart-core/num-class.html deleted file mode 100644 index bec48f5e..00000000 --- a/doc/api/dart-core/num-class.html +++ /dev/null @@ -1,652 +0,0 @@ - - - - - - - - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
num
- -
- -
- - - -
-

num class

- -
-

An integer or floating-point number.

-

It is a compile-time error for any type other than int or double -to attempt to extend or implement num.

-
- -
-
- -
Implemented types
-
- -
- - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- num() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- Returns a hash code for a numerical value. [...] -
read-only, override
-
-
- isFinite - bool -
-
- True if the number is finite; otherwise, false. [...] -
read-only
-
-
- isInfinite - bool -
-
- True if the number is positive infinity or negative infinity; otherwise, -false. -
read-only
-
-
- isNaN - bool -
-
- True if the number is the double Not-a-Number value; otherwise, false. -
read-only
-
-
- isNegative - bool -
-
- True if the number is negative; otherwise, false. [...] -
read-only
-
-
- sign - num -
-
- Returns minus one, zero or plus one depending on the sign and -numerical value of the number. [...] -
read-only
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- abs() - num - -
-
- Returns the absolute value of this num. - -
-
- ceil() - int - -
-
- Returns the least integer no smaller than this. [...] - -
-
- ceilToDouble() - double - -
-
- Returns the least double integer value no smaller than this. [...] - -
-
- clamp(num lowerLimit num upperLimit) - num - -
-
- Returns this num clamped to be in the range lowerLimit-upperLimit. [...] - -
-
- compareTo(num other) - int - -
-
- Compares this to other. [...] -
override
-
-
- floor() - int - -
-
- Returns the greatest integer no greater than this. [...] - -
-
- floorToDouble() - double - -
-
- Returns the greatest double integer value no greater than this. [...] - -
-
- remainder(num other) - num - -
-
- Returns the remainder of the truncating division of this by other. [...] - -
-
- round() - int - -
-
- Returns the integer closest to this. [...] - -
-
- roundToDouble() - double - -
-
- Returns the double integer value closest to this. [...] - -
-
- toDouble() - double - -
-
- Return this num as a double. [...] - -
-
- toInt() - int - -
-
- Truncates this num to an integer and returns the result as an int. - -
-
- toString() - String - -
-
- Returns the shortest string that correctly represent the input number. [...] -
override
-
-
- toStringAsExponential([int fractionDigits ]) - String - -
-
- Returns an exponential string-representation of this. [...] - -
-
- toStringAsFixed(int fractionDigits) - String - -
-
- Returns a decimal-point string-representation of this. [...] - -
-
- toStringAsPrecision(int precision) - String - -
-
- Converts this to a double and returns a string representation with -exactly precision significant digits. [...] - -
-
- truncate() - int - -
-
- Returns the integer obtained by discarding any fractional -digits from this. [...] - -
-
- truncateToDouble() - double - -
-
- Returns the double integer value obtained by discarding any fractional -digits from the double value of this. [...] - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator %(num other) - num - -
-
- Euclidean modulo operator. [...] - -
-
- operator *(num other) - num - -
-
- Multiplication operator. - -
-
- operator +(num other) - num - -
-
- Addition operator. - -
-
- operator -(num other) - num - -
-
- Subtraction operator. - -
-
- operator /(num other) - double - -
-
- Division operator. - -
-
- operator <(num other) - bool - -
-
- Relational less than operator. - -
-
- operator <=(num other) - bool - -
-
- Relational less than or equal operator. - -
-
- operator ==(Object other) - bool - -
-
- Test whether this value is numerically equal to other. [...] -
override
-
-
- operator >(num other) - bool - -
-
- Relational greater than operator. - -
-
- operator >=(num other) - bool - -
-
- Relational greater than or equal operator. - -
-
- operator unary-() - num - -
-
- Negate operator. - -
-
- operator ~/(num other) - int - -
-
- Truncating division operator. [...] - -
-
-
- - -
-

Static Methods

-
-
- parse(String input, [ num onError(String input) ]) - num - -
-
- Parses a string containing a number literal into a number. [...] - -
-
- tryParse(String input) - num - -
-
- Parses a string containing a number literal into a number. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/abs.html b/doc/api/dart-core/num/abs.html deleted file mode 100644 index 10d72ebb..00000000 --- a/doc/api/dart-core/num/abs.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - abs method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
abs
- -
- -
- - - -
-

abs method

- -
- num - abs -() - -
-
-

Returns the absolute value of this num.

-
- -
-

Implementation

-
num abs();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/ceil.html b/doc/api/dart-core/num/ceil.html deleted file mode 100644 index 6550b62e..00000000 --- a/doc/api/dart-core/num/ceil.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - ceil method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ceil
- -
- -
- - - -
-

ceil method

- -
- int - ceil -() - -
-
-

Returns the least integer no smaller than this.

-

If this is not finite (NaN or infinity), throws an UnsupportedError.

-
- -
-

Implementation

-
int ceil();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/ceilToDouble.html b/doc/api/dart-core/num/ceilToDouble.html deleted file mode 100644 index 591d23b9..00000000 --- a/doc/api/dart-core/num/ceilToDouble.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - ceilToDouble method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
ceilToDouble
- -
- -
- - - -
-

ceilToDouble method

- -
- double - ceilToDouble -() - -
-
-

Returns the least double integer value no smaller than this.

-

If this is already an integer valued double, including -0.0, or it is a -non-finite double value, the value is returned unmodified.

-

For the purpose of rounding, -0.0 is considered to be below 0.0. -A number d in the range -1.0 < d < 0.0 will return -0.0.

-

The result is always a double. -If this is a numerically large integer, the result may be an infinite -double.

-
- -
-

Implementation

-
double ceilToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/clamp.html b/doc/api/dart-core/num/clamp.html deleted file mode 100644 index 78322601..00000000 --- a/doc/api/dart-core/num/clamp.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - clamp method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
clamp
- -
- -
- - - -
-

clamp method

- -
- num - clamp -(num lowerLimit num upperLimit) - -
-
-

Returns this num clamped to be in the range lowerLimit-upperLimit.

-

The comparison is done using compareTo and therefore takes -0.0 into -account. This also implies that double.nan is treated as the maximal -double value.

-

The arguments lowerLimit and upperLimit must form a valid range where -lowerLimit.compareTo(upperLimit) <= 0.

-
- -
-

Implementation

-
num clamp(num lowerLimit, num upperLimit);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/compareTo.html b/doc/api/dart-core/num/compareTo.html deleted file mode 100644 index b969bb5c..00000000 --- a/doc/api/dart-core/num/compareTo.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - compareTo method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
compareTo
- -
- -
- - - -
-

compareTo method

- -
- int - compareTo -(num other) -
override
-
-
-

Compares this to other.

-

Returns a negative number if this is less than other, zero if they are -equal, and a positive number if this is greater than other.

-

The ordering represented by this method is a total ordering of num -values. All distinct doubles are non-equal, as are all distinct integers, -but integers are equal to doubles if they have the same numerical -value.

-

For doubles, the compareTo operation is different from the partial -ordering given by operator==, operator< and operator>. For example, -IEEE doubles impose that 0.0 == -0.0 and all comparison operations on -NaN return false.

-

This function imposes a complete ordering for doubles. When using -compareTo the following properties hold:

-
    -
  • All NaN values are considered equal, and greater than any numeric value.
  • -
  • -0.0 is less than 0.0 (and the integer 0), but greater than any non-zero -negative value.
  • -
  • Negative infinity is less than all other values and positive infinity is -greater than all non-NaN values.
  • -
  • All other values are compared using their numeric value.
  • -
-

Examples:

-
print(1.compareTo(2)); // => -1
-print(2.compareTo(1)); // => 1
-print(1.compareTo(1)); // => 0
-
-// The following comparisons yield different results than the
-// corresponding comparison operators.
-print((-0.0).compareTo(0.0));  // => -1
-print(double.nan.compareTo(double.nan));  // => 0
-print(double.infinity.compareTo(double.nan)); // => -1
-
-// -0.0, and NaN comparison operators have rules imposed by the IEEE
-// standard.
-print(-0.0 == 0.0); // => true
-print(double.nan == double.nan);  // => false
-print(double.infinity < double.nan);  // => false
-print(double.nan < double.infinity);  // => false
-print(double.nan == double.infinity);  // => false
-
-
- -
-

Implementation

-
int compareTo(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/floor.html b/doc/api/dart-core/num/floor.html deleted file mode 100644 index fbaf3a2c..00000000 --- a/doc/api/dart-core/num/floor.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - floor method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
floor
- -
- -
- - - -
-

floor method

- -
- int - floor -() - -
-
-

Returns the greatest integer no greater than this.

-

If this is not finite (NaN or infinity), throws an UnsupportedError.

-
- -
-

Implementation

-
int floor();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/floorToDouble.html b/doc/api/dart-core/num/floorToDouble.html deleted file mode 100644 index 7d85c475..00000000 --- a/doc/api/dart-core/num/floorToDouble.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - floorToDouble method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
floorToDouble
- -
- -
- - - -
-

floorToDouble method

- -
- double - floorToDouble -() - -
-
-

Returns the greatest double integer value no greater than this.

-

If this is already an integer valued double, including -0.0, or it is a -non-finite double value, the value is returned unmodified.

-

For the purpose of rounding, -0.0 is considered to be below 0.0. -A number d in the range 0.0 < d < 1.0 will return 0.0.

-

The result is always a double. -If this is a numerically large integer, the result may be an infinite -double.

-
- -
-

Implementation

-
double floorToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/hashCode.html b/doc/api/dart-core/num/hashCode.html deleted file mode 100644 index b5140030..00000000 --- a/doc/api/dart-core/num/hashCode.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - hashCode property - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
hashCode
- -
- -
- - - -
-

hashCode property

- - -
- -
- int - hashCode -
override
-
- -
-

Returns a hash code for a numerical value.

-

The hash code is compatible with equality. It returns the same value -for an int and a double with the same numerical value, and therefore -the same value for the doubles zero and minus zero.

-

No guarantees are made about the hash code of NaN values.

-
-
-

Implementation

-
int get hashCode;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/isFinite.html b/doc/api/dart-core/num/isFinite.html deleted file mode 100644 index 7f7a7659..00000000 --- a/doc/api/dart-core/num/isFinite.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - isFinite property - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isFinite
- -
- -
- - - -
-

isFinite property

- - -
- -
- bool - isFinite - -
- -
-

True if the number is finite; otherwise, false.

-

The only non-finite numbers are NaN, positive infinity, and -negative infinity.

-
-
-

Implementation

-
bool get isFinite;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/isInfinite.html b/doc/api/dart-core/num/isInfinite.html deleted file mode 100644 index 8a33a9d4..00000000 --- a/doc/api/dart-core/num/isInfinite.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - isInfinite property - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isInfinite
- -
- -
- - - -
-

isInfinite property

- - -
- -
- bool - isInfinite - -
- -
-

True if the number is positive infinity or negative infinity; otherwise, -false.

-
-
-

Implementation

-
bool get isInfinite;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/isNaN.html b/doc/api/dart-core/num/isNaN.html deleted file mode 100644 index 4a3de863..00000000 --- a/doc/api/dart-core/num/isNaN.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - isNaN property - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNaN
- -
- -
- - - -
-

isNaN property

- - -
- -
- bool - isNaN - -
- -
-

True if the number is the double Not-a-Number value; otherwise, false.

-
-
-

Implementation

-
bool get isNaN;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/isNegative.html b/doc/api/dart-core/num/isNegative.html deleted file mode 100644 index 0b321c83..00000000 --- a/doc/api/dart-core/num/isNegative.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - isNegative property - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
isNegative
- -
- -
- - - -
-

isNegative property

- - -
- -
- bool - isNegative - -
- -
-

True if the number is negative; otherwise, false.

-

Negative numbers are those less than zero, and the double -0.0.

-
-
-

Implementation

-
bool get isNegative;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/num.html b/doc/api/dart-core/num/num.html deleted file mode 100644 index 2dd8fed3..00000000 --- a/doc/api/dart-core/num/num.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - num constructor - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
num
- -
- -
- - - -
-

num constructor

- -
- - num() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_divide.html b/doc/api/dart-core/num/operator_divide.html deleted file mode 100644 index 22175193..00000000 --- a/doc/api/dart-core/num/operator_divide.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator / method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator /
- -
- -
- - - -
-

operator / method

- -
- double - operator / -(num other) - -
-
-

Division operator.

-
- -
-

Implementation

-
double operator /(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_equals.html b/doc/api/dart-core/num/operator_equals.html deleted file mode 100644 index 0fb5c584..00000000 --- a/doc/api/dart-core/num/operator_equals.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - operator == method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ==
- -
- -
- - - -
-

operator == method

- -
- bool - operator == -(Object other) -
override
-
-
-

Test whether this value is numerically equal to other.

-

If both operands are doubles, they are equal if they have the same -representation, except that:

-
    -
  • zero and minus zero (0.0 and -0.0) are considered equal. They -both have the numerical value zero.
  • -
  • NaN is not equal to anything, including NaN. If either operand is -NaN, the result is always false.
  • -
-

If one operand is a double and the other is an int, they are equal if -the double has an integer value (finite with no fractional part) and -identical(doubleValue.toInt(), intValue) is true.

-

If both operands are integers, they are equal if they have the same value.

-

Returns false if other is not a num.

-

Notice that the behavior for NaN is non-reflexive. This means that -equality of double values is not a proper equality relation, as is -otherwise required of operator==. Using NaN in, e.g., a HashSet -will fail to work. The behavior is the standard IEEE-754 equality of -doubles.

-

If you can avoid NaN values, the remaining doubles do have a proper -equality relation, and can be used safely.

-

Use compareTo for a comparison that distinguishes zero and minus zero, -and that considers NaN values as equal.

-
- -
-

Implementation

-
bool operator ==(Object other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_greater.html b/doc/api/dart-core/num/operator_greater.html deleted file mode 100644 index cce91601..00000000 --- a/doc/api/dart-core/num/operator_greater.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator > method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator >
- -
- -
- - - -
-

operator > method

- -
- bool - operator > -(num other) - -
-
-

Relational greater than operator.

-
- -
-

Implementation

-
bool operator >(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_greater_equal.html b/doc/api/dart-core/num/operator_greater_equal.html deleted file mode 100644 index 210e258d..00000000 --- a/doc/api/dart-core/num/operator_greater_equal.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator >= method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator >=
- -
- -
- - - -
-

operator >= method

- -
- bool - operator >= -(num other) - -
-
-

Relational greater than or equal operator.

-
- -
-

Implementation

-
bool operator >=(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_less.html b/doc/api/dart-core/num/operator_less.html deleted file mode 100644 index dd013c89..00000000 --- a/doc/api/dart-core/num/operator_less.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator < method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator <
- -
- -
- - - -
-

operator < method

- -
- bool - operator < -(num other) - -
-
-

Relational less than operator.

-
- -
-

Implementation

-
bool operator <(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_less_equal.html b/doc/api/dart-core/num/operator_less_equal.html deleted file mode 100644 index 390bb9da..00000000 --- a/doc/api/dart-core/num/operator_less_equal.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator <= method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator <=
- -
- -
- - - -
-

operator <= method

- -
- bool - operator <= -(num other) - -
-
-

Relational less than or equal operator.

-
- -
-

Implementation

-
bool operator <=(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_minus.html b/doc/api/dart-core/num/operator_minus.html deleted file mode 100644 index a3a2f10b..00000000 --- a/doc/api/dart-core/num/operator_minus.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator - method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator -
- -
- -
- - - -
-

operator - method

- -
- num - operator - -(num other) - -
-
-

Subtraction operator.

-
- -
-

Implementation

-
num operator -(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_modulo.html b/doc/api/dart-core/num/operator_modulo.html deleted file mode 100644 index d0bf9d81..00000000 --- a/doc/api/dart-core/num/operator_modulo.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - operator % method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator %
- -
- -
- - - -
-

operator % method

- -
- num - operator % -(num other) - -
-
-

Euclidean modulo operator.

-

Returns the remainder of the Euclidean division. The Euclidean division of -two integers a and b yields two integers q and r such that -a == b * q + r and 0 <= r < b.abs().

-

The Euclidean division is only defined for integers, but can be easily -extended to work with doubles. In that case r may have a non-integer -value, but it still verifies 0 <= r < |b|.

-

The sign of the returned value r is always positive.

-

See remainder for the remainder of the truncating division.

-
- -
-

Implementation

-
num operator %(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_multiply.html b/doc/api/dart-core/num/operator_multiply.html deleted file mode 100644 index d7b26143..00000000 --- a/doc/api/dart-core/num/operator_multiply.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator * method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator *
- -
- -
- - - -
-

operator * method

- -
- num - operator * -(num other) - -
-
-

Multiplication operator.

-
- -
-

Implementation

-
num operator *(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_plus.html b/doc/api/dart-core/num/operator_plus.html deleted file mode 100644 index d07a6297..00000000 --- a/doc/api/dart-core/num/operator_plus.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator + method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator +
- -
- -
- - - -
-

operator + method

- -
- num - operator + -(num other) - -
-
-

Addition operator.

-
- -
-

Implementation

-
num operator +(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_truncate_divide.html b/doc/api/dart-core/num/operator_truncate_divide.html deleted file mode 100644 index 7fc1d4a9..00000000 --- a/doc/api/dart-core/num/operator_truncate_divide.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - operator ~/ method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator ~/
- -
- -
- - - -
-

operator ~/ method

- -
- int - operator ~/ -(num other) - -
-
-

Truncating division operator.

-

If either operand is a double then the result of the truncating division -a ~/ b is equivalent to (a / b).truncate().toInt().

-

If both operands are ints then a ~/ b performs the truncating -integer division.

-
- -
-

Implementation

-
int operator ~/(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/operator_unary_minus.html b/doc/api/dart-core/num/operator_unary_minus.html deleted file mode 100644 index 7b8a8989..00000000 --- a/doc/api/dart-core/num/operator_unary_minus.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - operator unary- method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
operator unary-
- -
- -
- - - -
-

operator unary- method

- -
- num - operator unary- -() - -
-
-

Negate operator.

-
- -
-

Implementation

-
num operator -();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/parse.html b/doc/api/dart-core/num/parse.html deleted file mode 100644 index 8d26410f..00000000 --- a/doc/api/dart-core/num/parse.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - parse method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
parse
- -
- -
- - - -
-

parse method

- -
- num - parse -(String input, [ @deprecated num onError(String input) ]) - -
-
-

Parses a string containing a number literal into a number.

-

The method first tries to read the input as integer (similar to -int.parse without a radix). -If that fails, it tries to parse the input as a double (similar to -double.parse). -If that fails, too, it invokes onError with input, and the result -of that invocation becomes the result of calling parse.

-

If no onError is supplied, it defaults to a function that throws a -FormatException.

-

For any number n, this function satisfies -identical(n, num.parse(n.toString())) (except when n is a NaN double -with a payload).

-

The onError parameter is deprecated and will be removed. -Instead of num.parse(string, (string) { ... }), -you should use num.tryParse(string) ?? (...).

-
- -
-

Implementation

-
static num parse(String input, [@deprecated num onError(String input)?]) {
-  num? result = tryParse(input);
-  if (result != null) return result;
-  if (onError == null) throw FormatException(input);
-  return onError(input);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/remainder.html b/doc/api/dart-core/num/remainder.html deleted file mode 100644 index 7ba54ae4..00000000 --- a/doc/api/dart-core/num/remainder.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - remainder method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
remainder
- -
- -
- - - -
-

remainder method

- -
- num - remainder -(num other) - -
-
-

Returns the remainder of the truncating division of this by other.

-

The result r of this operation satisfies: -this == (this ~/ other) * other + r. -As a consequence the remainder r has the same sign as the divider this.

-
- -
-

Implementation

-
num remainder(num other);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/round.html b/doc/api/dart-core/num/round.html deleted file mode 100644 index 45b2ac95..00000000 --- a/doc/api/dart-core/num/round.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - round method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
round
- -
- -
- - - -
-

round method

- -
- int - round -() - -
-
-

Returns the integer closest to this.

-

Rounds away from zero when there is no closest integer: -(3.5).round() == 4 and (-3.5).round() == -4.

-

If this is not finite (NaN or infinity), throws an UnsupportedError.

-
- -
-

Implementation

-
int round();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/roundToDouble.html b/doc/api/dart-core/num/roundToDouble.html deleted file mode 100644 index a26596b8..00000000 --- a/doc/api/dart-core/num/roundToDouble.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - roundToDouble method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
roundToDouble
- -
- -
- - - -
-

roundToDouble method

- -
- double - roundToDouble -() - -
-
-

Returns the double integer value closest to this.

-

Rounds away from zero when there is no closest integer: -(3.5).roundToDouble() == 4 and (-3.5).roundToDouble() == -4.

-

If this is already an integer valued double, including -0.0, or it is a -non-finite double value, the value is returned unmodified.

-

For the purpose of rounding, -0.0 is considered to be below 0.0, -and -0.0 is therefore considered closer to negative numbers than 0.0. -This means that for a value, d in the range -0.5 < d < 0.0, -the result is -0.0.

-

The result is always a double. -If this is a numerically large integer, the result may be an infinite -double.

-
- -
-

Implementation

-
double roundToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/sign.html b/doc/api/dart-core/num/sign.html deleted file mode 100644 index 6125c379..00000000 --- a/doc/api/dart-core/num/sign.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - sign property - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
sign
- -
- -
- - - -
-

sign property

- - -
- -
- num - sign - -
- -
-

Returns minus one, zero or plus one depending on the sign and -numerical value of the number.

-

Returns minus one if the number is less than zero, -plus one if the number is greater than zero, -and zero if the number is equal to zero.

-

Returns NaN if the number is the double NaN value.

-

Returns a number of the same type as this number. -For doubles, -0.0.sign == -0.0.

-

The result satisfies:

-
n == n.sign * n.abs()
-
-

for all numbers n (except NaN, because NaN isn't == to itself).

-
-
-

Implementation

-
num get sign;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/toDouble.html b/doc/api/dart-core/num/toDouble.html deleted file mode 100644 index 253b1dd4..00000000 --- a/doc/api/dart-core/num/toDouble.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - toDouble method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toDouble
- -
- -
- - - -
-

toDouble method

- -
- double - toDouble -() - -
-
-

Return this num as a double.

-

If the number is not representable as a double, an -approximation is returned. For numerically large integers, the -approximation may be infinite.

-
- -
-

Implementation

-
double toDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/toInt.html b/doc/api/dart-core/num/toInt.html deleted file mode 100644 index 8b02f2cc..00000000 --- a/doc/api/dart-core/num/toInt.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - toInt method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toInt
- -
- -
- - - -
-

toInt method

- -
- int - toInt -() - -
-
-

Truncates this num to an integer and returns the result as an int.

-
- -
-

Implementation

-
int toInt();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/toString.html b/doc/api/dart-core/num/toString.html deleted file mode 100644 index 75acf94e..00000000 --- a/doc/api/dart-core/num/toString.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - toString method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns the shortest string that correctly represent the input number.

-

All doubles in the range 10^-6 (inclusive) to 10^21 (exclusive) -are converted to their decimal representation with at least one digit -after the decimal point. For all other doubles, -except for special values like NaN or Infinity, this method returns an -exponential representation (see toStringAsExponential).

-

Returns "NaN" for double.nan, "Infinity" for double.infinity, and -"-Infinity" for double.negativeInfinity.

-

An int is converted to a decimal representation with no decimal point.

-

Examples:

-
(0.000001).toString();  // "0.000001"
-(0.0000001).toString(); // "1e-7"
-(111111111111111111111.0).toString();  // "111111111111111110000.0"
-(100000000000000000000.0).toString();  // "100000000000000000000.0"
-(1000000000000000000000.0).toString(); // "1e+21"
-(1111111111111111111111.0).toString(); // "1.1111111111111111e+21"
-1.toString(); // "1"
-111111111111111111111.toString();  // "111111111111111110000"
-100000000000000000000.toString();  // "100000000000000000000"
-1000000000000000000000.toString(); // "1000000000000000000000"
-1111111111111111111111.toString(); // "1111111111111111111111"
-1.234e5.toString();   // 123400
-1234.5e6.toString();  // 1234500000
-12.345e67.toString(); // 1.2345e+68
-
-

Note: the conversion may round the output if the returned string -is accurate enough to uniquely identify the input-number. -For example the most precise representation of the double 9e59 equals -"899999999999999918767229449717619953810131273674690656206848", but -this method returns the shorter (but still uniquely identifying) "9e59".

-
- -
-

Implementation

-
String toString();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/toStringAsExponential.html b/doc/api/dart-core/num/toStringAsExponential.html deleted file mode 100644 index 472042c0..00000000 --- a/doc/api/dart-core/num/toStringAsExponential.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - toStringAsExponential method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toStringAsExponential
- -
- -
- - - -
-

toStringAsExponential method

- -
- String - toStringAsExponential -([int fractionDigits ]) - -
-
-

Returns an exponential string-representation of this.

-

Converts this to a double before computing the string representation.

-

If fractionDigits is given then it must be an integer satisfying: -0 <= fractionDigits <= 20. In this case the string contains exactly -fractionDigits after the decimal point. Otherwise, without the parameter, -the returned string uses the shortest number of digits that accurately -represent this.

-

If fractionDigits equals 0 then the decimal point is omitted. -Examples:

-
1.toStringAsExponential();       // 1e+0
-1.toStringAsExponential(3);      // 1.000e+0
-123456.toStringAsExponential();  // 1.23456e+5
-123456.toStringAsExponential(3); // 1.235e+5
-123.toStringAsExponential(0);    // 1e+2
-
-
- -
-

Implementation

-
String toStringAsExponential([int? fractionDigits]);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/toStringAsFixed.html b/doc/api/dart-core/num/toStringAsFixed.html deleted file mode 100644 index 80a831da..00000000 --- a/doc/api/dart-core/num/toStringAsFixed.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - toStringAsFixed method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toStringAsFixed
- -
- -
- - - -
-

toStringAsFixed method

- -
- String - toStringAsFixed -(int fractionDigits) - -
-
-

Returns a decimal-point string-representation of this.

-

Converts this to a double before computing the string representation.

-

If the absolute value of this is greater or equal to 10^21 then this -methods returns an exponential representation computed by -this.toStringAsExponential(). Otherwise the result -is the closest string representation with exactly fractionDigits digits -after the decimal point. If fractionDigits equals 0 then the decimal -point is omitted.

-

The parameter fractionDigits must be an integer satisfying: -0 <= fractionDigits <= 20.

-

Examples:

-
1.toStringAsFixed(3);  // 1.000
-(4321.12345678).toStringAsFixed(3);  // 4321.123
-(4321.12345678).toStringAsFixed(5);  // 4321.12346
-123456789012345.toStringAsFixed(3);  // 123456789012345.000
-10000000000000000.toStringAsFixed(4); // 10000000000000000.0000
-5.25.toStringAsFixed(0); // 5
-
-
- -
-

Implementation

-
String toStringAsFixed(int fractionDigits);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/toStringAsPrecision.html b/doc/api/dart-core/num/toStringAsPrecision.html deleted file mode 100644 index 82e6857a..00000000 --- a/doc/api/dart-core/num/toStringAsPrecision.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - toStringAsPrecision method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
toStringAsPrecision
- -
- -
- - - -
-

toStringAsPrecision method

- -
- String - toStringAsPrecision -(int precision) - -
-
-

Converts this to a double and returns a string representation with -exactly precision significant digits.

-

The parameter precision must be an integer satisfying: -1 <= precision <= 21.

-

Examples:

-
1.toStringAsPrecision(2);       // 1.0
-1e15.toStringAsPrecision(3);    // 1.00e+15
-1234567.toStringAsPrecision(3); // 1.23e+6
-1234567.toStringAsPrecision(9); // 1234567.00
-12345678901234567890.toStringAsPrecision(20); // 12345678901234567168
-12345678901234567890.toStringAsPrecision(14); // 1.2345678901235e+19
-0.00000012345.toStringAsPrecision(15); // 1.23450000000000e-7
-0.0000012345.toStringAsPrecision(15);  // 0.00000123450000000000
-
-
- -
-

Implementation

-
String toStringAsPrecision(int precision);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/truncate.html b/doc/api/dart-core/num/truncate.html deleted file mode 100644 index 857ef6c4..00000000 --- a/doc/api/dart-core/num/truncate.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - truncate method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
truncate
- -
- -
- - - -
-

truncate method

- -
- int - truncate -() - -
-
-

Returns the integer obtained by discarding any fractional -digits from this.

-

If this is not finite (NaN or infinity), throws an UnsupportedError.

-
- -
-

Implementation

-
int truncate();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/truncateToDouble.html b/doc/api/dart-core/num/truncateToDouble.html deleted file mode 100644 index 6c2b6aaa..00000000 --- a/doc/api/dart-core/num/truncateToDouble.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - truncateToDouble method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
truncateToDouble
- -
- -
- - - -
-

truncateToDouble method

- -
- double - truncateToDouble -() - -
-
-

Returns the double integer value obtained by discarding any fractional -digits from the double value of this.

-

If this is already an integer valued double, including -0.0, or it is a -non-finite double value, the value is returned unmodified.

-

For the purpose of rounding, -0.0 is considered to be below 0.0. -A number d in the range -1.0 < d < 0.0 will return -0.0, and -in the range 0.0 < d < 1.0 it will return 0.0.

-

The result is always a double. -If this is a numerically large integer, the result may be an infinite -double.

-
- -
-

Implementation

-
double truncateToDouble();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/num/tryParse.html b/doc/api/dart-core/num/tryParse.html deleted file mode 100644 index f7cfc721..00000000 --- a/doc/api/dart-core/num/tryParse.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - tryParse method - num class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
tryParse
- -
- -
- - - -
-

tryParse method

- -
- num - tryParse -(String input) - -
-
-

Parses a string containing a number literal into a number.

-

Like parse except that this function returns null for invalid inputs -instead of throwing.

-
- -
-

Implementation

-
static num? tryParse(String input) {
-  String source = input.trim();
-  // TODO(lrn): Optimize to detect format and result type in one check.
-  return int.tryParse(source) ?? double.tryParse(source);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/override-constant.html b/doc/api/dart-core/override-constant.html deleted file mode 100644 index 4a2d5886..00000000 --- a/doc/api/dart-core/override-constant.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - override constant - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
override
- -
- -
- - - -
-

override top-level constant

- -
- const override - = - const _Override() - -
-
-

The annotation @override marks an instance member as overriding a -superclass member with the same name.

-

The annotation applies to instance methods, getters and setters, and to -instance fields, where it means that the implicit getter and setter of the -field is marked as overriding, but the field itself is not.

-

The intent of the @override notation is to catch situations where a -superclass renames a member, and an independent subclass which used to -override the member, could silently continue working using the -superclass implementation.

-

The editor, or a similar tool aimed at the programmer, may report if no -declaration of an annotated member is inherited by the class from either a -superclass or an interface.

-

Use the @override annotation judiciously and only for methods where -the superclass is not under the programmer's control, the superclass is in a -different library or package, and it is not considered stable. -In any case, the use of @override is optional.

-

For example, the annotation is intentionally not used in the Dart platform -libraries, since they only depend on themselves.

-
-
-

Implementation

-
const Object override = _Override()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/pragma-class.html b/doc/api/dart-core/pragma-class.html deleted file mode 100644 index 26807b7d..00000000 --- a/doc/api/dart-core/pragma-class.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - - pragma class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
pragma
- -
- -
- - - -
-

pragma class

- -
-

A hint to tools.

-

Tools that work with Dart programs may accept hints to guide their behavior -as pragma annotations on declarations. -Each tool decides which hints it accepts, what they mean, and whether and -how they apply to sub-parts of the annotated entity.

-

Tools that recognize pragma hints should pick a pragma prefix to identify -the tool. They should recognize any hint with a name starting with their -prefix followed by : as if it was intended for that tool. A hint with a -prefix for another tool should be ignored (unless compatibility with that -other tool is a goal).

-

A tool may recognize unprefixed names as well, if they would recognize that -name with their own prefix in front.

-

If the hint can be parameterized, an extra options object can be added as well.

-

For example:

-
@pragma('Tool:pragma-name', [param1, param2, ...])
-class Foo { }
-
-@pragma('OtherTool:other-pragma')
-void foo() { }
-
-

Here class Foo is annotated with a Tool specific pragma 'pragma-name' and -function foo is annotated with a pragma 'other-pragma' specific to OtherTool.

-
- - -
-

Constructors

- -
-
- pragma(String name, [ Object options ]) -
-
- Creates a hint named name with optional options. -
const
-
factory
-
-
-
- -
-

Properties

- -
-
- name - String -
-
- The name of the hint. [...] -
final
-
-
- options - Object -
-
- Optional extra data parameterizing the hint. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/pragma/name.html b/doc/api/dart-core/pragma/name.html deleted file mode 100644 index d5f21e1d..00000000 --- a/doc/api/dart-core/pragma/name.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - name property - pragma class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
name
- -
- -
- - - -
-

name property

- -
- String - name -
final
-
-
-

The name of the hint.

-

A string that is recognized by one or more tools, or such a string prefixed -by a tool identifier and a colon, which is only recognized by that -particular tool.

-
-
-

Implementation

-
final String name
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/pragma/options.html b/doc/api/dart-core/pragma/options.html deleted file mode 100644 index c0884868..00000000 --- a/doc/api/dart-core/pragma/options.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - options property - pragma class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
options
- -
- -
- - - -
-

options property

- -
- Object - options -
final
-
-
-

Optional extra data parameterizing the hint.

-
-
-

Implementation

-
final Object? options
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/pragma/pragma.html b/doc/api/dart-core/pragma/pragma.html deleted file mode 100644 index cf41ccba..00000000 --- a/doc/api/dart-core/pragma/pragma.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - pragma constructor - pragma class - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
pragma
- -
- -
- - - -
-

pragma constructor

- -
- const - pragma(String name, [ Object options ]) -
- -
-

Creates a hint named name with optional options.

-
- -
-

Implementation

-
const factory pragma(String name, [Object? options]) = pragma._;
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/print.html b/doc/api/dart-core/print.html deleted file mode 100644 index ae2450db..00000000 --- a/doc/api/dart-core/print.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - print function - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
print
- -
- -
- - - -
-

print function

- -
- void - print -(Object object) -
-
-

Prints a string representation of the object to the console.

-
- -
-

Implementation

-
void print(Object? object) {
-  String line = object.toString();
-  var toZone = printToZone;
-  if (toZone == null) {
-    printToConsole(line);
-  } else {
-    toZone(line);
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/provisional-constant.html b/doc/api/dart-core/provisional-constant.html deleted file mode 100644 index 4ddf7c96..00000000 --- a/doc/api/dart-core/provisional-constant.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - provisional constant - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
provisional
- -
- -
- - - -
-

provisional top-level constant

- -
- const provisional - = - null - -
-
-

An annotation that was used during development of Dart 2.

-

Should not be used any more.

-
-
-

Implementation

-
const Null provisional = null
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-core/proxy-constant.html b/doc/api/dart-core/proxy-constant.html deleted file mode 100644 index 3fe539ad..00000000 --- a/doc/api/dart-core/proxy-constant.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - proxy constant - dart:core library - Dart API - - - - - - - - - - - - - -
- -
- - -
proxy
- -
- -
- - - -
-

proxy top-level constant

- -
- const proxy - = - const _Proxy() - -
-
-

This annotation is deprecated and will be removed in Dart 2.

-

Dart 2 has a more restrictive type system than Dart 1, and it requires -method access to be either through a known interface or by using -dynamic invocations. The original intent of @proxy (to implement a class -that isn't known statically, as documented at the end of this text), -is not supported by Dart 2. -To continue to perform dynamic invocations on an object, -it should be accessed through a reference of type dynamic.

-

The annotation @proxy marks a class as implementing members dynamically -through noSuchMethod.

-

The annotation applies to any class. It is inherited by subclasses from both -superclass and interfaces.

-

If a class is annotated with @proxy, or it implements any class that is -annotated, then all member accesses are allowed on an object of that type. -As such, it is not a static type warning to access any member of the object -which is not implemented by the class, or to call a method with a different -number of parameters than it is declared with.

-

The annotation does not change which classes the annotated class implements, -and does not prevent static warnings for assigning an object to a variable -with a static type not implemented by the object.

-

The suppression of warnings only affect static type warnings about -member access. -The runtime type of the object is unaffected. -It is not considered to implement any special interfaces, -so assigning it to a typed variable may fail in checked mode, -and testing it with the is operator -will only return true for types it actually implements or extends. -Accessing a member which isn't implemented by the class -will cause the noSuchMethod method to be called normally, -the @proxy annotation merely states the intent to handle (some of) those -noSuchMethod calls gracefully.

-

A class that marked as @proxy should override the noSuchMethod -declared on Object.

-

The intent of the @proxy notation is to create objects that implement a -type (or multiple types) that are not known at compile time. If the types -are known at compile time, a class can be written that implements these -types.

-
-
-

Implementation

-
const Object proxy = _Proxy()
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Counter-class.html b/doc/api/dart-developer/Counter-class.html deleted file mode 100644 index 3e006706..00000000 --- a/doc/api/dart-developer/Counter-class.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - Counter class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Counter
- -
- -
- - - -
-

Counter class

- -
-

A changing value. Initial value is 0.0.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Counter(String name String description) -
-
- -
-
-
- -
-

Properties

- -
-
- value - double -
-
- -
read / write
-
-
- description - String -
-
- description of this metric. -
final, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- name - String -
-
- name of this metric. -
final, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Counter/Counter.html b/doc/api/dart-developer/Counter/Counter.html deleted file mode 100644 index 089ead8a..00000000 --- a/doc/api/dart-developer/Counter/Counter.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - Counter constructor - Counter class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Counter
- -
- -
- - - -
-

Counter constructor

- -
- - Counter(String name String description) -
- - -
-

Implementation

-
Counter(String name, String description) : super(name, description);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Counter/value.html b/doc/api/dart-developer/Counter/value.html deleted file mode 100644 index 1071f10e..00000000 --- a/doc/api/dart-developer/Counter/value.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - value property - Counter class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
value
- -
- -
- - - -
-

value property

- - -
- -
- double - value - -
- -
-

Implementation

-
double get value => _value;
-
-
- -
- -
- void - value= -(double v) - -
- -
-

Implementation

-
set value(double v) {
-  _value = v;
-}
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Flow-class.html b/doc/api/dart-developer/Flow-class.html deleted file mode 100644 index ada68fde..00000000 --- a/doc/api/dart-developer/Flow-class.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - Flow class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Flow
- -
- -
- - - -
-

Flow class

- -
-

A class to represent Flow events.

-

Flow objects are used to thread flow events between timeline slices, -for example, those created with the Timeline class below. Adding -Flow objects cause arrows to be drawn between slices in Chrome's trace -viewer. The arrows start at e.g Timeline events that are passed a -Flow.begin object, go through Timeline events that are passed a -Flow.step object, and end at Timeline events that are passed a -Flow.end object, all having the same Flow.id. For example:

-
var flow = Flow.begin();
-Timeline.timeSync('flow_test', () {
-  doSomething();
-}, flow: flow);
-
-Timeline.timeSync('flow_test', () {
-  doSomething();
-}, flow: Flow.step(flow.id));
-
-Timeline.timeSync('flow_test', () {
-  doSomething();
-}, flow: Flow.end(flow.id));
-
-
- - - -
-

Properties

- -
-
- id - int -
-
- The flow id of the flow event. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- begin({int id }) - Flow - -
-
- A "begin" Flow event. [...] - -
-
- end(int id) - Flow - -
-
- An "end" Flow event. [...] - -
-
- step(int id) - Flow - -
-
- A "step" Flow event. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Flow/begin.html b/doc/api/dart-developer/Flow/begin.html deleted file mode 100644 index bc78447d..00000000 --- a/doc/api/dart-developer/Flow/begin.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - begin method - Flow class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
begin
- -
- -
- - - -
-

begin method

- -
- Flow - begin -({int id }) - -
-
-

A "begin" Flow event.

-

When passed to a Timeline method, generates a "begin" Flow event. -If id is not provided, an id that conflicts with no other Dart-generated -flow id's will be generated.

-
- -
-

Implementation

-
static Flow begin({int? id}) {
-  return new Flow._(_begin, id ?? _getNextAsyncId());
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Flow/end.html b/doc/api/dart-developer/Flow/end.html deleted file mode 100644 index 996baf60..00000000 --- a/doc/api/dart-developer/Flow/end.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - end method - Flow class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
end
- -
- -
- - - -
-

end method

- -
- Flow - end -(int id) - -
-
-

An "end" Flow event.

-

When passed to a Timeline method, generates a "end" Flow event. -The id argument is required. It can come either from another Flow -event, or some id that comes from the environment.

-
- -
-

Implementation

-
static Flow end(int id) => new Flow._(_end, id);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Flow/id.html b/doc/api/dart-developer/Flow/id.html deleted file mode 100644 index 4384a851..00000000 --- a/doc/api/dart-developer/Flow/id.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - id property - Flow class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
id
- -
- -
- - - -
-

id property

- -
- int - id -
final
-
-
-

The flow id of the flow event.

-
-
-

Implementation

-
final int id
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Flow/step.html b/doc/api/dart-developer/Flow/step.html deleted file mode 100644 index 6da6e268..00000000 --- a/doc/api/dart-developer/Flow/step.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - step method - Flow class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
step
- -
- -
- - - -
-

step method

- -
- Flow - step -(int id) - -
-
-

A "step" Flow event.

-

When passed to a Timeline method, generates a "step" Flow event. -The id argument is required. It can come either from another Flow -event, or some id that comes from the environment.

-
- -
-

Implementation

-
static Flow step(int id) => new Flow._(_step, id);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Gauge-class.html b/doc/api/dart-developer/Gauge-class.html deleted file mode 100644 index e5b2542c..00000000 --- a/doc/api/dart-developer/Gauge-class.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - - Gauge class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Gauge
- -
- -
- - - -
-

Gauge class

- -
-

A measured value with a min and max. Initial value is min. Value will -be clamped to the interval min, max.

-
- -
-
-
Inheritance
-
- - - - - -
-
- -
-

Constructors

- -
-
- Gauge(String name, String description, double min double max) -
-
- -
-
-
- -
-

Properties

- -
-
- max - double -
-
- -
final
-
-
- min - double -
-
- -
final
-
-
- value - double -
-
- -
read / write
-
-
- description - String -
-
- description of this metric. -
final, inherited
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- name - String -
-
- name of this metric. -
final, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Gauge/Gauge.html b/doc/api/dart-developer/Gauge/Gauge.html deleted file mode 100644 index a230bc44..00000000 --- a/doc/api/dart-developer/Gauge/Gauge.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - Gauge constructor - Gauge class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Gauge
- -
- -
- - - -
-

Gauge constructor

- -
- - Gauge(String name, String description, double min double max) -
- - -
-

Implementation

-
Gauge(String name, String description, this.min, this.max)
-    : _value = min,
-      super(name, description) {
-  // TODO: When NNBD is complete, delete the following two lines.
-  ArgumentError.checkNotNull(min, 'min');
-  ArgumentError.checkNotNull(max, 'max');
-  if (!(min < max)) throw new ArgumentError('min must be less than max');
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Gauge/max.html b/doc/api/dart-developer/Gauge/max.html deleted file mode 100644 index d20783a6..00000000 --- a/doc/api/dart-developer/Gauge/max.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - max property - Gauge class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
max
- -
- -
- - - -
-

max property

- -
- double - max -
final
-
-
-

Implementation

-
final double max
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Gauge/min.html b/doc/api/dart-developer/Gauge/min.html deleted file mode 100644 index f4f86c1c..00000000 --- a/doc/api/dart-developer/Gauge/min.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - min property - Gauge class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
min
- -
- -
- - - -
-

min property

- -
- double - min -
final
-
-
-

Implementation

-
final double min
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Gauge/value.html b/doc/api/dart-developer/Gauge/value.html deleted file mode 100644 index b5465ddf..00000000 --- a/doc/api/dart-developer/Gauge/value.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - value property - Gauge class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
value
- -
- -
- - - -
-

value property

- - -
- -
- double - value - -
- -
-

Implementation

-
double get value => _value;
-
-
- -
- -
- void - value= -(double v) - -
- -
-

Implementation

-
set value(double v) {
-  if (v < min) {
-    v = min;
-  } else if (v > max) {
-    v = max;
-  }
-  _value = v;
-}
-
-
-
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Metric-class.html b/doc/api/dart-developer/Metric-class.html deleted file mode 100644 index 90ef5e3e..00000000 --- a/doc/api/dart-developer/Metric-class.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - - Metric class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Metric
- -
- -
- - - -
-

Metric class

- -
-

Abstract Metric class. Metric names must be unique, are hierarchical, -and use periods as separators. For example, 'a.b.c'. Uniqueness is only -enforced when a Metric is registered. The name of a metric cannot contain -the slash ('/') character.

-
- -
-
- - - -
Implementers
-
- - -
-
- -
-

Constructors

- -
-
- Metric(String name String description) -
-
- -
-
-
- -
-

Properties

- -
-
- description - String -
-
- description of this metric. -
final
-
-
- name - String -
-
- name of this metric. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Metric/Metric.html b/doc/api/dart-developer/Metric/Metric.html deleted file mode 100644 index a07f6cbd..00000000 --- a/doc/api/dart-developer/Metric/Metric.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - Metric constructor - Metric class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Metric
- -
- -
- - - -
-

Metric constructor

- -
- - Metric(String name String description) -
- - -
-

Implementation

-
Metric(this.name, this.description) {
-  if ((name == 'vm') || name.contains('/')) {
-    throw new ArgumentError('Invalid Metric name.');
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Metric/description.html b/doc/api/dart-developer/Metric/description.html deleted file mode 100644 index 1e2d42a1..00000000 --- a/doc/api/dart-developer/Metric/description.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - description property - Metric class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
description
- -
- -
- - - -
-

description property

- -
- String - description -
final
-
-
-

description of this metric.

-
-
-

Implementation

-
final String description
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Metric/name.html b/doc/api/dart-developer/Metric/name.html deleted file mode 100644 index f3219fae..00000000 --- a/doc/api/dart-developer/Metric/name.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - name property - Metric class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
name
- -
- -
- - - -
-

name property

- -
- String - name -
final
-
-
-

name of this metric.

-
-
-

Implementation

-
final String name
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Metrics-class.html b/doc/api/dart-developer/Metrics-class.html deleted file mode 100644 index 8a10c759..00000000 --- a/doc/api/dart-developer/Metrics-class.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - - Metrics class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Metrics
- -
- -
- - - -
-

Metrics class

- - - -
-

Constructors

- -
-
- Metrics() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- deregister(Metric metric) - → void - -
-
- Deregister Metrics to make them not visible to Observatory. - -
-
- register(Metric metric) - → void - -
-
- Register Metrics to make them visible to Observatory. - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Metrics/Metrics.html b/doc/api/dart-developer/Metrics/Metrics.html deleted file mode 100644 index 92123fd3..00000000 --- a/doc/api/dart-developer/Metrics/Metrics.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Metrics constructor - Metrics class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Metrics
- -
- -
- - - -
-

Metrics constructor

- -
- - Metrics() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Metrics/deregister.html b/doc/api/dart-developer/Metrics/deregister.html deleted file mode 100644 index 19094965..00000000 --- a/doc/api/dart-developer/Metrics/deregister.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - deregister method - Metrics class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
deregister
- -
- -
- - - -
-

deregister method

- -
- void - deregister -(Metric metric) - -
-
-

Deregister Metrics to make them not visible to Observatory.

-
- -
-

Implementation

-
static void deregister(Metric metric) {
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(metric, 'metric');
-  _metrics.remove(metric.name);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Metrics/register.html b/doc/api/dart-developer/Metrics/register.html deleted file mode 100644 index 6fef1b0c..00000000 --- a/doc/api/dart-developer/Metrics/register.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - register method - Metrics class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
register
- -
- -
- - - -
-

register method

- -
- void - register -(Metric metric) - -
-
-

Register Metrics to make them visible to Observatory.

-
- -
-

Implementation

-
static void register(Metric metric) {
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(metric, 'metric');
-  if (_metrics[metric.name] != null) {
-    throw new ArgumentError('Registered metrics have unique names');
-  }
-  _metrics[metric.name] = metric;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Service-class.html b/doc/api/dart-developer/Service-class.html deleted file mode 100644 index 2830743b..00000000 --- a/doc/api/dart-developer/Service-class.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - Service class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Service
- -
- -
- - - -
-

Service class

- -
-

Access information about the service protocol and control the web server -that provides access to the services provided by the Dart VM for -debugging and inspecting Dart programs.

-
- - -
-

Constructors

- -
-
- Service() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - -
-

Static Methods

-
-
- controlWebServer({bool enable: false bool silenceOutput }) - Future<ServiceProtocolInfo> - -
-
- Control the web server that the service protocol is accessed through. -enable is used as a toggle to enable or disable the web server -servicing requests. If silenceOutput is provided and is true, -the server will not output information to the console. - -
-
- getInfo() - Future<ServiceProtocolInfo> - -
-
- Get information about the service protocol (version number and -Uri to access the service). - -
-
- getIsolateID(Isolate isolate) - String - -
-
- Returns a String token representing the ID of isolate. [...] - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Service/Service.html b/doc/api/dart-developer/Service/Service.html deleted file mode 100644 index 07498489..00000000 --- a/doc/api/dart-developer/Service/Service.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - Service constructor - Service class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Service
- -
- -
- - - -
-

Service constructor

- -
- - Service() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Service/controlWebServer.html b/doc/api/dart-developer/Service/controlWebServer.html deleted file mode 100644 index ecce5bf0..00000000 --- a/doc/api/dart-developer/Service/controlWebServer.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - controlWebServer method - Service class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
controlWebServer
- -
- -
- - - -
-

controlWebServer method

- -
- Future<ServiceProtocolInfo> - controlWebServer -({bool enable: false bool silenceOutput }) - -
-
-

Control the web server that the service protocol is accessed through. -enable is used as a toggle to enable or disable the web server -servicing requests. If silenceOutput is provided and is true, -the server will not output information to the console.

-
- -
-

Implementation

-
static Future<ServiceProtocolInfo> controlWebServer(
-    {bool enable = false, bool? silenceOutput}) async {
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(enable, 'enable');
-  // Port to receive response from service isolate.
-  final RawReceivePort receivePort = new RawReceivePort();
-  final Completer<Uri> uriCompleter = new Completer<Uri>();
-  receivePort.handler = (Uri uri) => uriCompleter.complete(uri);
-  // Request the information from the service isolate.
-  _webServerControl(receivePort.sendPort, enable, silenceOutput);
-  // Await the response from the service isolate.
-  Uri uri = await uriCompleter.future;
-  // Close the port.
-  receivePort.close();
-  return new ServiceProtocolInfo(uri);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Service/getInfo.html b/doc/api/dart-developer/Service/getInfo.html deleted file mode 100644 index 79f40ea4..00000000 --- a/doc/api/dart-developer/Service/getInfo.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - getInfo method - Service class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
getInfo
- -
- -
- - - -
-

getInfo method

- -
- Future<ServiceProtocolInfo> - getInfo -() - -
-
-

Get information about the service protocol (version number and -Uri to access the service).

-
- -
-

Implementation

-
static Future<ServiceProtocolInfo> getInfo() async {
-  // Port to receive response from service isolate.
-  final RawReceivePort receivePort = new RawReceivePort();
-  final Completer<Uri?> uriCompleter = new Completer<Uri?>();
-  receivePort.handler = (Uri? uri) => uriCompleter.complete(uri);
-  // Request the information from the service isolate.
-  _getServerInfo(receivePort.sendPort);
-  // Await the response from the service isolate.
-  Uri? uri = await uriCompleter.future;
-  // Close the port.
-  receivePort.close();
-  return new ServiceProtocolInfo(uri);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Service/getIsolateID.html b/doc/api/dart-developer/Service/getIsolateID.html deleted file mode 100644 index 7ffe5c5a..00000000 --- a/doc/api/dart-developer/Service/getIsolateID.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - getIsolateID method - Service class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
getIsolateID
- -
- -
- - - -
-

getIsolateID method

- -
- String - getIsolateID -(Isolate isolate) - -
-
-

Returns a String token representing the ID of isolate.

-

Returns null if the running Dart environment does not support the service -protocol.

-
- -
-

Implementation

-
static String? getIsolateID(Isolate isolate) {
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(isolate, 'isolate');
-  return _getIsolateIDFromSendPort(isolate.controlPort);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionHandler.html b/doc/api/dart-developer/ServiceExtensionHandler.html deleted file mode 100644 index 80734072..00000000 --- a/doc/api/dart-developer/ServiceExtensionHandler.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - ServiceExtensionHandler typedef - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
ServiceExtensionHandler
- -
- -
- - - -
-

ServiceExtensionHandler typedef

- -
- Future<ServiceExtensionResponse> - ServiceExtensionHandler -(String method, Map<String, String> parameters) -
- -
-

A service protocol extension handler. Registered with registerExtension.

-

Must complete to a ServiceExtensionResponse. method is the method name -of the service protocol request, and parameters is a map holding the -parameters to the service protocol request.

-

NOTE: all parameter names and values are encoded as strings.

-
-
-

Implementation

-
typedef Future<ServiceExtensionResponse> ServiceExtensionHandler(
-    String method, Map<String, String> parameters);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse-class.html b/doc/api/dart-developer/ServiceExtensionResponse-class.html deleted file mode 100644 index 9aa8663a..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse-class.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
ServiceExtensionResponse
- -
- -
- - - -
-

ServiceExtensionResponse class

- -
-

A response to a service protocol extension RPC.

-

If the RPC was successful, use ServiceExtensionResponse.result, otherwise -use ServiceExtensionResponse.error.

-
- - -
-

Constructors

- -
-
- ServiceExtensionResponse.error(int errorCode, String errorDetail) -
-
- Creates an error response to a service protocol extension RPC. [...] -
-
- ServiceExtensionResponse.result(String result) -
-
- Creates a successful response to a service protocol extension RPC. [...] -
-
-
- -
-

Properties

- -
-
- errorCode - int -
-
- The error code associated with a failed service protocol extension RPC. -
final
-
-
- errorDetail - String -
-
- The details of a failed service protocol extension RPC. -
final
-
-
- result - String -
-
- The result of a successful service protocol extension RPC. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- isError() - bool - -
-
- Determines if this response represents an error. - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - -
-

Constants

- -
-
- extensionError - → const int -
-
- Generic extension error code. - -
- -32000 -
-
-
- extensionErrorMax - → const int -
-
- Maximum extension provided error code. - -
- -32000 -
-
-
- extensionErrorMin - → const int -
-
- Minimum extension provided error code. - -
- -32016 -
-
-
- invalidParams - → const int -
-
- Invalid method parameter(s) error code. - -
- -32602 -
-
-
- kExtensionError - → const int -
-
- Generic extension error code. - -
- extensionError -
-
-
- kExtensionErrorMax - → const int -
-
- Maximum extension provided error code. - -
- extensionErrorMax -
-
-
- kExtensionErrorMin - → const int -
-
- Minimum extension provided error code. - -
- extensionErrorMin -
-
-
- kInvalidParams - → const int -
-
- Invalid method parameter(s) error code. - -
- invalidParams -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/ServiceExtensionResponse.error.html b/doc/api/dart-developer/ServiceExtensionResponse/ServiceExtensionResponse.error.html deleted file mode 100644 index 652425da..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/ServiceExtensionResponse.error.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - ServiceExtensionResponse.error constructor - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
ServiceExtensionResponse.error
- -
- -
- - - -
-

ServiceExtensionResponse.error constructor

- -
- - ServiceExtensionResponse.error(int errorCode, String errorDetail) -
- -
-

Creates an error response to a service protocol extension RPC.

-

Requires errorCode to be invalidParams or between extensionErrorMin -and extensionErrorMax. Requires errorDetail to be a JSON object -encoded as a string. When forming the JSON-RPC message errorDetail will -be inlined directly.

-
- -
-

Implementation

-
ServiceExtensionResponse.error(int errorCode, String errorDetail)
-    : result = null,
-      errorCode = errorCode,
-      errorDetail = errorDetail {
-  _validateErrorCode(errorCode);
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(errorDetail, "errorDetail");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/ServiceExtensionResponse.result.html b/doc/api/dart-developer/ServiceExtensionResponse/ServiceExtensionResponse.result.html deleted file mode 100644 index 2234ecaa..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/ServiceExtensionResponse.result.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - ServiceExtensionResponse.result constructor - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
ServiceExtensionResponse.result
- -
- -
- - - -
-

ServiceExtensionResponse.result constructor

- -
- - ServiceExtensionResponse.result(String result) -
- -
-

Creates a successful response to a service protocol extension RPC.

-

Requires result to be a JSON object encoded as a string. When forming -the JSON-RPC message result will be inlined directly.

-
- -
-

Implementation

-
ServiceExtensionResponse.result(String result)
-    : result = result,
-      errorCode = null,
-      errorDetail = null {
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(result, "result");
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/errorCode.html b/doc/api/dart-developer/ServiceExtensionResponse/errorCode.html deleted file mode 100644 index 85d7d0f9..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/errorCode.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - errorCode property - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
errorCode
- -
- -
- - - -
-

errorCode property

- -
- int - errorCode -
final
-
-
-

The error code associated with a failed service protocol extension RPC.

-
-
-

Implementation

-
final int? errorCode
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/errorDetail.html b/doc/api/dart-developer/ServiceExtensionResponse/errorDetail.html deleted file mode 100644 index 2ba0ee5c..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/errorDetail.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - errorDetail property - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
errorDetail
- -
- -
- - - -
-

errorDetail property

- -
- String - errorDetail -
final
-
-
-

The details of a failed service protocol extension RPC.

-
-
-

Implementation

-
final String? errorDetail
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/extensionError-constant.html b/doc/api/dart-developer/ServiceExtensionResponse/extensionError-constant.html deleted file mode 100644 index 7dbb5c23..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/extensionError-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - extensionError constant - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
extensionError
- -
- -
- - - -
-

extensionError constant

- -
- int - const extensionError - = - -32000 -
- -
-

Generic extension error code.

-
-
-

Implementation

-
static const extensionError = -32000
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/extensionErrorMax-constant.html b/doc/api/dart-developer/ServiceExtensionResponse/extensionErrorMax-constant.html deleted file mode 100644 index 13161183..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/extensionErrorMax-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - extensionErrorMax constant - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
extensionErrorMax
- -
- -
- - - -
-

extensionErrorMax constant

- -
- int - const extensionErrorMax - = - -32000 -
- -
-

Maximum extension provided error code.

-
-
-

Implementation

-
static const extensionErrorMax = -32000
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/extensionErrorMin-constant.html b/doc/api/dart-developer/ServiceExtensionResponse/extensionErrorMin-constant.html deleted file mode 100644 index 65df7934..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/extensionErrorMin-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - extensionErrorMin constant - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
extensionErrorMin
- -
- -
- - - -
-

extensionErrorMin constant

- -
- int - const extensionErrorMin - = - -32016 -
- -
-

Minimum extension provided error code.

-
-
-

Implementation

-
static const extensionErrorMin = -32016
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/invalidParams-constant.html b/doc/api/dart-developer/ServiceExtensionResponse/invalidParams-constant.html deleted file mode 100644 index f3434d1a..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/invalidParams-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - invalidParams constant - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
invalidParams
- -
- -
- - - -
-

invalidParams constant

- -
- int - const invalidParams - = - -32602 -
- -
-

Invalid method parameter(s) error code.

-
-
-

Implementation

-
static const invalidParams = -32602
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/isError.html b/doc/api/dart-developer/ServiceExtensionResponse/isError.html deleted file mode 100644 index 53ee5183..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/isError.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - isError method - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
isError
- -
- -
- - - -
-

isError method

- -
- bool - isError -() - -
-
-

Determines if this response represents an error.

-
- -
-

Implementation

-
bool isError() => (errorCode != null) && (errorDetail != null);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/kExtensionError-constant.html b/doc/api/dart-developer/ServiceExtensionResponse/kExtensionError-constant.html deleted file mode 100644 index e4e250d9..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/kExtensionError-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - kExtensionError constant - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
kExtensionError
- -
- -
- - - -
-

kExtensionError constant

- -
- int - const kExtensionError - = - extensionError -
- -
-

Generic extension error code.

-
-
-

Implementation

-
static const kExtensionError = extensionError
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/kExtensionErrorMax-constant.html b/doc/api/dart-developer/ServiceExtensionResponse/kExtensionErrorMax-constant.html deleted file mode 100644 index 0c8bd956..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/kExtensionErrorMax-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - kExtensionErrorMax constant - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
kExtensionErrorMax
- -
- -
- - - -
-

kExtensionErrorMax constant

- -
- int - const kExtensionErrorMax - = - extensionErrorMax -
- -
-

Maximum extension provided error code.

-
-
-

Implementation

-
static const kExtensionErrorMax = extensionErrorMax
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/kExtensionErrorMin-constant.html b/doc/api/dart-developer/ServiceExtensionResponse/kExtensionErrorMin-constant.html deleted file mode 100644 index 4980914e..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/kExtensionErrorMin-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - kExtensionErrorMin constant - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
kExtensionErrorMin
- -
- -
- - - -
-

kExtensionErrorMin constant

- -
- int - const kExtensionErrorMin - = - extensionErrorMin -
- -
-

Minimum extension provided error code.

-
-
-

Implementation

-
static const kExtensionErrorMin = extensionErrorMin
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/kInvalidParams-constant.html b/doc/api/dart-developer/ServiceExtensionResponse/kInvalidParams-constant.html deleted file mode 100644 index cadec028..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/kInvalidParams-constant.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - kInvalidParams constant - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
kInvalidParams
- -
- -
- - - -
-

kInvalidParams constant

- -
- int - const kInvalidParams - = - invalidParams -
- -
-

Invalid method parameter(s) error code.

-
-
-

Implementation

-
static const kInvalidParams = invalidParams
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceExtensionResponse/result.html b/doc/api/dart-developer/ServiceExtensionResponse/result.html deleted file mode 100644 index 832e2041..00000000 --- a/doc/api/dart-developer/ServiceExtensionResponse/result.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - result property - ServiceExtensionResponse class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
result
- -
- -
- - - -
-

result property

- -
- String - result -
final
-
-
-

The result of a successful service protocol extension RPC.

-
-
-

Implementation

-
final String? result
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceProtocolInfo-class.html b/doc/api/dart-developer/ServiceProtocolInfo-class.html deleted file mode 100644 index 59d2c79c..00000000 --- a/doc/api/dart-developer/ServiceProtocolInfo-class.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - ServiceProtocolInfo class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
ServiceProtocolInfo
- -
- -
- - - -
-

ServiceProtocolInfo class

- -
-

Service protocol is the protocol that a client like the Observatory -could use to access the services provided by the Dart VM for -debugging and inspecting Dart programs. This class encapsulates the -version number and Uri for accessing this service.

-
- - -
-

Constructors

- -
-
- ServiceProtocolInfo(Uri serverUri) -
-
- -
-
-
- -
-

Properties

- -
-
- majorVersion - int -
-
- The major version of the protocol. If the running Dart environment does -not support the service protocol, this is 0. -
final
-
-
- minorVersion - int -
-
- The minor version of the protocol. If the running Dart environment does -not support the service protocol, this is 0. -
final
-
-
- serverUri - Uri -
-
- The Uri to access the service. If the web server is not running, this -will be null. -
final
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- toString() - String - -
-
- Returns a string representation of this object. -
override
-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceProtocolInfo/ServiceProtocolInfo.html b/doc/api/dart-developer/ServiceProtocolInfo/ServiceProtocolInfo.html deleted file mode 100644 index 457f2046..00000000 --- a/doc/api/dart-developer/ServiceProtocolInfo/ServiceProtocolInfo.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - ServiceProtocolInfo constructor - ServiceProtocolInfo class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
ServiceProtocolInfo
- -
- -
- - - -
-

ServiceProtocolInfo constructor

- -
- - ServiceProtocolInfo(Uri serverUri) -
- - -
-

Implementation

-
ServiceProtocolInfo(this.serverUri);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceProtocolInfo/majorVersion.html b/doc/api/dart-developer/ServiceProtocolInfo/majorVersion.html deleted file mode 100644 index 96b7fea9..00000000 --- a/doc/api/dart-developer/ServiceProtocolInfo/majorVersion.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - majorVersion property - ServiceProtocolInfo class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
majorVersion
- -
- -
- - - -
-

majorVersion property

- -
- int - majorVersion -
final
-
-
-

The major version of the protocol. If the running Dart environment does -not support the service protocol, this is 0.

-
-
-

Implementation

-
final int majorVersion = _getServiceMajorVersion()
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceProtocolInfo/minorVersion.html b/doc/api/dart-developer/ServiceProtocolInfo/minorVersion.html deleted file mode 100644 index 1a135c12..00000000 --- a/doc/api/dart-developer/ServiceProtocolInfo/minorVersion.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - minorVersion property - ServiceProtocolInfo class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
minorVersion
- -
- -
- - - -
-

minorVersion property

- -
- int - minorVersion -
final
-
-
-

The minor version of the protocol. If the running Dart environment does -not support the service protocol, this is 0.

-
-
-

Implementation

-
final int minorVersion = _getServiceMinorVersion()
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceProtocolInfo/serverUri.html b/doc/api/dart-developer/ServiceProtocolInfo/serverUri.html deleted file mode 100644 index 77b1d877..00000000 --- a/doc/api/dart-developer/ServiceProtocolInfo/serverUri.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - serverUri property - ServiceProtocolInfo class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
serverUri
- -
- -
- - - -
-

serverUri property

- -
- Uri - serverUri -
final
-
-
-

The Uri to access the service. If the web server is not running, this -will be null.

-
-
-

Implementation

-
final Uri? serverUri
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/ServiceProtocolInfo/toString.html b/doc/api/dart-developer/ServiceProtocolInfo/toString.html deleted file mode 100644 index b820477d..00000000 --- a/doc/api/dart-developer/ServiceProtocolInfo/toString.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - toString method - ServiceProtocolInfo class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
toString
- -
- -
- - - -
-

toString method

- -
- String - toString -() -
override
-
-
-

Returns a string representation of this object.

-
- -
-

Implementation

-
String toString() {
-  if (serverUri != null) {
-    return 'Dart VM Service Protocol v$majorVersion.$minorVersion '
-        'listening on $serverUri';
-  } else {
-    return 'Dart VM Service Protocol v$majorVersion.$minorVersion';
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Timeline-class.html b/doc/api/dart-developer/Timeline-class.html deleted file mode 100644 index 36e9b57e..00000000 --- a/doc/api/dart-developer/Timeline-class.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - Timeline class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Timeline
- -
- -
- - - -
-

Timeline class

- -
-

Add to the timeline.

-

Timeline's methods add synchronous events to the timeline. When -generating a timeline in Chrome's tracing format, using Timeline generates -"Complete" events. Timeline's startSync and finishSync can be used -explicitly, or implicitly by wrapping a closure in timeSync. For example:

-
Timeline.startSync("Doing Something");
-doSomething();
-Timeline.finishSync();
-
-

Or:

-
Timeline.timeSync("Doing Something", () {
-  doSomething();
-});
-
-
- - -
-

Constructors

- -
-
- Timeline() -
-
- -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- -
-

Static Properties

- -
-
- now - int -
-
- The current time stamp from the clock used by the timeline. Units are -microseconds. [...] -
read-only
-
-
-
- -
-

Static Methods

-
-
- finishSync() - → void - -
-
- Finish the last synchronous operation that was started. - -
-
- instantSync(String name, { Map arguments }) - → void - -
-
- Emit an instant event. - -
-
- startSync(String name, { Map arguments, Flow flow }) - → void - -
-
- Start a synchronous operation labeled name. Optionally takes -a Map of arguments. This slice may also optionally be associated with -a Flow event. This operation must be finished before -returning to the event queue. - -
-
- timeSync<T>(String name, TimelineSyncFunction<T> function, { Map arguments, Flow flow }) - → T - -
-
- A utility method to time a synchronous function. Internally calls -function bracketed by calls to startSync and finishSync. - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Timeline/Timeline.html b/doc/api/dart-developer/Timeline/Timeline.html deleted file mode 100644 index 22a50323..00000000 --- a/doc/api/dart-developer/Timeline/Timeline.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - Timeline constructor - Timeline class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
Timeline
- -
- -
- - - -
-

Timeline constructor

- -
- - Timeline() -
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Timeline/finishSync.html b/doc/api/dart-developer/Timeline/finishSync.html deleted file mode 100644 index 092c1452..00000000 --- a/doc/api/dart-developer/Timeline/finishSync.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - finishSync method - Timeline class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
finishSync
- -
- -
- - - -
-

finishSync method

- -
- void - finishSync -() - -
-
-

Finish the last synchronous operation that was started.

-
- -
-

Implementation

-
static void finishSync() {
-  if (!_hasTimeline) {
-    return;
-  }
-  if (_stack.length == 0) {
-    throw new StateError('Uneven calls to startSync and finishSync');
-  }
-  // Pop top item off of stack.
-  var block = _stack.removeLast();
-  if (block == null) {
-    // Dart stream was disabled when startSync was called.
-    return;
-  }
-  // Finish it.
-  block.finish();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Timeline/instantSync.html b/doc/api/dart-developer/Timeline/instantSync.html deleted file mode 100644 index 80fcfbd5..00000000 --- a/doc/api/dart-developer/Timeline/instantSync.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - instantSync method - Timeline class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
instantSync
- -
- -
- - - -
-

instantSync method

- -
- void - instantSync -(String name, { Map arguments }) - -
-
-

Emit an instant event.

-
- -
-

Implementation

-
static void instantSync(String name, {Map? arguments}) {
-  if (!_hasTimeline) return;
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(name, 'name');
-  if (!_isDartStreamEnabled()) {
-    // Stream is disabled.
-    return;
-  }
-  Map? instantArguments;
-  if (arguments != null) {
-    instantArguments = new Map.from(arguments);
-  }
-  _reportInstantEvent('Dart', name, _argumentsAsJson(instantArguments));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Timeline/now.html b/doc/api/dart-developer/Timeline/now.html deleted file mode 100644 index 1011fb65..00000000 --- a/doc/api/dart-developer/Timeline/now.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - now property - Timeline class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
now
- -
- -
- - - -
-

now property

- - -
- -
- int - now - -
- -
-

The current time stamp from the clock used by the timeline. Units are -microseconds.

-

When run on the Dart VM, uses the same monotonic clock as the embedding -API's Dart_TimelineGetMicros.

-
-
-

Implementation

-
static int get now => _getTraceClock();
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Timeline/startSync.html b/doc/api/dart-developer/Timeline/startSync.html deleted file mode 100644 index 3a3906ac..00000000 --- a/doc/api/dart-developer/Timeline/startSync.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - startSync method - Timeline class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
startSync
- -
- -
- - - -
-

startSync method

- -
- void - startSync -(String name, { Map arguments, Flow flow }) - -
-
-

Start a synchronous operation labeled name. Optionally takes -a Map of arguments. This slice may also optionally be associated with -a Flow event. This operation must be finished before -returning to the event queue.

-
- -
-

Implementation

-
static void startSync(String name, {Map? arguments, Flow? flow}) {
-  if (!_hasTimeline) return;
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(name, 'name');
-  if (!_isDartStreamEnabled()) {
-    // Push a null onto the stack and return.
-    _stack.add(null);
-    return;
-  }
-  var block = new _SyncBlock._(name);
-  if (arguments != null) {
-    block._arguments = arguments;
-  }
-  if (flow != null) {
-    block.flow = flow;
-  }
-  _stack.add(block);
-  block._startSync();
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/Timeline/timeSync.html b/doc/api/dart-developer/Timeline/timeSync.html deleted file mode 100644 index dc68ee19..00000000 --- a/doc/api/dart-developer/Timeline/timeSync.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - timeSync method - Timeline class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
timeSync
- -
- -
- - - -
-

timeSync<T> method

- -
- T - timeSync -<T>(String name, TimelineSyncFunction<T> function, { Map arguments, Flow flow }) - -
-
-

A utility method to time a synchronous function. Internally calls -function bracketed by calls to startSync and finishSync.

-
- -
-

Implementation

-
static T timeSync<T>(String name, TimelineSyncFunction<T> function,
-    {Map? arguments, Flow? flow}) {
-  startSync(name, arguments: arguments, flow: flow);
-  try {
-    return function();
-  } finally {
-    finishSync();
-  }
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineAsyncFunction.html b/doc/api/dart-developer/TimelineAsyncFunction.html deleted file mode 100644 index b33d28e4..00000000 --- a/doc/api/dart-developer/TimelineAsyncFunction.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - TimelineAsyncFunction typedef - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
TimelineAsyncFunction
- -
- -
- - - -
-

TimelineAsyncFunction typedef

- -
- Future - TimelineAsyncFunction -() -
- -
-

Implementation

-
typedef Future TimelineAsyncFunction();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineSyncFunction.html b/doc/api/dart-developer/TimelineSyncFunction.html deleted file mode 100644 index 938ab850..00000000 --- a/doc/api/dart-developer/TimelineSyncFunction.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - TimelineSyncFunction typedef - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
TimelineSyncFunction
- -
- -
- - - -
-

TimelineSyncFunction<T> typedef

- -
- T - TimelineSyncFunction -() -
- -
-

A typedef for the function argument to Timeline.timeSync.

-
-
-

Implementation

-
typedef TimelineSyncFunction<T> = T Function();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineTask-class.html b/doc/api/dart-developer/TimelineTask-class.html deleted file mode 100644 index a48e1d19..00000000 --- a/doc/api/dart-developer/TimelineTask-class.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - - - TimelineTask class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
TimelineTask
- -
- -
- - - -
-

TimelineTask class

- -
-

An asynchronous task on the timeline. An asynchronous task can have many -(nested) synchronous operations. Synchronous operations can live longer than -the current isolate event. To pass a TimelineTask to another isolate, -you must first call pass to get the task id and then construct a new -TimelineTask in the other isolate.

-
- - -
-

Constructors

- -
-
- TimelineTask({TimelineTask parent, String filterKey }) -
-
- Create a task. The task ID will be set by the system. [...] -
-
- TimelineTask.withTaskId(int taskId, { String filterKey }) -
-
- Create a task with an explicit taskId. This is useful if you are -passing a task from one isolate to another. [...] -
-
-
- -
-

Properties

- -
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- finish({Map arguments }) - → void - -
-
- Finish the last synchronous operation that was started. -Optionally takes a Map of arguments. - -
-
- instant(String name, { Map arguments }) - → void - -
-
- Emit an instant event for this task. -Optionally takes a Map of arguments. - -
-
- pass() - int - -
-
- Retrieve the TimelineTask's task id. Will throw an exception if the -stack is not empty. - -
-
- start(String name, { Map arguments }) - → void - -
-
- Start a synchronous operation within this task named name. -Optionally takes a Map of arguments. - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- - - - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineTask/TimelineTask.html b/doc/api/dart-developer/TimelineTask/TimelineTask.html deleted file mode 100644 index d3881a6b..00000000 --- a/doc/api/dart-developer/TimelineTask/TimelineTask.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - TimelineTask constructor - TimelineTask class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
TimelineTask
- -
- -
- - - -
-

TimelineTask constructor

- -
- - TimelineTask({TimelineTask parent, String filterKey }) -
- -
-

Create a task. The task ID will be set by the system.

-

If parent is provided, the parent's task ID is provided as argument -'parentId' when start is called. In DevTools, this argument will result -in this TimelineTask being linked to the parent TimelineTask.

-

If filterKey is provided, a property named filterKey will be inserted -into the arguments of each event associated with this task. The -filterKey will be set to the value of filterKey.

-
- -
-

Implementation

-
TimelineTask({TimelineTask? parent, String? filterKey})
-    : _parent = parent,
-      _filterKey = filterKey,
-      _taskId = _getNextAsyncId() {}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineTask/TimelineTask.withTaskId.html b/doc/api/dart-developer/TimelineTask/TimelineTask.withTaskId.html deleted file mode 100644 index 51fec1a0..00000000 --- a/doc/api/dart-developer/TimelineTask/TimelineTask.withTaskId.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - TimelineTask.withTaskId constructor - TimelineTask class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
TimelineTask.withTaskId
- -
- -
- - - -
-

TimelineTask.withTaskId constructor

- -
- - TimelineTask.withTaskId(int taskId, { String filterKey }) -
- -
-

Create a task with an explicit taskId. This is useful if you are -passing a task from one isolate to another.

-

Important note: only provide task IDs which have been obtained as a -result of invoking TimelineTask.pass. Specifying a custom ID can lead -to ID collisions, resulting in incorrect rendering of timeline events.

-

If filterKey is provided, a property named filterKey will be inserted -into the arguments of each event associated with this task. The -filterKey will be set to the value of filterKey.

-
- -
-

Implementation

-
TimelineTask.withTaskId(int taskId, {String? filterKey})
-    : _parent = null,
-      _filterKey = filterKey,
-      _taskId = taskId {
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(taskId, 'taskId');
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineTask/finish.html b/doc/api/dart-developer/TimelineTask/finish.html deleted file mode 100644 index 2c1dfd93..00000000 --- a/doc/api/dart-developer/TimelineTask/finish.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - finish method - TimelineTask class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
finish
- -
- -
- - - -
-

finish method

- -
- void - finish -({Map arguments }) - -
-
-

Finish the last synchronous operation that was started. -Optionally takes a Map of arguments.

-
- -
-

Implementation

-
void finish({Map? arguments}) {
-  if (!_hasTimeline) {
-    return;
-  }
-  if (_stack.length == 0) {
-    throw new StateError('Uneven calls to start and finish');
-  }
-  if (_filterKey != null) {
-    arguments ??= {};
-    arguments[_kFilterKey] = _filterKey;
-  }
-  // Pop top item off of stack.
-  var block = _stack.removeLast();
-  block._finish(arguments);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineTask/instant.html b/doc/api/dart-developer/TimelineTask/instant.html deleted file mode 100644 index 3d31e1ca..00000000 --- a/doc/api/dart-developer/TimelineTask/instant.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - instant method - TimelineTask class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
instant
- -
- -
- - - -
-

instant method

- -
- void - instant -(String name, { Map arguments }) - -
-
-

Emit an instant event for this task. -Optionally takes a Map of arguments.

-
- -
-

Implementation

-
void instant(String name, {Map? arguments}) {
-  if (!_hasTimeline) return;
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(name, 'name');
-  Map? instantArguments;
-  if (arguments != null) {
-    instantArguments = new Map.from(arguments);
-  }
-  if (_filterKey != null) {
-    instantArguments ??= {};
-    instantArguments[_kFilterKey] = _filterKey;
-  }
-  _reportTaskEvent(
-      _taskId, 'n', 'Dart', name, _argumentsAsJson(instantArguments));
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineTask/pass.html b/doc/api/dart-developer/TimelineTask/pass.html deleted file mode 100644 index 7d677041..00000000 --- a/doc/api/dart-developer/TimelineTask/pass.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - pass method - TimelineTask class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
pass
- -
- -
- - - -
-

pass method

- -
- int - pass -() - -
-
-

Retrieve the TimelineTask's task id. Will throw an exception if the -stack is not empty.

-
- -
-

Implementation

-
int pass() {
-  if (_stack.length > 0) {
-    throw new StateError(
-        'You cannot pass a TimelineTask without finishing all started '
-        'operations');
-  }
-  int r = _taskId;
-  return r;
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/TimelineTask/start.html b/doc/api/dart-developer/TimelineTask/start.html deleted file mode 100644 index 0d0fae0f..00000000 --- a/doc/api/dart-developer/TimelineTask/start.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - start method - TimelineTask class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
start
- -
- -
- - - -
-

start method

- -
- void - start -(String name, { Map arguments }) - -
-
-

Start a synchronous operation within this task named name. -Optionally takes a Map of arguments.

-
- -
-

Implementation

-
void start(String name, {Map? arguments}) {
-  if (!_hasTimeline) return;
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(name, 'name');
-  var block = new _AsyncBlock._(name, _taskId);
-  _stack.add(block);
-  // TODO(39115): Spurious error about collection literal ambiguity.
-  // TODO(39117): Spurious error about typing of `...?arguments`.
-  // TODO(39120): Spurious error even about `...arguments`.
-  // When these TODOs are done, we can use spread and if elements.
-  var map = <Object?, Object?>{};
-  if (arguments != null) {
-    for (var key in arguments.keys) {
-      map[key] = arguments[key];
-    }
-  }
-  if (_parent != null) map['parentId'] = _parent!._taskId.toRadixString(16);
-  if (_filterKey != null) map[_kFilterKey] = _filterKey;
-  block._start(map);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/UserTag-class.html b/doc/api/dart-developer/UserTag-class.html deleted file mode 100644 index 62033e03..00000000 --- a/doc/api/dart-developer/UserTag-class.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - - - UserTag class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
UserTag
- -
- -
- - - -
-

UserTag class

- -
-

A UserTag can be used to group samples in the Observatory profiler.

-
- - -
-

Constructors

- -
-
- UserTag(String label) -
-
- -
factory
-
-
-
- -
-

Properties

- -
-
- label - String -
-
- Label of this. -
read-only
-
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
-
-
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
-
-
-
- -
-

Methods

-
-
- makeCurrent() - UserTag - -
-
- Make this the current tag for the isolate. Returns the current tag -before setting. - -
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
-
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
-
-
-
- -
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
-
-
-
- -
-

Static Properties

- -
-
- defaultTag - UserTag -
-
- The default UserTag with label 'Default'. -
read-only
-
-
-
- - -
-

Constants

- -
-
- MAX_USER_TAGS - → const int -
-
- The maximum number of UserTag instances that can be created by a program. - -
- 64 -
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/UserTag/MAX_USER_TAGS-constant.html b/doc/api/dart-developer/UserTag/MAX_USER_TAGS-constant.html deleted file mode 100644 index ecc71c08..00000000 --- a/doc/api/dart-developer/UserTag/MAX_USER_TAGS-constant.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - MAX_USER_TAGS constant - UserTag class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
MAX_USER_TAGS
- -
- -
- - - -
-

MAX_USER_TAGS constant

- -
- int - const MAX_USER_TAGS - = - 64 -
- -
-

The maximum number of UserTag instances that can be created by a program.

-
-
-

Implementation

-
static const MAX_USER_TAGS = 64
-
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/UserTag/UserTag.html b/doc/api/dart-developer/UserTag/UserTag.html deleted file mode 100644 index 99c79353..00000000 --- a/doc/api/dart-developer/UserTag/UserTag.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - UserTag constructor - UserTag class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
UserTag
- -
- -
- - - -
-

UserTag constructor

- -
- - UserTag(String label) -
- - -
-

Implementation

-
external factory UserTag(String label);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/UserTag/defaultTag.html b/doc/api/dart-developer/UserTag/defaultTag.html deleted file mode 100644 index ffec21a5..00000000 --- a/doc/api/dart-developer/UserTag/defaultTag.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - defaultTag property - UserTag class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
defaultTag
- -
- -
- - - -
-

defaultTag property

- - -
- -
- UserTag - defaultTag - -
- -
-

The default UserTag with label 'Default'.

-
-
-

Implementation

-
external static UserTag get defaultTag;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/UserTag/label.html b/doc/api/dart-developer/UserTag/label.html deleted file mode 100644 index 5eb4b8c7..00000000 --- a/doc/api/dart-developer/UserTag/label.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - label property - UserTag class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
label
- -
- -
- - - -
-

label property

- - -
- -
- String - label - -
- -
-

Label of this.

-
-
-

Implementation

-
String get label;
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/UserTag/makeCurrent.html b/doc/api/dart-developer/UserTag/makeCurrent.html deleted file mode 100644 index af7bb7be..00000000 --- a/doc/api/dart-developer/UserTag/makeCurrent.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - makeCurrent method - UserTag class - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
makeCurrent
- -
- -
- - - -
-

makeCurrent method

- -
- UserTag - makeCurrent -() - -
-
-

Make this the current tag for the isolate. Returns the current tag -before setting.

-
- -
-

Implementation

-
UserTag makeCurrent();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/dart-developer-library.html b/doc/api/dart-developer/dart-developer-library.html deleted file mode 100644 index 7c854456..00000000 --- a/doc/api/dart-developer/dart-developer-library.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - - - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
dart:developer
- -
- -
- - - -
-

dart:developer library

- -
-

Interact with developer tools such as the debugger and inspector.

-

This library is platform dependent and has separate implementations for -both web and the Dart VM. A specific platform may not support all -operations.

-

To use this library in your code:

-
import 'dart:developer';
-
-
- -
-

Classes

- -
-
- Counter -
-
- A changing value. Initial value is 0.0. -
-
- Flow -
-
- A class to represent Flow events. [...] -
-
- Gauge -
-
- A measured value with a min and max. Initial value is min. Value will -be clamped to the interval min, max. -
-
- Metric -
-
- Abstract Metric class. Metric names must be unique, are hierarchical, -and use periods as separators. For example, 'a.b.c'. Uniqueness is only -enforced when a Metric is registered. The name of a metric cannot contain -the slash ('/') character. -
-
- Metrics -
-
- -
-
- Service -
-
- Access information about the service protocol and control the web server -that provides access to the services provided by the Dart VM for -debugging and inspecting Dart programs. -
-
- ServiceExtensionResponse -
-
- A response to a service protocol extension RPC. [...] -
-
- ServiceProtocolInfo -
-
- Service protocol is the protocol that a client like the Observatory -could use to access the services provided by the Dart VM for -debugging and inspecting Dart programs. This class encapsulates the -version number and Uri for accessing this service. -
-
- Timeline -
-
- Add to the timeline. [...] -
-
- TimelineTask -
-
- An asynchronous task on the timeline. An asynchronous task can have many -(nested) synchronous operations. Synchronous operations can live longer than -the current isolate event. To pass a TimelineTask to another isolate, -you must first call pass to get the task id and then construct a new -TimelineTask in the other isolate. -
-
- UserTag -
-
- A UserTag can be used to group samples in the Observatory profiler. -
-
-
- - - - - -
-

Functions

- -
-
- debugger({bool when: true, String message }) - bool - -
-
- If when is true, stop the program as if a breakpoint were hit at the -following statement. [...] - -
-
- getCurrentTag() - UserTag - -
-
- Returns the current UserTag for the isolate. - -
-
- inspect(Object object) - Object - -
-
- Send a reference to object to any attached debuggers. [...] - -
-
- log(String message, { DateTime time, int sequenceNumber, int level: 0, String name: '', Zone zone, Object error, StackTrace stackTrace }) - → void - -
-
- Emit a log event. [...] - -
-
- postEvent(String eventKind, Map eventData) - → void - -
-
- Post an event of eventKind with payload of eventData to the Extension -event stream. - -
-
- registerExtension(String method, ServiceExtensionHandler handler) - → void - -
-
- Register a ServiceExtensionHandler that will be invoked in this isolate -for method. NOTE: Service protocol extensions must be registered -in each isolate. [...] - -
-
-
- - -
-

Typedefs

- -
-
- ServiceExtensionHandler(String method, Map<String, String> parameters) - Future<ServiceExtensionResponse> - -
-
- A service protocol extension handler. Registered with registerExtension. [...] - -
-
- TimelineAsyncFunction() - Future - -
-
- - -
-
- TimelineSyncFunction<T>() - → T - -
-
- A typedef for the function argument to Timeline.timeSync. - -
-
-
- - -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/debugger.html b/doc/api/dart-developer/debugger.html deleted file mode 100644 index fb88f306..00000000 --- a/doc/api/dart-developer/debugger.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - debugger function - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
debugger
- -
- -
- - - -
-

debugger function

- -
- bool - debugger -({bool when: true, String message }) -
-
-

If when is true, stop the program as if a breakpoint were hit at the -following statement.

-

Returns the value of when. Some debuggers may display message.

-

NOTE: When invoked, the isolate will not return until a debugger -continues execution. When running in the Dart VM, the behaviour is the same -regardless of whether or not a debugger is connected. When compiled to -JavaScript, this uses the "debugger" statement, and behaves exactly as -that does.

-
- -
-

Implementation

-
external bool debugger({bool when = true, String? message});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/getCurrentTag.html b/doc/api/dart-developer/getCurrentTag.html deleted file mode 100644 index eef7109b..00000000 --- a/doc/api/dart-developer/getCurrentTag.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - getCurrentTag function - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
getCurrentTag
- -
- -
- - - -
-

getCurrentTag function

- -
- UserTag - getCurrentTag -() -
-
-

Returns the current UserTag for the isolate.

-
- -
-

Implementation

-
external UserTag getCurrentTag();
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/inspect.html b/doc/api/dart-developer/inspect.html deleted file mode 100644 index 508d90b1..00000000 --- a/doc/api/dart-developer/inspect.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - inspect function - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
inspect
- -
- -
- - - -
-

inspect function

- -
- Object - inspect -(Object object) -
-
-

Send a reference to object to any attached debuggers.

-

Debuggers may open an inspector on the object. Returns the argument.

-
- -
-

Implementation

-
external Object? inspect(Object? object);
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/log.html b/doc/api/dart-developer/log.html deleted file mode 100644 index 13d33e5f..00000000 --- a/doc/api/dart-developer/log.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - log function - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
log
- -
- -
- - - -
-

log function

- -
- void - log -(String message, { DateTime time, int sequenceNumber, int level: 0, String name: '', Zone zone, Object error, StackTrace stackTrace }) -
-
-

Emit a log event.

-

This function was designed to map closely to the logging information -collected by package:logging.

-
    -
  • message is the log message
  • -
  • time (optional) is the timestamp
  • -
  • sequenceNumber (optional) is a monotonically increasing sequence number
  • -
  • level (optional) is the severity level (a value between 0 and 2000); see -the package:logging Level class for an overview of the possible values
  • -
  • name (optional) is the name of the source of the log message
  • -
  • zone (optional) the zone where the log was emitted
  • -
  • error (optional) an error object associated with this log event
  • -
  • stackTrace (optional) a stack trace associated with this log event
  • -
-
- -
-

Implementation

-
external void log(
-  String message, {
-  DateTime? time,
-  int? sequenceNumber,
-  int level = 0,
-  String name = '',
-  Zone? zone,
-  Object? error,
-  StackTrace? stackTrace,
-});
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/postEvent.html b/doc/api/dart-developer/postEvent.html deleted file mode 100644 index 63dbf3fe..00000000 --- a/doc/api/dart-developer/postEvent.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - postEvent function - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
postEvent
- -
- -
- - - -
-

postEvent function

- -
- void - postEvent -(String eventKind, Map eventData) -
-
-

Post an event of eventKind with payload of eventData to the Extension -event stream.

-
- -
-

Implementation

-
void postEvent(String eventKind, Map eventData) {
-  // TODO: When NNBD is complete, delete the following two lines.
-  ArgumentError.checkNotNull(eventKind, 'eventKind');
-  ArgumentError.checkNotNull(eventData, 'eventData');
-  String eventDataAsString = json.encode(eventData);
-  _postEvent(eventKind, eventDataAsString);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/dart-developer/registerExtension.html b/doc/api/dart-developer/registerExtension.html deleted file mode 100644 index 9bb94b8f..00000000 --- a/doc/api/dart-developer/registerExtension.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - registerExtension function - dart:developer library - Dart API - - - - - - - - - - - - - -
- -
- - -
registerExtension
- -
- -
- - - -
-

registerExtension function

- -
- void - registerExtension -(String method, ServiceExtensionHandler handler) -
-
-

Register a ServiceExtensionHandler that will be invoked in this isolate -for method. NOTE: Service protocol extensions must be registered -in each isolate.

-

NOTE: method must begin with 'ext.' and you should use the following -structure to avoid conflicts with other packages: 'ext.package.command'. -That is, immediately following the 'ext.' prefix, should be the registering -package name followed by another period ('.') and then the command name. -For example: 'ext.dart.io.getOpenFiles'.

-

Because service extensions are isolate specific, clients using extensions -must always include an 'isolateId' parameter with each RPC.

-
- -
-

Implementation

-
void registerExtension(String method, ServiceExtensionHandler handler) {
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(method, 'method');
-  if (!method.startsWith('ext.')) {
-    throw new ArgumentError.value(method, 'method', 'Must begin with ext.');
-  }
-  if (_lookupExtension(method) != null) {
-    throw new ArgumentError('Extension already registered: $method');
-  }
-  // TODO: When NNBD is complete, delete the following line.
-  ArgumentError.checkNotNull(handler, 'handler');
-  _registerExtension(method, handler);
-}
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/flutter_midi_command/BluetoothState-enum-sidebar.html b/doc/api/flutter_midi_command/BluetoothState-enum-sidebar.html index 6dd9635f..5b229718 100644 --- a/doc/api/flutter_midi_command/BluetoothState-enum-sidebar.html +++ b/doc/api/flutter_midi_command/BluetoothState-enum-sidebar.html @@ -1,7 +1,5 @@
    -
  1. Constructors
  2. -
  3. BluetoothState
  4. Values
  5. poweredOn
  6. @@ -16,22 +14,47 @@
  7. Properties
  8. -
  9. hashCode
  10. -
  11. index
  12. -
  13. runtimeType
  14. + +
  15. + hashCode +
  16. + +
  17. + index +
  18. + +
  19. + name + (ext) +
  20. + +
  21. + runtimeType +
  22. Methods
  23. -
  24. noSuchMethod
  25. -
  26. toString
  27. + +
  28. + noSuchMethod +
  29. + +
  30. + toString +
  31. Operators
  32. -
  33. operator ==
  34. + +
  35. + operator == +
  36. -
  37. Constants
  38. -
  39. values
  40. +
  41. Constants
  42. +
  43. values
diff --git a/doc/api/flutter_midi_command/BluetoothState.html b/doc/api/flutter_midi_command/BluetoothState.html index ae64e2db..f0fc404f 100644 --- a/doc/api/flutter_midi_command/BluetoothState.html +++ b/doc/api/flutter_midi_command/BluetoothState.html @@ -16,40 +16,32 @@ - - -
-
menu
BluetoothState
-
- -
+
-
+
Available extensions
+
+ - -
-

Constructors

- -
-
- BluetoothState() -
-
- -
const
-
-
-
-

Values

-
poweredOn @@ -222,6 +203,22 @@

Properties

A numeric identifier for the enumerated value.
no setterinherited
+ + +
+ name + String + + +
+
+

+ Available on Enum, + provided by the EnumName extension +

+ The name of the enum value. +
no setter
+
@@ -238,6 +235,7 @@

Properties

+
Operators

Constants

-
values @@ -316,7 +313,6 @@

Constants

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/BluetoothState/BluetoothState.html b/doc/api/flutter_midi_command/BluetoothState/BluetoothState.html deleted file mode 100644 index 40ab50a4..00000000 --- a/doc/api/flutter_midi_command/BluetoothState/BluetoothState.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - BluetoothState constructor - BluetoothState - flutter_midi_command library - Dart API - - - - - - - - - - - - - - - - - -
- -
- menu - -
BluetoothState
- -
- -
-
-
- -
-
-

BluetoothState constructor -

- -
- const - BluetoothState() -
- - - - - - - -
- - - - - -
- -
- - flutter_midi_command - 0.4.17 - - - -
- - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command/BluetoothState/values-constant.html b/doc/api/flutter_midi_command/BluetoothState/values-constant.html index 7adae07f..23687ea5 100644 --- a/doc/api/flutter_midi_command/BluetoothState/values-constant.html +++ b/doc/api/flutter_midi_command/BluetoothState/values-constant.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
values constant
+
List<BluetoothState> @@ -75,8 +68,8 @@

values constant + - - -

-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCapabilities-class-sidebar.html b/doc/api/flutter_midi_command/MidiCapabilities-class-sidebar.html new file mode 100644 index 00000000..98b810e7 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCapabilities-class-sidebar.html @@ -0,0 +1,57 @@ +
    + +
  1. Constructors
  2. +
  3. new
  4. + + + +
  5. + Properties +
  6. + +
  7. + enabledTransports +
  8. + +
  9. + hashCode +
  10. + +
  11. + runtimeType +
  12. + +
  13. + supportedTransports +
  14. + +
  15. Methods
  16. + +
  17. + isEnabled +
  18. + +
  19. + noSuchMethod +
  20. + +
  21. + supports +
  22. + +
  23. + toString +
  24. + +
  25. Operators
  26. + +
  27. + operator == +
  28. + + + + + + +
diff --git a/doc/api/flutter_midi_command/MidiCapabilities-class.html b/doc/api/flutter_midi_command/MidiCapabilities-class.html new file mode 100644 index 00000000..1647055f --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCapabilities-class.html @@ -0,0 +1,248 @@ + + + + + + + + MidiCapabilities class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiCapabilities
+ + +
+
+
+
+

MidiCapabilities class + +

+ + + + + + +
+

Constructors

+
+
+ MidiCapabilities({required Set<MidiTransport> supportedTransports, required Set<MidiTransport> enabledTransports}) +
+
+ +
const
+
+
+
+ +
+

Properties

+
+
+ enabledTransports + Set<MidiTransport> + + +
+
+ +
final
+ +
+ +
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ supportedTransports + Set<MidiTransport> + + +
+
+ +
final
+ +
+ +
+
+ + +
+

Methods

+
+
+ isEnabled(MidiTransport transport) + bool + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ supports(MidiTransport transport) + bool + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCapabilities/MidiCapabilities.html b/doc/api/flutter_midi_command/MidiCapabilities/MidiCapabilities.html new file mode 100644 index 00000000..ec57ed69 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCapabilities/MidiCapabilities.html @@ -0,0 +1,106 @@ + + + + + + + + MidiCapabilities.new constructor - MidiCapabilities - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiCapabilities.new
+ + +
+
+
+
+

MidiCapabilities constructor +

+ +
+ const + MidiCapabilities({
  1. required Set<MidiTransport> supportedTransports,
  2. +
  3. required Set<MidiTransport> enabledTransports,
  4. +
}) +
+ + + + +
+

Implementation

+
const MidiCapabilities({required this.supportedTransports, required this.enabledTransports});
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCapabilities/enabledTransports.html b/doc/api/flutter_midi_command/MidiCapabilities/enabledTransports.html new file mode 100644 index 00000000..9f6b61ef --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCapabilities/enabledTransports.html @@ -0,0 +1,108 @@ + + + + + + + + enabledTransports property - MidiCapabilities class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
enabledTransports
+ + +
+
+
+
+

enabledTransports property +

+ + +
+ + Set<MidiTransport> + enabledTransports +
final
+ +
+ + + +
+

Implementation

+
final Set<MidiTransport> enabledTransports;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCapabilities/isEnabled.html b/doc/api/flutter_midi_command/MidiCapabilities/isEnabled.html new file mode 100644 index 00000000..805feb40 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCapabilities/isEnabled.html @@ -0,0 +1,109 @@ + + + + + + + + isEnabled method - MidiCapabilities class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
isEnabled
+ + +
+
+
+
+

isEnabled method +

+ +
+ +bool +isEnabled(
  1. MidiTransport transport
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool isEnabled(MidiTransport transport) => enabledTransports.contains(transport);
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCapabilities/supportedTransports.html b/doc/api/flutter_midi_command/MidiCapabilities/supportedTransports.html new file mode 100644 index 00000000..e6e14878 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCapabilities/supportedTransports.html @@ -0,0 +1,108 @@ + + + + + + + + supportedTransports property - MidiCapabilities class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
supportedTransports
+ + +
+
+
+
+

supportedTransports property +

+ + +
+ + Set<MidiTransport> + supportedTransports +
final
+ +
+ + + +
+

Implementation

+
final Set<MidiTransport> supportedTransports;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCapabilities/supports.html b/doc/api/flutter_midi_command/MidiCapabilities/supports.html new file mode 100644 index 00000000..2fe01efa --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCapabilities/supports.html @@ -0,0 +1,109 @@ + + + + + + + + supports method - MidiCapabilities class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
supports
+ + +
+
+
+
+

supports method +

+ +
+ +bool +supports(
  1. MidiTransport transport
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool supports(MidiTransport transport) => supportedTransports.contains(transport);
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand-class-sidebar.html b/doc/api/flutter_midi_command/MidiCommand-class-sidebar.html index 57963378..837d6b3f 100644 --- a/doc/api/flutter_midi_command/MidiCommand-class-sidebar.html +++ b/doc/api/flutter_midi_command/MidiCommand-class-sidebar.html @@ -1,45 +1,146 @@
    -
  1. Constructors
  2. -
  3. MidiCommand
  4. +
  5. Constructors
  6. +
  7. new
  8. Properties
  9. -
  10. bluetoothState
  11. -
  12. devices
  13. -
  14. hashCode
  15. -
  16. isNetworkSessionEnabled
  17. -
  18. onBluetoothStateChanged
  19. -
  20. onMidiDataReceived
  21. -
  22. onMidiDataSent
  23. -
  24. onMidiSetupChanged
  25. -
  26. runtimeType
  27. + +
  28. + bluetoothState +
  29. + +
  30. + capabilities +
  31. + +
  32. + devices +
  33. + +
  34. + enabledTransports +
  35. + +
  36. + hashCode +
  37. + +
  38. + isNetworkSessionEnabled +
  39. + +
  40. + onBluetoothStateChanged +
  41. + +
  42. + onMidiDataReceived +
  43. + +
  44. + onMidiDataSent +
  45. + +
  46. + onMidiPacketReceived +
  47. + +
  48. + onMidiSetupChanged +
  49. + +
  50. + runtimeType +
  51. Methods
  52. -
  53. addVirtualDevice
  54. -
  55. connectToDevice
  56. -
  57. disconnectDevice
  58. -
  59. dispose
  60. -
  61. noSuchMethod
  62. -
  63. removeVirtualDevice
  64. -
  65. sendData
  66. -
  67. setNetworkSessionEnabled
  68. -
  69. startBluetoothCentral
  70. -
  71. startScanningForBluetoothDevices
  72. -
  73. stopScanningForBluetoothDevices
  74. -
  75. teardown
  76. -
  77. toString
  78. -
  79. waitUntilBluetoothIsInitialized
  80. + +
  81. + addVirtualDevice +
  82. + +
  83. + configureBleTransport +
  84. + +
  85. + configureTransportPolicy +
  86. + +
  87. + connectToDevice +
  88. + +
  89. + disconnectDevice +
  90. + +
  91. + dispose +
  92. + +
  93. + isTransportEnabled +
  94. + +
  95. + noSuchMethod +
  96. + +
  97. + removeVirtualDevice +
  98. + +
  99. + sendData +
  100. + +
  101. + setNetworkSessionEnabled +
  102. + +
  103. + startBluetooth +
  104. + +
  105. + startScanningForBluetoothDevices +
  106. + +
  107. + stopScanningForBluetoothDevices +
  108. + +
  109. + teardown +
  110. + +
  111. + toString +
  112. + +
  113. + waitUntilBluetoothIsInitialized +
  114. Operators
  115. -
  116. operator ==
  117. + +
  118. + operator == +
  119. +
  120. Static methods
  121. +
  122. resetForTest
  123. +
  124. setPlatformOverride
  125. +
  126. Constants
  127. +
  128. supportedTransports
diff --git a/doc/api/flutter_midi_command/MidiCommand-class.html b/doc/api/flutter_midi_command/MidiCommand-class.html index 7448cdbf..86897548 100644 --- a/doc/api/flutter_midi_command/MidiCommand-class.html +++ b/doc/api/flutter_midi_command/MidiCommand-class.html @@ -16,40 +16,32 @@ - - -
-
menu
MidiCommand
-
- -
+
-
MidiCommand class

Constructors

-
-
- MidiCommand() +
+ MidiCommand({MidiBleTransport? bleTransport})
@@ -91,14 +82,26 @@

Properties

- Returns the state of the bluetooth central + Returns the current Bluetooth state +
no setter
+ +
+ +
+ capabilities + MidiCapabilities + + +
+
+
no setter
devices - Future<List<MidiDevice>?> + Future<List<MidiDevice>?>
@@ -106,6 +109,18 @@

Properties

Gets a list of available MIDI devices and returns it
no setter
+ + +
+ enabledTransports + Set<MidiTransport> + + +
+
+ +
no setter
+
@@ -122,7 +137,7 @@

Properties

isNetworkSessionEnabled - Future<bool?> + Future<bool?>
@@ -134,7 +149,7 @@

Properties

onBluetoothStateChanged - Stream<BluetoothState> + Stream<BluetoothState>
@@ -146,19 +161,19 @@

Properties

onMidiDataReceived - Stream<MidiPacket>? + Stream<MidiDataReceivedEvent>?
- Stream firing events whenever a midi package is received + Stream firing events whenever a typed MIDI message is received.
no setter
onMidiDataSent - Stream<Uint8List> + Stream<Uint8List>
@@ -166,11 +181,23 @@

Properties

Stream firing events whenever a midi package is sent
no setter
+ + +
+ onMidiPacketReceived + Stream<MidiPacket>? + + +
+
+ Stream firing events whenever a raw MIDI packet is received. +
no setter
+
onMidiSetupChanged - Stream<String>? + Stream<String>?
@@ -194,6 +221,7 @@

Properties

+
Properties

Methods

- addVirtualDevice({String? name}) + addVirtualDevice({String? name}) → void @@ -211,11 +239,37 @@

Methods

Creates a virtual MIDI source + + +
+ configureBleTransport(MidiBleTransport? transport) + → void + + + +
+
+ Attaches or detaches the BLE implementation. + + +
+ +
+ configureTransportPolicy(MidiTransportPolicy policy) + → void + + + +
+
+ + +
- connectToDevice(MidiDevice device) - Future<void> + connectToDevice(MidiDevice device, {Duration? awaitConnectionTimeout = const Duration(seconds: 10)}) + Future<void> @@ -227,7 +281,7 @@

Methods

- disconnectDevice(MidiDevice device) + disconnectDevice(MidiDevice device) → void @@ -241,7 +295,20 @@

Methods

dispose() - → dynamic + → void + + + +
+
+ + + +
+ +
+ isTransportEnabled(MidiTransport transport) + bool @@ -266,7 +333,7 @@

Methods

- removeVirtualDevice({String? name}) + removeVirtualDevice({String? name}) → void @@ -280,7 +347,7 @@

Methods

- sendData(Uint8List data, {String? deviceId, int? timestamp}) + sendData(Uint8List data, {String? deviceId, int? timestamp}) → void @@ -305,22 +372,22 @@

Methods

-
- startBluetoothCentral() - Future<void> +
+ startBluetooth() + Future<void>
- Starts the bluetooth central + Starts the Bluetooth subsystem used for BLE MIDI discovery/connection.
startScanningForBluetoothDevices() - Future<void> + Future<void> @@ -372,7 +439,7 @@

Methods

waitUntilBluetoothIsInitialized() - Future<void> + Future<void> @@ -408,11 +475,57 @@

Operators

+
+

Static Methods

+
+
+ resetForTest() + → void + + + +
+
+ + + +
+ +
+ setPlatformOverride(MidiCommandPlatform platform) + → void + + + +
+
+ + + +
+ +
+
+
+

Constants

+
+
+ supportedTransports + → const Set<MidiTransport> + + +
+
+ + -
+ + + + - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/MidiCommand.html b/doc/api/flutter_midi_command/MidiCommand/MidiCommand.html index 965edc61..7dd00f1d 100644 --- a/doc/api/flutter_midi_command/MidiCommand/MidiCommand.html +++ b/doc/api/flutter_midi_command/MidiCommand/MidiCommand.html @@ -4,8 +4,8 @@ - - MidiCommand constructor - MidiCommand - flutter_midi_command library - Dart API + + MidiCommand.new constructor - MidiCommand - flutter_midi_command library - Dart API @@ -16,41 +16,33 @@ - - -
-
menu -
MidiCommand
+
MidiCommand.new
-
- -
+
-
MidiCommand constructor
- MidiCommand() + MidiCommand({
  1. MidiBleTransport? bleTransport,
  2. +
})
-

Implementation

-
factory MidiCommand() {
+  
factory MidiCommand({MidiBleTransport? bleTransport}) {
   if (_instance == null) {
-    _instance = MidiCommand._();
+    _instance = MidiCommand._(bleTransport: bleTransport);
+  } else if (bleTransport != null) {
+    _instance!.configureBleTransport(bleTransport);
   }
   return _instance!;
 }
@@ -81,7 +75,6 @@

Implementation

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/addVirtualDevice.html b/doc/api/flutter_midi_command/MidiCommand/addVirtualDevice.html index 300ffbdf..0b04ec59 100644 --- a/doc/api/flutter_midi_command/MidiCommand/addVirtualDevice.html +++ b/doc/api/flutter_midi_command/MidiCommand/addVirtualDevice.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
addVirtualDevice method
- void -addVirtualDevice(
  1. {String? name}
  2. -
) +addVirtualDevice({
  1. String? name,
  2. +
}) @@ -83,13 +74,13 @@

addVirtualDevice method

Implementation

void addVirtualDevice({String? name}) {
+  _requireTransport(MidiTransport.virtual, 'addVirtualDevice');
   _platform.addVirtualDevice(name: name);
 }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/bluetoothState.html b/doc/api/flutter_midi_command/MidiCommand/bluetoothState.html index 7d6dd2dd..6a6c12e4 100644 --- a/doc/api/flutter_midi_command/MidiCommand/bluetoothState.html +++ b/doc/api/flutter_midi_command/MidiCommand/bluetoothState.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
bluetoothState property
+ +
-
BluetoothState + get bluetoothState
-
-

Returns the state of the bluetooth central

+

Returns the current Bluetooth state

@@ -87,7 +80,6 @@

Implementation

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/capabilities.html b/doc/api/flutter_midi_command/MidiCommand/capabilities.html new file mode 100644 index 00000000..f1bd68df --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/capabilities.html @@ -0,0 +1,114 @@ + + + + + + + + capabilities property - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
capabilities
+ + +
+
+
+
+

capabilities property +

+ + + + + +
+
+ + MidiCapabilities + get + capabilities + + +
+ + + +
+

Implementation

+
MidiCapabilities get capabilities => MidiCapabilities(supportedTransports: supportedTransports, enabledTransports: enabledTransports);
+
+ +
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/configureBleTransport.html b/doc/api/flutter_midi_command/MidiCommand/configureBleTransport.html new file mode 100644 index 00000000..faa52be1 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/configureBleTransport.html @@ -0,0 +1,125 @@ + + + + + + + + configureBleTransport method - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
configureBleTransport
+ + +
+
+
+
+

configureBleTransport method +

+ +
+ +void +configureBleTransport(
  1. MidiBleTransport? transport
  2. +
) + + + +
+ +
+

Attaches or detaches the BLE implementation.

+

Pass null to disable BLE integration entirely for this instance.

+
+ + + +
+

Implementation

+
void configureBleTransport(MidiBleTransport? transport) {
+  if (identical(_bleTransport, transport)) {
+    return;
+  }
+  _onBluetoothStateChangedStreamSubscription?.cancel();
+  _onBluetoothStateChangedStreamSubscription = null;
+  _bleTransport?.teardown();
+  _bleTransport = transport;
+  _bluetoothIsStarted = false;
+  _bluetoothState = BluetoothState.unknown;
+  _deviceRouteById.clear();
+  _resetMessageParsers();
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/configureTransportPolicy.html b/doc/api/flutter_midi_command/MidiCommand/configureTransportPolicy.html new file mode 100644 index 00000000..df1da695 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/configureTransportPolicy.html @@ -0,0 +1,111 @@ + + + + + + + + configureTransportPolicy method - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
configureTransportPolicy
+ + +
+
+
+
+

configureTransportPolicy method +

+ +
+ +void +configureTransportPolicy(
  1. MidiTransportPolicy policy
  2. +
) + + + +
+ + + + +
+

Implementation

+
void configureTransportPolicy(MidiTransportPolicy policy) {
+  _transportPolicy = policy;
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/connectToDevice.html b/doc/api/flutter_midi_command/MidiCommand/connectToDevice.html index e649d1c1..4613c98b 100644 --- a/doc/api/flutter_midi_command/MidiCommand/connectToDevice.html +++ b/doc/api/flutter_midi_command/MidiCommand/connectToDevice.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
connectToDevice method
- -Future<void> -connectToDevice(
  1. MidiDevice device
  2. -
) +Future<void> +connectToDevice(
  1. MidiDevice device, {
  2. +
  3. Duration? awaitConnectionTimeout = const Duration(seconds: 10),
  4. +
}) @@ -79,14 +71,49 @@

connectToDevice method

Implementation

-
Future<void> connectToDevice(MidiDevice device) async {
-  return _platform.connectToDevice(device);
+  
Future<void> connectToDevice(MidiDevice device, {Duration? awaitConnectionTimeout = const Duration(seconds: 10)}) async {
+  if (!device.connected) {
+    device.setConnectionState(MidiConnectionState.connecting);
+  }
+  final connectionEstablished = _awaitConnectedOrFailed(device);
+
+  try {
+    final route = _resolveDeviceRoute(device);
+    if (route == _MidiDeviceRoute.bleTransport) {
+      _requireTransport(MidiTransport.ble, 'connectToDevice');
+      _requireBleTransport('connectToDevice');
+      await _bleTransport!.connectToDevice(device);
+    } else {
+      await _platform.connectToDevice(device);
+    }
+  } catch (_) {
+    if (device.connectionState == MidiConnectionState.connecting) {
+      device.setConnectionState(MidiConnectionState.disconnected);
+    }
+    rethrow;
+  }
+
+  if (device.connected) {
+    return;
+  }
+
+  if (awaitConnectionTimeout == null) {
+    await connectionEstablished;
+    return;
+  }
+  try {
+    await connectionEstablished.timeout(awaitConnectionTimeout);
+  } on TimeoutException {
+    if (device.connectionState == MidiConnectionState.connecting) {
+      device.setConnectionState(MidiConnectionState.disconnected);
+    }
+    rethrow;
+  }
 }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/devices.html b/doc/api/flutter_midi_command/MidiCommand/devices.html index 3e605f94..43a07d8c 100644 --- a/doc/api/flutter_midi_command/MidiCommand/devices.html +++ b/doc/api/flutter_midi_command/MidiCommand/devices.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
devices property
+ +
-
- Future<List<MidiDevice>?> + Future<List<MidiDevice>?> + get devices
-

Gets a list of available MIDI devices and returns it

@@ -81,7 +74,24 @@

devices property

Implementation

Future<List<MidiDevice>?> get devices async {
-  return _platform.devices;
+  final devices = <MidiDevice>[];
+  _deviceRouteById.clear();
+
+  final platformDevices = await _platform.devices ?? <MidiDevice>[];
+  for (final device in platformDevices) {
+    _rememberDeviceRoute(device, _MidiDeviceRoute.platform);
+  }
+  devices.addAll(platformDevices);
+
+  if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) {
+    final bleDevices = await _bleTransport!.devices;
+    for (final device in bleDevices) {
+      _rememberDeviceRoute(device, _MidiDeviceRoute.bleTransport);
+    }
+    devices.addAll(bleDevices);
+  }
+
+  return devices;
 }
@@ -89,7 +99,6 @@

Implementation

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/disconnectDevice.html b/doc/api/flutter_midi_command/MidiCommand/disconnectDevice.html index c2a8f1f6..ad3415fd 100644 --- a/doc/api/flutter_midi_command/MidiCommand/disconnectDevice.html +++ b/doc/api/flutter_midi_command/MidiCommand/disconnectDevice.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
disconnectDevice method
- void -disconnectDevice(
  1. MidiDevice device
  2. +disconnectDevice(
    1. MidiDevice device
    ) @@ -80,13 +71,22 @@

    disconnectDevice method

    Implementation

    void disconnectDevice(MidiDevice device) {
    +  if (device.connected) {
    +    device.setConnectionState(MidiConnectionState.disconnecting);
    +  }
    +  final route = _resolveDeviceRoute(device);
    +  if (route == _MidiDeviceRoute.bleTransport) {
    +    _requireTransport(MidiTransport.ble, 'disconnectDevice');
    +    _requireBleTransport('disconnectDevice');
    +    _bleTransport!.disconnectDevice(device);
    +    return;
    +  }
       _platform.disconnectDevice(device);
     }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/dispose.html b/doc/api/flutter_midi_command/MidiCommand/dispose.html index dd8a6219..b9608d61 100644 --- a/doc/api/flutter_midi_command/MidiCommand/dispose.html +++ b/doc/api/flutter_midi_command/MidiCommand/dispose.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
dispose method
- -dynamic +void dispose() @@ -75,15 +66,26 @@

dispose method

Implementation

-
dispose() {
+  
void dispose() {
+  __platform?.teardown();
+  _txStreamCtrl.close();
   _bluetoothStateStream.close();
   _onBluetoothStateChangedStreamSubscription?.cancel();
+  _bleTransport?.teardown();
+  _bleTransport = null;
+  _bluetoothIsStarted = false;
+  _bluetoothStartFuture = null;
+  _bluetoothState = BluetoothState.unknown;
+  _deviceRouteById.clear();
+  _resetMessageParsers();
+  if (identical(_instance, this)) {
+    _instance = null;
+  }
 }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/enabledTransports.html b/doc/api/flutter_midi_command/MidiCommand/enabledTransports.html new file mode 100644 index 00000000..7d3d74cd --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/enabledTransports.html @@ -0,0 +1,114 @@ + + + + + + + + enabledTransports property - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
enabledTransports
+ + +
+
+
+
+

enabledTransports property +

+ + + + + +
+
+ + Set<MidiTransport> + get + enabledTransports + + +
+ + + +
+

Implementation

+
Set<MidiTransport> get enabledTransports => _transportPolicy.resolveEnabledTransports(supportedTransports);
+
+ +
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/isNetworkSessionEnabled.html b/doc/api/flutter_midi_command/MidiCommand/isNetworkSessionEnabled.html index 832b43a3..3b9ff7d9 100644 --- a/doc/api/flutter_midi_command/MidiCommand/isNetworkSessionEnabled.html +++ b/doc/api/flutter_midi_command/MidiCommand/isNetworkSessionEnabled.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
isNetworkSessionEnabled property
+ +
-
- Future<bool?> + Future<bool?> + get isNetworkSessionEnabled
-

Returns the current state of the network session

@@ -82,6 +75,7 @@

isNetworkSessionEnabled property

Implementation

Future<bool?> get isNetworkSessionEnabled {
+  _requireTransport(MidiTransport.network, 'isNetworkSessionEnabled');
   return _platform.isNetworkSessionEnabled;
 }
@@ -90,7 +84,6 @@

Implementation

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/isTransportEnabled.html b/doc/api/flutter_midi_command/MidiCommand/isTransportEnabled.html new file mode 100644 index 00000000..2b51dcd8 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/isTransportEnabled.html @@ -0,0 +1,109 @@ + + + + + + + + isTransportEnabled method - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
isTransportEnabled
+ + +
+
+
+
+

isTransportEnabled method +

+ +
+ +bool +isTransportEnabled(
  1. MidiTransport transport
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool isTransportEnabled(MidiTransport transport) => enabledTransports.contains(transport);
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/onBluetoothStateChanged.html b/doc/api/flutter_midi_command/MidiCommand/onBluetoothStateChanged.html index 25533baa..8229c7a0 100644 --- a/doc/api/flutter_midi_command/MidiCommand/onBluetoothStateChanged.html +++ b/doc/api/flutter_midi_command/MidiCommand/onBluetoothStateChanged.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
onBluetoothStateChanged property
+ +
-
- Stream<BluetoothState> + Stream<BluetoothState> + get onBluetoothStateChanged
-

Stream firing events whenever the bluetooth state changes

@@ -80,15 +73,13 @@

onBluetoothStateChanged property

Implementation

-
Stream<BluetoothState> get onBluetoothStateChanged =>
-    _bluetoothStateStream.stream.distinct();
+
Stream<BluetoothState> get onBluetoothStateChanged => _bluetoothStateStream.stream.distinct();

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/onMidiDataReceived.html b/doc/api/flutter_midi_command/MidiCommand/onMidiDataReceived.html index e0eda7d1..b063bef5 100644 --- a/doc/api/flutter_midi_command/MidiCommand/onMidiDataReceived.html +++ b/doc/api/flutter_midi_command/MidiCommand/onMidiDataReceived.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
onMidiDataReceived property
+ +
-
- Stream<MidiPacket>? + Stream<MidiDataReceivedEvent>? + get onMidiDataReceived
-
-

Stream firing events whenever a midi package is received

-

The event contains the raw bytes contained in the MIDI package

+

Stream firing events whenever a typed MIDI message is received.

+

Each event contains the parsed MidiMessage, source MidiDevice, +MidiTransport, and packet timestamp.

Implementation

-
Stream<MidiPacket>? get onMidiDataReceived {
-  return _platform.onMidiDataReceived;
+  
Stream<MidiDataReceivedEvent>? get onMidiDataReceived {
+  final streams = <Stream<MidiDataReceivedEvent>>[];
+  if (_platform.onMidiDataReceived != null) {
+    streams.add(_mapPacketsToTypedEvents(_platform.onMidiDataReceived!, fallbackTransport: MidiTransport.native));
+  }
+  if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) {
+    streams.add(_mapPacketsToTypedEvents(_bleTransport!.onMidiDataReceived, fallbackTransport: MidiTransport.ble));
+  }
+  if (streams.isEmpty) {
+    return null;
+  }
+  if (streams.length == 1) {
+    return streams.first;
+  }
+  return StreamGroup.merge(streams).asBroadcastStream();
 }
@@ -90,7 +97,6 @@

Implementation

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/onMidiDataSent.html b/doc/api/flutter_midi_command/MidiCommand/onMidiDataSent.html index 707df044..58147c32 100644 --- a/doc/api/flutter_midi_command/MidiCommand/onMidiDataSent.html +++ b/doc/api/flutter_midi_command/MidiCommand/onMidiDataSent.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
onMidiDataSent property
+ +
-
- Stream<Uint8List> + Stream<Uint8List> + get onMidiDataSent
-

Stream firing events whenever a midi package is sent

@@ -90,7 +83,6 @@

Implementation

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/onMidiPacketReceived.html b/doc/api/flutter_midi_command/MidiCommand/onMidiPacketReceived.html new file mode 100644 index 00000000..75494775 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/onMidiPacketReceived.html @@ -0,0 +1,133 @@ + + + + + + + + onMidiPacketReceived property - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
onMidiPacketReceived
+ + +
+
+
+
+

onMidiPacketReceived property +

+ + + + + +
+
+ + Stream<MidiPacket>? + get + onMidiPacketReceived + + +
+ +
+

Stream firing events whenever a raw MIDI packet is received.

+

Prefer onMidiDataReceived for parsed message events.

+
+ + +
+

Implementation

+
Stream<MidiPacket>? get onMidiPacketReceived {
+  final streams = <Stream<MidiPacket>>[];
+  if (_platform.onMidiDataReceived != null) {
+    streams.add(_platform.onMidiDataReceived!);
+  }
+  if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) {
+    streams.add(_bleTransport!.onMidiDataReceived);
+  }
+  if (streams.isEmpty) {
+    return null;
+  }
+  if (streams.length == 1) {
+    return streams.first;
+  }
+  return StreamGroup.merge(streams).asBroadcastStream();
+}
+
+ +
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/onMidiSetupChanged.html b/doc/api/flutter_midi_command/MidiCommand/onMidiSetupChanged.html index 5ca88932..1ae072d6 100644 --- a/doc/api/flutter_midi_command/MidiCommand/onMidiSetupChanged.html +++ b/doc/api/flutter_midi_command/MidiCommand/onMidiSetupChanged.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
onMidiSetupChanged property
+ +
-
- Stream<String>? + Stream<String>? + get onMidiSetupChanged
-

Stream firing events whenever a change in the MIDI setup occurs

@@ -82,7 +75,20 @@

onMidiSetupChanged property

Implementation

Stream<String>? get onMidiSetupChanged {
-  return _platform.onMidiSetupChanged;
+  final streams = <Stream<String>>[];
+  if (_platform.onMidiSetupChanged != null) {
+    streams.add(_platform.onMidiSetupChanged!);
+  }
+  if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) {
+    streams.add(_bleTransport!.onMidiSetupChanged);
+  }
+  if (streams.isEmpty) {
+    return null;
+  }
+  if (streams.length == 1) {
+    return streams.first;
+  }
+  return StreamGroup.merge(streams).asBroadcastStream();
 }
@@ -90,7 +96,6 @@

Implementation

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/removeVirtualDevice.html b/doc/api/flutter_midi_command/MidiCommand/removeVirtualDevice.html index b0467a26..8879dcc2 100644 --- a/doc/api/flutter_midi_command/MidiCommand/removeVirtualDevice.html +++ b/doc/api/flutter_midi_command/MidiCommand/removeVirtualDevice.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
removeVirtualDevice method
- void -removeVirtualDevice(
  1. {String? name}
  2. -
) +removeVirtualDevice({
  1. String? name,
  2. +
}) @@ -81,13 +72,13 @@

removeVirtualDevice method

Implementation

void removeVirtualDevice({String? name}) {
+  _requireTransport(MidiTransport.virtual, 'removeVirtualDevice');
   _platform.removeVirtualDevice(name: name);
 }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/resetForTest.html b/doc/api/flutter_midi_command/MidiCommand/resetForTest.html new file mode 100644 index 00000000..2743a343 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/resetForTest.html @@ -0,0 +1,111 @@ + + + + + + + + resetForTest method - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
resetForTest
+ + +
+
+
+
+

resetForTest static method +

+ +
+ +void +resetForTest() + + + +
+ + + + +
+

Implementation

+
static void resetForTest() {
+  _instance = null;
+  __platform = null;
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/sendData.html b/doc/api/flutter_midi_command/MidiCommand/sendData.html index a49208fb..4b47a84b 100644 --- a/doc/api/flutter_midi_command/MidiCommand/sendData.html +++ b/doc/api/flutter_midi_command/MidiCommand/sendData.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
sendData method
- void -sendData(
  1. Uint8List data,
  2. -
  3. {String? deviceId,
  4. -
  5. int? timestamp}
  6. -
) +sendData(
  1. Uint8List data, {
  2. +
  3. String? deviceId,
  4. +
  5. int? timestamp,
  6. +
}) @@ -83,14 +74,30 @@

sendData method

Implementation

void sendData(Uint8List data, {String? deviceId, int? timestamp}) {
+  if (deviceId != null) {
+    final route = _deviceRouteById[deviceId];
+    if (route == _MidiDeviceRoute.platform) {
+      _platform.sendData(data, deviceId: deviceId, timestamp: timestamp);
+      _txStreamCtrl.add(data);
+      return;
+    }
+    if (route == _MidiDeviceRoute.bleTransport && _bleTransport != null && isTransportEnabled(MidiTransport.ble)) {
+      _bleTransport!.sendData(data, deviceId: deviceId, timestamp: timestamp);
+      _txStreamCtrl.add(data);
+      return;
+    }
+  }
+
   _platform.sendData(data, deviceId: deviceId, timestamp: timestamp);
+  if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) {
+    _bleTransport!.sendData(data, deviceId: deviceId, timestamp: timestamp);
+  }
   _txStreamCtrl.add(data);
 }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/setNetworkSessionEnabled.html b/doc/api/flutter_midi_command/MidiCommand/setNetworkSessionEnabled.html index 2911a187..cd950171 100644 --- a/doc/api/flutter_midi_command/MidiCommand/setNetworkSessionEnabled.html +++ b/doc/api/flutter_midi_command/MidiCommand/setNetworkSessionEnabled.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
setNetworkSessionEnabled method
- void -setNetworkSessionEnabled(
  1. bool enabled
  2. +setNetworkSessionEnabled(
    1. bool enabled
    ) @@ -81,13 +72,13 @@

    setNetworkSessionEnabled method

    Implementation

    void setNetworkSessionEnabled(bool enabled) {
    +  _requireTransport(MidiTransport.network, 'setNetworkSessionEnabled');
       _platform.setNetworkSessionEnabled(enabled);
     }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/setPlatformOverride.html b/doc/api/flutter_midi_command/MidiCommand/setPlatformOverride.html new file mode 100644 index 00000000..0c558ec8 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/setPlatformOverride.html @@ -0,0 +1,111 @@ + + + + + + + + setPlatformOverride method - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
setPlatformOverride
+ + +
+
+
+
+

setPlatformOverride static method +

+ +
+ +void +setPlatformOverride(
  1. MidiCommandPlatform platform
  2. +
) + + + +
+ + + + +
+

Implementation

+
static void setPlatformOverride(MidiCommandPlatform platform) {
+  __platform = platform;
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/startBluetooth.html b/doc/api/flutter_midi_command/MidiCommand/startBluetooth.html new file mode 100644 index 00000000..4e07f7f8 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/startBluetooth.html @@ -0,0 +1,136 @@ + + + + + + + + startBluetooth method - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
startBluetooth
+ + +
+
+
+
+

startBluetooth method +

+ +
+ +Future<void> +startBluetooth() + + + +
+ +
+

Starts the Bluetooth subsystem used for BLE MIDI discovery/connection.

+
+ + + +
+

Implementation

+
Future<void> startBluetooth() async {
+  _requireTransport(MidiTransport.ble, 'startBluetooth');
+  _requireBleTransport('startBluetooth');
+
+  if (_bluetoothIsStarted) {
+    return;
+  }
+  if (_bluetoothStartFuture != null) {
+    return _bluetoothStartFuture!;
+  }
+
+  _bluetoothStartFuture = () async {
+    try {
+      await _bleTransport!.startBluetooth();
+      await _listenToBluetoothState();
+      _bluetoothIsStarted = true;
+    } catch (_) {
+      _bluetoothIsStarted = false;
+      rethrow;
+    } finally {
+      _bluetoothStartFuture = null;
+    }
+  }();
+
+  return _bluetoothStartFuture!;
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/startBluetoothCentral.html b/doc/api/flutter_midi_command/MidiCommand/startBluetoothCentral.html deleted file mode 100644 index fb741945..00000000 --- a/doc/api/flutter_midi_command/MidiCommand/startBluetoothCentral.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - startBluetoothCentral method - MidiCommand class - flutter_midi_command library - Dart API - - - - - - - - - - - - - - - - - -
- -
- menu - -
startBluetoothCentral
- -
- -
-
-
- -
-
-

startBluetoothCentral method -

- -
- - -Future<void> -startBluetoothCentral() - - - -
- -
-

Starts the bluetooth central

-
- - - -
-

Implementation

-
Future<void> startBluetoothCentral() async {
-  if (_bluetoothCentralIsStarted) {
-    return;
-  }
-  _bluetoothCentralIsStarted = true;
-  await _platform.startBluetoothCentral();
-  await _listenToBluetoothState();
-}
-
- - -
- - - - - -
- -
- - flutter_midi_command - 0.4.17 - - - -
- - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/startScanningForBluetoothDevices.html b/doc/api/flutter_midi_command/MidiCommand/startScanningForBluetoothDevices.html index 80fa01c9..f0881026 100644 --- a/doc/api/flutter_midi_command/MidiCommand/startScanningForBluetoothDevices.html +++ b/doc/api/flutter_midi_command/MidiCommand/startScanningForBluetoothDevices.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
startScanningForBluetoothDevices method
- -Future<void> +Future<void> startScanningForBluetoothDevices() @@ -80,13 +71,14 @@

startScanningForBluetoothDevices method

Implementation

Future<void> startScanningForBluetoothDevices() async {
-  return _platform.startScanningForBluetoothDevices();
+  _requireTransport(MidiTransport.ble, 'startScanningForBluetoothDevices');
+  _requireBleTransport('startScanningForBluetoothDevices');
+  return _bleTransport!.startScanningForBluetoothDevices();
 }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/stopScanningForBluetoothDevices.html b/doc/api/flutter_midi_command/MidiCommand/stopScanningForBluetoothDevices.html index b4cde442..2084994b 100644 --- a/doc/api/flutter_midi_command/MidiCommand/stopScanningForBluetoothDevices.html +++ b/doc/api/flutter_midi_command/MidiCommand/stopScanningForBluetoothDevices.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
stopScanningForBluetoothDevices method
- void stopScanningForBluetoothDevices() @@ -79,13 +70,14 @@

stopScanningForBluetoothDevices method

Implementation

void stopScanningForBluetoothDevices() {
-  _platform.stopScanningForBluetoothDevices();
+  _requireTransport(MidiTransport.ble, 'stopScanningForBluetoothDevices');
+  _requireBleTransport('stopScanningForBluetoothDevices');
+  _bleTransport!.stopScanningForBluetoothDevices();
 }

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/supportedTransports-constant.html b/doc/api/flutter_midi_command/MidiCommand/supportedTransports-constant.html new file mode 100644 index 00000000..ca03881d --- /dev/null +++ b/doc/api/flutter_midi_command/MidiCommand/supportedTransports-constant.html @@ -0,0 +1,108 @@ + + + + + + + + supportedTransports constant - MidiCommand class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
supportedTransports
+ + +
+
+
+
+

supportedTransports constant +

+ + +
+ + Set<MidiTransport> + const supportedTransports + + +
+ + + +
+

Implementation

+
static const Set<MidiTransport> supportedTransports = {MidiTransport.native, MidiTransport.ble, MidiTransport.network, MidiTransport.virtual};
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiCommand/teardown.html b/doc/api/flutter_midi_command/MidiCommand/teardown.html index 6f79c4e7..2138cca1 100644 --- a/doc/api/flutter_midi_command/MidiCommand/teardown.html +++ b/doc/api/flutter_midi_command/MidiCommand/teardown.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
teardown method
- void teardown() @@ -80,12 +71,14 @@

teardown method

Implementation

void teardown() {
   _platform.teardown();
+  _bleTransport?.teardown();
+  _deviceRouteById.clear();
+  _resetMessageParsers();
 }
- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiCommand/waitUntilBluetoothIsInitialized.html b/doc/api/flutter_midi_command/MidiCommand/waitUntilBluetoothIsInitialized.html index 562c84a0..dfe2b450 100644 --- a/doc/api/flutter_midi_command/MidiCommand/waitUntilBluetoothIsInitialized.html +++ b/doc/api/flutter_midi_command/MidiCommand/waitUntilBluetoothIsInitialized.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
waitUntilBluetoothIsInitialized method
- -Future<void> +Future<void> waitUntilBluetoothIsInitialized() @@ -80,10 +71,9 @@

waitUntilBluetoothIsInitialized method

Implementation

Future<void> waitUntilBluetoothIsInitialized() async {
+  _requireTransport(MidiTransport.ble, 'waitUntilBluetoothIsInitialized');
   bool isInitialized() => _bluetoothState != BluetoothState.unknown;
 
-  print(_bluetoothState);
-
   if (isInitialized()) {
     return;
   }
@@ -99,7 +89,6 @@ 

Implementation

- - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command/MidiConnectionState-enum-sidebar.html b/doc/api/flutter_midi_command/MidiConnectionState-enum-sidebar.html new file mode 100644 index 00000000..6d980e9c --- /dev/null +++ b/doc/api/flutter_midi_command/MidiConnectionState-enum-sidebar.html @@ -0,0 +1,57 @@ +
    + + +
  1. Values
  2. +
  3. disconnected
  4. +
  5. connecting
  6. +
  7. connected
  8. +
  9. disconnecting
  10. + + +
  11. + Properties +
  12. + +
  13. + hashCode +
  14. + +
  15. + index +
  16. + +
  17. + name + (ext) +
  18. + +
  19. + runtimeType +
  20. + +
  21. Methods
  22. + +
  23. + noSuchMethod +
  24. + +
  25. + toString +
  26. + +
  27. Operators
  28. + +
  29. + operator == +
  30. + + + + + + +
  31. Constants
  32. +
  33. values
  34. +
diff --git a/doc/api/flutter_midi_command/MidiConnectionState.html b/doc/api/flutter_midi_command/MidiConnectionState.html new file mode 100644 index 00000000..1ab57e62 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiConnectionState.html @@ -0,0 +1,313 @@ + + + + + + + + MidiConnectionState enum - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiConnectionState
+ + +
+
+
+
+ +

+ MidiConnectionState + enum + + +

+
+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + +
Available extensions
+
+ + + +
+
+ +
+

Values

+
+
+ disconnected + → const MidiConnectionState + + +
+
+ + + +
+ +
+ connecting + → const MidiConnectionState + + +
+
+ + + +
+ +
+ connected + → const MidiConnectionState + + +
+
+ + + +
+ +
+ disconnecting + → const MidiConnectionState + + +
+
+ + + +
+ +
+
+ + +
+

Properties

+
+
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + + +
+
+ A numeric identifier for the enumerated value. +
no setterinherited
+ +
+ +
+ name + String + + +
+
+

+ Available on Enum, + provided by the EnumName extension +

+ The name of the enum value. +
no setter
+ +
+ +
+ runtimeType + Type + + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+
+
+ values + → const List<MidiConnectionState> + + +
+
+ A constant List of the values in this enum, in order of their declaration. + + +
+ +
+
+
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiConnectionState/values-constant.html b/doc/api/flutter_midi_command/MidiConnectionState/values-constant.html new file mode 100644 index 00000000..500f4958 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiConnectionState/values-constant.html @@ -0,0 +1,107 @@ + + + + + + + + values constant - MidiConnectionState enum - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
values
+ + +
+
+
+
+

values constant +

+ + +
+ + List<MidiConnectionState> + const values + + +
+ +
+

A constant List of the values in this enum, in order of their declaration.

+
+ + + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDataReceivedEvent-class-sidebar.html b/doc/api/flutter_midi_command/MidiDataReceivedEvent-class-sidebar.html new file mode 100644 index 00000000..4f9ccca9 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDataReceivedEvent-class-sidebar.html @@ -0,0 +1,57 @@ +
    + +
  1. Constructors
  2. +
  3. new
  4. + + + +
  5. + Properties +
  6. + +
  7. + device +
  8. + +
  9. + hashCode +
  10. + +
  11. + message +
  12. + +
  13. + runtimeType +
  14. + +
  15. + timestamp +
  16. + +
  17. + transport +
  18. + +
  19. Methods
  20. + +
  21. + noSuchMethod +
  22. + +
  23. + toString +
  24. + +
  25. Operators
  26. + +
  27. + operator == +
  28. + + + + + + +
diff --git a/doc/api/flutter_midi_command/MidiDataReceivedEvent-class.html b/doc/api/flutter_midi_command/MidiDataReceivedEvent-class.html new file mode 100644 index 00000000..571a1066 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDataReceivedEvent-class.html @@ -0,0 +1,246 @@ + + + + + + + + MidiDataReceivedEvent class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiDataReceivedEvent
+ + +
+
+
+
+

MidiDataReceivedEvent class + +

+ + + + + + +
+

Constructors

+
+
+ MidiDataReceivedEvent({required MidiMessage message, required MidiDevice device, required MidiTransport transport, required int timestamp}) +
+
+ +
const
+
+
+
+ +
+

Properties

+
+
+ device + MidiDevice + + +
+
+ +
final
+ +
+ +
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ message + MidiMessage + + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ timestamp + int + + +
+
+ +
final
+ +
+ +
+ transport + MidiTransport + + +
+
+ +
final
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDataReceivedEvent/MidiDataReceivedEvent.html b/doc/api/flutter_midi_command/MidiDataReceivedEvent/MidiDataReceivedEvent.html new file mode 100644 index 00000000..04de801b --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDataReceivedEvent/MidiDataReceivedEvent.html @@ -0,0 +1,108 @@ + + + + + + + + MidiDataReceivedEvent.new constructor - MidiDataReceivedEvent - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiDataReceivedEvent.new
+ + +
+
+
+
+

MidiDataReceivedEvent constructor +

+ +
+ const + MidiDataReceivedEvent({
  1. required MidiMessage message,
  2. +
  3. required MidiDevice device,
  4. +
  5. required MidiTransport transport,
  6. +
  7. required int timestamp,
  8. +
}) +
+ + + + +
+

Implementation

+
const MidiDataReceivedEvent({required this.message, required this.device, required this.transport, required this.timestamp});
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDataReceivedEvent/device.html b/doc/api/flutter_midi_command/MidiDataReceivedEvent/device.html new file mode 100644 index 00000000..925f66ae --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDataReceivedEvent/device.html @@ -0,0 +1,108 @@ + + + + + + + + device property - MidiDataReceivedEvent class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
device
+ + +
+
+
+
+

device property +

+ + +
+ + MidiDevice + device +
final
+ +
+ + + +
+

Implementation

+
final MidiDevice device;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDataReceivedEvent/message.html b/doc/api/flutter_midi_command/MidiDataReceivedEvent/message.html new file mode 100644 index 00000000..c95fe05e --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDataReceivedEvent/message.html @@ -0,0 +1,108 @@ + + + + + + + + message property - MidiDataReceivedEvent class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
message
+ + +
+
+
+
+

message property +

+ + +
+ + MidiMessage + message +
final
+ +
+ + + +
+

Implementation

+
final MidiMessage message;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDataReceivedEvent/timestamp.html b/doc/api/flutter_midi_command/MidiDataReceivedEvent/timestamp.html new file mode 100644 index 00000000..d8cd732b --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDataReceivedEvent/timestamp.html @@ -0,0 +1,108 @@ + + + + + + + + timestamp property - MidiDataReceivedEvent class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
timestamp
+ + +
+
+
+
+

timestamp property +

+ + +
+ + int + timestamp +
final
+ +
+ + + +
+

Implementation

+
final int timestamp;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDataReceivedEvent/transport.html b/doc/api/flutter_midi_command/MidiDataReceivedEvent/transport.html new file mode 100644 index 00000000..5abfacfa --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDataReceivedEvent/transport.html @@ -0,0 +1,108 @@ + + + + + + + + transport property - MidiDataReceivedEvent class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
transport
+ + +
+
+
+
+

transport property +

+ + +
+ + MidiTransport + transport +
final
+ +
+ + + +
+

Implementation

+
final MidiTransport transport;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice-class-sidebar.html b/doc/api/flutter_midi_command/MidiDevice-class-sidebar.html new file mode 100644 index 00000000..4615c4b5 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDevice-class-sidebar.html @@ -0,0 +1,81 @@ +
    + +
  1. Constructors
  2. +
  3. new
  4. + + + +
  5. + Properties +
  6. + +
  7. + connected +
  8. + +
  9. + connectionState +
  10. + +
  11. + hashCode +
  12. + +
  13. + id +
  14. + +
  15. + inputPorts +
  16. + +
  17. + name +
  18. + +
  19. + onConnectionStateChanged +
  20. + +
  21. + outputPorts +
  22. + +
  23. + runtimeType +
  24. + +
  25. + type +
  26. + +
  27. Methods
  28. + +
  29. + dispose +
  30. + +
  31. + noSuchMethod +
  32. + +
  33. + setConnectionState +
  34. + +
  35. + toString +
  36. + +
  37. Operators
  38. + +
  39. + operator == +
  40. + + + + + + +
diff --git a/doc/api/flutter_midi_command/MidiDevice-class.html b/doc/api/flutter_midi_command/MidiDevice-class.html index 1b8a2003..b23f60f4 100644 --- a/doc/api/flutter_midi_command/MidiDevice-class.html +++ b/doc/api/flutter_midi_command/MidiDevice-class.html @@ -6,238 +6,314 @@ MidiDevice class - flutter_midi_command library - Dart API - - - - - - - - - - - -
+ + + + + + + + + + + +
- + menu
MidiDevice
+
-
+
+
+

MidiDevice class + +

- - -
-

MidiDevice class

- -
-

Constructors

-
-
- MidiDevice(String id, String name, String type, bool connected) + +
+

Constructors

+
+
+ MidiDevice(String id, String name, MidiDeviceType type, bool connected)
-
-
+
+
+ +
+

Properties

+
+
+ connected + bool + -
-

Properties

+
+
+ +
getter/setter pair
-
-
- connected - bool -
-
- -
read / write
+ +
+ connectionState + MidiConnectionState + + +
+
+ +
no setter
+ +
+ +
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+
- id - String -
-
- -
read / write
+ id + String + + + +
+ +
getter/setter pair
+
-
- name - String -
-
- -
read / write
+ +
+ inputPorts + List<MidiPort> + + +
+
+ +
getter/setter pair
+
-
- toDictionary - Map<String, Object> -
-
- -
read-only
+ +
+ name + String + + +
+
+ +
getter/setter pair
+
-
- type - String -
-
- -
read / write
+ +
+ onConnectionStateChanged + Stream<MidiConnectionState> + + +
+
+ +
no setter
+
-
- hashCode - int -
-
- The hash code for this object. [...] -
read-only, inherited
+ +
+ outputPorts + List<MidiPort> + + +
+
+ +
getter/setter pair
+
+
- runtimeType - Type -
-
- A representation of the runtime type of the object. -
read-only, inherited
+ runtimeType + Type + + + +
+ A representation of the runtime type of the object. +
no setterinherited
+
-
-
-
-

Methods

-
-
- noSuchMethod(Invocation invocation) - → dynamic - -
-
- Invoked when a non-existent method or property is accessed. [...] -
inherited
+
+ type + MidiDeviceType + + +
+
+ +
getter/setter pair
+
-
- toString() - String - -
-
- Returns a string representation of this object. -
inherited
+ +
+
+ + +
+

Methods

+
+
+ dispose() + → void + + + +
+
+ + +
-
-
-
-

Operators

-
-
- operator ==(Object other) - bool - -
-
- The equality operator. [...] -
inherited
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+
-
-
+
+ setConnectionState(MidiConnectionState value) + → void + + +
+
+ + +
-
+
+ toString() + String + + -
+
+ A string representation of this object. +
inherited
+ +
+ + + +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
- -
-
+ + + +
flutter_midi_command - 0.2.1 + 1.0.0 - - +
- - - - - - - + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/MidiDevice.html b/doc/api/flutter_midi_command/MidiDevice/MidiDevice.html index 74aa235d..32470af7 100644 --- a/doc/api/flutter_midi_command/MidiDevice/MidiDevice.html +++ b/doc/api/flutter_midi_command/MidiDevice/MidiDevice.html @@ -4,120 +4,109 @@ - - MidiDevice constructor - MidiDevice class - flutter_midi_command library - Dart API - - - - - - - - - + + MidiDevice.new constructor - MidiDevice - flutter_midi_command library - Dart API + + + + + + + + + + + - - +
-
- + menu -
MidiDevice
+
MidiDevice.new
+
-
- - - -
-

MidiDevice constructor

+
+
+

MidiDevice constructor +

- MidiDevice(String id, String name, String type, bool connected) + MidiDevice(
  1. String id,
  2. +
  3. String name,
  4. +
  5. MidiDeviceType type,
  6. +
  7. bool connected,
  8. +
)
+ + -
-

Implementation

-
MidiDevice(this.id, this.name, this.type, this.connected);
-
+
+

Implementation

+
MidiDevice(this.id, this.name, this.type, bool connected)
+  : _connectionState =
+        connected
+            ? MidiConnectionState.connected
+            : MidiConnectionState.disconnected;
+
+
+
-
flutter_midi_command - 0.2.1 + 1.0.0 - - +
- - - - - - - + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/connected.html b/doc/api/flutter_midi_command/MidiDevice/connected.html index c6a6900c..fd962a35 100644 --- a/doc/api/flutter_midi_command/MidiDevice/connected.html +++ b/doc/api/flutter_midi_command/MidiDevice/connected.html @@ -6,120 +6,133 @@ connected property - MidiDevice class - flutter_midi_command library - Dart API - - - - - - - - - - - -
+ + + + + + + + + + + +
- + menu
connected
+
-
+
+
+

connected property +

- +
+

Implementation

+
bool get connected => _connectionState == MidiConnectionState.connected;
+
-
-

connected property

+ -
- bool - connected -
read / write
-
-
-

Implementation

-
bool connected
 
-
-
+ +
+
+ + set + connected + (bool value) + -
+ + - + +
+

Implementation

+
set connected(bool value) {
+  setConnectionState(
+    value ? MidiConnectionState.connected : MidiConnectionState.disconnected,
+  );
+}
+
+ + + +
+ +
-
flutter_midi_command - 0.2.1 + 1.0.0 - - +
- - - - - - - + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/connectionState.html b/doc/api/flutter_midi_command/MidiDevice/connectionState.html new file mode 100644 index 00000000..b5a78bc1 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDevice/connectionState.html @@ -0,0 +1,114 @@ + + + + + + + + connectionState property - MidiDevice class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
connectionState
+ + +
+
+
+
+

connectionState property +

+ + + + + +
+
+ + MidiConnectionState + get + connectionState + + +
+ + + +
+

Implementation

+
MidiConnectionState get connectionState => _connectionState;
+
+ +
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/dispose.html b/doc/api/flutter_midi_command/MidiDevice/dispose.html new file mode 100644 index 00000000..14d6f748 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDevice/dispose.html @@ -0,0 +1,110 @@ + + + + + + + + dispose method - MidiDevice class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
dispose
+ + +
+
+
+
+

dispose method +

+ +
+ +void +dispose() + + + +
+ + + + +
+

Implementation

+
void dispose() {
+  _connectionStateController.close();
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/id.html b/doc/api/flutter_midi_command/MidiDevice/id.html index 9905024c..184279da 100644 --- a/doc/api/flutter_midi_command/MidiDevice/id.html +++ b/doc/api/flutter_midi_command/MidiDevice/id.html @@ -6,120 +6,103 @@ id property - MidiDevice class - flutter_midi_command library - Dart API - - - - - - - - - - + + + + + + + + + + +
-
- + menu
id
+
-
+
+
+

id property +

- - -
-

id property

+
+ + String + id +
getter/setter pair
-
- String - id -
read / write
-
-
-

Implementation

-
String id
+      
+ - -
+ +
+

Implementation

+
String id;
+
-
- + +
+ +
-
flutter_midi_command - 0.2.1 + 1.0.0 - - +
- - - - - - - + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/inputPorts.html b/doc/api/flutter_midi_command/MidiDevice/inputPorts.html new file mode 100644 index 00000000..b995d2e9 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDevice/inputPorts.html @@ -0,0 +1,108 @@ + + + + + + + + inputPorts property - MidiDevice class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
inputPorts
+ + +
+
+
+
+

inputPorts property +

+ + +
+ + List<MidiPort> + inputPorts +
getter/setter pair
+ +
+ + + +
+

Implementation

+
List<MidiPort> inputPorts = [];
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/name.html b/doc/api/flutter_midi_command/MidiDevice/name.html index 8e9a6d8d..de51594d 100644 --- a/doc/api/flutter_midi_command/MidiDevice/name.html +++ b/doc/api/flutter_midi_command/MidiDevice/name.html @@ -6,120 +6,103 @@ name property - MidiDevice class - flutter_midi_command library - Dart API - - - - - - - - - - + + + + + + + + + + +
-
- + menu
name
+
-
+
+
+

name property +

- - -
-

name property

+
+ + String + name +
getter/setter pair
-
- String - name -
read / write
-
-
-

Implementation

-
String name
+      
+ - -
+ +
+

Implementation

+
String name;
+
-
- + +
+ +
-
flutter_midi_command - 0.2.1 + 1.0.0 - - +
- - - - - - - + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/onConnectionStateChanged.html b/doc/api/flutter_midi_command/MidiDevice/onConnectionStateChanged.html new file mode 100644 index 00000000..3e565a35 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDevice/onConnectionStateChanged.html @@ -0,0 +1,115 @@ + + + + + + + + onConnectionStateChanged property - MidiDevice class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
onConnectionStateChanged
+ + +
+
+
+
+

onConnectionStateChanged property +

+ + + + + +
+
+ + Stream<MidiConnectionState> + get + onConnectionStateChanged + + +
+ + + +
+

Implementation

+
Stream<MidiConnectionState> get onConnectionStateChanged =>
+    _connectionStateController.stream;
+
+ +
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/outputPorts.html b/doc/api/flutter_midi_command/MidiDevice/outputPorts.html new file mode 100644 index 00000000..07b3a71b --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDevice/outputPorts.html @@ -0,0 +1,108 @@ + + + + + + + + outputPorts property - MidiDevice class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
outputPorts
+ + +
+
+
+
+

outputPorts property +

+ + +
+ + List<MidiPort> + outputPorts +
getter/setter pair
+ +
+ + + +
+

Implementation

+
List<MidiPort> outputPorts = [];
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/setConnectionState.html b/doc/api/flutter_midi_command/MidiDevice/setConnectionState.html new file mode 100644 index 00000000..5a242eb9 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDevice/setConnectionState.html @@ -0,0 +1,115 @@ + + + + + + + + setConnectionState method - MidiDevice class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
setConnectionState
+ + +
+
+
+
+

setConnectionState method +

+ +
+ +void +setConnectionState(
  1. MidiConnectionState value
  2. +
) + + + +
+ + + + +
+

Implementation

+
void setConnectionState(MidiConnectionState value) {
+  if (_connectionState == value) {
+    return;
+  }
+  _connectionState = value;
+  _connectionStateController.add(value);
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDevice/toDictionary.html b/doc/api/flutter_midi_command/MidiDevice/toDictionary.html deleted file mode 100644 index e7df08e9..00000000 --- a/doc/api/flutter_midi_command/MidiDevice/toDictionary.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - toDictionary property - MidiDevice class - flutter_midi_command library - Dart API - - - - - - - - - - - - - -
- -
- - -
toDictionary
- -
- -
- - - -
-

toDictionary property

- - -
- -
- Map<String, Object> - toDictionary - -
- -
-

Implementation

-
Map<String, Object> get toDictionary {
-  return {"name": name, "id": id, "type": type};
-}
-
-
- -
- - - -
- -
- - flutter_midi_command - 0.2.1 - - - -
- - - - - - - - - - - diff --git a/doc/api/flutter_midi_command/MidiDevice/type.html b/doc/api/flutter_midi_command/MidiDevice/type.html index ac160225..62e7c539 100644 --- a/doc/api/flutter_midi_command/MidiDevice/type.html +++ b/doc/api/flutter_midi_command/MidiDevice/type.html @@ -6,120 +6,103 @@ type property - MidiDevice class - flutter_midi_command library - Dart API - - - - - - - - - - + + + + + + + + + + +
-
- + menu
type
+
-
+
+
+

type property +

- - -
-

type property

+
+ + MidiDeviceType + type +
getter/setter pair
-
- String - type -
read / write
-
-
-

Implementation

-
String type
+      
+ - -
+ +
+

Implementation

+
MidiDeviceType type;
+
-
- + +
+ +
-
flutter_midi_command - 0.2.1 + 1.0.0 - - +
- - - - - - - + + + + diff --git a/doc/api/flutter_midi_command/MidiDeviceType-enum-sidebar.html b/doc/api/flutter_midi_command/MidiDeviceType-enum-sidebar.html new file mode 100644 index 00000000..680fae37 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDeviceType-enum-sidebar.html @@ -0,0 +1,66 @@ +
    + + +
  1. Values
  2. +
  3. serial
  4. +
  5. ble
  6. +
  7. virtual
  8. +
  9. ownVirtual
  10. +
  11. network
  12. +
  13. unknown
  14. + + +
  15. + Properties +
  16. + +
  17. + hashCode +
  18. + +
  19. + index +
  20. + +
  21. + name + (ext) +
  22. + +
  23. + runtimeType +
  24. + +
  25. + wireValue + (ext) +
  26. + +
  27. Methods
  28. + +
  29. + noSuchMethod +
  30. + +
  31. + toString +
  32. + +
  33. Operators
  34. + +
  35. + operator == +
  36. + + + + + + +
  37. Constants
  38. +
  39. values
  40. +
diff --git a/doc/api/flutter_midi_command/MidiDeviceType.html b/doc/api/flutter_midi_command/MidiDeviceType.html new file mode 100644 index 00000000..ade366f4 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDeviceType.html @@ -0,0 +1,354 @@ + + + + + + + + MidiDeviceType enum - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiDeviceType
+ + +
+
+
+
+ +

+ MidiDeviceType + enum + + +

+
+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + +
Available extensions
+
+ + + +
+
+ +
+

Values

+
+
+ serial + → const MidiDeviceType + + +
+
+ + + +
+ +
+ ble + → const MidiDeviceType + + +
+
+ + + +
+ +
+ virtual + → const MidiDeviceType + + +
+
+ + + +
+ +
+ ownVirtual + → const MidiDeviceType + + +
+
+ + + +
+ +
+ network + → const MidiDeviceType + + +
+
+ + + +
+ +
+ unknown + → const MidiDeviceType + + +
+
+ + + +
+ +
+
+ + +
+

Properties

+
+
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + + +
+
+ A numeric identifier for the enumerated value. +
no setterinherited
+ +
+ +
+ name + String + + +
+
+

+ Available on Enum, + provided by the EnumName extension +

+ The name of the enum value. +
no setter
+ +
+ +
+ runtimeType + Type + + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ wireValue + String + + +
+
+

+ Available on MidiDeviceType, + provided by the MidiDeviceTypeWire extension +

+ +
no setter
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+
+
+ values + → const List<MidiDeviceType> + + +
+
+ A constant List of the values in this enum, in order of their declaration. + + +
+ +
+
+
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDeviceType/values-constant.html b/doc/api/flutter_midi_command/MidiDeviceType/values-constant.html new file mode 100644 index 00000000..bcf8dfb6 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDeviceType/values-constant.html @@ -0,0 +1,107 @@ + + + + + + + + values constant - MidiDeviceType enum - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
values
+ + +
+
+
+
+

values constant +

+ + +
+ + List<MidiDeviceType> + const values + + +
+ +
+

A constant List of the values in this enum, in order of their declaration.

+
+ + + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDeviceTypeWire-extension-sidebar.html b/doc/api/flutter_midi_command/MidiDeviceTypeWire-extension-sidebar.html new file mode 100644 index 00000000..adfc5990 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDeviceTypeWire-extension-sidebar.html @@ -0,0 +1,18 @@ +
    + + + + + + +
  1. Properties
  2. +
  3. wireValue
  4. + + + + + +
  5. Static methods
  6. +
  7. fromWireValue
  8. + +
diff --git a/doc/api/flutter_midi_command/MidiDeviceTypeWire.html b/doc/api/flutter_midi_command/MidiDeviceTypeWire.html new file mode 100644 index 00000000..bd53c9d2 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDeviceTypeWire.html @@ -0,0 +1,159 @@ + + + + + + + + MidiDeviceTypeWire extension - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiDeviceTypeWire
+ + +
+
+
+
+

MidiDeviceTypeWire extension + +

+ + + +
+
+
on
+
+ +
+
+ + + +
+ +
+

Properties

+
+
+ wireValue + String + + +
+
+

+ Available on MidiDeviceType, + provided by the MidiDeviceTypeWire extension +

+ +
no setter
+ +
+ +
+
+ + + + + +
+

Static Methods

+
+
+ fromWireValue(Object? value) + MidiDeviceType + + + +
+
+

+ Available on MidiDeviceType, + provided by the MidiDeviceTypeWire extension +

+ + + +
+ +
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDeviceTypeWire/fromWireValue.html b/doc/api/flutter_midi_command/MidiDeviceTypeWire/fromWireValue.html new file mode 100644 index 00000000..edd48417 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDeviceTypeWire/fromWireValue.html @@ -0,0 +1,129 @@ + + + + + + + + fromWireValue method - MidiDeviceTypeWire extension - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
fromWireValue
+ + +
+
+
+
+

fromWireValue static method +

+ +
+ +MidiDeviceType +fromWireValue(
  1. Object? value
  2. +
) + + + +
+ + + + +
+

Implementation

+
static MidiDeviceType fromWireValue(Object? value) {
+  final normalized = value?.toString().trim().toLowerCase() ?? 'unknown';
+  switch (normalized) {
+    case 'ble':
+    case 'bluetooth':
+    case 'bonded':
+      return MidiDeviceType.ble;
+    case 'native':
+    case 'serial':
+      return MidiDeviceType.serial;
+    case 'virtual':
+      return MidiDeviceType.virtual;
+    case 'own-virtual':
+    case 'ownvirtual':
+      return MidiDeviceType.ownVirtual;
+    case 'network':
+      return MidiDeviceType.network;
+    default:
+      return MidiDeviceType.unknown;
+  }
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiDeviceTypeWire/wireValue.html b/doc/api/flutter_midi_command/MidiDeviceTypeWire/wireValue.html new file mode 100644 index 00000000..56ed3a11 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiDeviceTypeWire/wireValue.html @@ -0,0 +1,129 @@ + + + + + + + + wireValue property - MidiDeviceTypeWire extension - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
wireValue
+ + +
+
+
+
+

wireValue property +

+ + + + + +
+
+ + String + get + wireValue + + +
+ + + +
+

Implementation

+
String get wireValue {
+  switch (this) {
+    case MidiDeviceType.serial:
+      return 'native';
+    case MidiDeviceType.ble:
+      return 'BLE';
+    case MidiDeviceType.virtual:
+      return 'virtual';
+    case MidiDeviceType.ownVirtual:
+      return 'own-virtual';
+    case MidiDeviceType.network:
+      return 'network';
+    case MidiDeviceType.unknown:
+      return 'unknown';
+  }
+}
+
+ +
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPacket-class-sidebar.html b/doc/api/flutter_midi_command/MidiPacket-class-sidebar.html new file mode 100644 index 00000000..c7307b9e --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPacket-class-sidebar.html @@ -0,0 +1,53 @@ +
    + +
  1. Constructors
  2. +
  3. new
  4. + + + +
  5. + Properties +
  6. + +
  7. + data +
  8. + +
  9. + device +
  10. + +
  11. + hashCode +
  12. + +
  13. + runtimeType +
  14. + +
  15. + timestamp +
  16. + +
  17. Methods
  18. + +
  19. + noSuchMethod +
  20. + +
  21. + toString +
  22. + +
  23. Operators
  24. + +
  25. + operator == +
  26. + + + + + + +
diff --git a/doc/api/flutter_midi_command/MidiPacket-class.html b/doc/api/flutter_midi_command/MidiPacket-class.html new file mode 100644 index 00000000..dec33439 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPacket-class.html @@ -0,0 +1,233 @@ + + + + + + + + MidiPacket class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiPacket
+ + +
+
+
+
+

MidiPacket class + +

+ + + + + + +
+

Constructors

+
+
+ MidiPacket(Uint8List data, int timestamp, MidiDevice device) +
+
+ +
+
+
+ +
+

Properties

+
+
+ data + Uint8List + + +
+
+ +
getter/setter pair
+ +
+ +
+ device + MidiDevice + + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ timestamp + int + + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPacket/MidiPacket.html b/doc/api/flutter_midi_command/MidiPacket/MidiPacket.html new file mode 100644 index 00000000..23be01a5 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPacket/MidiPacket.html @@ -0,0 +1,107 @@ + + + + + + + + MidiPacket.new constructor - MidiPacket - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiPacket.new
+ + +
+
+
+
+

MidiPacket constructor +

+ +
+ + MidiPacket(
  1. Uint8List data,
  2. +
  3. int timestamp,
  4. +
  5. MidiDevice device
  6. +
) +
+ + + + +
+

Implementation

+
MidiPacket(this.data, this.timestamp, this.device);
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPacket/data.html b/doc/api/flutter_midi_command/MidiPacket/data.html new file mode 100644 index 00000000..716e9b38 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPacket/data.html @@ -0,0 +1,108 @@ + + + + + + + + data property - MidiPacket class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
data
+ + +
+
+
+
+

data property +

+ + +
+ + Uint8List + data +
getter/setter pair
+ +
+ + + +
+

Implementation

+
Uint8List data;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPacket/device.html b/doc/api/flutter_midi_command/MidiPacket/device.html new file mode 100644 index 00000000..a7cc145b --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPacket/device.html @@ -0,0 +1,108 @@ + + + + + + + + device property - MidiPacket class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
device
+ + +
+
+
+
+

device property +

+ + +
+ + MidiDevice + device +
getter/setter pair
+ +
+ + + +
+

Implementation

+
MidiDevice device;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPacket/timestamp.html b/doc/api/flutter_midi_command/MidiPacket/timestamp.html new file mode 100644 index 00000000..b1cf67cf --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPacket/timestamp.html @@ -0,0 +1,108 @@ + + + + + + + + timestamp property - MidiPacket class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
timestamp
+ + +
+
+
+
+

timestamp property +

+ + +
+ + int + timestamp +
getter/setter pair
+ +
+ + + +
+

Implementation

+
int timestamp;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPort-class-sidebar.html b/doc/api/flutter_midi_command/MidiPort-class-sidebar.html new file mode 100644 index 00000000..c5002d4c --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPort-class-sidebar.html @@ -0,0 +1,53 @@ +
    + +
  1. Constructors
  2. +
  3. new
  4. + + + +
  5. + Properties +
  6. + +
  7. + connected +
  8. + +
  9. + hashCode +
  10. + +
  11. + id +
  12. + +
  13. + runtimeType +
  14. + +
  15. + type +
  16. + +
  17. Methods
  18. + +
  19. + noSuchMethod +
  20. + +
  21. + toString +
  22. + +
  23. Operators
  24. + +
  25. + operator == +
  26. + + + + + + +
diff --git a/doc/api/flutter_midi_command/MidiPort-class.html b/doc/api/flutter_midi_command/MidiPort-class.html new file mode 100644 index 00000000..e1c437e3 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPort-class.html @@ -0,0 +1,233 @@ + + + + + + + + MidiPort class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiPort
+ + +
+
+
+
+

MidiPort class + +

+ + + + + + +
+

Constructors

+
+
+ MidiPort(int id, MidiPortType type) +
+
+ +
+
+
+ +
+

Properties

+
+
+ connected + bool + + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ id + int + + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ type + ↔ MidiPortType + + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPort/MidiPort.html b/doc/api/flutter_midi_command/MidiPort/MidiPort.html new file mode 100644 index 00000000..f1c05571 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPort/MidiPort.html @@ -0,0 +1,106 @@ + + + + + + + + MidiPort.new constructor - MidiPort - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiPort.new
+ + +
+
+
+
+

MidiPort constructor +

+ +
+ + MidiPort(
  1. int id,
  2. +
  3. MidiPortType type
  4. +
) +
+ + + + +
+

Implementation

+
MidiPort(this.id, this.type);
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPort/connected.html b/doc/api/flutter_midi_command/MidiPort/connected.html new file mode 100644 index 00000000..35153c42 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPort/connected.html @@ -0,0 +1,108 @@ + + + + + + + + connected property - MidiPort class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
connected
+ + +
+
+
+
+

connected property +

+ + +
+ + bool + connected +
getter/setter pair
+ +
+ + + +
+

Implementation

+
bool connected = false;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPort/id.html b/doc/api/flutter_midi_command/MidiPort/id.html new file mode 100644 index 00000000..18a670b1 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPort/id.html @@ -0,0 +1,108 @@ + + + + + + + + id property - MidiPort class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
id
+ + +
+
+
+
+

id property +

+ + +
+ + int + id +
getter/setter pair
+ +
+ + + +
+

Implementation

+
int id;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiPort/type.html b/doc/api/flutter_midi_command/MidiPort/type.html new file mode 100644 index 00000000..5014b461 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiPort/type.html @@ -0,0 +1,108 @@ + + + + + + + + type property - MidiPort class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
type
+ + +
+
+
+
+

type property +

+ + +
+ + MidiPortType + type +
getter/setter pair
+ +
+ + + +
+

Implementation

+
MidiPortType type;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiTransport-enum-sidebar.html b/doc/api/flutter_midi_command/MidiTransport-enum-sidebar.html new file mode 100644 index 00000000..c1aa6528 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransport-enum-sidebar.html @@ -0,0 +1,57 @@ +
    + + +
  1. Values
  2. +
  3. native
  4. +
  5. ble
  6. +
  7. network
  8. +
  9. virtual
  10. + + +
  11. + Properties +
  12. + +
  13. + hashCode +
  14. + +
  15. + index +
  16. + +
  17. + name + (ext) +
  18. + +
  19. + runtimeType +
  20. + +
  21. Methods
  22. + +
  23. + noSuchMethod +
  24. + +
  25. + toString +
  26. + +
  27. Operators
  28. + +
  29. + operator == +
  30. + + + + + + +
  31. Constants
  32. +
  33. values
  34. +
diff --git a/doc/api/flutter_midi_command/MidiTransport.html b/doc/api/flutter_midi_command/MidiTransport.html new file mode 100644 index 00000000..0e391bfb --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransport.html @@ -0,0 +1,314 @@ + + + + + + + + MidiTransport enum - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiTransport
+ + +
+
+
+
+ +

+ MidiTransport + enum + + +

+
+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + +
Available extensions
+
+ + + +
+
+ +
+

Values

+
+
+ native + → const MidiTransport + + +
+
+

Host/platform MIDI stack (for example USB, virtual host ports, +and paired devices exposed by the operating system).

+ + +
+ +
+ ble + → const MidiTransport + + +
+
+ + + +
+ +
+ network + → const MidiTransport + + +
+
+ + + +
+ +
+ virtual + → const MidiTransport + + +
+
+ + + +
+ +
+
+ + +
+

Properties

+
+
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + + +
+
+ A numeric identifier for the enumerated value. +
no setterinherited
+ +
+ +
+ name + String + + +
+
+

+ Available on Enum, + provided by the EnumName extension +

+ The name of the enum value. +
no setter
+ +
+ +
+ runtimeType + Type + + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+
+
+ values + → const List<MidiTransport> + + +
+
+ A constant List of the values in this enum, in order of their declaration. + + +
+ +
+
+
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiTransport/values-constant.html b/doc/api/flutter_midi_command/MidiTransport/values-constant.html new file mode 100644 index 00000000..7feba2df --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransport/values-constant.html @@ -0,0 +1,107 @@ + + + + + + + + values constant - MidiTransport enum - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
values
+ + +
+
+
+
+

values constant +

+ + +
+ + List<MidiTransport> + const values + + +
+ +
+

A constant List of the values in this enum, in order of their declaration.

+
+ + + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiTransportPolicy-class-sidebar.html b/doc/api/flutter_midi_command/MidiTransportPolicy-class-sidebar.html new file mode 100644 index 00000000..5381ed1f --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransportPolicy-class-sidebar.html @@ -0,0 +1,53 @@ +
    + +
  1. Constructors
  2. +
  3. new
  4. + + + +
  5. + Properties +
  6. + +
  7. + excludedTransports +
  8. + +
  9. + hashCode +
  10. + +
  11. + includedTransports +
  12. + +
  13. + runtimeType +
  14. + +
  15. Methods
  16. + +
  17. + noSuchMethod +
  18. + +
  19. + resolveEnabledTransports +
  20. + +
  21. + toString +
  22. + +
  23. Operators
  24. + +
  25. + operator == +
  26. + + + + + + +
diff --git a/doc/api/flutter_midi_command/MidiTransportPolicy-class.html b/doc/api/flutter_midi_command/MidiTransportPolicy-class.html new file mode 100644 index 00000000..499f49bd --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransportPolicy-class.html @@ -0,0 +1,235 @@ + + + + + + + + MidiTransportPolicy class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiTransportPolicy
+ + +
+
+
+
+

MidiTransportPolicy class + +

+ + + + + + +
+

Constructors

+
+
+ MidiTransportPolicy({Set<MidiTransport>? includedTransports, Set<MidiTransport> excludedTransports = const <MidiTransport>{}}) +
+
+ +
const
+
+
+
+ +
+

Properties

+
+
+ excludedTransports + Set<MidiTransport> + + +
+
+ +
final
+ +
+ +
+ hashCode + int + + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ includedTransports + Set<MidiTransport>? + + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ resolveEnabledTransports(Set<MidiTransport> supported) + Set<MidiTransport> + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiTransportPolicy/MidiTransportPolicy.html b/doc/api/flutter_midi_command/MidiTransportPolicy/MidiTransportPolicy.html new file mode 100644 index 00000000..b85faf8d --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransportPolicy/MidiTransportPolicy.html @@ -0,0 +1,106 @@ + + + + + + + + MidiTransportPolicy.new constructor - MidiTransportPolicy - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
MidiTransportPolicy.new
+ + +
+
+
+
+

MidiTransportPolicy constructor +

+ +
+ const + MidiTransportPolicy({
  1. Set<MidiTransport>? includedTransports,
  2. +
  3. Set<MidiTransport> excludedTransports = const <MidiTransport>{},
  4. +
}) +
+ + + + +
+

Implementation

+
const MidiTransportPolicy({this.includedTransports, this.excludedTransports = const <MidiTransport>{}});
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiTransportPolicy/excludedTransports.html b/doc/api/flutter_midi_command/MidiTransportPolicy/excludedTransports.html new file mode 100644 index 00000000..2ce30298 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransportPolicy/excludedTransports.html @@ -0,0 +1,108 @@ + + + + + + + + excludedTransports property - MidiTransportPolicy class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
excludedTransports
+ + +
+
+
+
+

excludedTransports property +

+ + +
+ + Set<MidiTransport> + excludedTransports +
final
+ +
+ + + +
+

Implementation

+
final Set<MidiTransport> excludedTransports;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiTransportPolicy/includedTransports.html b/doc/api/flutter_midi_command/MidiTransportPolicy/includedTransports.html new file mode 100644 index 00000000..769ae1fd --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransportPolicy/includedTransports.html @@ -0,0 +1,108 @@ + + + + + + + + includedTransports property - MidiTransportPolicy class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
includedTransports
+ + +
+
+
+
+

includedTransports property +

+ + +
+ + Set<MidiTransport>? + includedTransports +
final
+ +
+ + + +
+

Implementation

+
final Set<MidiTransport>? includedTransports;
+
+ + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/MidiTransportPolicy/resolveEnabledTransports.html b/doc/api/flutter_midi_command/MidiTransportPolicy/resolveEnabledTransports.html new file mode 100644 index 00000000..30638347 --- /dev/null +++ b/doc/api/flutter_midi_command/MidiTransportPolicy/resolveEnabledTransports.html @@ -0,0 +1,114 @@ + + + + + + + + resolveEnabledTransports method - MidiTransportPolicy class - flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
resolveEnabledTransports
+ + +
+
+
+
+

resolveEnabledTransports method +

+ +
+ +Set<MidiTransport> +resolveEnabledTransports(
  1. Set<MidiTransport> supported
  2. +
) + + + +
+ + + + +
+

Implementation

+
Set<MidiTransport> resolveEnabledTransports(Set<MidiTransport> supported) {
+  final included = includedTransports ?? supported;
+  return included.where((transport) {
+    return supported.contains(transport) && !excludedTransports.contains(transport);
+  }).toSet();
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command/flutter_midi_command-library-sidebar.html b/doc/api/flutter_midi_command/flutter_midi_command-library-sidebar.html index f308004b..d03ca176 100644 --- a/doc/api/flutter_midi_command/flutter_midi_command-library-sidebar.html +++ b/doc/api/flutter_midi_command/flutter_midi_command-library-sidebar.html @@ -1,12 +1,18 @@
    -
  1. Classes
  2. +
  3. Classes
  4. +
  5. MidiCapabilities
  6. MidiCommand
  7. -
  8. MidiDevice
  9. -
  10. MidiPacket
  11. -
  12. MidiPort
  13. +
  14. MidiDataReceivedEvent
  15. +
  16. MidiDevice
  17. +
  18. MidiPacket
  19. +
  20. MidiPort
  21. +
  22. MidiTransportPolicy
  23. -
  24. Enums
  25. +
  26. Enums
  27. BluetoothState
  28. +
  29. MidiConnectionState
  30. +
  31. MidiDeviceType
  32. +
  33. MidiTransport
  34. @@ -15,4 +21,6 @@ +
  35. Extensions
  36. +
  37. MidiDeviceTypeWire
diff --git a/doc/api/flutter_midi_command/flutter_midi_command-library.html b/doc/api/flutter_midi_command/flutter_midi_command-library.html index 540a055c..ac66549a 100644 --- a/doc/api/flutter_midi_command/flutter_midi_command-library.html +++ b/doc/api/flutter_midi_command/flutter_midi_command-library.html @@ -1,184 +1,10 @@ - - - - - - flutter_midi_command library - Dart API - - - - - - - - - - - - - - - - - -
- -
- menu - -
flutter_midi_command
- -
- -
-
-
- -
- -
- - -

- flutter_midi_command - library - - -

-
- - - - -
-

Classes

- -
-
- MidiCommand - -
-
- -
- -
- MidiDevice - -
-
- -
- -
- MidiPacket - -
-
- -
- -
- MidiPort - -
-
- -
- -
-
- -
-

Enums

- -
-
- BluetoothState - -
-
- -
- -
-
- - - - - - - - - -
- - - - - -
- -
- - flutter_midi_command - 0.4.17 - - - -
- - - - - - - - - - - - + + + + + +

New URL

+ + \ No newline at end of file diff --git a/doc/api/flutter_midi_command/index.html b/doc/api/flutter_midi_command/index.html new file mode 100644 index 00000000..02d152de --- /dev/null +++ b/doc/api/flutter_midi_command/index.html @@ -0,0 +1,225 @@ + + + + + + + + flutter_midi_command library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
flutter_midi_command
+ + +
+
+
+ +
+ + +

+ flutter_midi_command + library + + +

+
+ + + + +
+

Classes

+
+
+ MidiCapabilities + +
+
+ +
+ +
+ MidiCommand + +
+
+ +
+ +
+ MidiDataReceivedEvent + +
+
+ +
+ +
+ MidiDevice + +
+
+ +
+ +
+ MidiPacket + +
+
+ +
+ +
+ MidiPort + +
+
+ +
+ +
+ MidiTransportPolicy + +
+
+ +
+ +
+
+ +
+

Enums

+
+
+ BluetoothState + +
+
+ +
+ +
+ MidiConnectionState + +
+
+ +
+ +
+ MidiDeviceType + +
+
+ +
+ +
+ MidiTransport + +
+
+ +
+ +
+
+ + + +
+

Extensions

+
+
+ MidiDeviceTypeWire + on MidiDeviceType + + +
+
+ +
+ +
+
+ + + + + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/ATMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/ATMessage-class-sidebar.html index c1ff4dfb..8350cf87 100644 --- a/doc/api/flutter_midi_command_messages/ATMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/ATMessage-class-sidebar.html @@ -1,26 +1,57 @@
    -
  1. Constructors
  2. -
  3. ATMessage
  4. +
  5. Constructors
  6. +
  7. new
  8. Properties
  9. -
  10. channel
  11. -
  12. data
  13. -
  14. hashCode
  15. -
  16. pressure
  17. -
  18. runtimeType
  19. + +
  20. + channel +
  21. + +
  22. + data +
  23. + +
  24. + hashCode +
  25. + +
  26. + pressure +
  27. + +
  28. + runtimeType +
  29. Methods
  30. -
  31. noSuchMethod
  32. -
  33. send
  34. -
  35. toString
  36. + +
  37. + generateData +
  38. + +
  39. + noSuchMethod +
  40. + +
  41. + send +
  42. + +
  43. + toString +
  44. Operators
  45. -
  46. operator ==
  47. + +
  48. + operator == +
  49. diff --git a/doc/api/flutter_midi_command_messages/ATMessage-class.html b/doc/api/flutter_midi_command_messages/ATMessage-class.html index 6b3c1726..f46c66f2 100644 --- a/doc/api/flutter_midi_command_messages/ATMessage-class.html +++ b/doc/api/flutter_midi_command_messages/ATMessage-class.html @@ -16,40 +16,32 @@ - - -
    -
    menu
    ATMessage
    -
    - -
    +
    -
    ATMessage class - + @@ -89,10 +81,9 @@

    ATMessage class

    Constructors

    -
    -
    - ATMessage({int channel = 0, int pressure = 0}) +
    + ATMessage({int channel = 0, int pressure = 0})
    Create an Aftertouch Message for a single channel @@ -167,12 +158,26 @@

    Properties

    +

    Methods

    +
    + generateData() + Uint8List + + + +
    +
    + Generates MIDI bytes for this message without sending. +
    override
    + +
    +
    noSuchMethod(Invocation invocation) → dynamic @@ -186,16 +191,16 @@

    Methods

    -
    - send() +
    + send({String? deviceId, int? timestamp}) → void
    -
    +
    Send the message bytes to all connected devices -
    override
    +
    inherited
    @@ -239,9 +244,7 @@

    Operators

    -

    - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/ATMessage/ATMessage.html b/doc/api/flutter_midi_command_messages/ATMessage/ATMessage.html index f685a268..3a9607b6 100644 --- a/doc/api/flutter_midi_command_messages/ATMessage/ATMessage.html +++ b/doc/api/flutter_midi_command_messages/ATMessage/ATMessage.html @@ -4,8 +4,8 @@ - - ATMessage constructor - ATMessage - flutter_midi_command_messages library - Dart API + + ATMessage.new constructor - ATMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
    -
    menu -
    ATMessage
    +
    ATMessage.new
    -
    - -
    +
    -
    ATMessage constructor
    - ATMessage(
    1. {int channel = 0,
    2. -
    3. int pressure = 0}
    4. -
    ) + ATMessage({
    1. int channel = 0,
    2. +
    3. int pressure = 0,
    4. +
    })
    -

    Create an Aftertouch Message for a single channel

    @@ -81,7 +72,6 @@

    Implementation

    - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/ATMessage/channel.html b/doc/api/flutter_midi_command_messages/ATMessage/channel.html index e7317e1a..a707fa9e 100644 --- a/doc/api/flutter_midi_command_messages/ATMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/ATMessage/channel.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    channel property
    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/ATMessage/generateData.html b/doc/api/flutter_midi_command_messages/ATMessage/generateData.html new file mode 100644 index 00000000..7d841a37 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/ATMessage/generateData.html @@ -0,0 +1,123 @@ + + + + + + + + generateData method - ATMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
    +
    + menu + +
    generateData
    + + +
    +
    +
    +
    +

    generateData method +

    + +
    + +
    +
      +
    1. @override
    2. +
    +
    +Uint8List +generateData() + +
    override
    + +
    + +
    +

    Generates MIDI bytes for this message without sending.

    +

    Subclasses override this to provide typed message encoding.

    +
    + + + +
    +

    Implementation

    +
    @override
    +Uint8List generateData() {
    +  final generated = Uint8List(2);
    +  generated[0] = 0xD0 + channel;
    +  generated[1] = pressure;
    +  return generated;
    +}
    +
    + + +
    + + +
    +
    + + flutter_midi_command + 1.0.0 + + +
    + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/ATMessage/pressure.html b/doc/api/flutter_midi_command_messages/ATMessage/pressure.html index aa69474f..bd3a6ff5 100644 --- a/doc/api/flutter_midi_command_messages/ATMessage/pressure.html +++ b/doc/api/flutter_midi_command_messages/ATMessage/pressure.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    pressure property
    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/ATMessage/send.html b/doc/api/flutter_midi_command_messages/ATMessage/send.html index b0168930..ca847591 100644 --- a/doc/api/flutter_midi_command_messages/ATMessage/send.html +++ b/doc/api/flutter_midi_command_messages/ATMessage/send.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    send method
  50. @override
- void -send() +send({
  1. String? deviceId,
  2. +
  3. int? timestamp,
  4. +
})
override
@@ -84,17 +77,16 @@

send method

Implementation

@override
-void send() {
+void send({String? deviceId, int? timestamp}) {
   data = Uint8List(2);
   data[0] = 0xD0 + channel;
   data[1] = pressure;
-  super.send();
+  super.send(deviceId: deviceId, timestamp: timestamp);
 }
- - - -
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command_messages/CCMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/CCMessage-class-sidebar.html index fd1d374f..c1e85e6e 100644 --- a/doc/api/flutter_midi_command_messages/CCMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/CCMessage-class-sidebar.html @@ -1,27 +1,61 @@
    -
  1. Constructors
  2. -
  3. CCMessage
  4. +
  5. Constructors
  6. +
  7. new
  8. Properties
  9. -
  10. channel
  11. -
  12. controller
  13. -
  14. data
  15. -
  16. hashCode
  17. -
  18. runtimeType
  19. -
  20. value
  21. + +
  22. + channel +
  23. + +
  24. + controller +
  25. + +
  26. + data +
  27. + +
  28. + hashCode +
  29. + +
  30. + runtimeType +
  31. + +
  32. + value +
  33. Methods
  34. -
  35. noSuchMethod
  36. -
  37. send
  38. -
  39. toString
  40. + +
  41. + generateData +
  42. + +
  43. + noSuchMethod +
  44. + +
  45. + send +
  46. + +
  47. + toString +
  48. Operators
  49. -
  50. operator ==
  51. + +
  52. + operator == +
  53. diff --git a/doc/api/flutter_midi_command_messages/CCMessage-class.html b/doc/api/flutter_midi_command_messages/CCMessage-class.html index 09e91c06..fbd3aa20 100644 --- a/doc/api/flutter_midi_command_messages/CCMessage-class.html +++ b/doc/api/flutter_midi_command_messages/CCMessage-class.html @@ -16,40 +16,32 @@ - - -
    -
    menu
    CCMessage
    -
    - -
    +
    -
    CCMessage class - + @@ -89,10 +81,9 @@

    CCMessage class

    Constructors

    -
    -
    - CCMessage({int channel = 0, int controller = 0, int value = 0}) +
    + CCMessage({int channel = 0, int controller = 0, int value = 0})
    Continuous Control Message @@ -179,12 +170,26 @@

    Properties

    +

    Methods

    +
    + generateData() + Uint8List + + + +
    +
    + Generates MIDI bytes for this message without sending. +
    override
    + +
    +
    noSuchMethod(Invocation invocation) → dynamic @@ -198,16 +203,16 @@

    Methods

    -
    - send() +
    + send({String? deviceId, int? timestamp}) → void
    -
    +
    Send the message bytes to all connected devices -
    override
    +
    inherited
    @@ -251,9 +256,7 @@

    Operators

    -

    - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/CCMessage/CCMessage.html b/doc/api/flutter_midi_command_messages/CCMessage/CCMessage.html index a2fd786e..b2d682a5 100644 --- a/doc/api/flutter_midi_command_messages/CCMessage/CCMessage.html +++ b/doc/api/flutter_midi_command_messages/CCMessage/CCMessage.html @@ -4,8 +4,8 @@ - - CCMessage constructor - CCMessage - flutter_midi_command_messages library - Dart API + + CCMessage.new constructor - CCMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
    -
    menu -
    CCMessage
    +
    CCMessage.new
    -
    - -
    +
    -
    CCMessage constructor
    - CCMessage(
    1. {int channel = 0,
    2. + CCMessage({
      1. int channel = 0,
      2. int controller = 0,
      3. -
      4. int value = 0}
      5. -
      ) +
    3. int value = 0,
    4. +
    })
    -

    Continuous Control Message

    @@ -82,7 +73,6 @@

    Implementation

    - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/CCMessage/channel.html b/doc/api/flutter_midi_command_messages/CCMessage/channel.html index bff4d4da..e735d8aa 100644 --- a/doc/api/flutter_midi_command_messages/CCMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/CCMessage/channel.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    channel property

+
int @@ -76,8 +69,8 @@

Implementation

+ - - - -
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command_messages/CCMessage/controller.html b/doc/api/flutter_midi_command_messages/CCMessage/controller.html index 977bc279..4206e406 100644 --- a/doc/api/flutter_midi_command_messages/CCMessage/controller.html +++ b/doc/api/flutter_midi_command_messages/CCMessage/controller.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
controller property
+
int @@ -76,8 +69,8 @@

Implementation

+ - - -
-
flutter_midi_command - 0.4.17 + 1.0.0 -
- - - - diff --git a/doc/api/flutter_midi_command_messages/CCMessage/generateData.html b/doc/api/flutter_midi_command_messages/CCMessage/generateData.html new file mode 100644 index 00000000..6e5b1137 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/CCMessage/generateData.html @@ -0,0 +1,124 @@ + + + + + + + + generateData method - CCMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
+
+ menu + +
generateData
+ + +
+
+
+
+

generateData method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+Uint8List +generateData() + +
override
+ +
+ +
+

Generates MIDI bytes for this message without sending.

+

Subclasses override this to provide typed message encoding.

+
+ + + +
+

Implementation

+
@override
+Uint8List generateData() {
+  final generated = Uint8List(3);
+  generated[0] = 0xB0 + channel;
+  generated[1] = controller;
+  generated[2] = value;
+  return generated;
+}
+
+ + +
+ + +
+
+ + flutter_midi_command + 1.0.0 + + +
+ + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/CCMessage/send.html b/doc/api/flutter_midi_command_messages/CCMessage/send.html index abfc8d46..a5ca0d9d 100644 --- a/doc/api/flutter_midi_command_messages/CCMessage/send.html +++ b/doc/api/flutter_midi_command_messages/CCMessage/send.html @@ -16,20 +16,16 @@ - - -
-
menu @@ -37,20 +33,16 @@ -
- -
+
-
send method
  • @override
  • - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,18 +77,17 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       data = Uint8List(3);
       data[0] = 0xB0 + channel;
       data[1] = controller;
       data[2] = value;
    -  super.send();
    +  super.send(deviceId: deviceId, timestamp: timestamp);
     }
    - - -

    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/CCMessage/value.html b/doc/api/flutter_midi_command_messages/CCMessage/value.html index f345b401..30189187 100644 --- a/doc/api/flutter_midi_command_messages/CCMessage/value.html +++ b/doc/api/flutter_midi_command_messages/CCMessage/value.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    value property
    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/ClockMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/ClockMessage-class-sidebar.html index 7f4c1b78..ecb19e07 100644 --- a/doc/api/flutter_midi_command_messages/ClockMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/ClockMessage-class-sidebar.html @@ -1,25 +1,53 @@
      -
    1. Constructors
    2. -
    3. ClockMessage
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. data
    11. -
    12. hashCode
    13. -
    14. runtimeType
    15. -
    16. type
    17. + +
    18. + data +
    19. + +
    20. + hashCode +
    21. + +
    22. + runtimeType +
    23. + +
    24. + type +
    25. Methods
    26. -
    27. noSuchMethod
    28. -
    29. send
    30. -
    31. toString
    32. + +
    33. + generateData +
    34. + +
    35. + noSuchMethod +
    36. + +
    37. + send +
    38. + +
    39. + toString +
    40. Operators
    41. -
    42. operator ==
    43. + +
    44. + operator == +
    45. diff --git a/doc/api/flutter_midi_command_messages/ClockMessage-class.html b/doc/api/flutter_midi_command_messages/ClockMessage-class.html index 47fa34ad..4799d365 100644 --- a/doc/api/flutter_midi_command_messages/ClockMessage-class.html +++ b/doc/api/flutter_midi_command_messages/ClockMessage-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      ClockMessage
      -
      - -
      +
      -
      ClockMessage class - + @@ -89,10 +81,9 @@

      ClockMessage class

      Constructors

      -
      -
      - ClockMessage({ClockType type = ClockType.beat}) +
      + ClockMessage({ClockType type = ClockType.beat})
      Clock Message @@ -155,12 +146,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -174,16 +179,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -227,9 +232,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/ClockMessage/ClockMessage.html b/doc/api/flutter_midi_command_messages/ClockMessage/ClockMessage.html index 6b5b8c31..5dc4e357 100644 --- a/doc/api/flutter_midi_command_messages/ClockMessage/ClockMessage.html +++ b/doc/api/flutter_midi_command_messages/ClockMessage/ClockMessage.html @@ -4,8 +4,8 @@ - - ClockMessage constructor - ClockMessage - flutter_midi_command_messages library - Dart API + + ClockMessage.new constructor - ClockMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      ClockMessage
      +
      ClockMessage.new
      -
      - -
      +
      -
      ClockMessage constructor
      - ClockMessage(
      1. {ClockType type = ClockType.beat}
      2. -
      ) + ClockMessage({
      1. ClockType type = ClockType.beat,
      2. +
      })
      -

      Clock Message

      @@ -80,7 +71,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/ClockMessage/generateData.html b/doc/api/flutter_midi_command_messages/ClockMessage/generateData.html new file mode 100644 index 00000000..a276e77a --- /dev/null +++ b/doc/api/flutter_midi_command_messages/ClockMessage/generateData.html @@ -0,0 +1,135 @@ + + + + + + + + generateData method - ClockMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final generated = Uint8List(1);
      +  switch (type) {
      +    case ClockType.beat:
      +      generated[0] = 0xF8;
      +      break;
      +    case ClockType.start:
      +      generated[0] = 0xFA;
      +      break;
      +    case ClockType.cont:
      +      generated[0] = 0xFB;
      +      break;
      +    case ClockType.stop:
      +      generated[0] = 0xFC;
      +      break;
      +  }
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/ClockMessage/send.html b/doc/api/flutter_midi_command_messages/ClockMessage/send.html index d0374c67..246c6b9e 100644 --- a/doc/api/flutter_midi_command_messages/ClockMessage/send.html +++ b/doc/api/flutter_midi_command_messages/ClockMessage/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
    46. @override
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,7 +77,7 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       data = Uint8List(1);
       switch (type) {
         case ClockType.beat:
    @@ -100,13 +93,12 @@ 

    Implementation

    data[0] = 0xFC; break; } - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }
    - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/ClockMessage/type.html b/doc/api/flutter_midi_command_messages/ClockMessage/type.html index 1b19288f..47468d51 100644 --- a/doc/api/flutter_midi_command_messages/ClockMessage/type.html +++ b/doc/api/flutter_midi_command_messages/ClockMessage/type.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    type property

    +
    ClockType @@ -76,8 +69,8 @@

    Implementation

    + - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/ClockType-enum-sidebar.html b/doc/api/flutter_midi_command_messages/ClockType-enum-sidebar.html index 7f31af86..4243f825 100644 --- a/doc/api/flutter_midi_command_messages/ClockType-enum-sidebar.html +++ b/doc/api/flutter_midi_command_messages/ClockType-enum-sidebar.html @@ -1,7 +1,5 @@
      -
    1. Constructors
    2. -
    3. ClockType
    4. Values
    5. beat
    6. @@ -13,22 +11,47 @@
    7. Properties
    8. -
    9. hashCode
    10. -
    11. index
    12. -
    13. runtimeType
    14. + +
    15. + hashCode +
    16. + +
    17. + index +
    18. + +
    19. + name + (ext) +
    20. + +
    21. + runtimeType +
    22. Methods
    23. -
    24. noSuchMethod
    25. -
    26. toString
    27. + +
    28. + noSuchMethod +
    29. + +
    30. + toString +
    31. Operators
    32. -
    33. operator ==
    34. + +
    35. + operator == +
    36. -
    37. Constants
    38. -
    39. values
    40. +
    41. Constants
    42. +
    43. values
    diff --git a/doc/api/flutter_midi_command_messages/ClockType.html b/doc/api/flutter_midi_command_messages/ClockType.html index 50e308f2..bccade14 100644 --- a/doc/api/flutter_midi_command_messages/ClockType.html +++ b/doc/api/flutter_midi_command_messages/ClockType.html @@ -16,40 +16,32 @@ - - -
    -
    menu
    ClockType
    -
    - -
    +
    -
    +
    Available extensions
    +
    + - -
    -

    Constructors

    - -
    -
    - ClockType() -
    -
    - -
    const
    -
    -
    -
    -

    Values

    -
    beat @@ -186,6 +167,22 @@

    Properties

    A numeric identifier for the enumerated value.
    no setterinherited
    + + +
    + name + String + + +
    +
    +

    + Available on Enum, + provided by the EnumName extension +

    + The name of the enum value. +
    no setter
    +
    @@ -202,6 +199,7 @@

    Properties

    +
    Operators

    Constants

    -
    values @@ -280,7 +277,6 @@

    Constants

    - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/ClockType/ClockType.html b/doc/api/flutter_midi_command_messages/ClockType/ClockType.html deleted file mode 100644 index 8ba74648..00000000 --- a/doc/api/flutter_midi_command_messages/ClockType/ClockType.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - ClockType constructor - ClockType - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - - - - - -
    - -
    - menu - -
    ClockType
    - -
    - -
    -
    -
    - -
    -
    -

    ClockType constructor -

    - -
    - const - ClockType() -
    - - - - - - - -
    - - - - - -
    - -
    - - flutter_midi_command - 0.4.17 - - - -
    - - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/ClockType/values-constant.html b/doc/api/flutter_midi_command_messages/ClockType/values-constant.html index 6dac29b8..598f279c 100644 --- a/doc/api/flutter_midi_command_messages/ClockType/values-constant.html +++ b/doc/api/flutter_midi_command_messages/ClockType/values-constant.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    values constant
    +
    List<ClockType> @@ -75,8 +68,8 @@

    values constant + - - -

    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/MessageType-class.html b/doc/api/flutter_midi_command_messages/MessageType-class.html deleted file mode 100644 index f3547201..00000000 --- a/doc/api/flutter_midi_command_messages/MessageType-class.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - MessageType enum - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - -
    - -
    - - -
    MessageType
    - -
    - -
    - - - -
    -

    MessageType enum

    - - - -
    -

    Constants

    - -
    -
    - Beat - → const MessageType -
    -
    - - -
    - const MessageType(6) -
    -
    -
    - CC - → const MessageType -
    -
    - - -
    - const MessageType(0) -
    -
    -
    - NoteOff - → const MessageType -
    -
    - - -
    - const MessageType(3) -
    -
    -
    - NoteOn - → const MessageType -
    -
    - - -
    - const MessageType(2) -
    -
    -
    - NRPN - → const MessageType -
    -
    - - -
    - const MessageType(4) -
    -
    -
    - PC - → const MessageType -
    -
    - - -
    - const MessageType(1) -
    -
    -
    - SYSEX - → const MessageType -
    -
    - - -
    - const MessageType(5) -
    -
    -
    - values - → const List<MessageType> -
    -
    -

    A constant List of the values in this enum, in order of their declaration.

    - -
    - const List<MessageType> -
    -
    -
    -
    - - -
    -

    Properties

    - -
    -
    - index - int -
    -
    -

    The integer index of this enum.

    -
    final
    -
    -
    - hashCode - int -
    -
    - The hash code for this object. [...] -
    read-only, inherited
    -
    -
    - runtimeType - Type -
    -
    - A representation of the runtime type of the object. -
    read-only, inherited
    -
    -
    -
    - -
    -

    Methods

    -
    -
    - toString() - String - -
    -
    - Returns a string representation of this object. -
    override
    -
    -
    - noSuchMethod(Invocation invocation) - → dynamic - -
    -
    - Invoked when a non-existent method or property is accessed. [...] -
    inherited
    -
    -
    -
    - -
    -

    Operators

    -
    -
    - operator ==(Object other) - bool - -
    -
    - The equality operator. [...] -
    inherited
    -
    -
    -
    - - -
    - - - -
    - -
    - - flutter_midi_command - 0.2.1 - - - -
    - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/MessageType-enum-sidebar.html b/doc/api/flutter_midi_command_messages/MessageType-enum-sidebar.html index d2b32f62..3f05ab22 100644 --- a/doc/api/flutter_midi_command_messages/MessageType-enum-sidebar.html +++ b/doc/api/flutter_midi_command_messages/MessageType-enum-sidebar.html @@ -1,7 +1,5 @@
      -
    1. Constructors
    2. -
    3. MessageType
    4. Values
    5. CC
    6. @@ -20,22 +18,47 @@
    7. Properties
    8. -
    9. hashCode
    10. -
    11. index
    12. -
    13. runtimeType
    14. + +
    15. + hashCode +
    16. + +
    17. + index +
    18. + +
    19. + name + (ext) +
    20. + +
    21. + runtimeType +
    22. Methods
    23. -
    24. noSuchMethod
    25. -
    26. toString
    27. + +
    28. + noSuchMethod +
    29. + +
    30. + toString +
    31. Operators
    32. -
    33. operator ==
    34. + +
    35. + operator == +
    36. -
    37. Constants
    38. -
    39. values
    40. +
    41. Constants
    42. +
    43. values
    diff --git a/doc/api/flutter_midi_command_messages/MessageType.html b/doc/api/flutter_midi_command_messages/MessageType.html index 6446aa50..9d8aec6c 100644 --- a/doc/api/flutter_midi_command_messages/MessageType.html +++ b/doc/api/flutter_midi_command_messages/MessageType.html @@ -16,40 +16,32 @@ - - -
    -
    menu
    MessageType
    -
    - -
    +
    -
    +
    Available extensions
    +
    + - -
    -

    Constructors

    - -
    -
    - MessageType() -
    -
    - -
    const
    -
    -
    -
    -

    Values

    -
    CC @@ -270,6 +251,22 @@

    Properties

    A numeric identifier for the enumerated value.
    no setterinherited
    + + +
    + name + String + + +
    +
    +

    + Available on Enum, + provided by the EnumName extension +

    + The name of the enum value. +
    no setter
    +
    @@ -286,6 +283,7 @@

    Properties

    +
    Operators

    Constants

    -
    values @@ -364,7 +361,6 @@

    Constants

    - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/MessageType/MessageType.html b/doc/api/flutter_midi_command_messages/MessageType/MessageType.html deleted file mode 100644 index aad420b3..00000000 --- a/doc/api/flutter_midi_command_messages/MessageType/MessageType.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - MessageType constructor - MessageType - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - - - - - -
    - -
    - menu - -
    MessageType
    - -
    - -
    -
    -
    - -
    -
    -

    MessageType constructor -

    - -
    - const - MessageType() -
    - - - - - - - -
    - - - - - -
    - -
    - - flutter_midi_command - 0.4.17 - - - -
    - - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/MessageType/toString.html b/doc/api/flutter_midi_command_messages/MessageType/toString.html deleted file mode 100644 index d96c13f4..00000000 --- a/doc/api/flutter_midi_command_messages/MessageType/toString.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - toString method - MessageType class - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - -
    - -
    - - -
    toString
    - -
    - -
    - - - -
    -

    toString method

    - -
    - String - toString -() -
    override
    -
    -
    -

    Returns a string representation of this object.

    -
    - - - -
    - - - -
    - -
    - - flutter_midi_command - 0.2.1 - - - -
    - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/MessageType/values-constant.html b/doc/api/flutter_midi_command_messages/MessageType/values-constant.html index d6c67c08..f06cf785 100644 --- a/doc/api/flutter_midi_command_messages/MessageType/values-constant.html +++ b/doc/api/flutter_midi_command_messages/MessageType/values-constant.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    values constant
    +
    List<MessageType> @@ -75,8 +68,8 @@

    values constant + - - -

    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/MidiMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/MidiMessage-class-sidebar.html index 3b221f32..3a5fd523 100644 --- a/doc/api/flutter_midi_command_messages/MidiMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/MidiMessage-class-sidebar.html @@ -1,28 +1,55 @@
      -
    1. Constructors
    2. -
    3. MidiMessage
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. data
    11. -
    12. hashCode
    13. -
    14. runtimeType
    15. + +
    16. + data +
    17. + +
    18. + hashCode +
    19. + +
    20. + runtimeType +
    21. Methods
    22. -
    23. noSuchMethod
    24. -
    25. send
    26. -
    27. toString
    28. + +
    29. + generateData +
    30. + +
    31. + noSuchMethod +
    32. + +
    33. + send +
    34. + +
    35. + toString +
    36. Operators
    37. -
    38. operator ==
    39. + +
    40. + operator == +
    41. +
    42. Static methods
    43. +
    44. parse
    diff --git a/doc/api/flutter_midi_command_messages/MidiMessage-class.html b/doc/api/flutter_midi_command_messages/MidiMessage-class.html index 381711be..398ae3aa 100644 --- a/doc/api/flutter_midi_command_messages/MidiMessage-class.html +++ b/doc/api/flutter_midi_command_messages/MidiMessage-class.html @@ -16,40 +16,32 @@ - - -
    -
    menu
    MidiMessage
    -
    - -
    +
    -
    MidiMessage class
  • SysExMessage
  • - + @@ -101,9 +93,8 @@

    MidiMessage class

    Constructors

    -
    -
    +
    MidiMessage()
    @@ -155,12 +146,26 @@

    Properties

    +

    Methods

    +
    + generateData() + Uint8List + + + +
    +
    + Generates MIDI bytes for this message without sending. + + +
    +
    noSuchMethod(Invocation invocation) → dynamic @@ -175,7 +180,7 @@

    Methods

    - send() + send({String? deviceId, int? timestamp}) → void @@ -225,11 +230,27 @@

    Operators

    - +
    +

    Static Methods

    +
    +
    + parse(Uint8List bytes, {MidiMessageParser? parser, bool flushPendingNrpn = true}) + List<MidiMessage> + + +
    +
    + Parses one or more raw MIDI messages into typed MidiMessage objects. + -

    + + + + + + - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/MidiMessage/MidiMessage.html b/doc/api/flutter_midi_command_messages/MidiMessage/MidiMessage.html index 9c503611..452b69fd 100644 --- a/doc/api/flutter_midi_command_messages/MidiMessage/MidiMessage.html +++ b/doc/api/flutter_midi_command_messages/MidiMessage/MidiMessage.html @@ -4,8 +4,8 @@ - - MidiMessage constructor - MidiMessage - flutter_midi_command_messages library - Dart API + + MidiMessage.new constructor - MidiMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
    -
    menu -
    MidiMessage
    +
    MidiMessage.new
    -
    - -
    +
    -
    MidiMessage constructor MidiMessage() -

    Base class for MIDI message types

    @@ -79,7 +70,6 @@

    Implementation

    - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/MidiMessage/data.html b/doc/api/flutter_midi_command_messages/MidiMessage/data.html index b94facd3..2a18955f 100644 --- a/doc/api/flutter_midi_command_messages/MidiMessage/data.html +++ b/doc/api/flutter_midi_command_messages/MidiMessage/data.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    data property
    +
    Uint8List @@ -79,8 +72,8 @@

    Implementation

    + - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/MidiMessage/generateData.html b/doc/api/flutter_midi_command_messages/MidiMessage/generateData.html new file mode 100644 index 00000000..00c99ca9 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/MidiMessage/generateData.html @@ -0,0 +1,112 @@ + + + + + + + + generateData method - MidiMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
    +
    + menu + +
    generateData
    + + +
    +
    +
    +
    +

    generateData method +

    + +
    + +Uint8List +generateData() + + + +
    + +
    +

    Generates MIDI bytes for this message without sending.

    +

    Subclasses override this to provide typed message encoding.

    +
    + + + +
    +

    Implementation

    +
    Uint8List generateData() => data;
    +
    + + +
    + + +
    +
    + + flutter_midi_command + 1.0.0 + + +
    + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/MidiMessage/parse.html b/doc/api/flutter_midi_command_messages/MidiMessage/parse.html new file mode 100644 index 00000000..9057ae98 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/MidiMessage/parse.html @@ -0,0 +1,121 @@ + + + + + + + + parse method - MidiMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
    +
    + menu + +
    parse
    + + +
    +
    +
    +
    +

    parse static method +

    + +
    + +List<MidiMessage> +parse(
    1. Uint8List bytes, {
    2. +
    3. MidiMessageParser? parser,
    4. +
    5. bool flushPendingNrpn = true,
    6. +
    }) + + + +
    + +
    +

    Parses one or more raw MIDI messages into typed MidiMessage objects.

    +
    + + + +
    +

    Implementation

    +
    static List<MidiMessage> parse(
    +  Uint8List bytes, {
    +  MidiMessageParser? parser,
    +  bool flushPendingNrpn = true,
    +}) {
    +  final activeParser = parser ?? MidiMessageParser();
    +  return activeParser.parse(bytes, flushPendingNrpn: flushPendingNrpn);
    +}
    +
    + + +
    + + +
    +
    + + flutter_midi_command + 1.0.0 + + +
    + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/MidiMessage/send.html b/doc/api/flutter_midi_command_messages/MidiMessage/send.html index f5fe92c4..b006c27b 100644 --- a/doc/api/flutter_midi_command_messages/MidiMessage/send.html +++ b/doc/api/flutter_midi_command_messages/MidiMessage/send.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    send method
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    }) @@ -78,15 +71,14 @@

    send method

    Implementation

    -
    void send() {
    -  print("send $data");
    -  MidiCommand().sendData(data);
    +  
    void send({String? deviceId, int? timestamp}) {
    +  data = generateData();
    +  MidiCommand().sendData(data, deviceId: deviceId, timestamp: timestamp);
     }

    - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/MidiMessageParser-class-sidebar.html b/doc/api/flutter_midi_command_messages/MidiMessageParser-class-sidebar.html new file mode 100644 index 00000000..4d42d2f7 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/MidiMessageParser-class-sidebar.html @@ -0,0 +1,49 @@ +
      + +
    1. Constructors
    2. +
    3. new
    4. + + + +
    5. + Properties +
    6. + +
    7. + hashCode +
    8. + +
    9. + runtimeType +
    10. + +
    11. Methods
    12. + +
    13. + noSuchMethod +
    14. + +
    15. + parse +
    16. + +
    17. + reset +
    18. + +
    19. + toString +
    20. + +
    21. Operators
    22. + +
    23. + operator == +
    24. + + + + + + +
    diff --git a/doc/api/flutter_midi_command_messages/MidiMessageParser-class.html b/doc/api/flutter_midi_command_messages/MidiMessageParser-class.html new file mode 100644 index 00000000..a111c4c4 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/MidiMessageParser-class.html @@ -0,0 +1,228 @@ + + + + + + + + MidiMessageParser class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
    +
    + menu + +
    MidiMessageParser
    + + +
    +
    +
    +
    +

    MidiMessageParser class + +

    + + +
    +

    Stateful parser that converts raw MIDI bytes into typed MidiMessages.

    +

    Supports all currently defined typed messages in flutter_midi_command: +CC, PC, Note On/Off, NRPN, RPN, SysEx, Clock, PolyAT, AT, and Pitch Bend.

    +
    + + + + +
    +

    Constructors

    +
    +
    + MidiMessageParser() +
    +
    + +
    +
    +
    + +
    +

    Properties

    +
    +
    + hashCode + int + + +
    +
    + The hash code for this object. +
    no setterinherited
    + +
    + +
    + runtimeType + Type + + +
    +
    + A representation of the runtime type of the object. +
    no setterinherited
    + +
    + +
    +
    + + +
    +

    Methods

    +
    +
    + noSuchMethod(Invocation invocation) + → dynamic + + + +
    +
    + Invoked when a nonexistent method or property is accessed. +
    inherited
    + +
    + +
    + parse(Uint8List bytes, {bool flushPendingNrpn = true}) + List<MidiMessage> + + + +
    +
    + Parse bytes into typed messages. + + +
    + +
    + reset() + → void + + + +
    +
    + Clears parser state (running status, SysEx buffer, NRPN/RPN context). + + +
    + +
    + toString() + String + + + +
    +
    + A string representation of this object. +
    inherited
    + +
    + +
    +
    + +
    +

    Operators

    +
    +
    + operator ==(Object other) + bool + + + +
    +
    + The equality operator. +
    inherited
    + +
    + +
    +
    + + + + +
    + + +
    +
    + + flutter_midi_command + 1.0.0 + + +
    + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/MidiMessageParser/MidiMessageParser.html b/doc/api/flutter_midi_command_messages/MidiMessageParser/MidiMessageParser.html new file mode 100644 index 00000000..97cb59c2 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/MidiMessageParser/MidiMessageParser.html @@ -0,0 +1,100 @@ + + + + + + + + MidiMessageParser.new constructor - MidiMessageParser - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
    +
    + menu + +
    MidiMessageParser.new
    + + +
    +
    +
    +
    +

    MidiMessageParser constructor +

    + +
    + + MidiMessageParser() +
    + + + + + + +
    + + +
    +
    + + flutter_midi_command + 1.0.0 + + +
    + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/MidiMessageParser/parse.html b/doc/api/flutter_midi_command_messages/MidiMessageParser/parse.html new file mode 100644 index 00000000..e8f545fe --- /dev/null +++ b/doc/api/flutter_midi_command_messages/MidiMessageParser/parse.html @@ -0,0 +1,127 @@ + + + + + + + + parse method - MidiMessageParser class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
    +
    + menu + +
    parse
    + + +
    +
    +
    +
    +

    parse method +

    + +
    + +List<MidiMessage> +parse(
    1. Uint8List bytes, {
    2. +
    3. bool flushPendingNrpn = true,
    4. +
    }) + + + +
    + +
    +

    Parse bytes into typed messages.

    +

    Set flushPendingNrpn to false to preserve partial NRPN/RPN state +across parse calls when packets are split across chunks.

    +
    + + + +
    +

    Implementation

    +
    List<MidiMessage> parse(Uint8List bytes, {bool flushPendingNrpn = true}) {
    +  final messages = <MidiMessage>[];
    +
    +  for (final byte in bytes) {
    +    _consumeByte(byte & 0xFF, messages);
    +  }
    +
    +  if (flushPendingNrpn) {
    +    _flushAllPending(messages);
    +  }
    +
    +  return messages;
    +}
    +
    + + +
    + + +
    +
    + + flutter_midi_command + 1.0.0 + + +
    + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/MidiMessageParser/reset.html b/doc/api/flutter_midi_command_messages/MidiMessageParser/reset.html new file mode 100644 index 00000000..8de02619 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/MidiMessageParser/reset.html @@ -0,0 +1,121 @@ + + + + + + + + reset method - MidiMessageParser class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
    +
    + menu + +
    reset
    + + +
    +
    +
    +
    +

    reset method +

    + +
    + +void +reset() + + + +
    + +
    +

    Clears parser state (running status, SysEx buffer, NRPN/RPN context).

    +
    + + + +
    +

    Implementation

    +
    void reset() {
    +  _runningStatus = null;
    +  _currentStatus = null;
    +  _expectedDataLength = 0;
    +  _currentData.clear();
    +  _insideSysEx = false;
    +  _sysexBuffer.clear();
    +  for (final state in _channelStates) {
    +    state.clear();
    +  }
    +}
    +
    + + +
    + + +
    +
    + + flutter_midi_command + 1.0.0 + + +
    + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/NRPN3Message-class-sidebar.html b/doc/api/flutter_midi_command_messages/NRPN3Message-class-sidebar.html index dd60cdcd..83c37d66 100644 --- a/doc/api/flutter_midi_command_messages/NRPN3Message-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/NRPN3Message-class-sidebar.html @@ -1,27 +1,61 @@
      -
    1. Constructors
    2. -
    3. NRPN3Message
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. channel
    11. -
    12. data
    13. -
    14. hashCode
    15. -
    16. parameter
    17. -
    18. runtimeType
    19. -
    20. value
    21. + +
    22. + channel +
    23. + +
    24. + data +
    25. + +
    26. + hashCode +
    27. + +
    28. + parameter +
    29. + +
    30. + runtimeType +
    31. + +
    32. + value +
    33. Methods
    34. -
    35. noSuchMethod
    36. -
    37. send
    38. -
    39. toString
    40. + +
    41. + generateData +
    42. + +
    43. + noSuchMethod +
    44. + +
    45. + send +
    46. + +
    47. + toString +
    48. Operators
    49. -
    50. operator ==
    51. + +
    52. + operator == +
    53. diff --git a/doc/api/flutter_midi_command_messages/NRPN3Message-class.html b/doc/api/flutter_midi_command_messages/NRPN3Message-class.html index b2775d7d..d399052a 100644 --- a/doc/api/flutter_midi_command_messages/NRPN3Message-class.html +++ b/doc/api/flutter_midi_command_messages/NRPN3Message-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      NRPN3Message
      -
      - -
      +
      -
      NRPN3Message class - + @@ -89,10 +81,9 @@

      NRPN3Message class

      Constructors

      -
      -
      - NRPN3Message({int channel = 0, int parameter = 0, int value = 0}) +
      + NRPN3Message({int channel = 0, int parameter = 0, int value = 0})
      NRPN Message with single value byte @@ -179,12 +170,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -198,16 +203,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -251,9 +256,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN3Message/NRPN3Message.html b/doc/api/flutter_midi_command_messages/NRPN3Message/NRPN3Message.html index 9227bd89..28971687 100644 --- a/doc/api/flutter_midi_command_messages/NRPN3Message/NRPN3Message.html +++ b/doc/api/flutter_midi_command_messages/NRPN3Message/NRPN3Message.html @@ -4,8 +4,8 @@ - - NRPN3Message constructor - NRPN3Message - flutter_midi_command_messages library - Dart API + + NRPN3Message.new constructor - NRPN3Message - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      NRPN3Message
      +
      NRPN3Message.new
      -
      - -
      +
      -
      NRPN3Message constructor
      - NRPN3Message(
      1. {int channel = 0,
      2. + NRPN3Message({
        1. int channel = 0,
        2. int parameter = 0,
        3. -
        4. int value = 0}
        5. -
        ) +
      3. int value = 0,
      4. +
      })
      -

      NRPN Message with single value byte

      @@ -82,7 +73,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN3Message/channel.html b/doc/api/flutter_midi_command_messages/NRPN3Message/channel.html index 30e2c4db..52fe9952 100644 --- a/doc/api/flutter_midi_command_messages/NRPN3Message/channel.html +++ b/doc/api/flutter_midi_command_messages/NRPN3Message/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN3Message/generateData.html b/doc/api/flutter_midi_command_messages/NRPN3Message/generateData.html new file mode 100644 index 00000000..cce80264 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/NRPN3Message/generateData.html @@ -0,0 +1,139 @@ + + + + + + + + generateData method - NRPN3Message class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final clampedParameter = parameter.clamp(0, 16383);
      +  final parameterMSB = clampedParameter ~/ 128;
      +  final parameterLSB = clampedParameter & 0x7F;
      +  final clampedValue = value & 0x7F;
      +
      +  final generated = Uint8List(7);
      +  // Data Entry MSB
      +  generated[0] = 0xB0 + channel;
      +  generated[1] = 0x63;
      +  generated[2] = parameterMSB;
      +
      +  // Data Entry LSB
      +  generated[3] = 0x62;
      +  generated[4] = parameterLSB;
      +
      +  // Data Value
      +  generated[5] = 0x06;
      +  generated[6] = clampedValue;
      +
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/NRPN3Message/parameter.html b/doc/api/flutter_midi_command_messages/NRPN3Message/parameter.html index ee93401c..e3b0b7f5 100644 --- a/doc/api/flutter_midi_command_messages/NRPN3Message/parameter.html +++ b/doc/api/flutter_midi_command_messages/NRPN3Message/parameter.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      parameter property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN3Message/send.html b/doc/api/flutter_midi_command_messages/NRPN3Message/send.html index 8cf4d5c1..529f9f7b 100644 --- a/doc/api/flutter_midi_command_messages/NRPN3Message/send.html +++ b/doc/api/flutter_midi_command_messages/NRPN3Message/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
    54. @override
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,7 +77,7 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       parameter = parameter.clamp(0, 16383);
       int parameterMSB = parameter ~/ 128;
       int parameterLSB = parameter & 0x7F;
    @@ -105,13 +98,12 @@ 

    Implementation

    data[5] = 0x06; data[6] = value; - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }
    - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN3Message/value.html b/doc/api/flutter_midi_command_messages/NRPN3Message/value.html index ef449b01..d3200461 100644 --- a/doc/api/flutter_midi_command_messages/NRPN3Message/value.html +++ b/doc/api/flutter_midi_command_messages/NRPN3Message/value.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    value property

    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN4Message-class-sidebar.html b/doc/api/flutter_midi_command_messages/NRPN4Message-class-sidebar.html index 021b25a9..2c05731e 100644 --- a/doc/api/flutter_midi_command_messages/NRPN4Message-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/NRPN4Message-class-sidebar.html @@ -1,27 +1,61 @@
      -
    1. Constructors
    2. -
    3. NRPN4Message
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. channel
    11. -
    12. data
    13. -
    14. hashCode
    15. -
    16. parameter
    17. -
    18. runtimeType
    19. -
    20. value
    21. + +
    22. + channel +
    23. + +
    24. + data +
    25. + +
    26. + hashCode +
    27. + +
    28. + parameter +
    29. + +
    30. + runtimeType +
    31. + +
    32. + value +
    33. Methods
    34. -
    35. noSuchMethod
    36. -
    37. send
    38. -
    39. toString
    40. + +
    41. + generateData +
    42. + +
    43. + noSuchMethod +
    44. + +
    45. + send +
    46. + +
    47. + toString +
    48. Operators
    49. -
    50. operator ==
    51. + +
    52. + operator == +
    53. diff --git a/doc/api/flutter_midi_command_messages/NRPN4Message-class.html b/doc/api/flutter_midi_command_messages/NRPN4Message-class.html index e36c3d71..28c7e438 100644 --- a/doc/api/flutter_midi_command_messages/NRPN4Message-class.html +++ b/doc/api/flutter_midi_command_messages/NRPN4Message-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      NRPN4Message
      -
      - -
      +
      -
      NRPN4Message class - + @@ -89,10 +81,9 @@

      NRPN4Message class

      Constructors

      -
      -
      - NRPN4Message({int channel = 0, int parameter = 0, int value = 0}) +
      + NRPN4Message({int channel = 0, int parameter = 0, int value = 0})
      NRPN Message with Value MSB and LSB bytes @@ -179,12 +170,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -198,16 +203,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -251,9 +256,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN4Message/NRPN4Message.html b/doc/api/flutter_midi_command_messages/NRPN4Message/NRPN4Message.html index a60b4773..89dfa2f9 100644 --- a/doc/api/flutter_midi_command_messages/NRPN4Message/NRPN4Message.html +++ b/doc/api/flutter_midi_command_messages/NRPN4Message/NRPN4Message.html @@ -4,8 +4,8 @@ - - NRPN4Message constructor - NRPN4Message - flutter_midi_command_messages library - Dart API + + NRPN4Message.new constructor - NRPN4Message - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      NRPN4Message
      +
      NRPN4Message.new
      -
      - -
      +
      -
      NRPN4Message constructor
      - NRPN4Message(
      1. {int channel = 0,
      2. + NRPN4Message({
        1. int channel = 0,
        2. int parameter = 0,
        3. -
        4. int value = 0}
        5. -
        ) +
      3. int value = 0,
      4. +
      })
      -

      NRPN Message with Value MSB and LSB bytes

      @@ -82,7 +73,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN4Message/channel.html b/doc/api/flutter_midi_command_messages/NRPN4Message/channel.html index 43f36f22..312b9cdd 100644 --- a/doc/api/flutter_midi_command_messages/NRPN4Message/channel.html +++ b/doc/api/flutter_midi_command_messages/NRPN4Message/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN4Message/generateData.html b/doc/api/flutter_midi_command_messages/NRPN4Message/generateData.html new file mode 100644 index 00000000..1b6281a3 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/NRPN4Message/generateData.html @@ -0,0 +1,146 @@ + + + + + + + + generateData method - NRPN4Message class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final clampedParameter = parameter.clamp(0, 16383);
      +  final parameterMSB = clampedParameter ~/ 128;
      +  final parameterLSB = clampedParameter & 0x7F;
      +
      +  final clampedValue = value.clamp(0, 16383);
      +  final valueMSB = clampedValue ~/ 128;
      +  final valueLSB = clampedValue & 0x7F;
      +
      +  final generated = Uint8List(9);
      +  // Data Entry MSB
      +  generated[0] = 0xB0 + channel;
      +  generated[1] = 0x63;
      +  generated[2] = parameterMSB;
      +
      +  // Data Entry LSB
      +  generated[3] = 0x62;
      +  generated[4] = parameterLSB;
      +
      +  // Data Value MSB
      +  generated[5] = 0x06;
      +  generated[6] = valueMSB;
      +
      +  // Data Value LSB
      +  generated[7] = 0x26;
      +  generated[8] = valueLSB;
      +
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/NRPN4Message/parameter.html b/doc/api/flutter_midi_command_messages/NRPN4Message/parameter.html index f8025a67..8e1eb309 100644 --- a/doc/api/flutter_midi_command_messages/NRPN4Message/parameter.html +++ b/doc/api/flutter_midi_command_messages/NRPN4Message/parameter.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      parameter property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN4Message/send.html b/doc/api/flutter_midi_command_messages/NRPN4Message/send.html index 4ceb79f5..2bd9cad0 100644 --- a/doc/api/flutter_midi_command_messages/NRPN4Message/send.html +++ b/doc/api/flutter_midi_command_messages/NRPN4Message/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
    54. @override
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,7 +77,7 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       parameter = parameter.clamp(0, 16383);
       int parameterMSB = parameter ~/ 128;
       int parameterLSB = parameter & 0x7F;
    @@ -111,13 +104,12 @@ 

    Implementation

    data[7] = 0x26; data[8] = valueLSB; - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }
    - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPN4Message/value.html b/doc/api/flutter_midi_command_messages/NRPN4Message/value.html index 272eb0cd..4dcefe56 100644 --- a/doc/api/flutter_midi_command_messages/NRPN4Message/value.html +++ b/doc/api/flutter_midi_command_messages/NRPN4Message/value.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    value property

    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage-class-sidebar.html index 4230612b..e12a5f56 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage-class-sidebar.html @@ -1,29 +1,69 @@
      -
    1. Constructors
    2. -
    3. NRPNHexMessage
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. channel
    11. -
    12. data
    13. -
    14. hashCode
    15. -
    16. parameterLSB
    17. -
    18. parameterMSB
    19. -
    20. runtimeType
    21. -
    22. valueLSB
    23. -
    24. valueMSB
    25. + +
    26. + channel +
    27. + +
    28. + data +
    29. + +
    30. + hashCode +
    31. + +
    32. + parameterLSB +
    33. + +
    34. + parameterMSB +
    35. + +
    36. + runtimeType +
    37. + +
    38. + valueLSB +
    39. + +
    40. + valueMSB +
    41. Methods
    42. -
    43. noSuchMethod
    44. -
    45. send
    46. -
    47. toString
    48. + +
    49. + generateData +
    50. + +
    51. + noSuchMethod +
    52. + +
    53. + send +
    54. + +
    55. + toString +
    56. Operators
    57. -
    58. operator ==
    59. + +
    60. + operator == +
    61. diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage-class.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage-class.html index fc332147..5d3bef32 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage-class.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      NRPNHexMessage
      -
      - -
      +
      -
      NRPNHexMessage class - + @@ -89,10 +81,9 @@

      NRPNHexMessage class

      Constructors

      -
      -
      - NRPNHexMessage({int channel = 0, int parameterMSB = 0, int parameterLSB = 0, int valueMSB = 0, int valueLSB = -1}) +
      + NRPNHexMessage({int channel = 0, int parameterMSB = 0, int parameterLSB = 0, int valueMSB = 0, int valueLSB = -1})
      NRPN Message with data separated in MSB, LSB @@ -203,12 +194,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -222,16 +227,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -275,9 +280,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage/NRPNHexMessage.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage/NRPNHexMessage.html index 223a574b..61fb90ec 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage/NRPNHexMessage.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage/NRPNHexMessage.html @@ -4,8 +4,8 @@ - - NRPNHexMessage constructor - NRPNHexMessage - flutter_midi_command_messages library - Dart API + + NRPNHexMessage.new constructor - NRPNHexMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      NRPNHexMessage
      +
      NRPNHexMessage.new
      -
      - -
      +
      -
      NRPNHexMessage constructor
      - NRPNHexMessage(
      1. {int channel = 0,
      2. + NRPNHexMessage({
        1. int channel = 0,
        2. int parameterMSB = 0,
        3. int parameterLSB = 0,
        4. int valueMSB = 0,
        5. -
        6. int valueLSB = -1}
        7. -
        ) +
      3. int valueLSB = -1,
      4. +
      })
      -

      NRPN Message with data separated in MSB, LSB

      @@ -90,7 +81,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage/channel.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage/channel.html index 47c2994f..09c76794 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage/generateData.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage/generateData.html new file mode 100644 index 00000000..c5bce3dd --- /dev/null +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage/generateData.html @@ -0,0 +1,141 @@ + + + + + + + + generateData method - NRPNHexMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final hasValueLsb = valueLSB >= 0;
      +  final generated = Uint8List(hasValueLsb ? 9 : 7);
      +  // Data Entry MSB
      +  generated[0] = 0xB0 + channel;
      +  generated[1] = 0x63;
      +  generated[2] = parameterMSB;
      +
      +  // Data Entry LSB
      +  generated[3] = 0x62;
      +  generated[4] = parameterLSB;
      +
      +  // Data Value MSB
      +  generated[5] = 0x06;
      +  generated[6] = valueMSB;
      +
      +  // Data Value LSB
      +  if (hasValueLsb) {
      +    generated[7] = 0x26;
      +    generated[8] = valueLSB;
      +  }
      +
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage/parameterLSB.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage/parameterLSB.html index 54321de9..e67f3991 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage/parameterLSB.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage/parameterLSB.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      parameterLSB property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage/parameterMSB.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage/parameterMSB.html index 16f0f01d..95367518 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage/parameterMSB.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage/parameterMSB.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      parameterMSB property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage/send.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage/send.html index 490745ed..9a932d95 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage/send.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
    62. @override
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,7 +77,7 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       data = Uint8List(9);
       // Data Entry MSB
       data[0] = 0xB0 + channel;
    @@ -103,13 +96,12 @@ 

    Implementation

    data[7] = 0x26; data[8] = valueLSB; - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }
    - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage/valueLSB.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage/valueLSB.html index 6906cfdf..46b19aa7 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage/valueLSB.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage/valueLSB.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    valueLSB property

    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNHexMessage/valueMSB.html b/doc/api/flutter_midi_command_messages/NRPNHexMessage/valueMSB.html index a8719add..ebfba10e 100644 --- a/doc/api/flutter_midi_command_messages/NRPNHexMessage/valueMSB.html +++ b/doc/api/flutter_midi_command_messages/NRPNHexMessage/valueMSB.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    valueMSB property
    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNMessage-class.html b/doc/api/flutter_midi_command_messages/NRPNMessage-class.html deleted file mode 100644 index b1f2f741..00000000 --- a/doc/api/flutter_midi_command_messages/NRPNMessage-class.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - NRPNMessage class - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - -
    - -
    - - -
    NRPNMessage
    - -
    - -
    - - - -
    -

    NRPNMessage class

    - - -
    -
    -
    Inheritance
    -
    - - - - - -
    -
    - -
    -

    Constructors

    - -
    -
    - NRPNMessage({int channel: 0 int parameter: 0 int value: 0 }) -
    -
    - -
    -
    -
    - -
    -

    Properties

    - -
    -
    - channel - int -
    -
    - -
    read / write
    -
    -
    - parameter - int -
    -
    - -
    read / write
    -
    -
    - value - int -
    -
    - -
    read / write
    -
    -
    - data - Uint8List -
    -
    - -
    read / write, inherited
    -
    -
    - hashCode - int -
    -
    - The hash code for this object. [...] -
    read-only, inherited
    -
    -
    - runtimeType - Type -
    -
    - A representation of the runtime type of the object. -
    read-only, inherited
    -
    -
    -
    - -
    -

    Methods

    -
    -
    - send() - → void - -
    -
    - -
    override
    -
    -
    - noSuchMethod(Invocation invocation) - → dynamic - -
    -
    - Invoked when a non-existent method or property is accessed. [...] -
    inherited
    -
    -
    - toString() - String - -
    -
    - Returns a string representation of this object. -
    inherited
    -
    -
    -
    - -
    -

    Operators

    -
    -
    - operator ==(Object other) - bool - -
    -
    - The equality operator. [...] -
    inherited
    -
    -
    -
    - - - - -
    - - - -
    - -
    - - flutter_midi_command - 0.2.1 - - - -
    - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNMessage/NRPNMessage.html b/doc/api/flutter_midi_command_messages/NRPNMessage/NRPNMessage.html deleted file mode 100644 index 4bf3c161..00000000 --- a/doc/api/flutter_midi_command_messages/NRPNMessage/NRPNMessage.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - NRPNMessage constructor - NRPNMessage class - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - -
    - -
    - - -
    NRPNMessage
    - -
    - -
    - - - -
    -

    NRPNMessage constructor

    - -
    - - NRPNMessage({int channel: 0 int parameter: 0 int value: 0 }) -
    - - -
    -

    Implementation

    -
    NRPNMessage({this.channel = 0, this.parameter = 0, this.value = 0});
    -
    - -
    - - - -
    - -
    - - flutter_midi_command - 0.2.1 - - - -
    - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNMessage/channel.html b/doc/api/flutter_midi_command_messages/NRPNMessage/channel.html deleted file mode 100644 index 6b66d412..00000000 --- a/doc/api/flutter_midi_command_messages/NRPNMessage/channel.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - channel property - NRPNMessage class - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - -
    - -
    - - -
    channel
    - -
    - -
    - - - -
    -

    channel property

    - -
    - int - channel -
    read / write
    -
    -
    -

    Implementation

    -
    int channel = 0
    -
    -
    -
    - -
    - - - -
    - -
    - - flutter_midi_command - 0.2.1 - - - -
    - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNMessage/parameter.html b/doc/api/flutter_midi_command_messages/NRPNMessage/parameter.html deleted file mode 100644 index a1bbbed1..00000000 --- a/doc/api/flutter_midi_command_messages/NRPNMessage/parameter.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - parameter property - NRPNMessage class - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - -
    - -
    - - -
    parameter
    - -
    - -
    - - - -
    -

    parameter property

    - -
    - int - parameter -
    read / write
    -
    -
    -

    Implementation

    -
    int parameter = 0
    -
    -
    -
    - -
    - - - -
    - -
    - - flutter_midi_command - 0.2.1 - - - -
    - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNMessage/send.html b/doc/api/flutter_midi_command_messages/NRPNMessage/send.html deleted file mode 100644 index 07811d90..00000000 --- a/doc/api/flutter_midi_command_messages/NRPNMessage/send.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - send method - NRPNMessage class - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - -
    - -
    - - -
    send
    - -
    - -
    - - - -
    -

    send method

    - -
    -
    -
      -
    1. @override
    2. -
    -
    - void - send -() -
    override
    -
    - -
    -

    Implementation

    -
    @override
    -void send() {
    -  data = Uint8List(12);
    -  // Data Entry MSB
    -  data[0] = 0xB0 + channel;
    -  data[1] = 0x63;
    -  data[2] = parameter ~/ 128;
    -
    -  // Data Entry LSB
    -  data[3] = 0xB0 + channel;
    -  data[4] = 0x62;
    -  data[5] = parameter - (data[2] * 128);
    -
    -  // Data Value MSB
    -  data[6] = 0xB0 + channel;
    -  data[7] = 0x06;
    -  data[8] = value & 0x7F;
    -
    -  // Data Value LSB
    -  data[9] = 0xB0 + channel;
    -  data[10] = 0x38;
    -  data[11] = value & 0x3F80;
    -
    -  super.send();
    -}
    -
    - -
    - - - -
    - -
    - - flutter_midi_command - 0.2.1 - - - -
    - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNMessage/value.html b/doc/api/flutter_midi_command_messages/NRPNMessage/value.html deleted file mode 100644 index c50f2a22..00000000 --- a/doc/api/flutter_midi_command_messages/NRPNMessage/value.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - value property - NRPNMessage class - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - -
    - -
    - - -
    value
    - -
    - -
    - - - -
    -

    value property

    - -
    - int - value -
    read / write
    -
    -
    -

    Implementation

    -
    int value = 0
    -
    -
    -
    - -
    - - - -
    - -
    - - flutter_midi_command - 0.2.1 - - - -
    - - - - - - - - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNNullMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/NRPNNullMessage-class-sidebar.html index 1be3f85f..930e1fbb 100644 --- a/doc/api/flutter_midi_command_messages/NRPNNullMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/NRPNNullMessage-class-sidebar.html @@ -1,25 +1,53 @@
      -
    1. Constructors
    2. -
    3. NRPNNullMessage
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. channel
    11. -
    12. data
    13. -
    14. hashCode
    15. -
    16. runtimeType
    17. + +
    18. + channel +
    19. + +
    20. + data +
    21. + +
    22. + hashCode +
    23. + +
    24. + runtimeType +
    25. Methods
    26. -
    27. noSuchMethod
    28. -
    29. send
    30. -
    31. toString
    32. + +
    33. + generateData +
    34. + +
    35. + noSuchMethod +
    36. + +
    37. + send +
    38. + +
    39. + toString +
    40. Operators
    41. -
    42. operator ==
    43. + +
    44. + operator == +
    45. diff --git a/doc/api/flutter_midi_command_messages/NRPNNullMessage-class.html b/doc/api/flutter_midi_command_messages/NRPNNullMessage-class.html index 4365a7be..e2cd59f2 100644 --- a/doc/api/flutter_midi_command_messages/NRPNNullMessage-class.html +++ b/doc/api/flutter_midi_command_messages/NRPNNullMessage-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      NRPNNullMessage
      -
      - -
      +
      -
      NRPNNullMessage class - + @@ -89,10 +81,9 @@

      NRPNNullMessage class

      Constructors

      -
      -
      - NRPNNullMessage({int channel = 0}) +
      + NRPNNullMessage({int channel = 0})
      It is best practice, but not mandatory, to send a Null Message at the end of a NRPN @@ -156,12 +147,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -175,16 +180,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -228,9 +233,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNNullMessage/NRPNNullMessage.html b/doc/api/flutter_midi_command_messages/NRPNNullMessage/NRPNNullMessage.html index 6ea264f6..14a3f35b 100644 --- a/doc/api/flutter_midi_command_messages/NRPNNullMessage/NRPNNullMessage.html +++ b/doc/api/flutter_midi_command_messages/NRPNNullMessage/NRPNNullMessage.html @@ -4,8 +4,8 @@ - - NRPNNullMessage constructor - NRPNNullMessage - flutter_midi_command_messages library - Dart API + + NRPNNullMessage.new constructor - NRPNNullMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      NRPNNullMessage
      +
      NRPNNullMessage.new
      -
      - -
      +
      -
      NRPNNullMessage constructor
      - NRPNNullMessage(
      1. {int channel = 0}
      2. -
      ) + NRPNNullMessage({
      1. int channel = 0,
      2. +
      })
      -

      It is best practice, but not mandatory, to send a Null Message at the end of a NRPN @@ -81,7 +72,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNNullMessage/channel.html b/doc/api/flutter_midi_command_messages/NRPNNullMessage/channel.html index afe80273..a85e66d2 100644 --- a/doc/api/flutter_midi_command_messages/NRPNNullMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/NRPNNullMessage/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NRPNNullMessage/generateData.html b/doc/api/flutter_midi_command_messages/NRPNNullMessage/generateData.html new file mode 100644 index 00000000..252097e5 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/NRPNNullMessage/generateData.html @@ -0,0 +1,131 @@ + + + + + + + + generateData method - NRPNNullMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final generated = Uint8List(6);
      +  // Data Entry MSB
      +  generated[0] = 0xB0 + channel;
      +  generated[1] = 0x63;
      +  generated[2] = 0x7F;
      +
      +  // Data Entry LSB
      +  generated[3] = 0xB0 + channel;
      +  generated[4] = 0x62;
      +  generated[5] = 0x7F;
      +
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/NRPNNullMessage/send.html b/doc/api/flutter_midi_command_messages/NRPNNullMessage/send.html index f3458603..b627dcab 100644 --- a/doc/api/flutter_midi_command_messages/NRPNNullMessage/send.html +++ b/doc/api/flutter_midi_command_messages/NRPNNullMessage/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
      - +
      +
        +
      1. @override
      2. +
      +
      void -send() +send({
      1. String? deviceId,
      2. +
      3. int? timestamp,
      4. +
      })
      override
      @@ -78,7 +76,8 @@

      send method

      Implementation

      -
      void send() {
      +  
      @override
      +void send({String? deviceId, int? timestamp}) {
         data = Uint8List(6);
         // Data Entry MSB
         data[0] = 0xB0 + channel;
      @@ -90,13 +89,12 @@ 

      Implementation

      data[4] = 0x62; data[5] = 0x7F; - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOffMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/NoteOffMessage-class-sidebar.html index 63bb64de..65136928 100644 --- a/doc/api/flutter_midi_command_messages/NoteOffMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/NoteOffMessage-class-sidebar.html @@ -1,27 +1,61 @@
        -
      1. Constructors
      2. -
      3. NoteOffMessage
      4. +
      5. Constructors
      6. +
      7. new
      8. Properties
      9. -
      10. channel
      11. -
      12. data
      13. -
      14. hashCode
      15. -
      16. note
      17. -
      18. runtimeType
      19. -
      20. velocity
      21. + +
      22. + channel +
      23. + +
      24. + data +
      25. + +
      26. + hashCode +
      27. + +
      28. + note +
      29. + +
      30. + runtimeType +
      31. + +
      32. + velocity +
      33. Methods
      34. -
      35. noSuchMethod
      36. -
      37. send
      38. -
      39. toString
      40. + +
      41. + generateData +
      42. + +
      43. + noSuchMethod +
      44. + +
      45. + send +
      46. + +
      47. + toString +
      48. Operators
      49. -
      50. operator ==
      51. + +
      52. + operator == +
      53. diff --git a/doc/api/flutter_midi_command_messages/NoteOffMessage-class.html b/doc/api/flutter_midi_command_messages/NoteOffMessage-class.html index 963d2e83..613a36cd 100644 --- a/doc/api/flutter_midi_command_messages/NoteOffMessage-class.html +++ b/doc/api/flutter_midi_command_messages/NoteOffMessage-class.html @@ -16,40 +16,32 @@ - - -
        -
        menu
        NoteOffMessage
        -
        - -
        +
        -
        NoteOffMessage class - + @@ -89,10 +81,9 @@

        NoteOffMessage class

        Constructors

        -
        -
        - NoteOffMessage({int channel = 0, int note = 0, int velocity = 0}) +
        + NoteOffMessage({int channel = 0, int note = 0, int velocity = 0})
        Note Off Message @@ -179,12 +170,26 @@

        Properties

        +

        Methods

        +
        + generateData() + Uint8List + + + +
        +
        + Generates MIDI bytes for this message without sending. +
        override
        + +
        +
        noSuchMethod(Invocation invocation) → dynamic @@ -198,16 +203,16 @@

        Methods

        -
        - send() +
        + send({String? deviceId, int? timestamp}) → void
        -
        +
        Send the message bytes to all connected devices -
        override
        +
        inherited
        @@ -251,9 +256,7 @@

        Operators

        -

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOffMessage/NoteOffMessage.html b/doc/api/flutter_midi_command_messages/NoteOffMessage/NoteOffMessage.html index 1985d86f..25a12971 100644 --- a/doc/api/flutter_midi_command_messages/NoteOffMessage/NoteOffMessage.html +++ b/doc/api/flutter_midi_command_messages/NoteOffMessage/NoteOffMessage.html @@ -4,8 +4,8 @@ - - NoteOffMessage constructor - NoteOffMessage - flutter_midi_command_messages library - Dart API + + NoteOffMessage.new constructor - NoteOffMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
        -
        menu -
        NoteOffMessage
        +
        NoteOffMessage.new
        -
        - -
        +
        -
        NoteOffMessage constructor
        - NoteOffMessage(
        1. {int channel = 0,
        2. + NoteOffMessage({
          1. int channel = 0,
          2. int note = 0,
          3. -
          4. int velocity = 0}
          5. -
          ) +
        3. int velocity = 0,
        4. +
        })
        -

        Note Off Message

        @@ -82,7 +73,6 @@

        Implementation

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOffMessage/channel.html b/doc/api/flutter_midi_command_messages/NoteOffMessage/channel.html index 909cf1f8..8d2cf78d 100644 --- a/doc/api/flutter_midi_command_messages/NoteOffMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/NoteOffMessage/channel.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        channel property
        +
        int @@ -76,8 +69,8 @@

        Implementation

        + - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOffMessage/generateData.html b/doc/api/flutter_midi_command_messages/NoteOffMessage/generateData.html new file mode 100644 index 00000000..ac53887c --- /dev/null +++ b/doc/api/flutter_midi_command_messages/NoteOffMessage/generateData.html @@ -0,0 +1,124 @@ + + + + + + + + generateData method - NoteOffMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
        +
        + menu + +
        generateData
        + + +
        +
        +
        +
        +

        generateData method +

        + +
        + +
        +
          +
        1. @override
        2. +
        +
        +Uint8List +generateData() + +
        override
        + +
        + +
        +

        Generates MIDI bytes for this message without sending.

        +

        Subclasses override this to provide typed message encoding.

        +
        + + + +
        +

        Implementation

        +
        @override
        +Uint8List generateData() {
        +  final generated = Uint8List(3);
        +  generated[0] = 0x80 + channel;
        +  generated[1] = note;
        +  generated[2] = velocity;
        +  return generated;
        +}
        +
        + + +
        + + +
        +
        + + flutter_midi_command + 1.0.0 + + +
        + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/NoteOffMessage/note.html b/doc/api/flutter_midi_command_messages/NoteOffMessage/note.html index ba6692c0..1c2500d4 100644 --- a/doc/api/flutter_midi_command_messages/NoteOffMessage/note.html +++ b/doc/api/flutter_midi_command_messages/NoteOffMessage/note.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        note property
        +
        int @@ -76,8 +69,8 @@

        Implementation

        + - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOffMessage/send.html b/doc/api/flutter_midi_command_messages/NoteOffMessage/send.html index 15394d8a..8febe3f1 100644 --- a/doc/api/flutter_midi_command_messages/NoteOffMessage/send.html +++ b/doc/api/flutter_midi_command_messages/NoteOffMessage/send.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        send method
      54. @override
      - void -send() +send({
      1. String? deviceId,
      2. +
      3. int? timestamp,
      4. +
      })
      override
      @@ -84,18 +77,17 @@

      send method

      Implementation

      @override
      -void send() {
      +void send({String? deviceId, int? timestamp}) {
         data = Uint8List(3);
         data[0] = 0x80 + channel;
         data[1] = note;
         data[2] = velocity;
      -  super.send();
      +  super.send(deviceId: deviceId, timestamp: timestamp);
       }
      - - - -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOffMessage/velocity.html b/doc/api/flutter_midi_command_messages/NoteOffMessage/velocity.html index 9a07c0df..9888cd14 100644 --- a/doc/api/flutter_midi_command_messages/NoteOffMessage/velocity.html +++ b/doc/api/flutter_midi_command_messages/NoteOffMessage/velocity.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      velocity property

      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - - -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOnMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/NoteOnMessage-class-sidebar.html index 02854222..1e8666b2 100644 --- a/doc/api/flutter_midi_command_messages/NoteOnMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/NoteOnMessage-class-sidebar.html @@ -1,27 +1,61 @@
        -
      1. Constructors
      2. -
      3. NoteOnMessage
      4. +
      5. Constructors
      6. +
      7. new
      8. Properties
      9. -
      10. channel
      11. -
      12. data
      13. -
      14. hashCode
      15. -
      16. note
      17. -
      18. runtimeType
      19. -
      20. velocity
      21. + +
      22. + channel +
      23. + +
      24. + data +
      25. + +
      26. + hashCode +
      27. + +
      28. + note +
      29. + +
      30. + runtimeType +
      31. + +
      32. + velocity +
      33. Methods
      34. -
      35. noSuchMethod
      36. -
      37. send
      38. -
      39. toString
      40. + +
      41. + generateData +
      42. + +
      43. + noSuchMethod +
      44. + +
      45. + send +
      46. + +
      47. + toString +
      48. Operators
      49. -
      50. operator ==
      51. + +
      52. + operator == +
      53. diff --git a/doc/api/flutter_midi_command_messages/NoteOnMessage-class.html b/doc/api/flutter_midi_command_messages/NoteOnMessage-class.html index 12fa8d44..0a0aa939 100644 --- a/doc/api/flutter_midi_command_messages/NoteOnMessage-class.html +++ b/doc/api/flutter_midi_command_messages/NoteOnMessage-class.html @@ -16,40 +16,32 @@ - - -
        -
        menu
        NoteOnMessage
        -
        - -
        +
        -
        NoteOnMessage class - + @@ -89,10 +81,9 @@

        NoteOnMessage class

        Constructors

        -
        -
        - NoteOnMessage({int channel = 0, int note = 0, int velocity = 0}) +
        + NoteOnMessage({int channel = 0, int note = 0, int velocity = 0})
        Note On Message @@ -179,12 +170,26 @@

        Properties

        +

        Methods

        +
        + generateData() + Uint8List + + + +
        +
        + Generates MIDI bytes for this message without sending. +
        override
        + +
        +
        noSuchMethod(Invocation invocation) → dynamic @@ -198,16 +203,16 @@

        Methods

        -
        - send() +
        + send({String? deviceId, int? timestamp}) → void
        -
        +
        Send the message bytes to all connected devices -
        override
        +
        inherited
        @@ -251,9 +256,7 @@

        Operators

        -

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOnMessage/NoteOnMessage.html b/doc/api/flutter_midi_command_messages/NoteOnMessage/NoteOnMessage.html index 2edf8ce2..f035569d 100644 --- a/doc/api/flutter_midi_command_messages/NoteOnMessage/NoteOnMessage.html +++ b/doc/api/flutter_midi_command_messages/NoteOnMessage/NoteOnMessage.html @@ -4,8 +4,8 @@ - - NoteOnMessage constructor - NoteOnMessage - flutter_midi_command_messages library - Dart API + + NoteOnMessage.new constructor - NoteOnMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
        -
        menu -
        NoteOnMessage
        +
        NoteOnMessage.new
        -
        - -
        +
        -
        NoteOnMessage constructor
        - NoteOnMessage(
        1. {int channel = 0,
        2. + NoteOnMessage({
          1. int channel = 0,
          2. int note = 0,
          3. -
          4. int velocity = 0}
          5. -
          ) +
        3. int velocity = 0,
        4. +
        })
        -

        Note On Message

        @@ -82,7 +73,6 @@

        Implementation

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOnMessage/channel.html b/doc/api/flutter_midi_command_messages/NoteOnMessage/channel.html index 7ea7ed3c..35977a0f 100644 --- a/doc/api/flutter_midi_command_messages/NoteOnMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/NoteOnMessage/channel.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        channel property
        +
        int @@ -76,8 +69,8 @@

        Implementation

        + - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOnMessage/generateData.html b/doc/api/flutter_midi_command_messages/NoteOnMessage/generateData.html new file mode 100644 index 00000000..9b4c55b8 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/NoteOnMessage/generateData.html @@ -0,0 +1,124 @@ + + + + + + + + generateData method - NoteOnMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
        +
        + menu + +
        generateData
        + + +
        +
        +
        +
        +

        generateData method +

        + +
        + +
        +
          +
        1. @override
        2. +
        +
        +Uint8List +generateData() + +
        override
        + +
        + +
        +

        Generates MIDI bytes for this message without sending.

        +

        Subclasses override this to provide typed message encoding.

        +
        + + + +
        +

        Implementation

        +
        @override
        +Uint8List generateData() {
        +  final generated = Uint8List(3);
        +  generated[0] = 0x90 + channel;
        +  generated[1] = note;
        +  generated[2] = velocity;
        +  return generated;
        +}
        +
        + + +
        + + +
        +
        + + flutter_midi_command + 1.0.0 + + +
        + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/NoteOnMessage/note.html b/doc/api/flutter_midi_command_messages/NoteOnMessage/note.html index 226f79f0..56712a76 100644 --- a/doc/api/flutter_midi_command_messages/NoteOnMessage/note.html +++ b/doc/api/flutter_midi_command_messages/NoteOnMessage/note.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        note property
        +
        int @@ -76,8 +69,8 @@

        Implementation

        + - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOnMessage/send.html b/doc/api/flutter_midi_command_messages/NoteOnMessage/send.html index 82be7f77..f1e03462 100644 --- a/doc/api/flutter_midi_command_messages/NoteOnMessage/send.html +++ b/doc/api/flutter_midi_command_messages/NoteOnMessage/send.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        send method
      54. @override
      - void -send() +send({
      1. String? deviceId,
      2. +
      3. int? timestamp,
      4. +
      })
      override
      @@ -84,18 +77,17 @@

      send method

      Implementation

      @override
      -void send() {
      +void send({String? deviceId, int? timestamp}) {
         data = Uint8List(3);
         data[0] = 0x90 + channel;
         data[1] = note;
         data[2] = velocity;
      -  super.send();
      +  super.send(deviceId: deviceId, timestamp: timestamp);
       }
      - - - -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/NoteOnMessage/velocity.html b/doc/api/flutter_midi_command_messages/NoteOnMessage/velocity.html index e442181f..a44930a2 100644 --- a/doc/api/flutter_midi_command_messages/NoteOnMessage/velocity.html +++ b/doc/api/flutter_midi_command_messages/NoteOnMessage/velocity.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      velocity property

      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - - -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/PCMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/PCMessage-class-sidebar.html index 7a252bf5..dcede7f6 100644 --- a/doc/api/flutter_midi_command_messages/PCMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/PCMessage-class-sidebar.html @@ -1,26 +1,57 @@
        -
      1. Constructors
      2. -
      3. PCMessage
      4. +
      5. Constructors
      6. +
      7. new
      8. Properties
      9. -
      10. channel
      11. -
      12. data
      13. -
      14. hashCode
      15. -
      16. program
      17. -
      18. runtimeType
      19. + +
      20. + channel +
      21. + +
      22. + data +
      23. + +
      24. + hashCode +
      25. + +
      26. + program +
      27. + +
      28. + runtimeType +
      29. Methods
      30. -
      31. noSuchMethod
      32. -
      33. send
      34. -
      35. toString
      36. + +
      37. + generateData +
      38. + +
      39. + noSuchMethod +
      40. + +
      41. + send +
      42. + +
      43. + toString +
      44. Operators
      45. -
      46. operator ==
      47. + +
      48. + operator == +
      49. diff --git a/doc/api/flutter_midi_command_messages/PCMessage-class.html b/doc/api/flutter_midi_command_messages/PCMessage-class.html index 04d4cfda..886632c6 100644 --- a/doc/api/flutter_midi_command_messages/PCMessage-class.html +++ b/doc/api/flutter_midi_command_messages/PCMessage-class.html @@ -16,40 +16,32 @@ - - -
        -
        menu
        PCMessage
        -
        - -
        +
        -
        PCMessage class - + @@ -89,10 +81,9 @@

        PCMessage class

        Constructors

        -
        -
        - PCMessage({int channel = 0, int program = 0}) +
        + PCMessage({int channel = 0, int program = 0})
        Program Change Message @@ -167,12 +158,26 @@

        Properties

        +

        Methods

        +
        + generateData() + Uint8List + + + +
        +
        + Generates MIDI bytes for this message without sending. +
        override
        + +
        +
        noSuchMethod(Invocation invocation) → dynamic @@ -186,16 +191,16 @@

        Methods

        -
        - send() +
        + send({String? deviceId, int? timestamp}) → void
        -
        +
        Send the message bytes to all connected devices -
        override
        +
        inherited
        @@ -239,9 +244,7 @@

        Operators

        -

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/PCMessage/PCMessage.html b/doc/api/flutter_midi_command_messages/PCMessage/PCMessage.html index a785537b..7b1405ce 100644 --- a/doc/api/flutter_midi_command_messages/PCMessage/PCMessage.html +++ b/doc/api/flutter_midi_command_messages/PCMessage/PCMessage.html @@ -4,8 +4,8 @@ - - PCMessage constructor - PCMessage - flutter_midi_command_messages library - Dart API + + PCMessage.new constructor - PCMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
        -
        menu -
        PCMessage
        +
        PCMessage.new
        -
        - -
        +
        -
        PCMessage constructor
        - PCMessage(
        1. {int channel = 0,
        2. -
        3. int program = 0}
        4. -
        ) + PCMessage({
        1. int channel = 0,
        2. +
        3. int program = 0,
        4. +
        })
        -

        Program Change Message

        @@ -81,7 +72,6 @@

        Implementation

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/PCMessage/channel.html b/doc/api/flutter_midi_command_messages/PCMessage/channel.html index 9ca8bdcf..2a82b88c 100644 --- a/doc/api/flutter_midi_command_messages/PCMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/PCMessage/channel.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        channel property
        +
        int @@ -76,8 +69,8 @@

        Implementation

        + - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/PCMessage/generateData.html b/doc/api/flutter_midi_command_messages/PCMessage/generateData.html new file mode 100644 index 00000000..6f25e74f --- /dev/null +++ b/doc/api/flutter_midi_command_messages/PCMessage/generateData.html @@ -0,0 +1,123 @@ + + + + + + + + generateData method - PCMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
        +
        + menu + +
        generateData
        + + +
        +
        +
        +
        +

        generateData method +

        + +
        + +
        +
          +
        1. @override
        2. +
        +
        +Uint8List +generateData() + +
        override
        + +
        + +
        +

        Generates MIDI bytes for this message without sending.

        +

        Subclasses override this to provide typed message encoding.

        +
        + + + +
        +

        Implementation

        +
        @override
        +Uint8List generateData() {
        +  final generated = Uint8List(2);
        +  generated[0] = 0xC0 + channel;
        +  generated[1] = program;
        +  return generated;
        +}
        +
        + + +
        + + +
        +
        + + flutter_midi_command + 1.0.0 + + +
        + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/PCMessage/program.html b/doc/api/flutter_midi_command_messages/PCMessage/program.html index 25adb222..8e732a02 100644 --- a/doc/api/flutter_midi_command_messages/PCMessage/program.html +++ b/doc/api/flutter_midi_command_messages/PCMessage/program.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        program property
        +
        int @@ -76,8 +69,8 @@

        Implementation

        + - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/PCMessage/send.html b/doc/api/flutter_midi_command_messages/PCMessage/send.html index 0f44af80..f6d4f43a 100644 --- a/doc/api/flutter_midi_command_messages/PCMessage/send.html +++ b/doc/api/flutter_midi_command_messages/PCMessage/send.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        send method
      50. @override
      - void -send() +send({
      1. String? deviceId,
      2. +
      3. int? timestamp,
      4. +
      })
      override
      @@ -84,17 +77,16 @@

      send method

      Implementation

      @override
      -void send() {
      +void send({String? deviceId, int? timestamp}) {
         data = Uint8List(2);
         data[0] = 0xC0 + channel;
         data[1] = program;
      -  super.send();
      +  super.send(deviceId: deviceId, timestamp: timestamp);
       }
      - - - -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/PitchBendMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/PitchBendMessage-class-sidebar.html index 4a8f9f73..fe80ca58 100644 --- a/doc/api/flutter_midi_command_messages/PitchBendMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/PitchBendMessage-class-sidebar.html @@ -1,26 +1,57 @@
        -
      1. Constructors
      2. -
      3. PitchBendMessage
      4. +
      5. Constructors
      6. +
      7. new
      8. Properties
      9. -
      10. bend
      11. -
      12. channel
      13. -
      14. data
      15. -
      16. hashCode
      17. -
      18. runtimeType
      19. + +
      20. + bend +
      21. + +
      22. + channel +
      23. + +
      24. + data +
      25. + +
      26. + hashCode +
      27. + +
      28. + runtimeType +
      29. Methods
      30. -
      31. noSuchMethod
      32. -
      33. send
      34. -
      35. toString
      36. + +
      37. + generateData +
      38. + +
      39. + noSuchMethod +
      40. + +
      41. + send +
      42. + +
      43. + toString +
      44. Operators
      45. -
      46. operator ==
      47. + +
      48. + operator == +
      49. diff --git a/doc/api/flutter_midi_command_messages/PitchBendMessage-class.html b/doc/api/flutter_midi_command_messages/PitchBendMessage-class.html index 38416b68..c8f890f0 100644 --- a/doc/api/flutter_midi_command_messages/PitchBendMessage-class.html +++ b/doc/api/flutter_midi_command_messages/PitchBendMessage-class.html @@ -16,40 +16,32 @@ - - -
        -
        menu
        PitchBendMessage
        -
        - -
        +
        -
        PitchBendMessage class - + @@ -89,10 +81,9 @@

        PitchBendMessage class

        Constructors

        -
        -
        - PitchBendMessage({int channel = 0, double bend = 0}) +
        + PitchBendMessage({int channel = 0, double bend = 0})
        Create Pitch Bend Message with a bend value range of -1.0 to 1.0 (default: 0.0). @@ -167,12 +158,26 @@

        Properties

        +

        Methods

        +
        + generateData() + Uint8List + + + +
        +
        + Generates MIDI bytes for this message without sending. +
        override
        + +
        +
        noSuchMethod(Invocation invocation) → dynamic @@ -186,16 +191,16 @@

        Methods

        -
        - send() +
        + send({String? deviceId, int? timestamp}) → void
        -
        +
        Send the message bytes to all connected devices -
        override
        +
        inherited
        @@ -239,9 +244,7 @@

        Operators

        -

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/PitchBendMessage/PitchBendMessage.html b/doc/api/flutter_midi_command_messages/PitchBendMessage/PitchBendMessage.html index a4a70c32..e0b23a9a 100644 --- a/doc/api/flutter_midi_command_messages/PitchBendMessage/PitchBendMessage.html +++ b/doc/api/flutter_midi_command_messages/PitchBendMessage/PitchBendMessage.html @@ -4,8 +4,8 @@ - - PitchBendMessage constructor - PitchBendMessage - flutter_midi_command_messages library - Dart API + + PitchBendMessage.new constructor - PitchBendMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
        -
        menu -
        PitchBendMessage
        +
        PitchBendMessage.new
        -
        - -
        +
        -
        PitchBendMessage constructor
        - PitchBendMessage(
        1. {int channel = 0,
        2. -
        3. double bend = 0}
        4. -
        ) + PitchBendMessage({
        1. int channel = 0,
        2. +
        3. double bend = 0,
        4. +
        })
        -

        Create Pitch Bend Message with a bend value range of -1.0 to 1.0 (default: 0.0).

        @@ -81,7 +72,6 @@

        Implementation

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/PitchBendMessage/bend.html b/doc/api/flutter_midi_command_messages/PitchBendMessage/bend.html index a66a351a..a9b62dda 100644 --- a/doc/api/flutter_midi_command_messages/PitchBendMessage/bend.html +++ b/doc/api/flutter_midi_command_messages/PitchBendMessage/bend.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        bend property

      +
      double @@ -76,8 +69,8 @@

      Implementation

      + - - - -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/PitchBendMessage/channel.html b/doc/api/flutter_midi_command_messages/PitchBendMessage/channel.html index 557f864c..33b8c1cb 100644 --- a/doc/api/flutter_midi_command_messages/PitchBendMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/PitchBendMessage/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/PitchBendMessage/generateData.html b/doc/api/flutter_midi_command_messages/PitchBendMessage/generateData.html new file mode 100644 index 00000000..76f58bd1 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/PitchBendMessage/generateData.html @@ -0,0 +1,129 @@ + + + + + + + + generateData method - PitchBendMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final clampedBend = (bend.clamp(-1.0, 1.0) + 1) / 2.0;
      +  final targetValue = (clampedBend * 0x3FFF).round();
      +  final bendMSB = targetValue >> 7;
      +  final bendLSB = targetValue & 0x7F;
      +
      +  final generated = Uint8List(3);
      +  generated[0] = 0xE0 + channel;
      +  generated[1] = bendLSB;
      +  generated[2] = bendMSB;
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/PitchBendMessage/send.html b/doc/api/flutter_midi_command_messages/PitchBendMessage/send.html index 7f5e9b96..ab0223a0 100644 --- a/doc/api/flutter_midi_command_messages/PitchBendMessage/send.html +++ b/doc/api/flutter_midi_command_messages/PitchBendMessage/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
    46. @override
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,7 +77,7 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       double clampedBend = (bend.clamp(-1, 1) + 1) / 2.0;
       int targetValue = (clampedBend * 0x3FFF).round();
     
    @@ -95,13 +88,12 @@ 

    Implementation

    data[0] = 0xE0 + channel; data[1] = bendLSB; data[2] = bendMSB; - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }
    - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/PolyATMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/PolyATMessage-class-sidebar.html index 13a0e268..d5f667d4 100644 --- a/doc/api/flutter_midi_command_messages/PolyATMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/PolyATMessage-class-sidebar.html @@ -1,27 +1,61 @@
      -
    1. Constructors
    2. -
    3. PolyATMessage
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. channel
    11. -
    12. data
    13. -
    14. hashCode
    15. -
    16. note
    17. -
    18. pressure
    19. -
    20. runtimeType
    21. + +
    22. + channel +
    23. + +
    24. + data +
    25. + +
    26. + hashCode +
    27. + +
    28. + note +
    29. + +
    30. + pressure +
    31. + +
    32. + runtimeType +
    33. Methods
    34. -
    35. noSuchMethod
    36. -
    37. send
    38. -
    39. toString
    40. + +
    41. + generateData +
    42. + +
    43. + noSuchMethod +
    44. + +
    45. + send +
    46. + +
    47. + toString +
    48. Operators
    49. -
    50. operator ==
    51. + +
    52. + operator == +
    53. diff --git a/doc/api/flutter_midi_command_messages/PolyATMessage-class.html b/doc/api/flutter_midi_command_messages/PolyATMessage-class.html index 1284448e..7af2df1c 100644 --- a/doc/api/flutter_midi_command_messages/PolyATMessage-class.html +++ b/doc/api/flutter_midi_command_messages/PolyATMessage-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      PolyATMessage
      -
      - -
      +
      -
      PolyATMessage class - + @@ -89,10 +81,9 @@

      PolyATMessage class

      Constructors

      -
      -
      - PolyATMessage({int channel = 0, int note = 0, int pressure = 0}) +
      + PolyATMessage({int channel = 0, int note = 0, int pressure = 0})
      Create a Polyphonic Aftertouch Message for a single note @@ -179,12 +170,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -198,16 +203,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -251,9 +256,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/PolyATMessage/PolyATMessage.html b/doc/api/flutter_midi_command_messages/PolyATMessage/PolyATMessage.html index b3decef5..8fab86f0 100644 --- a/doc/api/flutter_midi_command_messages/PolyATMessage/PolyATMessage.html +++ b/doc/api/flutter_midi_command_messages/PolyATMessage/PolyATMessage.html @@ -4,8 +4,8 @@ - - PolyATMessage constructor - PolyATMessage - flutter_midi_command_messages library - Dart API + + PolyATMessage.new constructor - PolyATMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      PolyATMessage
      +
      PolyATMessage.new
      -
      - -
      +
      -
      PolyATMessage constructor
      - PolyATMessage(
      1. {int channel = 0,
      2. + PolyATMessage({
        1. int channel = 0,
        2. int note = 0,
        3. -
        4. int pressure = 0}
        5. -
        ) +
      3. int pressure = 0,
      4. +
      })
      -

      Create a Polyphonic Aftertouch Message for a single note

      @@ -82,7 +73,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/PolyATMessage/channel.html b/doc/api/flutter_midi_command_messages/PolyATMessage/channel.html index c1fc1e6a..0d6ec5a9 100644 --- a/doc/api/flutter_midi_command_messages/PolyATMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/PolyATMessage/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property

    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/PolyATMessage/generateData.html b/doc/api/flutter_midi_command_messages/PolyATMessage/generateData.html new file mode 100644 index 00000000..a316eda7 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/PolyATMessage/generateData.html @@ -0,0 +1,124 @@ + + + + + + + + generateData method - PolyATMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
    +
    + menu + +
    generateData
    + + +
    +
    +
    +
    +

    generateData method +

    + +
    + +
    +
      +
    1. @override
    2. +
    +
    +Uint8List +generateData() + +
    override
    + +
    + +
    +

    Generates MIDI bytes for this message without sending.

    +

    Subclasses override this to provide typed message encoding.

    +
    + + + +
    +

    Implementation

    +
    @override
    +Uint8List generateData() {
    +  final generated = Uint8List(3);
    +  generated[0] = 0xA0 + channel;
    +  generated[1] = note;
    +  generated[2] = pressure;
    +  return generated;
    +}
    +
    + + +
    + + +
    +
    + + flutter_midi_command + 1.0.0 + + +
    + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/PolyATMessage/note.html b/doc/api/flutter_midi_command_messages/PolyATMessage/note.html index b309956e..0d6239a0 100644 --- a/doc/api/flutter_midi_command_messages/PolyATMessage/note.html +++ b/doc/api/flutter_midi_command_messages/PolyATMessage/note.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    note property
    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/PolyATMessage/pressure.html b/doc/api/flutter_midi_command_messages/PolyATMessage/pressure.html index 8957c62c..5ba7dcca 100644 --- a/doc/api/flutter_midi_command_messages/PolyATMessage/pressure.html +++ b/doc/api/flutter_midi_command_messages/PolyATMessage/pressure.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    pressure property
    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/PolyATMessage/send.html b/doc/api/flutter_midi_command_messages/PolyATMessage/send.html index 4310bb3d..05fded8f 100644 --- a/doc/api/flutter_midi_command_messages/PolyATMessage/send.html +++ b/doc/api/flutter_midi_command_messages/PolyATMessage/send.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    send method
  • @override
  • - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,18 +77,17 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       data = Uint8List(3);
       data[0] = 0xA0 + channel;
       data[1] = note;
       data[2] = pressure;
    -  super.send();
    +  super.send(deviceId: deviceId, timestamp: timestamp);
     }
    - - -

    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/RPNHexMessage-class-sidebar.html index eaee0fdc..9e242139 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage-class-sidebar.html @@ -1,29 +1,69 @@
      -
    1. Constructors
    2. -
    3. RPNHexMessage
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. channel
    11. -
    12. data
    13. -
    14. hashCode
    15. -
    16. parameterLSB
    17. -
    18. parameterMSB
    19. -
    20. runtimeType
    21. -
    22. valueLSB
    23. -
    24. valueMSB
    25. + +
    26. + channel +
    27. + +
    28. + data +
    29. + +
    30. + hashCode +
    31. + +
    32. + parameterLSB +
    33. + +
    34. + parameterMSB +
    35. + +
    36. + runtimeType +
    37. + +
    38. + valueLSB +
    39. + +
    40. + valueMSB +
    41. Methods
    42. -
    43. noSuchMethod
    44. -
    45. send
    46. -
    47. toString
    48. + +
    49. + generateData +
    50. + +
    51. + noSuchMethod +
    52. + +
    53. + send +
    54. + +
    55. + toString +
    56. Operators
    57. -
    58. operator ==
    59. + +
    60. + operator == +
    61. diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage-class.html b/doc/api/flutter_midi_command_messages/RPNHexMessage-class.html index 95ec3a48..98a8a1f4 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage-class.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      RPNHexMessage
      -
      - -
      +
      -
      RPNHexMessage class - + @@ -89,10 +81,9 @@

      RPNHexMessage class

      Constructors

      -
      -
      - RPNHexMessage({int channel = 0, int parameterMSB = 0, int parameterLSB = 0, int valueMSB = 0, int valueLSB = -1}) +
      + RPNHexMessage({int channel = 0, int parameterMSB = 0, int parameterLSB = 0, int valueMSB = 0, int valueLSB = -1})
      RPN Message with data separated in MSB, LSB @@ -203,12 +194,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -222,16 +227,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -275,9 +280,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage/RPNHexMessage.html b/doc/api/flutter_midi_command_messages/RPNHexMessage/RPNHexMessage.html index b6229e88..decad321 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage/RPNHexMessage.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage/RPNHexMessage.html @@ -4,8 +4,8 @@ - - RPNHexMessage constructor - RPNHexMessage - flutter_midi_command_messages library - Dart API + + RPNHexMessage.new constructor - RPNHexMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      RPNHexMessage
      +
      RPNHexMessage.new
      -
      - -
      +
      -
      RPNHexMessage constructor
      - RPNHexMessage(
      1. {int channel = 0,
      2. + RPNHexMessage({
        1. int channel = 0,
        2. int parameterMSB = 0,
        3. int parameterLSB = 0,
        4. int valueMSB = 0,
        5. -
        6. int valueLSB = -1}
        7. -
        ) +
      3. int valueLSB = -1,
      4. +
      })
      -

      RPN Message with data separated in MSB, LSB

      @@ -90,7 +81,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage/channel.html b/doc/api/flutter_midi_command_messages/RPNHexMessage/channel.html index d6309f2a..63e1652d 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage/generateData.html b/doc/api/flutter_midi_command_messages/RPNHexMessage/generateData.html new file mode 100644 index 00000000..085f5688 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage/generateData.html @@ -0,0 +1,144 @@ + + + + + + + + generateData method - RPNHexMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final length = valueLSB > -1 ? 12 : 9;
      +  final generated = Uint8List(length);
      +  // Data Entry MSB
      +  generated[0] = 0xB0 + channel;
      +  generated[1] = 0x65;
      +  generated[2] = parameterMSB;
      +
      +  // Data Entry LSB
      +  generated[3] = 0xB0 + channel;
      +  generated[4] = 0x64;
      +  generated[5] = parameterLSB;
      +
      +  // Data Value MSB
      +  generated[6] = 0xB0 + channel;
      +  generated[7] = 0x06;
      +  generated[8] = valueMSB;
      +
      +  // Data Value LSB
      +  if (valueLSB > -1) {
      +    generated[9] = 0xB0 + channel;
      +    generated[10] = 0x26;
      +    generated[11] = valueLSB;
      +  }
      +
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage/parameterLSB.html b/doc/api/flutter_midi_command_messages/RPNHexMessage/parameterLSB.html index 72ff5efb..ec057a20 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage/parameterLSB.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage/parameterLSB.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      parameterLSB property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage/parameterMSB.html b/doc/api/flutter_midi_command_messages/RPNHexMessage/parameterMSB.html index 17e6d378..26dc3f4f 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage/parameterMSB.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage/parameterMSB.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      parameterMSB property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage/send.html b/doc/api/flutter_midi_command_messages/RPNHexMessage/send.html index 3fa73eef..b3f08c1c 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage/send.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
    62. @override
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,7 +77,7 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       var length = valueLSB > -1 ? 12 : 9;
       data = Uint8List(length);
       // Data Entry MSB
    @@ -109,13 +102,12 @@ 

    Implementation

    data[11] = valueLSB; } - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }
    - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage/valueLSB.html b/doc/api/flutter_midi_command_messages/RPNHexMessage/valueLSB.html index 6ace790a..5f568104 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage/valueLSB.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage/valueLSB.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    valueLSB property

    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNHexMessage/valueMSB.html b/doc/api/flutter_midi_command_messages/RPNHexMessage/valueMSB.html index b1c40fe4..d1b11b74 100644 --- a/doc/api/flutter_midi_command_messages/RPNHexMessage/valueMSB.html +++ b/doc/api/flutter_midi_command_messages/RPNHexMessage/valueMSB.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    valueMSB property
    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - -
    -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/RPNMessage-class-sidebar.html index c1c9c7c0..b674166f 100644 --- a/doc/api/flutter_midi_command_messages/RPNMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/RPNMessage-class-sidebar.html @@ -1,27 +1,61 @@
      -
    1. Constructors
    2. -
    3. RPNMessage
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. channel
    11. -
    12. data
    13. -
    14. hashCode
    15. -
    16. parameter
    17. -
    18. runtimeType
    19. -
    20. value
    21. + +
    22. + channel +
    23. + +
    24. + data +
    25. + +
    26. + hashCode +
    27. + +
    28. + parameter +
    29. + +
    30. + runtimeType +
    31. + +
    32. + value +
    33. Methods
    34. -
    35. noSuchMethod
    36. -
    37. send
    38. -
    39. toString
    40. + +
    41. + generateData +
    42. + +
    43. + noSuchMethod +
    44. + +
    45. + send +
    46. + +
    47. + toString +
    48. Operators
    49. -
    50. operator ==
    51. + +
    52. + operator == +
    53. diff --git a/doc/api/flutter_midi_command_messages/RPNMessage-class.html b/doc/api/flutter_midi_command_messages/RPNMessage-class.html index 089f2a2c..64725581 100644 --- a/doc/api/flutter_midi_command_messages/RPNMessage-class.html +++ b/doc/api/flutter_midi_command_messages/RPNMessage-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      RPNMessage
      -
      - -
      +
      -
      RPNMessage class - + @@ -89,10 +81,9 @@

      RPNMessage class

      Constructors

      -
      -
      - RPNMessage({int channel = 0, int parameter = 0, int value = 0}) +
      + RPNMessage({int channel = 0, int parameter = 0, int value = 0})
      RPN Message @@ -179,12 +170,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -198,16 +203,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -251,9 +256,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNMessage/RPNMessage.html b/doc/api/flutter_midi_command_messages/RPNMessage/RPNMessage.html index e93522e0..fb035206 100644 --- a/doc/api/flutter_midi_command_messages/RPNMessage/RPNMessage.html +++ b/doc/api/flutter_midi_command_messages/RPNMessage/RPNMessage.html @@ -4,8 +4,8 @@ - - RPNMessage constructor - RPNMessage - flutter_midi_command_messages library - Dart API + + RPNMessage.new constructor - RPNMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      RPNMessage
      +
      RPNMessage.new
      -
      - -
      +
      -
      RPNMessage constructor
      - RPNMessage(
      1. {int channel = 0,
      2. + RPNMessage({
        1. int channel = 0,
        2. int parameter = 0,
        3. -
        4. int value = 0}
        5. -
        ) +
      3. int value = 0,
      4. +
      })
      -

      RPN Message

      @@ -93,7 +84,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNMessage/channel.html b/doc/api/flutter_midi_command_messages/RPNMessage/channel.html index f65bc503..eb845c3e 100644 --- a/doc/api/flutter_midi_command_messages/RPNMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/RPNMessage/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNMessage/generateData.html b/doc/api/flutter_midi_command_messages/RPNMessage/generateData.html new file mode 100644 index 00000000..f283968a --- /dev/null +++ b/doc/api/flutter_midi_command_messages/RPNMessage/generateData.html @@ -0,0 +1,141 @@ + + + + + + + + generateData method - RPNMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final generated = Uint8List(12);
      +  // Data Entry MSB
      +  generated[0] = 0xB0 + channel;
      +  generated[1] = 0x65;
      +  generated[2] = parameter >> 7;
      +
      +  // Data Entry LSB
      +  generated[3] = 0xB0 + channel;
      +  generated[4] = 0x64;
      +  generated[5] = parameter & 0x7F;
      +
      +  // Data Value MSB
      +  generated[6] = 0xB0 + channel;
      +  generated[7] = 0x06;
      +  generated[8] = value >> 7;
      +
      +  // Data Value LSB
      +  generated[9] = 0xB0 + channel;
      +  generated[10] = 0x26;
      +  generated[11] = value & 0x7F;
      +
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/RPNMessage/parameter.html b/doc/api/flutter_midi_command_messages/RPNMessage/parameter.html index afe9a11e..0ed4f80f 100644 --- a/doc/api/flutter_midi_command_messages/RPNMessage/parameter.html +++ b/doc/api/flutter_midi_command_messages/RPNMessage/parameter.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      parameter property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNMessage/send.html b/doc/api/flutter_midi_command_messages/RPNMessage/send.html index 7e4de1ce..bcd196d9 100644 --- a/doc/api/flutter_midi_command_messages/RPNMessage/send.html +++ b/doc/api/flutter_midi_command_messages/RPNMessage/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
    54. @override
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,7 +77,7 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       data = Uint8List(12);
       // Data Entry MSB
       data[0] = 0xB0 + channel;
    @@ -106,13 +99,12 @@ 

    Implementation

    data[10] = 0x26; data[11] = value & 0x7F; - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }
    - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNMessage/value.html b/doc/api/flutter_midi_command_messages/RPNMessage/value.html index 5979351a..a318c1d6 100644 --- a/doc/api/flutter_midi_command_messages/RPNMessage/value.html +++ b/doc/api/flutter_midi_command_messages/RPNMessage/value.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    value property

    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNNullMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/RPNNullMessage-class-sidebar.html index eff6c95d..a6cf0c77 100644 --- a/doc/api/flutter_midi_command_messages/RPNNullMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/RPNNullMessage-class-sidebar.html @@ -1,25 +1,53 @@
      -
    1. Constructors
    2. -
    3. RPNNullMessage
    4. +
    5. Constructors
    6. +
    7. new
    8. Properties
    9. -
    10. channel
    11. -
    12. data
    13. -
    14. hashCode
    15. -
    16. runtimeType
    17. + +
    18. + channel +
    19. + +
    20. + data +
    21. + +
    22. + hashCode +
    23. + +
    24. + runtimeType +
    25. Methods
    26. -
    27. noSuchMethod
    28. -
    29. send
    30. -
    31. toString
    32. + +
    33. + generateData +
    34. + +
    35. + noSuchMethod +
    36. + +
    37. + send +
    38. + +
    39. + toString +
    40. Operators
    41. -
    42. operator ==
    43. + +
    44. + operator == +
    45. diff --git a/doc/api/flutter_midi_command_messages/RPNNullMessage-class.html b/doc/api/flutter_midi_command_messages/RPNNullMessage-class.html index febf53ab..bf7b7d4f 100644 --- a/doc/api/flutter_midi_command_messages/RPNNullMessage-class.html +++ b/doc/api/flutter_midi_command_messages/RPNNullMessage-class.html @@ -16,40 +16,32 @@ - - -
      -
      menu
      RPNNullMessage
      -
      - -
      +
      -
      RPNNullMessage class - + @@ -89,10 +81,9 @@

      RPNNullMessage class

      Constructors

      -
      -
      - RPNNullMessage({int channel = 0}) +
      + RPNNullMessage({int channel = 0})
      It is best practice, but not mandatory, to send a Null Message at the end of a RPN @@ -156,12 +147,26 @@

      Properties

      +

      Methods

      +
      + generateData() + Uint8List + + + +
      +
      + Generates MIDI bytes for this message without sending. +
      override
      + +
      +
      noSuchMethod(Invocation invocation) → dynamic @@ -175,16 +180,16 @@

      Methods

      -
      - send() +
      + send({String? deviceId, int? timestamp}) → void
      -
      +
      Send the message bytes to all connected devices -
      override
      +
      inherited
      @@ -228,9 +233,7 @@

      Operators

      -

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNNullMessage/RPNNullMessage.html b/doc/api/flutter_midi_command_messages/RPNNullMessage/RPNNullMessage.html index dc0a36bc..d01a36d0 100644 --- a/doc/api/flutter_midi_command_messages/RPNNullMessage/RPNNullMessage.html +++ b/doc/api/flutter_midi_command_messages/RPNNullMessage/RPNNullMessage.html @@ -4,8 +4,8 @@ - - RPNNullMessage constructor - RPNNullMessage - flutter_midi_command_messages library - Dart API + + RPNNullMessage.new constructor - RPNNullMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
      -
      menu -
      RPNNullMessage
      +
      RPNNullMessage.new
      -
      - -
      +
      -
      RPNNullMessage constructor
      - RPNNullMessage(
      1. {int channel = 0}
      2. -
      ) + RPNNullMessage({
      1. int channel = 0,
      2. +
      })
      -

      It is best practice, but not mandatory, to send a Null Message at the end of a RPN @@ -81,7 +72,6 @@

      Implementation

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNNullMessage/channel.html b/doc/api/flutter_midi_command_messages/RPNNullMessage/channel.html index 7236253f..5b8f0b7c 100644 --- a/doc/api/flutter_midi_command_messages/RPNNullMessage/channel.html +++ b/doc/api/flutter_midi_command_messages/RPNNullMessage/channel.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      channel property
      +
      int @@ -76,8 +69,8 @@

      Implementation

      + - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/RPNNullMessage/generateData.html b/doc/api/flutter_midi_command_messages/RPNNullMessage/generateData.html new file mode 100644 index 00000000..9f7193a8 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/RPNNullMessage/generateData.html @@ -0,0 +1,131 @@ + + + + + + + + generateData method - RPNNullMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      generateData
      + + +
      +
      +
      +
      +

      generateData method +

      + +
      + +
      +
        +
      1. @override
      2. +
      +
      +Uint8List +generateData() + +
      override
      + +
      + +
      +

      Generates MIDI bytes for this message without sending.

      +

      Subclasses override this to provide typed message encoding.

      +
      + + + +
      +

      Implementation

      +
      @override
      +Uint8List generateData() {
      +  final generated = Uint8List(6);
      +  // Data Entry MSB
      +  generated[0] = 0xB0 + channel;
      +  generated[1] = 0x65;
      +  generated[2] = 0x7F;
      +
      +  // Data Entry LSB
      +  generated[3] = 0xB0 + channel;
      +  generated[4] = 0x64;
      +  generated[5] = 0x7F;
      +
      +  return generated;
      +}
      +
      + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/RPNNullMessage/send.html b/doc/api/flutter_midi_command_messages/RPNNullMessage/send.html index ced4a13c..3b40f872 100644 --- a/doc/api/flutter_midi_command_messages/RPNNullMessage/send.html +++ b/doc/api/flutter_midi_command_messages/RPNNullMessage/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
      - +
      +
        +
      1. @override
      2. +
      +
      void -send() +send({
      1. String? deviceId,
      2. +
      3. int? timestamp,
      4. +
      })
      override
      @@ -78,7 +76,8 @@

      send method

      Implementation

      -
      void send() {
      +  
      @override
      +void send({String? deviceId, int? timestamp}) {
         data = Uint8List(6);
         // Data Entry MSB
         data[0] = 0xB0 + channel;
      @@ -90,13 +89,12 @@ 

      Implementation

      data[4] = 0x64; data[5] = 0x7F; - super.send(); + super.send(deviceId: deviceId, timestamp: timestamp); }

      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/SenseMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/SenseMessage-class-sidebar.html index bdf5a15d..7703c393 100644 --- a/doc/api/flutter_midi_command_messages/SenseMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/SenseMessage-class-sidebar.html @@ -1,24 +1,49 @@
        -
      1. Constructors
      2. -
      3. SenseMessage
      4. +
      5. Constructors
      6. +
      7. new
      8. Properties
      9. -
      10. data
      11. -
      12. hashCode
      13. -
      14. runtimeType
      15. + +
      16. + data +
      17. + +
      18. + hashCode +
      19. + +
      20. + runtimeType +
      21. Methods
      22. -
      23. noSuchMethod
      24. -
      25. send
      26. -
      27. toString
      28. + +
      29. + generateData +
      30. + +
      31. + noSuchMethod +
      32. + +
      33. + send +
      34. + +
      35. + toString +
      36. Operators
      37. -
      38. operator ==
      39. + +
      40. + operator == +
      41. diff --git a/doc/api/flutter_midi_command_messages/SenseMessage-class.html b/doc/api/flutter_midi_command_messages/SenseMessage-class.html index 53ec40e3..1caa1053 100644 --- a/doc/api/flutter_midi_command_messages/SenseMessage-class.html +++ b/doc/api/flutter_midi_command_messages/SenseMessage-class.html @@ -16,40 +16,32 @@ - - -
        -
        menu
        SenseMessage
        -
        - -
        +
        -
        SenseMessage class - + @@ -89,9 +81,8 @@

        SenseMessage class

        Constructors

        -
        -
        +
        SenseMessage()
        @@ -143,12 +134,26 @@

        Properties

        +

        Methods

        +
        + generateData() + Uint8List + + + +
        +
        + Sense Message +
        override
        + +
        +
        noSuchMethod(Invocation invocation) → dynamic @@ -162,16 +167,16 @@

        Methods

        -
        - send() +
        + send({String? deviceId, int? timestamp}) → void
        -
        - Sense Message -
        override
        +
        + Send the message bytes to all connected devices +
        inherited
        @@ -215,9 +220,7 @@

        Operators

        -

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/SenseMessage/SenseMessage.html b/doc/api/flutter_midi_command_messages/SenseMessage/SenseMessage.html index a71ac2bd..72fc84a2 100644 --- a/doc/api/flutter_midi_command_messages/SenseMessage/SenseMessage.html +++ b/doc/api/flutter_midi_command_messages/SenseMessage/SenseMessage.html @@ -4,8 +4,8 @@ - - SenseMessage constructor - SenseMessage - flutter_midi_command_messages library - Dart API + + SenseMessage.new constructor - SenseMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
        -
        menu -
        SenseMessage
        +
        SenseMessage.new
        -
        - -
        +
        -
        SenseMessage constructor SenseMessage() - @@ -72,7 +63,6 @@

        SenseMessage constructor

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/SenseMessage/generateData.html b/doc/api/flutter_midi_command_messages/SenseMessage/generateData.html new file mode 100644 index 00000000..fef29956 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/SenseMessage/generateData.html @@ -0,0 +1,121 @@ + + + + + + + + generateData method - SenseMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
        +
        + menu + +
        generateData
        + + +
        +
        +
        +
        +

        generateData method +

        + +
        + +
        +
          +
        1. @override
        2. +
        +
        +Uint8List +generateData() + +
        override
        + +
        + +
        +

        Sense Message

        +
        + + + +
        +

        Implementation

        +
        @override
        +Uint8List generateData() {
        +  final generated = Uint8List(1);
        +  generated[0] = 0xFE;
        +  return generated;
        +}
        +
        + + +
        + + +
        +
        + + flutter_midi_command + 1.0.0 + + +
        + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/SenseMessage/send.html b/doc/api/flutter_midi_command_messages/SenseMessage/send.html index 46da87ff..60d2c84e 100644 --- a/doc/api/flutter_midi_command_messages/SenseMessage/send.html +++ b/doc/api/flutter_midi_command_messages/SenseMessage/send.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        send method
      42. @override
      - void -send() +send({
      1. String? deviceId,
      2. +
      3. int? timestamp,
      4. +
      })
      override
      @@ -84,16 +77,15 @@

      send method

      Implementation

      @override
      -void send() {
      +void send({String? deviceId, int? timestamp}) {
         data = Uint8List(1);
         data[0] = 0xFE;
      -  super.send();
      +  super.send(deviceId: deviceId, timestamp: timestamp);
       }
      - - - -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/SysExMessage-class-sidebar.html b/doc/api/flutter_midi_command_messages/SysExMessage-class-sidebar.html index aadc3e7f..a623960a 100644 --- a/doc/api/flutter_midi_command_messages/SysExMessage-class-sidebar.html +++ b/doc/api/flutter_midi_command_messages/SysExMessage-class-sidebar.html @@ -1,26 +1,61 @@
        -
      1. Constructors
      2. -
      3. SysExMessage
      4. +
      5. Constructors
      6. +
      7. new
      8. Properties
      9. -
      10. data
      11. -
      12. hashCode
      13. -
      14. headerData
      15. -
      16. runtimeType
      17. -
      18. value
      19. + +
      20. + data +
      21. + +
      22. + hashCode +
      23. + +
      24. + headerData +
      25. + +
      26. + rawData +
      27. + +
      28. + runtimeType +
      29. + +
      30. + value +
      31. Methods
      32. -
      33. noSuchMethod
      34. -
      35. send
      36. -
      37. toString
      38. + +
      39. + generateData +
      40. + +
      41. + noSuchMethod +
      42. + +
      43. + send +
      44. + +
      45. + toString +
      46. Operators
      47. -
      48. operator ==
      49. + +
      50. + operator == +
      51. diff --git a/doc/api/flutter_midi_command_messages/SysExMessage-class.html b/doc/api/flutter_midi_command_messages/SysExMessage-class.html index 7cf78758..db8a7628 100644 --- a/doc/api/flutter_midi_command_messages/SysExMessage-class.html +++ b/doc/api/flutter_midi_command_messages/SysExMessage-class.html @@ -16,40 +16,32 @@ - - -
        -
        menu
        SysExMessage
        -
        - -
        +
        -
        SysExMessage class - + @@ -89,10 +81,9 @@

        SysExMessage class

        Constructors

        -
        -
        - SysExMessage({List<int> headerData = const [], int value = 0}) +
        + SysExMessage({List<int> headerData = const [], int value = 0, List<int>? rawData})
        System Exclusive Message @@ -134,6 +125,18 @@

        Properties

        List<int> + +
        + +
        getter/setter pair
        + +
        + +
        + rawData + List<int>? + +
        @@ -167,12 +170,26 @@

        Properties

        +

        Methods

        +
        + generateData() + Uint8List + + + +
        +
        + Generates MIDI bytes for this message without sending. +
        override
        + +
        +
        noSuchMethod(Invocation invocation) → dynamic @@ -186,16 +203,16 @@

        Methods

        -
        - send() +
        + send({String? deviceId, int? timestamp}) → void
        -
        +
        Send the message bytes to all connected devices -
        override
        +
        inherited
        @@ -239,9 +256,7 @@

        Operators

        -

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/SysExMessage/SysExMessage.html b/doc/api/flutter_midi_command_messages/SysExMessage/SysExMessage.html index c410bdf4..b1279ae4 100644 --- a/doc/api/flutter_midi_command_messages/SysExMessage/SysExMessage.html +++ b/doc/api/flutter_midi_command_messages/SysExMessage/SysExMessage.html @@ -4,8 +4,8 @@ - - SysExMessage constructor - SysExMessage - flutter_midi_command_messages library - Dart API + + SysExMessage.new constructor - SysExMessage - flutter_midi_command_messages library - Dart API @@ -16,41 +16,33 @@ - - -
        -
        menu -
        SysExMessage
        +
        SysExMessage.new
        -
        - -
        +
        -
        SysExMessage constructor
        - SysExMessage(
        1. {List<int> headerData = const [],
        2. -
        3. int value = 0}
        4. -
        ) + SysExMessage({
        1. List<int> headerData = const [],
        2. +
        3. int value = 0,
        4. +
        5. List<int>? rawData,
        6. +
        })
        -

        System Exclusive Message

        @@ -76,12 +68,11 @@

        SysExMessage constructor

        Implementation

        -
        SysExMessage({this.headerData = const [], this.value = 0});
        +
        SysExMessage({this.headerData = const [], this.value = 0, this.rawData});

        - - -
        -
        flutter_midi_command - 0.4.17 + 1.0.0 -
        - - - - diff --git a/doc/api/flutter_midi_command_messages/SysExMessage/generateData.html b/doc/api/flutter_midi_command_messages/SysExMessage/generateData.html new file mode 100644 index 00000000..0b01c725 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/SysExMessage/generateData.html @@ -0,0 +1,127 @@ + + + + + + + + generateData method - SysExMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
        +
        + menu + +
        generateData
        + + +
        +
        +
        +
        +

        generateData method +

        + +
        + +
        +
          +
        1. @override
        2. +
        +
        +Uint8List +generateData() + +
        override
        + +
        + +
        +

        Generates MIDI bytes for this message without sending.

        +

        Subclasses override this to provide typed message encoding.

        +
        + + + +
        +

        Implementation

        +
        @override
        +Uint8List generateData() {
        +  if (rawData != null) {
        +    return Uint8List.fromList(rawData!);
        +  }
        +  final generated = Uint8List.fromList(headerData);
        +  generated.insert(0, 0xF0); // Start byte
        +  generated.addAll(_bytesForValue(value));
        +  generated.add(0xF7); // End byte
        +  return generated;
        +}
        +
        + + +
        + + +
        +
        + + flutter_midi_command + 1.0.0 + + +
        + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/SysExMessage/headerData.html b/doc/api/flutter_midi_command_messages/SysExMessage/headerData.html index eb76ff7f..54b827ef 100644 --- a/doc/api/flutter_midi_command_messages/SysExMessage/headerData.html +++ b/doc/api/flutter_midi_command_messages/SysExMessage/headerData.html @@ -16,20 +16,16 @@ - - -
        -
        menu @@ -37,20 +33,16 @@ -
        - -
        +
        -
        headerData property

      +
      List<int> @@ -76,8 +69,8 @@

      Implementation

      + - - - -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/flutter_midi_command_messages/SysExMessage/rawData.html b/doc/api/flutter_midi_command_messages/SysExMessage/rawData.html new file mode 100644 index 00000000..b0c6b473 --- /dev/null +++ b/doc/api/flutter_midi_command_messages/SysExMessage/rawData.html @@ -0,0 +1,108 @@ + + + + + + + + rawData property - SysExMessage class - flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      rawData
      + + +
      +
      +
      +
      +

      rawData property +

      + + +
      + + List<int>? + rawData +
      getter/setter pair
      + +
      + + + +
      +

      Implementation

      +
      List<int>? rawData;
      +
      + + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/flutter_midi_command_messages/SysExMessage/send.html b/doc/api/flutter_midi_command_messages/SysExMessage/send.html index faa863c3..c49c7cbb 100644 --- a/doc/api/flutter_midi_command_messages/SysExMessage/send.html +++ b/doc/api/flutter_midi_command_messages/SysExMessage/send.html @@ -16,20 +16,16 @@ - - -
      -
      menu @@ -37,20 +33,16 @@ -
      - -
      +
      -
      send method
    46. @override
    - void -send() +send({
    1. String? deviceId,
    2. +
    3. int? timestamp,
    4. +
    })
    override
    @@ -84,18 +77,17 @@

    send method

    Implementation

    @override
    -void send() {
    +void send({String? deviceId, int? timestamp}) {
       data = Uint8List.fromList(headerData);
       data.insert(0, 0xF0); // Start byte
       data.addAll(_bytesForValue(value));
       data.add(0xF7); // End byte
    -  super.send();
    +  super.send(deviceId: deviceId, timestamp: timestamp);
     }
    - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/SysExMessage/value.html b/doc/api/flutter_midi_command_messages/SysExMessage/value.html index 539cc634..f6eaa009 100644 --- a/doc/api/flutter_midi_command_messages/SysExMessage/value.html +++ b/doc/api/flutter_midi_command_messages/SysExMessage/value.html @@ -16,20 +16,16 @@ - - -
    -
    menu @@ -37,20 +33,16 @@ -
    - -
    +
    -
    value property

    +
    int @@ -76,8 +69,8 @@

    Implementation

    + - - - -
    flutter_midi_command - 0.4.17 + 1.0.0 -
    - - - - diff --git a/doc/api/flutter_midi_command_messages/flutter_midi_command_messages-library-sidebar.html b/doc/api/flutter_midi_command_messages/flutter_midi_command_messages-library-sidebar.html index 5c71011b..e11f06dd 100644 --- a/doc/api/flutter_midi_command_messages/flutter_midi_command_messages-library-sidebar.html +++ b/doc/api/flutter_midi_command_messages/flutter_midi_command_messages-library-sidebar.html @@ -1,9 +1,10 @@
      -
    1. Classes
    2. +
    3. Classes
    4. ATMessage
    5. CCMessage
    6. ClockMessage
    7. MidiMessage
    8. +
    9. MidiMessageParser
    10. NoteOffMessage
    11. NoteOnMessage
    12. NRPN3Message
    13. @@ -19,7 +20,7 @@
    14. SenseMessage
    15. SysExMessage
    16. -
    17. Enums
    18. +
    19. Enums
    20. ClockType
    21. MessageType
    22. diff --git a/doc/api/flutter_midi_command_messages/flutter_midi_command_messages-library.html b/doc/api/flutter_midi_command_messages/flutter_midi_command_messages-library.html index 3a19ff68..cb21ae1f 100644 --- a/doc/api/flutter_midi_command_messages/flutter_midi_command_messages-library.html +++ b/doc/api/flutter_midi_command_messages/flutter_midi_command_messages-library.html @@ -1,304 +1,10 @@ - - - - - - flutter_midi_command_messages library - Dart API - - - - - - - - - - - - - - - - - -
      - -
      - menu - -
      flutter_midi_command_messages
      - -
      - -
      -
      -
      - -
      - -
      - - -

      - flutter_midi_command_messages - library - - -

      -
      - - - - -
      -

      Classes

      - -
      -
      - ATMessage - -
      -
      - -
      - -
      - CCMessage - -
      -
      - -
      - -
      - ClockMessage - -
      -
      - -
      - -
      - MidiMessage - -
      -
      - -
      - -
      - NoteOffMessage - -
      -
      - -
      - -
      - NoteOnMessage - -
      -
      - -
      - -
      - NRPN3Message - -
      -
      - -
      - -
      - NRPN4Message - -
      -
      - -
      - -
      - NRPNHexMessage - -
      -
      - -
      - -
      - NRPNNullMessage - -
      -
      - -
      - -
      - PCMessage - -
      -
      - -
      - -
      - PitchBendMessage - -
      -
      - -
      - -
      - PolyATMessage - -
      -
      - -
      - -
      - RPNHexMessage - -
      -
      - -
      - -
      - RPNMessage - -
      -
      - -
      - -
      - RPNNullMessage - -
      -
      - -
      - -
      - SenseMessage - -
      -
      - -
      - -
      - SysExMessage - -
      -
      - -
      - -
      -
      - -
      -

      Enums

      - -
      -
      - ClockType - -
      -
      - -
      - -
      - MessageType - -
      -
      - -
      - -
      -
      - - - - - - - - - -
      - - - - - -
      - -
      - - flutter_midi_command - 0.4.17 - - - -
      - - - - - - - - - - - - + + + + + +

      New URL

      + + \ No newline at end of file diff --git a/doc/api/flutter_midi_command_messages/index.html b/doc/api/flutter_midi_command_messages/index.html new file mode 100644 index 00000000..87a6bcfd --- /dev/null +++ b/doc/api/flutter_midi_command_messages/index.html @@ -0,0 +1,290 @@ + + + + + + + + flutter_midi_command_messages library - Dart API + + + + + + + + + + + + + + +
      +
      + menu + +
      flutter_midi_command_messages
      + + +
      +
      +
      + +
      + + +

      + flutter_midi_command_messages + library + + +

      +
      + + + + +
      +

      Classes

      +
      +
      + ATMessage + +
      +
      + +
      + +
      + CCMessage + +
      +
      + +
      + +
      + ClockMessage + +
      +
      + +
      + +
      + MidiMessage + +
      +
      + +
      + +
      + MidiMessageParser + +
      +
      + Stateful parser that converts raw MIDI bytes into typed MidiMessages. +
      + +
      + NoteOffMessage + +
      +
      + +
      + +
      + NoteOnMessage + +
      +
      + +
      + +
      + NRPN3Message + +
      +
      + +
      + +
      + NRPN4Message + +
      +
      + +
      + +
      + NRPNHexMessage + +
      +
      + +
      + +
      + NRPNNullMessage + +
      +
      + +
      + +
      + PCMessage + +
      +
      + +
      + +
      + PitchBendMessage + +
      +
      + +
      + +
      + PolyATMessage + +
      +
      + +
      + +
      + RPNHexMessage + +
      +
      + +
      + +
      + RPNMessage + +
      +
      + +
      + +
      + RPNNullMessage + +
      +
      + +
      + +
      + SenseMessage + +
      +
      + +
      + +
      + SysExMessage + +
      +
      + +
      + +
      +
      + +
      +

      Enums

      +
      +
      + ClockType + +
      +
      + +
      + +
      + MessageType + +
      +
      + +
      + +
      +
      + + + + + + + + +
      + + +
      +
      + + flutter_midi_command + 1.0.0 + + +
      + + + + + + + + diff --git a/doc/api/index.html b/doc/api/index.html index db66ab1c..51065026 100644 --- a/doc/api/index.html +++ b/doc/api/index.html @@ -16,15 +16,11 @@ - - -
      -
      menu
      -
      -

      flutter_midi_command

      +

      Flutter MIDI Command

      +

      CI +pub package +pub points +pub likes +License

      A Flutter plugin for sending and receiving MIDI messages between Flutter and physical and virtual MIDI devices.

      -

      Wraps CoreMIDI/android.media.midi/ALSA in a thin dart/flutter layer. +

      Wraps CoreMIDI/android.media.midi/ALSA/win32 in a thin Dart/Flutter layer. +Includes a built-in typed MIDI parser/generator (MidiMessageParser and MidiMessage.parse); see Message parser. Supports

      -
        -
      • USB and BLE MIDI connections on Android
      • -
      • USB, network(session), virtual MIDI devices and BLE MIDI connections on iOS and macOS.
      • -
      • ALSA Midi on Linux
      • -
      • Create own virtual MIDI devices on iOS
      • -
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TransportsiOSmacOSAndroidLinuxWindowsWeb
      USB✓*
      BLE✗**
      Virtual
      Network Session
      +

      * via browser Web MIDI API support. +** BLE MIDI on Web is not handled by flutter_midi_command_ble; Web MIDI exposure depends on browser/OS.

      To install

      • Make sure your project is created with Kotlin and Swift support.
      • -
      • Add flutter_midi_command: ^0.4.17 to your pubspec.yaml file.
      • -
      • In ios/Podfile uncomment and change the platform to 11.0 platform :ios, '11.0'
      • -
      • On iOS, After building, Add a NSBluetoothAlwaysUsageDescription and NSLocalNetworkUsageDescription to info.plist in the generated Xcode project.
      • +
      • Add flutter_midi_command to your pubspec.yaml.
      • +
      • Add flutter_midi_command_ble only if you want BLE MIDI support.
      • +
      • Minimum platform versions in this repo: +
          +
        • iOS: plugin package minimum is 11.0 (packages/flutter_midi_command_darwin/ios/flutter_midi_command_darwin.podspec), while the example app currently targets 13.0 (example/ios/Podfile).
        • +
        • macOS: plugin package minimum is 10.13 (packages/flutter_midi_command_darwin/macos/flutter_midi_command_darwin.podspec), while the example app currently targets 10.15 (example/macos/Podfile).
        • +
        • Android: plugin package minimum is minSdkVersion(21) (packages/flutter_midi_command_android/android/build.gradle.kts), while the example app currently uses minSdkVersion(24) (example/android/app/build.gradle.kts).
        • +
        +
      • +
      • If BLE is enabled on iOS, add NSBluetoothAlwaysUsageDescription (and related Bluetooth/location keys as required by your BLE flow) to Info.plist.
      • +
      • If using network MIDI on iOS, add NSLocalNetworkUsageDescription.
      • On Linux, make sure ALSA is installed.
      • +
      • On Web, use HTTPS and a browser with Web MIDI enabled (for example Chrome/Edge).

      Getting Started

      -

      This plugin is build using Swift and Kotlin on the native side, so make sure your project supports this.

      -

      Import flutter_midi_command

      -

      import 'package:flutter_midi_command/flutter_midi_command.dart';

      +

      The snippet below shows a practical integration pattern with optional BLE, device discovery, connection, and send/receive flow.

      +
      import 'dart:async';
      +
      +import 'package:flutter_midi_command/flutter_midi_command.dart';
      +import 'package:flutter_midi_command/flutter_midi_command_messages.dart';
      +// Optional: remove this import and BLE setup if your app is native-only.
      +import 'package:flutter_midi_command_ble/flutter_midi_command_ble.dart';
      +
      +class MidiSessionController {
      +  MidiSessionController({required this.enableBle});
      +
      +  final bool enableBle;
      +  final MidiCommand midi = MidiCommand();
      +  StreamSubscription<MidiDataReceivedEvent>? _rxSub;
      +  StreamSubscription<String>? _setupSub;
      +  MidiDevice? selectedDevice;
      +
      +  Future<void> initialize() async {
      +    if (enableBle) {
      +      midi.configureBleTransport(UniversalBleMidiTransport());
      +      await midi.startBluetooth();
      +      await midi.waitUntilBluetoothIsInitialized();
      +      await midi.startScanningForBluetoothDevices();
      +    } else {
      +      midi.configureBleTransport(null);
      +      midi.configureTransportPolicy(
      +        const MidiTransportPolicy(
      +          excludedTransports: {MidiTransport.ble},
      +        ),
      +      );
      +    }
      +
      +    _setupSub = midi.onMidiSetupChanged?.listen((_) async {
      +      final devices = await midi.devices ?? const <MidiDevice>[];
      +      if (devices.isNotEmpty && selectedDevice == null) {
      +        selectedDevice = devices.first;
      +      }
      +    });
      +
      +    _rxSub = midi.onMidiDataReceived?.listen((event) {
      +      _handleIncomingMessage(
      +        event.device,
      +        event.transport,
      +        event.timestamp,
      +        event.message,
      +      );
      +    });
      +  }
      +
      +  Future<void> connectFirstMatching(String query) async {
      +    final devices = await midi.devices ?? const <MidiDevice>[];
      +    final q = query.toLowerCase();
      +    final device = devices.firstWhere(
      +      (d) => d.name.toLowerCase().contains(q),
      +      orElse: () => throw StateError('No MIDI device found for "$query".'),
      +    );
      +    await midi.connectToDevice(device);
      +    selectedDevice = device;
      +  }
      +
      +  void sendMiddleC() {
      +    final targetId = selectedDevice?.id;
      +    midi.sendData(
      +      NoteOnMessage(channel: 0, note: 60, velocity: 100).generateData(),
      +      deviceId: targetId,
      +    );
      +    Future<void>.delayed(const Duration(milliseconds: 200), () {
      +      midi.sendData(
      +        NoteOffMessage(channel: 0, note: 60, velocity: 0).generateData(),
      +        deviceId: targetId,
      +      );
      +    });
      +  }
      +
      +  void _handleIncomingMessage(
      +    MidiDevice source,
      +    MidiTransport transport,
      +    int timestamp,
      +    MidiMessage message,
      +  ) {
      +    if (message is NoteOnMessage) {
      +      // Example: route to synth engine / UI.
      +      return;
      +    }
      +    if (message is CCMessage) {
      +      // Example: map controllers to parameters.
      +      return;
      +    }
      +    if (message is SysExMessage) {
      +      // Example: parse manufacturer-specific payload.
      +      return;
      +    }
      +    // Handle other typed messages as needed (PitchBendMessage, NRPN4Message, etc).
      +  }
      +
      +  Future<void> dispose() async {
      +    await _rxSub?.cancel();
      +    await _setupSub?.cancel();
      +    if (enableBle) {
      +      midi.stopScanningForBluetoothDevices();
      +    }
      +    midi.dispose();
      +  }
      +}
      +
      +

      connectToDevice completes when the connection is established, throws StateError on connection failure, and times out after 10 seconds by default.

      +

      See example/ for a complete app with UI and transport toggles.

      +

      Message parser

      +

      onMidiDataReceived already emits typed MIDI messages. +Use MidiMessageParser (or MidiMessage.parse) when you need to parse raw bytes from onMidiPacketReceived or from custom byte streams. +Keep one parser instance per input stream/device to preserve running-status and partial-message state correctly.

        -
      • Get a list of available MIDI devices by calling MidiCommand().devices which returns a list of MidiDevice
      • -
      • Start bluetooth subsystem by calling MidiCommand().startBluetoothCentral()
      • -
      • Observe the bluetooth system state by calling MidiCommand().onBluetoothStateChanged()
      • -
      • Get the current bluetooth system state by calling MidiCommand().bluetoothState()
      • -
      • Start scanning for BLE MIDI devices by calling MidiCommand().startScanningForBluetoothDevices()
      • -
      • Connect to a specific MidiDevice by calling MidiCommand.connectToDevice(selectedDevice)
      • -
      • Stop scanning for BLE MIDI devices by calling MidiCommand().stopScanningForBluetoothDevices()
      • -
      • Disconnect from the current device by calling MidiCommand.disconnectDevice()
      • -
      • Listen for updates in the MIDI setup by subscribing to MidiCommand().onMidiSetupChanged
      • -
      • Listen for incoming MIDI messages on from the current device by subscribing to MidiCommand().onMidiDataReceived, after which the listener will recieve inbound MIDI messages as an UInt8List of variable length.
      • -
      • Send a MIDI message by calling MidiCommand.sendData(data), where data is an UInt8List of bytes following the MIDI spec.
      • -
      • Or use the various MidiCommand subtypes to send PC, CC, NoteOn and NoteOff messages.
      • -
      • Use MidiCommand().addVirtualDevice(name: "Your Device Name") to create a virtual MIDI destination and a virtual MIDI source. These virtual MIDI devices show up in other apps and can be used by other apps to send and receive MIDI to or from your app. The name parameter is ignored on Android and the Virtual Device is always called FlutterMIDICommand. To make this feature work on iOS, enable background audio for your app, i.e., add key UIBackgroundModes with value audio to your app's info.plist file.
      • +
      • Supports running status.
      • +
      • Handles realtime bytes interleaved with channel and SysEx data.
      • +
      • Reassembles split packets across callback boundaries.
      • +
      • Recovers from malformed/incomplete byte sequences and resumes on the next valid status byte.
      -

      See example folder for how to use.

      +
      import 'dart:typed_data';
      +
      +import 'package:flutter_midi_command/flutter_midi_command.dart';
      +import 'package:flutter_midi_command/flutter_midi_command_messages.dart';
      +
      +final MidiMessageParser parser = MidiMessageParser();
      +
      +void onPacket(MidiPacket packet) {
      +  final messages = parser.parse(packet.data, flushPendingNrpn: false);
      +  for (final message in messages) {
      +    if (message is NoteOnMessage) {
      +      print('NoteOn ch=${message.channel} note=${message.note} vel=${message.velocity}');
      +    } else if (message is PitchBendMessage) {
      +      print('Pitch bend ch=${message.channel} value=${message.bend}');
      +    } else if (message is NRPN4Message) {
      +      print('NRPN param=${message.parameter} value=${message.value}');
      +    } else if (message is SysExMessage) {
      +      print('SysEx bytes=${message.data.length}');
      +    }
      +  }
      +}
      +
      +void onStreamClosed() {
      +  // Flush pending partial NRPN/RPN state, if any.
      +  final flushed = parser.parse(Uint8List(0), flushPendingNrpn: true);
      +  for (final message in flushed) {
      +    // Handle final pending message.
      +  }
      +  parser.reset();
      +}
      +
      +

      For simple one-shot payloads you can also call:

      +
      final messages = MidiMessage.parse(packet.data);
      +
      +

      Dependency examples

      +

      With native transports only:

      +
      dependencies:
      +  flutter_midi_command: ^1.0.0
      +
      +

      With BLE support enabled:

      +
      dependencies:
      +  flutter_midi_command: ^1.0.0
      +  flutter_midi_command_ble: ^1.0.0
      +
      +

      Migration Guide (from older plugin versions)

      +

      1) BLE moved to an optional package

      +

      If you previously relied on built-in BLE behavior, add and attach the BLE transport explicitly:

      +
      dependencies:
      +  flutter_midi_command: ^1.0.0
      +  flutter_midi_command_ble: ^1.0.0
      +
      +
      final midi = MidiCommand();
      +midi.configureBleTransport(UniversalBleMidiTransport());
      +
      +

      If you want to remove BLE entirely, omit flutter_midi_command_ble and/or call:

      +
      midi.configureBleTransport(null);
      +
      +

      For local workspace development (like this monorepo), path: dependencies are still valid and used by the example app.

      +

      2) Bluetooth API rename

      +
        +
      • Old: startBluetoothCentral()
      • +
      • New: startBluetooth()
      • +
      +

      onBluetoothStateChanged and bluetoothState are still available.

      +

      3) MidiDevice.type changed from String to enum

      +

      Use MidiDeviceType instead of string comparisons:

      +
      if (device.type == MidiDeviceType.ble) {
      +  // ...
      +}
      +
      +

      If you still need old wire values for logging or compatibility, use device.type.wireValue.

      +

      4) Connection semantics are stricter

      +

      await midi.connectToDevice(device) now resolves only when connected (or throws on failure/timeout), so completion means a real connected state.

      +

      MidiDevice also exposes onConnectionStateChanged for reactive flows.

      +

      5) Transport policies are first-class

      +

      Use MidiTransportPolicy to enable/disable transports at runtime. Transport-specific calls throw StateError when that transport is disabled.

      +

      6) Host-paired Bluetooth MIDI devices may be native-routed

      +

      A host-native device can report MidiDeviceType.ble while still communicating through host MIDI APIs (for example paired CoreMIDI/Android host devices). Do not assume type == ble always means Dart BLE transport is used internally.

      For help getting started with Flutter, view our online documentation.

      For help on editing plugin code, view the documentation.

      +

      Workspace and architecture

      +

      This repository is now managed as a melos monorepo.

      +

      Packages

      +
        +
      • flutter_midi_command (this package): public API and transport policies
      • +
      • packages/flutter_midi_command_platform_interface: shared platform contracts
      • +
      • packages/flutter_midi_command_linux: Linux host MIDI wrapper
      • +
      • packages/flutter_midi_command_windows: Windows host MIDI wrapper
      • +
      • packages/flutter_midi_command_ble: shared BLE MIDI transport using universal_ble
      • +
      • packages/flutter_midi_command_web: browser Web MIDI transport +See packages/flutter_midi_command_web/README.md for web-specific runtime/permission details.
      • +
      +

      Transport policies

      +

      You can include/exclude transports at runtime:

      +
      final midi = MidiCommand();
      +midi.configureTransportPolicy(
      +  const MidiTransportPolicy(
      +    excludedTransports: {MidiTransport.ble},
      +  ),
      +);
      +
      +

      When a transport is disabled, transport-specific calls throw a StateError.

      +

      Device types

      +

      MidiDevice.type is now strongly typed as MidiDeviceType (for example MidiDeviceType.serial, MidiDeviceType.ble, MidiDeviceType.virtual).

      +

      Device connection state

      +

      Each MidiDevice now exposes connection state updates:

      +
      final sub = selectedDevice.onConnectionStateChanged.listen((state) {
      +  // state is MidiConnectionState.disconnected/connecting/connected/disconnecting
      +});
      +
      +

      Compile-time BLE include/exclude

      +

      Direct BLE scan/connect is optional at dependency level:

      +
        +
      • If you only depend on flutter_midi_command, no shared Dart BLE scanner/transport is attached.
      • +
      • To include shared Dart BLE discovery/connection, add flutter_midi_command_ble and attach it to MidiCommand:
      • +
      +
      import 'package:flutter_midi_command/flutter_midi_command.dart';
      +import 'package:flutter_midi_command_ble/flutter_midi_command_ble.dart';
      +
      +final midi = MidiCommand();
      +midi.configureBleTransport(UniversalBleMidiTransport());
      +
      +

      To disable BLE completely:

      +
      midi.configureBleTransport(null);
      +
      +

      Note: paired Bluetooth MIDI devices exposed by host native MIDI APIs can still appear in MidiCommand().devices with MidiDeviceType.ble and connect through the native backend.

      +

      The normal BLE API remains unchanged:

      +
      await midi.startBluetooth();
      +await midi.startScanningForBluetoothDevices();
      +final state = midi.bluetoothState;
      +final stateStream = midi.onBluetoothStateChanged;
      +
      +

      Architecture note

      +

      MidiCommandPlatform now only describes native host MIDI operations. +Shared BLE discovery/connection lives in MidiBleTransport, implemented in Dart (flutter_midi_command_ble). +Host-native backends may also report paired Bluetooth devices as MidiDeviceType.ble. +Web MIDI is implemented by flutter_midi_command_web using browser Web MIDI APIs.

      +

      Native API contracts with Pigeon

      +

      Pigeon definitions are tracked in pigeons/midi_api.dart and should be used as the source-of-truth for generated host/flutter messaging code.

      @@ -99,14 +388,14 @@

      Getting Started

      Libraries

      - flutter_midi_command + flutter_midi_command
      - flutter_midi_command_messages + flutter_midi_command_messages
      @@ -114,9 +403,7 @@

      Libraries

      -
      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/index.json b/doc/api/index.json index 3253f2a9..e23ddf5f 100644 --- a/doc/api/index.json +++ b/doc/api/index.json @@ -1 +1 @@ -[{"name":"flutter_midi_command","qualifiedName":"flutter_midi_command","href":"flutter_midi_command/flutter_midi_command-library.html","kind":9,"overriddenDepth":0,"packageRank":0,"desc":""},{"name":"BluetoothState","qualifiedName":"flutter_midi_command.BluetoothState","href":"flutter_midi_command/BluetoothState.html","kind":5,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/flutter_midi_command-library.html"}},{"name":"BluetoothState","qualifiedName":"flutter_midi_command.BluetoothState.BluetoothState","href":"flutter_midi_command/BluetoothState/BluetoothState.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"BluetoothState","kind":5,"href":"flutter_midi_command/BluetoothState.html"}},{"name":"values","qualifiedName":"flutter_midi_command.BluetoothState.values","href":"flutter_midi_command/BluetoothState/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"BluetoothState","kind":5,"href":"flutter_midi_command/BluetoothState.html"}},{"name":"MidiCommand","qualifiedName":"flutter_midi_command.MidiCommand","href":"flutter_midi_command/MidiCommand-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/flutter_midi_command-library.html"}},{"name":"MidiCommand","qualifiedName":"flutter_midi_command.MidiCommand.MidiCommand","href":"flutter_midi_command/MidiCommand/MidiCommand.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"addVirtualDevice","qualifiedName":"flutter_midi_command.MidiCommand.addVirtualDevice","href":"flutter_midi_command/MidiCommand/addVirtualDevice.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Creates a virtual MIDI source","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"bluetoothState","qualifiedName":"flutter_midi_command.MidiCommand.bluetoothState","href":"flutter_midi_command/MidiCommand/bluetoothState.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Returns the state of the bluetooth central","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"connectToDevice","qualifiedName":"flutter_midi_command.MidiCommand.connectToDevice","href":"flutter_midi_command/MidiCommand/connectToDevice.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Connects to the device","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"devices","qualifiedName":"flutter_midi_command.MidiCommand.devices","href":"flutter_midi_command/MidiCommand/devices.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Gets a list of available MIDI devices and returns it","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"disconnectDevice","qualifiedName":"flutter_midi_command.MidiCommand.disconnectDevice","href":"flutter_midi_command/MidiCommand/disconnectDevice.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Disconnects from the device","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"dispose","qualifiedName":"flutter_midi_command.MidiCommand.dispose","href":"flutter_midi_command/MidiCommand/dispose.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"isNetworkSessionEnabled","qualifiedName":"flutter_midi_command.MidiCommand.isNetworkSessionEnabled","href":"flutter_midi_command/MidiCommand/isNetworkSessionEnabled.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Returns the current state of the network session","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onBluetoothStateChanged","qualifiedName":"flutter_midi_command.MidiCommand.onBluetoothStateChanged","href":"flutter_midi_command/MidiCommand/onBluetoothStateChanged.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever the bluetooth state changes","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onMidiDataReceived","qualifiedName":"flutter_midi_command.MidiCommand.onMidiDataReceived","href":"flutter_midi_command/MidiCommand/onMidiDataReceived.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever a midi package is received","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onMidiDataSent","qualifiedName":"flutter_midi_command.MidiCommand.onMidiDataSent","href":"flutter_midi_command/MidiCommand/onMidiDataSent.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever a midi package is sent","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onMidiSetupChanged","qualifiedName":"flutter_midi_command.MidiCommand.onMidiSetupChanged","href":"flutter_midi_command/MidiCommand/onMidiSetupChanged.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever a change in the MIDI setup occurs","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"removeVirtualDevice","qualifiedName":"flutter_midi_command.MidiCommand.removeVirtualDevice","href":"flutter_midi_command/MidiCommand/removeVirtualDevice.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Removes a previously created virtual MIDI source.\nCurrently only supported on iOS.","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"sendData","qualifiedName":"flutter_midi_command.MidiCommand.sendData","href":"flutter_midi_command/MidiCommand/sendData.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sends data to the currently connected device","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"setNetworkSessionEnabled","qualifiedName":"flutter_midi_command.MidiCommand.setNetworkSessionEnabled","href":"flutter_midi_command/MidiCommand/setNetworkSessionEnabled.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sets the enabled state of the network session","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"startBluetoothCentral","qualifiedName":"flutter_midi_command.MidiCommand.startBluetoothCentral","href":"flutter_midi_command/MidiCommand/startBluetoothCentral.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Starts the bluetooth central","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"startScanningForBluetoothDevices","qualifiedName":"flutter_midi_command.MidiCommand.startScanningForBluetoothDevices","href":"flutter_midi_command/MidiCommand/startScanningForBluetoothDevices.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Starts scanning for BLE MIDI devices","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"stopScanningForBluetoothDevices","qualifiedName":"flutter_midi_command.MidiCommand.stopScanningForBluetoothDevices","href":"flutter_midi_command/MidiCommand/stopScanningForBluetoothDevices.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Stop scanning for BLE MIDI devices","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"teardown","qualifiedName":"flutter_midi_command.MidiCommand.teardown","href":"flutter_midi_command/MidiCommand/teardown.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Disconnects from all devices","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"waitUntilBluetoothIsInitialized","qualifiedName":"flutter_midi_command.MidiCommand.waitUntilBluetoothIsInitialized","href":"flutter_midi_command/MidiCommand/waitUntilBluetoothIsInitialized.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Wait for the blueetooth state to be initialized","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"flutter_midi_command_messages","qualifiedName":"flutter_midi_command_messages","href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html","kind":9,"overriddenDepth":0,"packageRank":0,"desc":""},{"name":"ATMessage","qualifiedName":"flutter_midi_command_messages.ATMessage","href":"flutter_midi_command_messages/ATMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"ATMessage","qualifiedName":"flutter_midi_command_messages.ATMessage.ATMessage","href":"flutter_midi_command_messages/ATMessage/ATMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Create an Aftertouch Message for a single channel","enclosedBy":{"name":"ATMessage","kind":3,"href":"flutter_midi_command_messages/ATMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.ATMessage.channel","href":"flutter_midi_command_messages/ATMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ATMessage","kind":3,"href":"flutter_midi_command_messages/ATMessage-class.html"}},{"name":"pressure","qualifiedName":"flutter_midi_command_messages.ATMessage.pressure","href":"flutter_midi_command_messages/ATMessage/pressure.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ATMessage","kind":3,"href":"flutter_midi_command_messages/ATMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.ATMessage.send","href":"flutter_midi_command_messages/ATMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"ATMessage","kind":3,"href":"flutter_midi_command_messages/ATMessage-class.html"}},{"name":"CCMessage","qualifiedName":"flutter_midi_command_messages.CCMessage","href":"flutter_midi_command_messages/CCMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"CCMessage","qualifiedName":"flutter_midi_command_messages.CCMessage.CCMessage","href":"flutter_midi_command_messages/CCMessage/CCMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Continuous Control Message","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.CCMessage.channel","href":"flutter_midi_command_messages/CCMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"controller","qualifiedName":"flutter_midi_command_messages.CCMessage.controller","href":"flutter_midi_command_messages/CCMessage/controller.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.CCMessage.send","href":"flutter_midi_command_messages/CCMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.CCMessage.value","href":"flutter_midi_command_messages/CCMessage/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"ClockMessage","qualifiedName":"flutter_midi_command_messages.ClockMessage","href":"flutter_midi_command_messages/ClockMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"ClockMessage","qualifiedName":"flutter_midi_command_messages.ClockMessage.ClockMessage","href":"flutter_midi_command_messages/ClockMessage/ClockMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Clock Message","enclosedBy":{"name":"ClockMessage","kind":3,"href":"flutter_midi_command_messages/ClockMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.ClockMessage.send","href":"flutter_midi_command_messages/ClockMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"ClockMessage","kind":3,"href":"flutter_midi_command_messages/ClockMessage-class.html"}},{"name":"type","qualifiedName":"flutter_midi_command_messages.ClockMessage.type","href":"flutter_midi_command_messages/ClockMessage/type.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ClockMessage","kind":3,"href":"flutter_midi_command_messages/ClockMessage-class.html"}},{"name":"ClockType","qualifiedName":"flutter_midi_command_messages.ClockType","href":"flutter_midi_command_messages/ClockType.html","kind":5,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"ClockType","qualifiedName":"flutter_midi_command_messages.ClockType.ClockType","href":"flutter_midi_command_messages/ClockType/ClockType.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ClockType","kind":5,"href":"flutter_midi_command_messages/ClockType.html"}},{"name":"values","qualifiedName":"flutter_midi_command_messages.ClockType.values","href":"flutter_midi_command_messages/ClockType/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"ClockType","kind":5,"href":"flutter_midi_command_messages/ClockType.html"}},{"name":"MessageType","qualifiedName":"flutter_midi_command_messages.MessageType","href":"flutter_midi_command_messages/MessageType.html","kind":5,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"MessageType","qualifiedName":"flutter_midi_command_messages.MessageType.MessageType","href":"flutter_midi_command_messages/MessageType/MessageType.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MessageType","kind":5,"href":"flutter_midi_command_messages/MessageType.html"}},{"name":"values","qualifiedName":"flutter_midi_command_messages.MessageType.values","href":"flutter_midi_command_messages/MessageType/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"MessageType","kind":5,"href":"flutter_midi_command_messages/MessageType.html"}},{"name":"MidiMessage","qualifiedName":"flutter_midi_command_messages.MidiMessage","href":"flutter_midi_command_messages/MidiMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"MidiMessage","qualifiedName":"flutter_midi_command_messages.MidiMessage.MidiMessage","href":"flutter_midi_command_messages/MidiMessage/MidiMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Base class for MIDI message types","enclosedBy":{"name":"MidiMessage","kind":3,"href":"flutter_midi_command_messages/MidiMessage-class.html"}},{"name":"data","qualifiedName":"flutter_midi_command_messages.MidiMessage.data","href":"flutter_midi_command_messages/MidiMessage/data.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Byte data of the message","enclosedBy":{"name":"MidiMessage","kind":3,"href":"flutter_midi_command_messages/MidiMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.MidiMessage.send","href":"flutter_midi_command_messages/MidiMessage/send.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"MidiMessage","kind":3,"href":"flutter_midi_command_messages/MidiMessage-class.html"}},{"name":"NRPN3Message","qualifiedName":"flutter_midi_command_messages.NRPN3Message","href":"flutter_midi_command_messages/NRPN3Message-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"NRPN3Message","qualifiedName":"flutter_midi_command_messages.NRPN3Message.NRPN3Message","href":"flutter_midi_command_messages/NRPN3Message/NRPN3Message.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"NRPN Message with single value byte","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NRPN3Message.channel","href":"flutter_midi_command_messages/NRPN3Message/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"parameter","qualifiedName":"flutter_midi_command_messages.NRPN3Message.parameter","href":"flutter_midi_command_messages/NRPN3Message/parameter.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.NRPN3Message.send","href":"flutter_midi_command_messages/NRPN3Message/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.NRPN3Message.value","href":"flutter_midi_command_messages/NRPN3Message/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"NRPN4Message","qualifiedName":"flutter_midi_command_messages.NRPN4Message","href":"flutter_midi_command_messages/NRPN4Message-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"NRPN4Message","qualifiedName":"flutter_midi_command_messages.NRPN4Message.NRPN4Message","href":"flutter_midi_command_messages/NRPN4Message/NRPN4Message.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"NRPN Message with Value MSB and LSB bytes","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NRPN4Message.channel","href":"flutter_midi_command_messages/NRPN4Message/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"parameter","qualifiedName":"flutter_midi_command_messages.NRPN4Message.parameter","href":"flutter_midi_command_messages/NRPN4Message/parameter.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.NRPN4Message.send","href":"flutter_midi_command_messages/NRPN4Message/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.NRPN4Message.value","href":"flutter_midi_command_messages/NRPN4Message/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"NRPNHexMessage","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage","href":"flutter_midi_command_messages/NRPNHexMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"NRPNHexMessage","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.NRPNHexMessage","href":"flutter_midi_command_messages/NRPNHexMessage/NRPNHexMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"NRPN Message with data separated in MSB, LSB","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.channel","href":"flutter_midi_command_messages/NRPNHexMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"parameterLSB","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.parameterLSB","href":"flutter_midi_command_messages/NRPNHexMessage/parameterLSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"parameterMSB","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.parameterMSB","href":"flutter_midi_command_messages/NRPNHexMessage/parameterMSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.send","href":"flutter_midi_command_messages/NRPNHexMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"valueLSB","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.valueLSB","href":"flutter_midi_command_messages/NRPNHexMessage/valueLSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"valueMSB","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.valueMSB","href":"flutter_midi_command_messages/NRPNHexMessage/valueMSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"NRPNNullMessage","qualifiedName":"flutter_midi_command_messages.NRPNNullMessage","href":"flutter_midi_command_messages/NRPNNullMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"NRPNNullMessage","qualifiedName":"flutter_midi_command_messages.NRPNNullMessage.NRPNNullMessage","href":"flutter_midi_command_messages/NRPNNullMessage/NRPNNullMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"It is best practice, but not mandatory, to send a Null Message at the end of a NRPN\nStream to prevent accidental value changes on CC6 after a message has concluded.","enclosedBy":{"name":"NRPNNullMessage","kind":3,"href":"flutter_midi_command_messages/NRPNNullMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NRPNNullMessage.channel","href":"flutter_midi_command_messages/NRPNNullMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNNullMessage","kind":3,"href":"flutter_midi_command_messages/NRPNNullMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.NRPNNullMessage.send","href":"flutter_midi_command_messages/NRPNNullMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"NRPNNullMessage","kind":3,"href":"flutter_midi_command_messages/NRPNNullMessage-class.html"}},{"name":"NoteOffMessage","qualifiedName":"flutter_midi_command_messages.NoteOffMessage","href":"flutter_midi_command_messages/NoteOffMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"NoteOffMessage","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.NoteOffMessage","href":"flutter_midi_command_messages/NoteOffMessage/NoteOffMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Note Off Message","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.channel","href":"flutter_midi_command_messages/NoteOffMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"note","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.note","href":"flutter_midi_command_messages/NoteOffMessage/note.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.send","href":"flutter_midi_command_messages/NoteOffMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"velocity","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.velocity","href":"flutter_midi_command_messages/NoteOffMessage/velocity.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"NoteOnMessage","qualifiedName":"flutter_midi_command_messages.NoteOnMessage","href":"flutter_midi_command_messages/NoteOnMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"NoteOnMessage","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.NoteOnMessage","href":"flutter_midi_command_messages/NoteOnMessage/NoteOnMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Note On Message","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.channel","href":"flutter_midi_command_messages/NoteOnMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"note","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.note","href":"flutter_midi_command_messages/NoteOnMessage/note.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.send","href":"flutter_midi_command_messages/NoteOnMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"velocity","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.velocity","href":"flutter_midi_command_messages/NoteOnMessage/velocity.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"PCMessage","qualifiedName":"flutter_midi_command_messages.PCMessage","href":"flutter_midi_command_messages/PCMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"PCMessage","qualifiedName":"flutter_midi_command_messages.PCMessage.PCMessage","href":"flutter_midi_command_messages/PCMessage/PCMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Program Change Message","enclosedBy":{"name":"PCMessage","kind":3,"href":"flutter_midi_command_messages/PCMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.PCMessage.channel","href":"flutter_midi_command_messages/PCMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PCMessage","kind":3,"href":"flutter_midi_command_messages/PCMessage-class.html"}},{"name":"program","qualifiedName":"flutter_midi_command_messages.PCMessage.program","href":"flutter_midi_command_messages/PCMessage/program.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PCMessage","kind":3,"href":"flutter_midi_command_messages/PCMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.PCMessage.send","href":"flutter_midi_command_messages/PCMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"PCMessage","kind":3,"href":"flutter_midi_command_messages/PCMessage-class.html"}},{"name":"PitchBendMessage","qualifiedName":"flutter_midi_command_messages.PitchBendMessage","href":"flutter_midi_command_messages/PitchBendMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"PitchBendMessage","qualifiedName":"flutter_midi_command_messages.PitchBendMessage.PitchBendMessage","href":"flutter_midi_command_messages/PitchBendMessage/PitchBendMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Create Pitch Bend Message with a bend value range of -1.0 to 1.0 (default: 0.0).","enclosedBy":{"name":"PitchBendMessage","kind":3,"href":"flutter_midi_command_messages/PitchBendMessage-class.html"}},{"name":"bend","qualifiedName":"flutter_midi_command_messages.PitchBendMessage.bend","href":"flutter_midi_command_messages/PitchBendMessage/bend.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PitchBendMessage","kind":3,"href":"flutter_midi_command_messages/PitchBendMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.PitchBendMessage.channel","href":"flutter_midi_command_messages/PitchBendMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PitchBendMessage","kind":3,"href":"flutter_midi_command_messages/PitchBendMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.PitchBendMessage.send","href":"flutter_midi_command_messages/PitchBendMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"PitchBendMessage","kind":3,"href":"flutter_midi_command_messages/PitchBendMessage-class.html"}},{"name":"PolyATMessage","qualifiedName":"flutter_midi_command_messages.PolyATMessage","href":"flutter_midi_command_messages/PolyATMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"PolyATMessage","qualifiedName":"flutter_midi_command_messages.PolyATMessage.PolyATMessage","href":"flutter_midi_command_messages/PolyATMessage/PolyATMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Create a Polyphonic Aftertouch Message for a single note","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.PolyATMessage.channel","href":"flutter_midi_command_messages/PolyATMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"note","qualifiedName":"flutter_midi_command_messages.PolyATMessage.note","href":"flutter_midi_command_messages/PolyATMessage/note.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"pressure","qualifiedName":"flutter_midi_command_messages.PolyATMessage.pressure","href":"flutter_midi_command_messages/PolyATMessage/pressure.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.PolyATMessage.send","href":"flutter_midi_command_messages/PolyATMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"RPNHexMessage","qualifiedName":"flutter_midi_command_messages.RPNHexMessage","href":"flutter_midi_command_messages/RPNHexMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"RPNHexMessage","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.RPNHexMessage","href":"flutter_midi_command_messages/RPNHexMessage/RPNHexMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"RPN Message with data separated in MSB, LSB","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.channel","href":"flutter_midi_command_messages/RPNHexMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"parameterLSB","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.parameterLSB","href":"flutter_midi_command_messages/RPNHexMessage/parameterLSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"parameterMSB","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.parameterMSB","href":"flutter_midi_command_messages/RPNHexMessage/parameterMSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.send","href":"flutter_midi_command_messages/RPNHexMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"valueLSB","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.valueLSB","href":"flutter_midi_command_messages/RPNHexMessage/valueLSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"valueMSB","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.valueMSB","href":"flutter_midi_command_messages/RPNHexMessage/valueMSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"RPNMessage","qualifiedName":"flutter_midi_command_messages.RPNMessage","href":"flutter_midi_command_messages/RPNMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"RPNMessage","qualifiedName":"flutter_midi_command_messages.RPNMessage.RPNMessage","href":"flutter_midi_command_messages/RPNMessage/RPNMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"RPN Message","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.RPNMessage.channel","href":"flutter_midi_command_messages/RPNMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"parameter","qualifiedName":"flutter_midi_command_messages.RPNMessage.parameter","href":"flutter_midi_command_messages/RPNMessage/parameter.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.RPNMessage.send","href":"flutter_midi_command_messages/RPNMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.RPNMessage.value","href":"flutter_midi_command_messages/RPNMessage/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"RPNNullMessage","qualifiedName":"flutter_midi_command_messages.RPNNullMessage","href":"flutter_midi_command_messages/RPNNullMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"RPNNullMessage","qualifiedName":"flutter_midi_command_messages.RPNNullMessage.RPNNullMessage","href":"flutter_midi_command_messages/RPNNullMessage/RPNNullMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"It is best practice, but not mandatory, to send a Null Message at the end of a RPN\nStream to prevent accidental value changes on CC6 after a message has concluded.","enclosedBy":{"name":"RPNNullMessage","kind":3,"href":"flutter_midi_command_messages/RPNNullMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.RPNNullMessage.channel","href":"flutter_midi_command_messages/RPNNullMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNNullMessage","kind":3,"href":"flutter_midi_command_messages/RPNNullMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.RPNNullMessage.send","href":"flutter_midi_command_messages/RPNNullMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"RPNNullMessage","kind":3,"href":"flutter_midi_command_messages/RPNNullMessage-class.html"}},{"name":"SenseMessage","qualifiedName":"flutter_midi_command_messages.SenseMessage","href":"flutter_midi_command_messages/SenseMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"SenseMessage","qualifiedName":"flutter_midi_command_messages.SenseMessage.SenseMessage","href":"flutter_midi_command_messages/SenseMessage/SenseMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"SenseMessage","kind":3,"href":"flutter_midi_command_messages/SenseMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.SenseMessage.send","href":"flutter_midi_command_messages/SenseMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Sense Message","enclosedBy":{"name":"SenseMessage","kind":3,"href":"flutter_midi_command_messages/SenseMessage-class.html"}},{"name":"SysExMessage","qualifiedName":"flutter_midi_command_messages.SysExMessage","href":"flutter_midi_command_messages/SysExMessage-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/flutter_midi_command_messages-library.html"}},{"name":"SysExMessage","qualifiedName":"flutter_midi_command_messages.SysExMessage.SysExMessage","href":"flutter_midi_command_messages/SysExMessage/SysExMessage.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"System Exclusive Message","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}},{"name":"headerData","qualifiedName":"flutter_midi_command_messages.SysExMessage.headerData","href":"flutter_midi_command_messages/SysExMessage/headerData.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.SysExMessage.send","href":"flutter_midi_command_messages/SysExMessage/send.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.SysExMessage.value","href":"flutter_midi_command_messages/SysExMessage/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}}] +[{"name":"flutter_midi_command","qualifiedName":"flutter_midi_command","href":"flutter_midi_command/","kind":9,"packageRank":0,"desc":""},{"name":"BluetoothState","qualifiedName":"flutter_midi_command.BluetoothState","href":"flutter_midi_command/BluetoothState.html","kind":5,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"values","qualifiedName":"flutter_midi_command.BluetoothState.values","href":"flutter_midi_command/BluetoothState/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"BluetoothState","kind":5,"href":"flutter_midi_command/BluetoothState.html"}},{"name":"MidiCapabilities","qualifiedName":"flutter_midi_command.MidiCapabilities","href":"flutter_midi_command/MidiCapabilities-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"MidiCapabilities.new","qualifiedName":"flutter_midi_command.MidiCapabilities.MidiCapabilities.new","href":"flutter_midi_command/MidiCapabilities/MidiCapabilities.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCapabilities","kind":3,"href":"flutter_midi_command/MidiCapabilities-class.html"}},{"name":"enabledTransports","qualifiedName":"flutter_midi_command.MidiCapabilities.enabledTransports","href":"flutter_midi_command/MidiCapabilities/enabledTransports.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCapabilities","kind":3,"href":"flutter_midi_command/MidiCapabilities-class.html"}},{"name":"isEnabled","qualifiedName":"flutter_midi_command.MidiCapabilities.isEnabled","href":"flutter_midi_command/MidiCapabilities/isEnabled.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCapabilities","kind":3,"href":"flutter_midi_command/MidiCapabilities-class.html"}},{"name":"supportedTransports","qualifiedName":"flutter_midi_command.MidiCapabilities.supportedTransports","href":"flutter_midi_command/MidiCapabilities/supportedTransports.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCapabilities","kind":3,"href":"flutter_midi_command/MidiCapabilities-class.html"}},{"name":"supports","qualifiedName":"flutter_midi_command.MidiCapabilities.supports","href":"flutter_midi_command/MidiCapabilities/supports.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCapabilities","kind":3,"href":"flutter_midi_command/MidiCapabilities-class.html"}},{"name":"MidiCommand","qualifiedName":"flutter_midi_command.MidiCommand","href":"flutter_midi_command/MidiCommand-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"MidiCommand.new","qualifiedName":"flutter_midi_command.MidiCommand.MidiCommand.new","href":"flutter_midi_command/MidiCommand/MidiCommand.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"addVirtualDevice","qualifiedName":"flutter_midi_command.MidiCommand.addVirtualDevice","href":"flutter_midi_command/MidiCommand/addVirtualDevice.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Creates a virtual MIDI source","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"bluetoothState","qualifiedName":"flutter_midi_command.MidiCommand.bluetoothState","href":"flutter_midi_command/MidiCommand/bluetoothState.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Returns the current Bluetooth state","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"capabilities","qualifiedName":"flutter_midi_command.MidiCommand.capabilities","href":"flutter_midi_command/MidiCommand/capabilities.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"configureBleTransport","qualifiedName":"flutter_midi_command.MidiCommand.configureBleTransport","href":"flutter_midi_command/MidiCommand/configureBleTransport.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Attaches or detaches the BLE implementation.","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"configureTransportPolicy","qualifiedName":"flutter_midi_command.MidiCommand.configureTransportPolicy","href":"flutter_midi_command/MidiCommand/configureTransportPolicy.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"connectToDevice","qualifiedName":"flutter_midi_command.MidiCommand.connectToDevice","href":"flutter_midi_command/MidiCommand/connectToDevice.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Connects to the device","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"devices","qualifiedName":"flutter_midi_command.MidiCommand.devices","href":"flutter_midi_command/MidiCommand/devices.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Gets a list of available MIDI devices and returns it","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"disconnectDevice","qualifiedName":"flutter_midi_command.MidiCommand.disconnectDevice","href":"flutter_midi_command/MidiCommand/disconnectDevice.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Disconnects from the device","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"dispose","qualifiedName":"flutter_midi_command.MidiCommand.dispose","href":"flutter_midi_command/MidiCommand/dispose.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"enabledTransports","qualifiedName":"flutter_midi_command.MidiCommand.enabledTransports","href":"flutter_midi_command/MidiCommand/enabledTransports.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"isNetworkSessionEnabled","qualifiedName":"flutter_midi_command.MidiCommand.isNetworkSessionEnabled","href":"flutter_midi_command/MidiCommand/isNetworkSessionEnabled.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Returns the current state of the network session","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"isTransportEnabled","qualifiedName":"flutter_midi_command.MidiCommand.isTransportEnabled","href":"flutter_midi_command/MidiCommand/isTransportEnabled.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onBluetoothStateChanged","qualifiedName":"flutter_midi_command.MidiCommand.onBluetoothStateChanged","href":"flutter_midi_command/MidiCommand/onBluetoothStateChanged.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever the bluetooth state changes","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onMidiDataReceived","qualifiedName":"flutter_midi_command.MidiCommand.onMidiDataReceived","href":"flutter_midi_command/MidiCommand/onMidiDataReceived.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever a typed MIDI message is received.","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onMidiDataSent","qualifiedName":"flutter_midi_command.MidiCommand.onMidiDataSent","href":"flutter_midi_command/MidiCommand/onMidiDataSent.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever a midi package is sent","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onMidiPacketReceived","qualifiedName":"flutter_midi_command.MidiCommand.onMidiPacketReceived","href":"flutter_midi_command/MidiCommand/onMidiPacketReceived.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever a raw MIDI packet is received.","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"onMidiSetupChanged","qualifiedName":"flutter_midi_command.MidiCommand.onMidiSetupChanged","href":"flutter_midi_command/MidiCommand/onMidiSetupChanged.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Stream firing events whenever a change in the MIDI setup occurs","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"removeVirtualDevice","qualifiedName":"flutter_midi_command.MidiCommand.removeVirtualDevice","href":"flutter_midi_command/MidiCommand/removeVirtualDevice.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Removes a previously created virtual MIDI source.\nCurrently only supported on iOS.","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"resetForTest","qualifiedName":"flutter_midi_command.MidiCommand.resetForTest","href":"flutter_midi_command/MidiCommand/resetForTest.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"sendData","qualifiedName":"flutter_midi_command.MidiCommand.sendData","href":"flutter_midi_command/MidiCommand/sendData.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sends data to the currently connected device","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"setNetworkSessionEnabled","qualifiedName":"flutter_midi_command.MidiCommand.setNetworkSessionEnabled","href":"flutter_midi_command/MidiCommand/setNetworkSessionEnabled.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sets the enabled state of the network session","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"setPlatformOverride","qualifiedName":"flutter_midi_command.MidiCommand.setPlatformOverride","href":"flutter_midi_command/MidiCommand/setPlatformOverride.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"startBluetooth","qualifiedName":"flutter_midi_command.MidiCommand.startBluetooth","href":"flutter_midi_command/MidiCommand/startBluetooth.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Starts the Bluetooth subsystem used for BLE MIDI discovery/connection.","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"startScanningForBluetoothDevices","qualifiedName":"flutter_midi_command.MidiCommand.startScanningForBluetoothDevices","href":"flutter_midi_command/MidiCommand/startScanningForBluetoothDevices.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Starts scanning for BLE MIDI devices","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"stopScanningForBluetoothDevices","qualifiedName":"flutter_midi_command.MidiCommand.stopScanningForBluetoothDevices","href":"flutter_midi_command/MidiCommand/stopScanningForBluetoothDevices.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Stop scanning for BLE MIDI devices","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"supportedTransports","qualifiedName":"flutter_midi_command.MidiCommand.supportedTransports","href":"flutter_midi_command/MidiCommand/supportedTransports-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"teardown","qualifiedName":"flutter_midi_command.MidiCommand.teardown","href":"flutter_midi_command/MidiCommand/teardown.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Disconnects from all devices","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"waitUntilBluetoothIsInitialized","qualifiedName":"flutter_midi_command.MidiCommand.waitUntilBluetoothIsInitialized","href":"flutter_midi_command/MidiCommand/waitUntilBluetoothIsInitialized.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Wait for the blueetooth state to be initialized","enclosedBy":{"name":"MidiCommand","kind":3,"href":"flutter_midi_command/MidiCommand-class.html"}},{"name":"MidiConnectionState","qualifiedName":"flutter_midi_command.MidiConnectionState","href":"flutter_midi_command/MidiConnectionState.html","kind":5,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"values","qualifiedName":"flutter_midi_command.MidiConnectionState.values","href":"flutter_midi_command/MidiConnectionState/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"MidiConnectionState","kind":5,"href":"flutter_midi_command/MidiConnectionState.html"}},{"name":"MidiDataReceivedEvent","qualifiedName":"flutter_midi_command.MidiDataReceivedEvent","href":"flutter_midi_command/MidiDataReceivedEvent-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"MidiDataReceivedEvent.new","qualifiedName":"flutter_midi_command.MidiDataReceivedEvent.MidiDataReceivedEvent.new","href":"flutter_midi_command/MidiDataReceivedEvent/MidiDataReceivedEvent.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDataReceivedEvent","kind":3,"href":"flutter_midi_command/MidiDataReceivedEvent-class.html"}},{"name":"device","qualifiedName":"flutter_midi_command.MidiDataReceivedEvent.device","href":"flutter_midi_command/MidiDataReceivedEvent/device.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDataReceivedEvent","kind":3,"href":"flutter_midi_command/MidiDataReceivedEvent-class.html"}},{"name":"message","qualifiedName":"flutter_midi_command.MidiDataReceivedEvent.message","href":"flutter_midi_command/MidiDataReceivedEvent/message.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDataReceivedEvent","kind":3,"href":"flutter_midi_command/MidiDataReceivedEvent-class.html"}},{"name":"timestamp","qualifiedName":"flutter_midi_command.MidiDataReceivedEvent.timestamp","href":"flutter_midi_command/MidiDataReceivedEvent/timestamp.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDataReceivedEvent","kind":3,"href":"flutter_midi_command/MidiDataReceivedEvent-class.html"}},{"name":"transport","qualifiedName":"flutter_midi_command.MidiDataReceivedEvent.transport","href":"flutter_midi_command/MidiDataReceivedEvent/transport.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDataReceivedEvent","kind":3,"href":"flutter_midi_command/MidiDataReceivedEvent-class.html"}},{"name":"MidiDevice","qualifiedName":"flutter_midi_command.MidiDevice","href":"flutter_midi_command/MidiDevice-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"MidiDevice.new","qualifiedName":"flutter_midi_command.MidiDevice.MidiDevice.new","href":"flutter_midi_command/MidiDevice/MidiDevice.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"connected","qualifiedName":"flutter_midi_command.MidiDevice.connected","href":"flutter_midi_command/MidiDevice/connected.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"connectionState","qualifiedName":"flutter_midi_command.MidiDevice.connectionState","href":"flutter_midi_command/MidiDevice/connectionState.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"dispose","qualifiedName":"flutter_midi_command.MidiDevice.dispose","href":"flutter_midi_command/MidiDevice/dispose.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"id","qualifiedName":"flutter_midi_command.MidiDevice.id","href":"flutter_midi_command/MidiDevice/id.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"inputPorts","qualifiedName":"flutter_midi_command.MidiDevice.inputPorts","href":"flutter_midi_command/MidiDevice/inputPorts.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"name","qualifiedName":"flutter_midi_command.MidiDevice.name","href":"flutter_midi_command/MidiDevice/name.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"onConnectionStateChanged","qualifiedName":"flutter_midi_command.MidiDevice.onConnectionStateChanged","href":"flutter_midi_command/MidiDevice/onConnectionStateChanged.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"outputPorts","qualifiedName":"flutter_midi_command.MidiDevice.outputPorts","href":"flutter_midi_command/MidiDevice/outputPorts.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"setConnectionState","qualifiedName":"flutter_midi_command.MidiDevice.setConnectionState","href":"flutter_midi_command/MidiDevice/setConnectionState.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"type","qualifiedName":"flutter_midi_command.MidiDevice.type","href":"flutter_midi_command/MidiDevice/type.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDevice","kind":3,"href":"flutter_midi_command/MidiDevice-class.html"}},{"name":"MidiDeviceType","qualifiedName":"flutter_midi_command.MidiDeviceType","href":"flutter_midi_command/MidiDeviceType.html","kind":5,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"values","qualifiedName":"flutter_midi_command.MidiDeviceType.values","href":"flutter_midi_command/MidiDeviceType/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"MidiDeviceType","kind":5,"href":"flutter_midi_command/MidiDeviceType.html"}},{"name":"MidiDeviceTypeWire","qualifiedName":"flutter_midi_command.MidiDeviceTypeWire","href":"flutter_midi_command/MidiDeviceTypeWire.html","kind":6,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"fromWireValue","qualifiedName":"flutter_midi_command.MidiDeviceTypeWire.fromWireValue","href":"flutter_midi_command/MidiDeviceTypeWire/fromWireValue.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDeviceTypeWire","kind":6,"href":"flutter_midi_command/MidiDeviceTypeWire.html"}},{"name":"wireValue","qualifiedName":"flutter_midi_command.MidiDeviceTypeWire.wireValue","href":"flutter_midi_command/MidiDeviceTypeWire/wireValue.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiDeviceTypeWire","kind":6,"href":"flutter_midi_command/MidiDeviceTypeWire.html"}},{"name":"MidiPacket","qualifiedName":"flutter_midi_command.MidiPacket","href":"flutter_midi_command/MidiPacket-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"MidiPacket.new","qualifiedName":"flutter_midi_command.MidiPacket.MidiPacket.new","href":"flutter_midi_command/MidiPacket/MidiPacket.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiPacket","kind":3,"href":"flutter_midi_command/MidiPacket-class.html"}},{"name":"data","qualifiedName":"flutter_midi_command.MidiPacket.data","href":"flutter_midi_command/MidiPacket/data.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiPacket","kind":3,"href":"flutter_midi_command/MidiPacket-class.html"}},{"name":"device","qualifiedName":"flutter_midi_command.MidiPacket.device","href":"flutter_midi_command/MidiPacket/device.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiPacket","kind":3,"href":"flutter_midi_command/MidiPacket-class.html"}},{"name":"timestamp","qualifiedName":"flutter_midi_command.MidiPacket.timestamp","href":"flutter_midi_command/MidiPacket/timestamp.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiPacket","kind":3,"href":"flutter_midi_command/MidiPacket-class.html"}},{"name":"MidiPort","qualifiedName":"flutter_midi_command.MidiPort","href":"flutter_midi_command/MidiPort-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"MidiPort.new","qualifiedName":"flutter_midi_command.MidiPort.MidiPort.new","href":"flutter_midi_command/MidiPort/MidiPort.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiPort","kind":3,"href":"flutter_midi_command/MidiPort-class.html"}},{"name":"connected","qualifiedName":"flutter_midi_command.MidiPort.connected","href":"flutter_midi_command/MidiPort/connected.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiPort","kind":3,"href":"flutter_midi_command/MidiPort-class.html"}},{"name":"id","qualifiedName":"flutter_midi_command.MidiPort.id","href":"flutter_midi_command/MidiPort/id.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiPort","kind":3,"href":"flutter_midi_command/MidiPort-class.html"}},{"name":"type","qualifiedName":"flutter_midi_command.MidiPort.type","href":"flutter_midi_command/MidiPort/type.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiPort","kind":3,"href":"flutter_midi_command/MidiPort-class.html"}},{"name":"MidiTransport","qualifiedName":"flutter_midi_command.MidiTransport","href":"flutter_midi_command/MidiTransport.html","kind":5,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"values","qualifiedName":"flutter_midi_command.MidiTransport.values","href":"flutter_midi_command/MidiTransport/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"MidiTransport","kind":5,"href":"flutter_midi_command/MidiTransport.html"}},{"name":"MidiTransportPolicy","qualifiedName":"flutter_midi_command.MidiTransportPolicy","href":"flutter_midi_command/MidiTransportPolicy-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command","kind":9,"href":"flutter_midi_command/"}},{"name":"MidiTransportPolicy.new","qualifiedName":"flutter_midi_command.MidiTransportPolicy.MidiTransportPolicy.new","href":"flutter_midi_command/MidiTransportPolicy/MidiTransportPolicy.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiTransportPolicy","kind":3,"href":"flutter_midi_command/MidiTransportPolicy-class.html"}},{"name":"excludedTransports","qualifiedName":"flutter_midi_command.MidiTransportPolicy.excludedTransports","href":"flutter_midi_command/MidiTransportPolicy/excludedTransports.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiTransportPolicy","kind":3,"href":"flutter_midi_command/MidiTransportPolicy-class.html"}},{"name":"includedTransports","qualifiedName":"flutter_midi_command.MidiTransportPolicy.includedTransports","href":"flutter_midi_command/MidiTransportPolicy/includedTransports.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiTransportPolicy","kind":3,"href":"flutter_midi_command/MidiTransportPolicy-class.html"}},{"name":"resolveEnabledTransports","qualifiedName":"flutter_midi_command.MidiTransportPolicy.resolveEnabledTransports","href":"flutter_midi_command/MidiTransportPolicy/resolveEnabledTransports.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiTransportPolicy","kind":3,"href":"flutter_midi_command/MidiTransportPolicy-class.html"}},{"name":"flutter_midi_command_messages","qualifiedName":"flutter_midi_command_messages","href":"flutter_midi_command_messages/","kind":9,"packageRank":0,"desc":""},{"name":"ATMessage","qualifiedName":"flutter_midi_command_messages.ATMessage","href":"flutter_midi_command_messages/ATMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"ATMessage.new","qualifiedName":"flutter_midi_command_messages.ATMessage.ATMessage.new","href":"flutter_midi_command_messages/ATMessage/ATMessage.html","kind":2,"packageRank":0,"desc":"Create an Aftertouch Message for a single channel","enclosedBy":{"name":"ATMessage","kind":3,"href":"flutter_midi_command_messages/ATMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.ATMessage.channel","href":"flutter_midi_command_messages/ATMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ATMessage","kind":3,"href":"flutter_midi_command_messages/ATMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.ATMessage.generateData","href":"flutter_midi_command_messages/ATMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"ATMessage","kind":3,"href":"flutter_midi_command_messages/ATMessage-class.html"}},{"name":"pressure","qualifiedName":"flutter_midi_command_messages.ATMessage.pressure","href":"flutter_midi_command_messages/ATMessage/pressure.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ATMessage","kind":3,"href":"flutter_midi_command_messages/ATMessage-class.html"}},{"name":"CCMessage","qualifiedName":"flutter_midi_command_messages.CCMessage","href":"flutter_midi_command_messages/CCMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"CCMessage.new","qualifiedName":"flutter_midi_command_messages.CCMessage.CCMessage.new","href":"flutter_midi_command_messages/CCMessage/CCMessage.html","kind":2,"packageRank":0,"desc":"Continuous Control Message","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.CCMessage.channel","href":"flutter_midi_command_messages/CCMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"controller","qualifiedName":"flutter_midi_command_messages.CCMessage.controller","href":"flutter_midi_command_messages/CCMessage/controller.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.CCMessage.generateData","href":"flutter_midi_command_messages/CCMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.CCMessage.value","href":"flutter_midi_command_messages/CCMessage/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CCMessage","kind":3,"href":"flutter_midi_command_messages/CCMessage-class.html"}},{"name":"ClockMessage","qualifiedName":"flutter_midi_command_messages.ClockMessage","href":"flutter_midi_command_messages/ClockMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"ClockMessage.new","qualifiedName":"flutter_midi_command_messages.ClockMessage.ClockMessage.new","href":"flutter_midi_command_messages/ClockMessage/ClockMessage.html","kind":2,"packageRank":0,"desc":"Clock Message","enclosedBy":{"name":"ClockMessage","kind":3,"href":"flutter_midi_command_messages/ClockMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.ClockMessage.generateData","href":"flutter_midi_command_messages/ClockMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"ClockMessage","kind":3,"href":"flutter_midi_command_messages/ClockMessage-class.html"}},{"name":"type","qualifiedName":"flutter_midi_command_messages.ClockMessage.type","href":"flutter_midi_command_messages/ClockMessage/type.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ClockMessage","kind":3,"href":"flutter_midi_command_messages/ClockMessage-class.html"}},{"name":"ClockType","qualifiedName":"flutter_midi_command_messages.ClockType","href":"flutter_midi_command_messages/ClockType.html","kind":5,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"values","qualifiedName":"flutter_midi_command_messages.ClockType.values","href":"flutter_midi_command_messages/ClockType/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"ClockType","kind":5,"href":"flutter_midi_command_messages/ClockType.html"}},{"name":"MessageType","qualifiedName":"flutter_midi_command_messages.MessageType","href":"flutter_midi_command_messages/MessageType.html","kind":5,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"values","qualifiedName":"flutter_midi_command_messages.MessageType.values","href":"flutter_midi_command_messages/MessageType/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"MessageType","kind":5,"href":"flutter_midi_command_messages/MessageType.html"}},{"name":"MidiMessage","qualifiedName":"flutter_midi_command_messages.MidiMessage","href":"flutter_midi_command_messages/MidiMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"MidiMessage.new","qualifiedName":"flutter_midi_command_messages.MidiMessage.MidiMessage.new","href":"flutter_midi_command_messages/MidiMessage/MidiMessage.html","kind":2,"packageRank":0,"desc":"Base class for MIDI message types","enclosedBy":{"name":"MidiMessage","kind":3,"href":"flutter_midi_command_messages/MidiMessage-class.html"}},{"name":"data","qualifiedName":"flutter_midi_command_messages.MidiMessage.data","href":"flutter_midi_command_messages/MidiMessage/data.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Byte data of the message","enclosedBy":{"name":"MidiMessage","kind":3,"href":"flutter_midi_command_messages/MidiMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.MidiMessage.generateData","href":"flutter_midi_command_messages/MidiMessage/generateData.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"MidiMessage","kind":3,"href":"flutter_midi_command_messages/MidiMessage-class.html"}},{"name":"parse","qualifiedName":"flutter_midi_command_messages.MidiMessage.parse","href":"flutter_midi_command_messages/MidiMessage/parse.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Parses one or more raw MIDI messages into typed MidiMessage objects.","enclosedBy":{"name":"MidiMessage","kind":3,"href":"flutter_midi_command_messages/MidiMessage-class.html"}},{"name":"send","qualifiedName":"flutter_midi_command_messages.MidiMessage.send","href":"flutter_midi_command_messages/MidiMessage/send.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Send the message bytes to all connected devices","enclosedBy":{"name":"MidiMessage","kind":3,"href":"flutter_midi_command_messages/MidiMessage-class.html"}},{"name":"MidiMessageParser","qualifiedName":"flutter_midi_command_messages.MidiMessageParser","href":"flutter_midi_command_messages/MidiMessageParser-class.html","kind":3,"packageRank":0,"desc":"Stateful parser that converts raw MIDI bytes into typed MidiMessages.","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"MidiMessageParser.new","qualifiedName":"flutter_midi_command_messages.MidiMessageParser.MidiMessageParser.new","href":"flutter_midi_command_messages/MidiMessageParser/MidiMessageParser.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"MidiMessageParser","kind":3,"href":"flutter_midi_command_messages/MidiMessageParser-class.html"}},{"name":"parse","qualifiedName":"flutter_midi_command_messages.MidiMessageParser.parse","href":"flutter_midi_command_messages/MidiMessageParser/parse.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Parse bytes into typed messages.","enclosedBy":{"name":"MidiMessageParser","kind":3,"href":"flutter_midi_command_messages/MidiMessageParser-class.html"}},{"name":"reset","qualifiedName":"flutter_midi_command_messages.MidiMessageParser.reset","href":"flutter_midi_command_messages/MidiMessageParser/reset.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Clears parser state (running status, SysEx buffer, NRPN/RPN context).","enclosedBy":{"name":"MidiMessageParser","kind":3,"href":"flutter_midi_command_messages/MidiMessageParser-class.html"}},{"name":"NRPN3Message","qualifiedName":"flutter_midi_command_messages.NRPN3Message","href":"flutter_midi_command_messages/NRPN3Message-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"NRPN3Message.new","qualifiedName":"flutter_midi_command_messages.NRPN3Message.NRPN3Message.new","href":"flutter_midi_command_messages/NRPN3Message/NRPN3Message.html","kind":2,"packageRank":0,"desc":"NRPN Message with single value byte","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NRPN3Message.channel","href":"flutter_midi_command_messages/NRPN3Message/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.NRPN3Message.generateData","href":"flutter_midi_command_messages/NRPN3Message/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"parameter","qualifiedName":"flutter_midi_command_messages.NRPN3Message.parameter","href":"flutter_midi_command_messages/NRPN3Message/parameter.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.NRPN3Message.value","href":"flutter_midi_command_messages/NRPN3Message/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN3Message","kind":3,"href":"flutter_midi_command_messages/NRPN3Message-class.html"}},{"name":"NRPN4Message","qualifiedName":"flutter_midi_command_messages.NRPN4Message","href":"flutter_midi_command_messages/NRPN4Message-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"NRPN4Message.new","qualifiedName":"flutter_midi_command_messages.NRPN4Message.NRPN4Message.new","href":"flutter_midi_command_messages/NRPN4Message/NRPN4Message.html","kind":2,"packageRank":0,"desc":"NRPN Message with Value MSB and LSB bytes","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NRPN4Message.channel","href":"flutter_midi_command_messages/NRPN4Message/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.NRPN4Message.generateData","href":"flutter_midi_command_messages/NRPN4Message/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"parameter","qualifiedName":"flutter_midi_command_messages.NRPN4Message.parameter","href":"flutter_midi_command_messages/NRPN4Message/parameter.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.NRPN4Message.value","href":"flutter_midi_command_messages/NRPN4Message/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPN4Message","kind":3,"href":"flutter_midi_command_messages/NRPN4Message-class.html"}},{"name":"NRPNHexMessage","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage","href":"flutter_midi_command_messages/NRPNHexMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"NRPNHexMessage.new","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.NRPNHexMessage.new","href":"flutter_midi_command_messages/NRPNHexMessage/NRPNHexMessage.html","kind":2,"packageRank":0,"desc":"NRPN Message with data separated in MSB, LSB","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.channel","href":"flutter_midi_command_messages/NRPNHexMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.generateData","href":"flutter_midi_command_messages/NRPNHexMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"parameterLSB","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.parameterLSB","href":"flutter_midi_command_messages/NRPNHexMessage/parameterLSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"parameterMSB","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.parameterMSB","href":"flutter_midi_command_messages/NRPNHexMessage/parameterMSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"valueLSB","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.valueLSB","href":"flutter_midi_command_messages/NRPNHexMessage/valueLSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"valueMSB","qualifiedName":"flutter_midi_command_messages.NRPNHexMessage.valueMSB","href":"flutter_midi_command_messages/NRPNHexMessage/valueMSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNHexMessage","kind":3,"href":"flutter_midi_command_messages/NRPNHexMessage-class.html"}},{"name":"NRPNNullMessage","qualifiedName":"flutter_midi_command_messages.NRPNNullMessage","href":"flutter_midi_command_messages/NRPNNullMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"NRPNNullMessage.new","qualifiedName":"flutter_midi_command_messages.NRPNNullMessage.NRPNNullMessage.new","href":"flutter_midi_command_messages/NRPNNullMessage/NRPNNullMessage.html","kind":2,"packageRank":0,"desc":"It is best practice, but not mandatory, to send a Null Message at the end of a NRPN\nStream to prevent accidental value changes on CC6 after a message has concluded.","enclosedBy":{"name":"NRPNNullMessage","kind":3,"href":"flutter_midi_command_messages/NRPNNullMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NRPNNullMessage.channel","href":"flutter_midi_command_messages/NRPNNullMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NRPNNullMessage","kind":3,"href":"flutter_midi_command_messages/NRPNNullMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.NRPNNullMessage.generateData","href":"flutter_midi_command_messages/NRPNNullMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"NRPNNullMessage","kind":3,"href":"flutter_midi_command_messages/NRPNNullMessage-class.html"}},{"name":"NoteOffMessage","qualifiedName":"flutter_midi_command_messages.NoteOffMessage","href":"flutter_midi_command_messages/NoteOffMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"NoteOffMessage.new","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.NoteOffMessage.new","href":"flutter_midi_command_messages/NoteOffMessage/NoteOffMessage.html","kind":2,"packageRank":0,"desc":"Note Off Message","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.channel","href":"flutter_midi_command_messages/NoteOffMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.generateData","href":"flutter_midi_command_messages/NoteOffMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"note","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.note","href":"flutter_midi_command_messages/NoteOffMessage/note.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"velocity","qualifiedName":"flutter_midi_command_messages.NoteOffMessage.velocity","href":"flutter_midi_command_messages/NoteOffMessage/velocity.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOffMessage","kind":3,"href":"flutter_midi_command_messages/NoteOffMessage-class.html"}},{"name":"NoteOnMessage","qualifiedName":"flutter_midi_command_messages.NoteOnMessage","href":"flutter_midi_command_messages/NoteOnMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"NoteOnMessage.new","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.NoteOnMessage.new","href":"flutter_midi_command_messages/NoteOnMessage/NoteOnMessage.html","kind":2,"packageRank":0,"desc":"Note On Message","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.channel","href":"flutter_midi_command_messages/NoteOnMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.generateData","href":"flutter_midi_command_messages/NoteOnMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"note","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.note","href":"flutter_midi_command_messages/NoteOnMessage/note.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"velocity","qualifiedName":"flutter_midi_command_messages.NoteOnMessage.velocity","href":"flutter_midi_command_messages/NoteOnMessage/velocity.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"NoteOnMessage","kind":3,"href":"flutter_midi_command_messages/NoteOnMessage-class.html"}},{"name":"PCMessage","qualifiedName":"flutter_midi_command_messages.PCMessage","href":"flutter_midi_command_messages/PCMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"PCMessage.new","qualifiedName":"flutter_midi_command_messages.PCMessage.PCMessage.new","href":"flutter_midi_command_messages/PCMessage/PCMessage.html","kind":2,"packageRank":0,"desc":"Program Change Message","enclosedBy":{"name":"PCMessage","kind":3,"href":"flutter_midi_command_messages/PCMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.PCMessage.channel","href":"flutter_midi_command_messages/PCMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PCMessage","kind":3,"href":"flutter_midi_command_messages/PCMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.PCMessage.generateData","href":"flutter_midi_command_messages/PCMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"PCMessage","kind":3,"href":"flutter_midi_command_messages/PCMessage-class.html"}},{"name":"program","qualifiedName":"flutter_midi_command_messages.PCMessage.program","href":"flutter_midi_command_messages/PCMessage/program.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PCMessage","kind":3,"href":"flutter_midi_command_messages/PCMessage-class.html"}},{"name":"PitchBendMessage","qualifiedName":"flutter_midi_command_messages.PitchBendMessage","href":"flutter_midi_command_messages/PitchBendMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"PitchBendMessage.new","qualifiedName":"flutter_midi_command_messages.PitchBendMessage.PitchBendMessage.new","href":"flutter_midi_command_messages/PitchBendMessage/PitchBendMessage.html","kind":2,"packageRank":0,"desc":"Create Pitch Bend Message with a bend value range of -1.0 to 1.0 (default: 0.0).","enclosedBy":{"name":"PitchBendMessage","kind":3,"href":"flutter_midi_command_messages/PitchBendMessage-class.html"}},{"name":"bend","qualifiedName":"flutter_midi_command_messages.PitchBendMessage.bend","href":"flutter_midi_command_messages/PitchBendMessage/bend.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PitchBendMessage","kind":3,"href":"flutter_midi_command_messages/PitchBendMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.PitchBendMessage.channel","href":"flutter_midi_command_messages/PitchBendMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PitchBendMessage","kind":3,"href":"flutter_midi_command_messages/PitchBendMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.PitchBendMessage.generateData","href":"flutter_midi_command_messages/PitchBendMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"PitchBendMessage","kind":3,"href":"flutter_midi_command_messages/PitchBendMessage-class.html"}},{"name":"PolyATMessage","qualifiedName":"flutter_midi_command_messages.PolyATMessage","href":"flutter_midi_command_messages/PolyATMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"PolyATMessage.new","qualifiedName":"flutter_midi_command_messages.PolyATMessage.PolyATMessage.new","href":"flutter_midi_command_messages/PolyATMessage/PolyATMessage.html","kind":2,"packageRank":0,"desc":"Create a Polyphonic Aftertouch Message for a single note","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.PolyATMessage.channel","href":"flutter_midi_command_messages/PolyATMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.PolyATMessage.generateData","href":"flutter_midi_command_messages/PolyATMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"note","qualifiedName":"flutter_midi_command_messages.PolyATMessage.note","href":"flutter_midi_command_messages/PolyATMessage/note.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"pressure","qualifiedName":"flutter_midi_command_messages.PolyATMessage.pressure","href":"flutter_midi_command_messages/PolyATMessage/pressure.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PolyATMessage","kind":3,"href":"flutter_midi_command_messages/PolyATMessage-class.html"}},{"name":"RPNHexMessage","qualifiedName":"flutter_midi_command_messages.RPNHexMessage","href":"flutter_midi_command_messages/RPNHexMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"RPNHexMessage.new","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.RPNHexMessage.new","href":"flutter_midi_command_messages/RPNHexMessage/RPNHexMessage.html","kind":2,"packageRank":0,"desc":"RPN Message with data separated in MSB, LSB","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.channel","href":"flutter_midi_command_messages/RPNHexMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.generateData","href":"flutter_midi_command_messages/RPNHexMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"parameterLSB","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.parameterLSB","href":"flutter_midi_command_messages/RPNHexMessage/parameterLSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"parameterMSB","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.parameterMSB","href":"flutter_midi_command_messages/RPNHexMessage/parameterMSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"valueLSB","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.valueLSB","href":"flutter_midi_command_messages/RPNHexMessage/valueLSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"valueMSB","qualifiedName":"flutter_midi_command_messages.RPNHexMessage.valueMSB","href":"flutter_midi_command_messages/RPNHexMessage/valueMSB.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNHexMessage","kind":3,"href":"flutter_midi_command_messages/RPNHexMessage-class.html"}},{"name":"RPNMessage","qualifiedName":"flutter_midi_command_messages.RPNMessage","href":"flutter_midi_command_messages/RPNMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"RPNMessage.new","qualifiedName":"flutter_midi_command_messages.RPNMessage.RPNMessage.new","href":"flutter_midi_command_messages/RPNMessage/RPNMessage.html","kind":2,"packageRank":0,"desc":"RPN Message","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.RPNMessage.channel","href":"flutter_midi_command_messages/RPNMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.RPNMessage.generateData","href":"flutter_midi_command_messages/RPNMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"parameter","qualifiedName":"flutter_midi_command_messages.RPNMessage.parameter","href":"flutter_midi_command_messages/RPNMessage/parameter.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.RPNMessage.value","href":"flutter_midi_command_messages/RPNMessage/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNMessage","kind":3,"href":"flutter_midi_command_messages/RPNMessage-class.html"}},{"name":"RPNNullMessage","qualifiedName":"flutter_midi_command_messages.RPNNullMessage","href":"flutter_midi_command_messages/RPNNullMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"RPNNullMessage.new","qualifiedName":"flutter_midi_command_messages.RPNNullMessage.RPNNullMessage.new","href":"flutter_midi_command_messages/RPNNullMessage/RPNNullMessage.html","kind":2,"packageRank":0,"desc":"It is best practice, but not mandatory, to send a Null Message at the end of a RPN\nStream to prevent accidental value changes on CC6 after a message has concluded.","enclosedBy":{"name":"RPNNullMessage","kind":3,"href":"flutter_midi_command_messages/RPNNullMessage-class.html"}},{"name":"channel","qualifiedName":"flutter_midi_command_messages.RPNNullMessage.channel","href":"flutter_midi_command_messages/RPNNullMessage/channel.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"RPNNullMessage","kind":3,"href":"flutter_midi_command_messages/RPNNullMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.RPNNullMessage.generateData","href":"flutter_midi_command_messages/RPNNullMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"RPNNullMessage","kind":3,"href":"flutter_midi_command_messages/RPNNullMessage-class.html"}},{"name":"SenseMessage","qualifiedName":"flutter_midi_command_messages.SenseMessage","href":"flutter_midi_command_messages/SenseMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"SenseMessage.new","qualifiedName":"flutter_midi_command_messages.SenseMessage.SenseMessage.new","href":"flutter_midi_command_messages/SenseMessage/SenseMessage.html","kind":2,"packageRank":0,"desc":"","enclosedBy":{"name":"SenseMessage","kind":3,"href":"flutter_midi_command_messages/SenseMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.SenseMessage.generateData","href":"flutter_midi_command_messages/SenseMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Sense Message","enclosedBy":{"name":"SenseMessage","kind":3,"href":"flutter_midi_command_messages/SenseMessage-class.html"}},{"name":"SysExMessage","qualifiedName":"flutter_midi_command_messages.SysExMessage","href":"flutter_midi_command_messages/SysExMessage-class.html","kind":3,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_midi_command_messages","kind":9,"href":"flutter_midi_command_messages/"}},{"name":"SysExMessage.new","qualifiedName":"flutter_midi_command_messages.SysExMessage.SysExMessage.new","href":"flutter_midi_command_messages/SysExMessage/SysExMessage.html","kind":2,"packageRank":0,"desc":"System Exclusive Message","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}},{"name":"generateData","qualifiedName":"flutter_midi_command_messages.SysExMessage.generateData","href":"flutter_midi_command_messages/SysExMessage/generateData.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Generates MIDI bytes for this message without sending.","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}},{"name":"headerData","qualifiedName":"flutter_midi_command_messages.SysExMessage.headerData","href":"flutter_midi_command_messages/SysExMessage/headerData.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}},{"name":"rawData","qualifiedName":"flutter_midi_command_messages.SysExMessage.rawData","href":"flutter_midi_command_messages/SysExMessage/rawData.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}},{"name":"value","qualifiedName":"flutter_midi_command_messages.SysExMessage.value","href":"flutter_midi_command_messages/SysExMessage/value.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"SysExMessage","kind":3,"href":"flutter_midi_command_messages/SysExMessage-class.html"}}] diff --git a/doc/api/search.html b/doc/api/search.html index f7032090..98c05957 100644 --- a/doc/api/search.html +++ b/doc/api/search.html @@ -16,15 +16,11 @@ - - -
      -
      menu
      -
      - - -
      -
      flutter_midi_command - 0.4.17 + 1.0.0 -
      - - - - diff --git a/doc/api/static-assets/docs.dart.js b/doc/api/static-assets/docs.dart.js index b745097c..bb240559 100644 --- a/doc/api/static-assets/docs.dart.js +++ b/doc/api/static-assets/docs.dart.js @@ -22,18 +22,18 @@ a[c]=function(){if(a[b]===s){a[b]=d()}a[c]=function(){return this[b]} return a[b]}}function lazyFinal(a,b,c,d){var s=a a[b]=s a[c]=function(){if(a[b]===s){var r=d() -if(a[b]!==s){A.k3(b)}a[b]=r}var q=a[b] +if(a[b]!==s){A.jS(b)}a[b]=r}var q=a[b] a[c]=function(){return q} -return q}}function makeConstList(a){a.immutable$list=Array -a.fixed$length=Array +return q}}function makeConstList(a,b){if(b!=null)A.k(a,b) +a.$flags=7 return a}function convertToFastObject(a){function t(){}t.prototype=a new t() return a}function convertAllToFastObject(a){for(var s=0;s4294967295)throw A.a(A.G(a,0,4294967295,"length",null)) -return J.hR(new Array(a),b)}, -hQ(a,b){if(a<0)throw A.a(A.a_("Length must be a non-negative integer: "+a,null)) -return A.h(new Array(a),b.i("o<0>"))}, -eX(a,b){if(a<0)throw A.a(A.a_("Length must be a non-negative integer: "+a,null)) -return A.h(new Array(a),b.i("o<0>"))}, -hR(a,b){return J.eg(A.h(a,b.i("o<0>")))}, -eg(a){a.fixed$length=Array -return a}, -eY(a){a.fixed$length=Array -a.immutable$list=Array -return a}, -hS(a,b){return J.ht(a,b)}, -X(a){if(typeof a=="number"){if(Math.floor(a)==a)return J.aP.prototype -return J.bI.prototype}if(typeof a=="string")return J.ah.prototype -if(a==null)return J.aQ.prototype -if(typeof a=="boolean")return J.bH.prototype +if(s==null)return B.n +if(s===Object.prototype)return B.n +if(typeof q=="function"){o=$.d9 +if(o==null)o=$.d9=v.getIsolateTag("_$dart_js") +Object.defineProperty(q,o,{value:B.i,enumerable:false,writable:true,configurable:true}) +return B.i}return B.i}, +hA(a,b){if(a<0||a>4294967295)throw A.b(A.E(a,0,4294967295,"length",null)) +return J.hC(new Array(a),b)}, +hB(a,b){if(a<0)throw A.b(A.T("Length must be a non-negative integer: "+a,null)) +return A.k(new Array(a),b.j("o<0>"))}, +hC(a,b){var s=A.k(a,b.j("o<0>")) +s.$flags=1 +return s}, +hD(a,b){return J.hc(a,b)}, +ag(a){if(typeof a=="number"){if(Math.floor(a)==a)return J.aM.prototype +return J.bC.prototype}if(typeof a=="string")return J.a8.prototype +if(a==null)return J.aN.prototype +if(typeof a=="boolean")return J.bB.prototype if(Array.isArray(a))return J.o.prototype -if(typeof a!="object"){if(typeof a=="function")return J.a1.prototype -if(typeof a=="symbol")return J.aU.prototype -if(typeof a=="bigint")return J.aS.prototype -return a}if(a instanceof A.l)return a -return J.eG(a)}, -an(a){if(typeof a=="string")return J.ah.prototype +if(typeof a!="object"){if(typeof a=="function")return J.W.prototype +if(typeof a=="symbol")return J.aR.prototype +if(typeof a=="bigint")return J.aP.prototype +return a}if(a instanceof A.j)return a +return J.ew(a)}, +cg(a){if(typeof a=="string")return J.a8.prototype if(a==null)return a if(Array.isArray(a))return J.o.prototype -if(typeof a!="object"){if(typeof a=="function")return J.a1.prototype -if(typeof a=="symbol")return J.aU.prototype -if(typeof a=="bigint")return J.aS.prototype -return a}if(a instanceof A.l)return a -return J.eG(a)}, -e_(a){if(a==null)return a +if(typeof a!="object"){if(typeof a=="function")return J.W.prototype +if(typeof a=="symbol")return J.aR.prototype +if(typeof a=="bigint")return J.aP.prototype +return a}if(a instanceof A.j)return a +return J.ew(a)}, +ev(a){if(a==null)return a if(Array.isArray(a))return J.o.prototype -if(typeof a!="object"){if(typeof a=="function")return J.a1.prototype -if(typeof a=="symbol")return J.aU.prototype -if(typeof a=="bigint")return J.aS.prototype -return a}if(a instanceof A.l)return a -return J.eG(a)}, -jI(a){if(typeof a=="number")return J.aR.prototype -if(typeof a=="string")return J.ah.prototype +if(typeof a!="object"){if(typeof a=="function")return J.W.prototype +if(typeof a=="symbol")return J.aR.prototype +if(typeof a=="bigint")return J.aP.prototype +return a}if(a instanceof A.j)return a +return J.ew(a)}, +jy(a){if(typeof a=="number")return J.aO.prototype +if(typeof a=="string")return J.a8.prototype if(a==null)return a -if(!(a instanceof A.l))return J.ax.prototype +if(!(a instanceof A.j))return J.aq.prototype return a}, -F(a,b){if(a==null)return b==null +G(a,b){if(a==null)return b==null if(typeof a!="object")return b!=null&&a===b -return J.X(a).F(a,b)}, -hq(a,b){if(typeof b==="number")if(Array.isArray(a)||typeof a=="string"||A.h3(a,a[v.dispatchPropertyName]))if(b>>>0===b&&b>>0===b&&b>>0===b&&b").b(a))return new A.b9(a,b.i("@<0>").A(c).i("b9<1,2>")) -return new A.ae(a,b.i("@<0>").A(c).i("ae<1,2>"))}, -e0(a){var s,r=a^48 +aO:function aO(){}, +aM:function aM(){}, +bC:function bC(){}, +a8:function a8(){}},A={e2:function e2(){}, +hh(a,b,c){if(t.U.b(a))return new A.b6(a,b.j("@<0>").C(c).j("b6<1,2>")) +return new A.a6(a,b.j("@<0>").C(c).j("a6<1,2>"))}, +eM(a){return new A.bE("Field '"+a+"' has been assigned during initialization.")}, +dK(a){var s,r=a^48 if(r<=9)return r s=a|32 if(97<=s&&s<=102)return s-87 return-1}, -a6(a,b){a=a+b&536870911 +a_(a,b){a=a+b&536870911 a=a+((a&524287)<<10)&536870911 return a^a>>>6}, -en(a){a=a+((a&67108863)<<3)&536870911 +e9(a){a=a+((a&67108863)<<3)&536870911 a^=a>>>11 return a+((a&16383)<<15)&536870911}, -cn(a,b,c){return a}, -eI(a){var s,r -for(s=$.ap.length,r=0;r").A(d).i("aM<1,2>")) -return new A.ai(a,b,c.i("@<0>").A(d).i("ai<1,2>"))}, -eV(){return new A.b5("No element")}, -a8:function a8(){}, -bA:function bA(a,b){this.a=a +hw(){return new A.b2("No element")}, +a0:function a0(){}, +bt:function bt(a,b){this.a=a this.$ti=b}, -ae:function ae(a,b){this.a=a +a6:function a6(a,b){this.a=a this.$ti=b}, -b9:function b9(a,b){this.a=a +b6:function b6(a,b){this.a=a this.$ti=b}, -b8:function b8(){}, -M:function M(a,b){this.a=a +b5:function b5(){}, +N:function N(a,b){this.a=a this.$ti=b}, -aV:function aV(a){this.a=a}, -bB:function bB(a){this.a=a}, -cR:function cR(){}, +bE:function bE(a){this.a=a}, +bu:function bu(a){this.a=a}, +cF:function cF(){}, c:function c(){}, -I:function I(){}, -au:function au(a,b,c){var _=this +J:function J(){}, +am:function am(a,b,c){var _=this _.a=a _.b=b _.c=0 _.d=null _.$ti=c}, -ai:function ai(a,b,c){this.a=a -this.b=b -this.$ti=c}, -aM:function aM(a,b,c){this.a=a +ab:function ab(a,b,c){this.a=a this.b=b this.$ti=c}, -av:function av(a,b,c){var _=this -_.a=null -_.b=a -_.c=b -_.$ti=c}, -aj:function aj(a,b,c){this.a=a -this.b=b -this.$ti=c}, -aO:function aO(){}, -c1:function c1(){}, -ay:function ay(){}, -a5:function a5(a){this.a=a}, -bp:function bp(){}, -hF(){throw A.a(A.T("Cannot modify unmodifiable Map"))}, -h8(a){var s=v.mangledGlobalNames[a] +aL:function aL(){}, +bX:function bX(){}, +ar:function ar(){}, +bl:function bl(){}, +hn(){throw A.b(A.cK("Cannot modify unmodifiable Map"))}, +fT(a){var s=v.mangledGlobalNames[a] if(s!=null)return s return"minified:"+a}, -h3(a,b){var s +jI(a,b){var s if(b!=null){s=b.x if(s!=null)return s}return t.p.b(a)}, i(a){var s @@ -229,184 +209,168 @@ if(typeof a=="string")return a if(typeof a=="number"){if(a!==0)return""+a}else if(!0===a)return"true" else if(!1===a)return"false" else if(a==null)return"null" -s=J.aq(a) +s=J.ak(a) return s}, -bY(a){var s,r=$.f2 -if(r==null)r=$.f2=Symbol("identityHashCode") +bR(a){var s,r=$.eQ +if(r==null)r=$.eQ=Symbol("identityHashCode") s=a[r] if(s==null){s=Math.random()*0x3fffffff|0 a[r]=s}return s}, -f3(a,b){var s,r,q,p,o,n=null,m=/^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(a) +eR(a,b){var s,r,q,p,o,n=null,m=/^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(a) if(m==null)return n s=m[3] if(b==null){if(s!=null)return parseInt(a,10) if(m[2]!=null)return parseInt(a,16) -return n}if(b<2||b>36)throw A.a(A.G(b,2,36,"radix",n)) +return n}if(b<2||b>36)throw A.b(A.E(b,2,36,"radix",n)) if(b===10&&s!=null)return parseInt(a,10) if(b<10||s==null){r=b<=10?47+b:86+b q=m[1] for(p=q.length,o=0;or)return n}return parseInt(a,b)}, -cQ(a){return A.i_(a)}, -i_(a){var s,r,q,p -if(a instanceof A.l)return A.C(A.aG(a),null) -s=J.X(a) -if(s===B.I||s===B.K||t.o.b(a)){r=B.l(a) +bS(a){var s,r,q,p +if(a instanceof A.j)return A.D(A.aB(a),null) +s=J.ag(a) +if(s===B.z||s===B.B||t.o.b(a)){r=B.k(a) if(r!=="Object"&&r!=="")return r q=a.constructor if(typeof q=="function"){p=q.name -if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.C(A.aG(a),null)}, -f4(a){if(a==null||typeof a=="number"||A.ez(a))return J.aq(a) +if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.D(A.aB(a),null)}, +eS(a){var s,r,q +if(a==null||typeof a=="number"||A.eo(a))return J.ak(a) if(typeof a=="string")return JSON.stringify(a) -if(a instanceof A.af)return a.h(0) -if(a instanceof A.bf)return a.aH(!0) -return"Instance of '"+A.cQ(a)+"'"}, -i2(a,b,c){var s,r,q,p +if(a instanceof A.a7)return a.h(0) +if(a instanceof A.bb)return a.aE(!0) +s=$.h9() +for(r=0;r<1;++r){q=s[r].bM(a) +if(q!=null)return q}return"Instance of '"+A.bS(a)+"'"}, +hJ(a,b,c){var s,r,q,p if(c<=500&&b===0&&c===a.length)return String.fromCharCode.apply(null,a) for(s=b,r="";s>>0,s&1023|56320)}}throw A.a(A.G(a,0,1114111,null,null))}, -a3(a,b,c){var s,r,q={} -q.a=0 -s=[] -r=[] -q.a=b.length -B.b.aI(s,b) -q.b="" -if(c!=null&&c.a!==0)c.C(0,new A.cP(q,r,s)) -return J.hw(a,new A.cD(B.ac,0,s,r,0))}, -i0(a,b,c){var s,r,q -if(Array.isArray(b))s=c==null||c.a===0 -else s=!1 -if(s){r=b.length -if(r===0){if(!!a.$0)return a.$0()}else if(r===1){if(!!a.$1)return a.$1(b[0])}else if(r===2){if(!!a.$2)return a.$2(b[0],b[1])}else if(r===3){if(!!a.$3)return a.$3(b[0],b[1],b[2])}else if(r===4){if(!!a.$4)return a.$4(b[0],b[1],b[2],b[3])}else if(r===5)if(!!a.$5)return a.$5(b[0],b[1],b[2],b[3],b[4]) -q=a[""+"$"+r] -if(q!=null)return q.apply(a,b)}return A.hZ(a,b,c)}, -hZ(a,b,c){var s,r,q,p,o,n,m,l,k,j,i,h,g=Array.isArray(b)?b:A.bL(b,!0,t.z),f=g.length,e=a.$R -if(fn)return A.a3(a,g,null) -if(fe)return A.a3(a,g,c) -if(g===b)g=A.bL(g,!0,t.z) -l=Object.keys(q) -if(c==null)for(r=l.length,k=0;k>>0,s&1023|56320)}}throw A.b(A.E(a,0,1114111,null,null))}, +hI(a){var s=a.$thrownJsError if(s==null)return null -return A.ao(s)}, -eF(a,b){var s,r="index" -if(!A.fO(b))return new A.K(!0,b,r,null) -s=J.aI(a) -if(b<0||b>=s)return A.eU(b,s,a,r) -return A.i3(b,r)}, -jF(a,b,c){if(a>c)return A.G(a,0,c,"start",null) -if(b!=null)if(bc)return A.G(b,a,c,"end",null) -return new A.K(!0,b,"end",null)}, -jy(a){return new A.K(!0,a,null,null)}, -a(a){return A.h2(new Error(),a)}, -h2(a,b){var s -if(b==null)b=new A.R() -a.dartException=b -s=A.k4 -if("defineProperty" in Object){Object.defineProperty(a,"message",{get:s}) -a.name=""}else a.toString=s -return a}, -k4(){return J.aq(this.dartException)}, -aH(a){throw A.a(a)}, -h7(a,b){throw A.h2(b,a)}, -co(a){throw A.a(A.as(a))}, -S(a){var s,r,q,p,o,n -a=A.jZ(a.replace(String({}),"$receiver$")) +return A.aA(s)}, +eT(a,b){var s +if(a.$thrownJsError==null){s=new Error() +A.v(a,s) +a.$thrownJsError=s +s.stack=b.h(0)}}, +fN(a,b){var s,r="index" +if(!A.fy(b))return new A.H(!0,b,r,null) +s=J.ci(a) +if(b<0||b>=s)return A.e0(b,s,a,r) +return A.hK(b,r)}, +jv(a,b,c){if(a>c)return A.E(a,0,c,"start",null) +if(b!=null)if(bc)return A.E(b,a,c,"end",null) +return new A.H(!0,b,"end",null)}, +jp(a){return new A.H(!0,a,null,null)}, +b(a){return A.v(a,new Error())}, +v(a,b){var s +if(a==null)a=new A.P() +b.dartException=a +s=A.jT +if("defineProperty" in Object){Object.defineProperty(b,"message",{get:s}) +b.name=""}else b.toString=s +return b}, +jT(){return J.ak(this.dartException)}, +eA(a,b){throw A.v(a,b==null?new Error():b)}, +aD(a,b,c){var s +if(b==null)b=0 +if(c==null)c=0 +s=Error() +A.eA(A.iL(a,b,c),s)}, +iL(a,b,c){var s,r,q,p,o,n,m,l,k +if(typeof b=="string")s=b +else{r="[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";") +q=r.length +p=b +if(p>q){c=p/q|0 +p%=q}s=r[p]}o=typeof c=="string"?c:"modify;remove from;add to".split(";")[c] +n=t.j.b(a)?"list":"ByteData" +m=a.$flags|0 +l="a " +if((m&4)!==0)k="constant " +else if((m&2)!==0){k="unmodifiable " +l="an "}else k=(m&1)!==0?"fixed-length ":"" +return new A.b3("'"+s+"': Cannot "+o+" "+l+k+n)}, +dY(a){throw A.b(A.al(a))}, +Q(a){var s,r,q,p,o,n +a=A.jO(a.replace(String({}),"$receiver$")) s=a.match(/\\\$[a-zA-Z]+\\\$/g) -if(s==null)s=A.h([],t.s) +if(s==null)s=A.k([],t.s) r=s.indexOf("\\$arguments\\$") q=s.indexOf("\\$argumentsExpr\\$") p=s.indexOf("\\$expr\\$") o=s.indexOf("\\$method\\$") n=s.indexOf("\\$receiver\\$") -return new A.cU(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, -cV(a){return function($expr$){var $argumentsExpr$="$arguments$" +return new A.cI(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, +cJ(a){return function($expr$){var $argumentsExpr$="$arguments$" try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)}, -fc(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, -ei(a,b){var s=b==null,r=s?null:b.method -return new A.bJ(a,r,s?null:b.receiver)}, -ad(a){if(a==null)return new A.cO(a) -if(a instanceof A.aN)return A.ac(a,a.a) +eZ(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, +e3(a,b){var s=b==null,r=s?null:b.method +return new A.bD(a,r,s?null:b.receiver)}, +aj(a){if(a==null)return new A.cE(a) +if(a instanceof A.aK)return A.a5(a,a.a) if(typeof a!=="object")return a -if("dartException" in a)return A.ac(a,a.dartException) -return A.jx(a)}, -ac(a,b){if(t.Q.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a +if("dartException" in a)return A.a5(a,a.dartException) +return A.jo(a)}, +a5(a,b){if(t.C.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a return b}, -jx(a){var s,r,q,p,o,n,m,l,k,j,i,h,g +jo(a){var s,r,q,p,o,n,m,l,k,j,i,h,g if(!("message" in a))return a s=a.message if("number" in a&&typeof a.number=="number"){r=a.number q=r&65535 -if((B.c.U(r,16)&8191)===10)switch(q){case 438:return A.ac(a,A.ei(A.i(s)+" (Error "+q+")",null)) +if((B.c.a9(r,16)&8191)===10)switch(q){case 438:return A.a5(a,A.e3(A.i(s)+" (Error "+q+")",null)) case 445:case 5007:A.i(s) -return A.ac(a,new A.b1())}}if(a instanceof TypeError){p=$.h9() -o=$.ha() -n=$.hb() -m=$.hc() -l=$.hf() -k=$.hg() -j=$.he() -$.hd() -i=$.hi() -h=$.hh() -g=p.D(s) -if(g!=null)return A.ac(a,A.ei(s,g)) -else{g=o.D(s) +return A.a5(a,new A.aZ())}}if(a instanceof TypeError){p=$.fU() +o=$.fV() +n=$.fW() +m=$.fX() +l=$.h_() +k=$.h0() +j=$.fZ() +$.fY() +i=$.h2() +h=$.h1() +g=p.B(s) +if(g!=null)return A.a5(a,A.e3(s,g)) +else{g=o.B(s) if(g!=null){g.method="call" -return A.ac(a,A.ei(s,g))}else if(n.D(s)!=null||m.D(s)!=null||l.D(s)!=null||k.D(s)!=null||j.D(s)!=null||m.D(s)!=null||i.D(s)!=null||h.D(s)!=null)return A.ac(a,new A.b1())}return A.ac(a,new A.c0(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.b4() +return A.a5(a,A.e3(s,g))}else if(n.B(s)!=null||m.B(s)!=null||l.B(s)!=null||k.B(s)!=null||j.B(s)!=null||m.B(s)!=null||i.B(s)!=null||h.B(s)!=null)return A.a5(a,new A.aZ())}return A.a5(a,new A.bW(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.b1() s=function(b){try{return String(b)}catch(f){}return null}(a) -return A.ac(a,new A.K(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.b4() +return A.a5(a,new A.H(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.b1() return a}, -ao(a){var s -if(a instanceof A.aN)return a.b -if(a==null)return new A.bg(a) +aA(a){var s +if(a instanceof A.aK)return a.b +if(a==null)return new A.bc(a) s=a.$cachedTrace if(s!=null)return s -s=new A.bg(a) +s=new A.bc(a) if(typeof a==="object")a.$cachedTrace=s return s}, -h4(a){if(a==null)return J.Z(a) -if(typeof a=="object")return A.bY(a) -return J.Z(a)}, -jH(a,b){var s,r,q,p=a.length +fQ(a){if(a==null)return J.S(a) +if(typeof a=="object")return A.bR(a) +return J.S(a)}, +jx(a,b){var s,r,q,p=a.length for(s=0;s=0}, -jZ(a){if(/[[\]{}()*+?.\\^$|]/.test(a))return a.replace(/[[\]{}()*+?.\\^$|]/g,"\\$&") +jO(a){if(/[[\]{}()*+?.\\^$|]/.test(a))return a.replace(/[[\]{}()*+?.\\^$|]/g,"\\$&") return a}, -fW(a){return a}, -k2(a,b,c,d){var s,r,q,p=new A.d3(b,a,0),o=t.F,n=0,m="" +fH(a){return a}, +jR(a,b,c,d){var s,r,q,p=new A.cT(b,a,0),o=t.F,n=0,m="" for(;p.m();){s=p.d if(s==null)s=o.a(s) r=s.b q=r.index -m=m+A.i(A.fW(B.a.j(a,n,q)))+A.i(c.$1(s)) -n=q+r[0].length}p=m+A.i(A.fW(B.a.K(a,n))) +m=m+A.i(A.fH(B.a.i(a,n,q)))+A.i(c.$1(s)) +n=q+r[0].length}p=m+A.i(A.fH(B.a.K(a,n))) return p.charCodeAt(0)==0?p:p}, -cg:function cg(a,b){this.a=a +ca:function ca(a,b){this.a=a this.b=b}, -aL:function aL(a,b){this.a=a -this.$ti=b}, -aK:function aK(){}, -ag:function ag(a,b,c){this.a=a +aG:function aG(){}, +aI:function aI(a,b,c){this.a=a this.b=b this.$ti=c}, -cD:function cD(a,b,c,d,e){var _=this +c7:function c7(a,b,c){var _=this _.a=a -_.c=b -_.d=c -_.e=d -_.f=e}, -cP:function cP(a,b,c){this.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +aH:function aH(){}, +aJ:function aJ(a,b,c){this.a=a this.b=b -this.c=c}, -cU:function cU(a,b,c,d,e,f){var _=this +this.$ti=c}, +b0:function b0(){}, +cI:function cI(a,b,c,d,e,f){var _=this _.a=a _.b=b _.c=c _.d=d _.e=e _.f=f}, -b1:function b1(){}, -bJ:function bJ(a,b,c){this.a=a +aZ:function aZ(){}, +bD:function bD(a,b,c){this.a=a this.b=b this.c=c}, -c0:function c0(a){this.a=a}, -cO:function cO(a){this.a=a}, -aN:function aN(a,b){this.a=a +bW:function bW(a){this.a=a}, +cE:function cE(a){this.a=a}, +aK:function aK(a,b){this.a=a this.b=b}, -bg:function bg(a){this.a=a +bc:function bc(a){this.a=a this.b=null}, -af:function af(){}, -cs:function cs(){}, -ct:function ct(){}, -cT:function cT(){}, -cS:function cS(){}, -aJ:function aJ(a,b){this.a=a +a7:function a7(){}, +cl:function cl(){}, +cm:function cm(){}, +cH:function cH(){}, +cG:function cG(){}, +aF:function aF(a,b){this.a=a this.b=b}, -c8:function c8(a){this.a=a}, -bZ:function bZ(a){this.a=a}, -dp:function dp(){}, -N:function N(a){var _=this +bU:function bU(a){this.a=a}, +a9:function a9(a){var _=this _.a=0 _.f=_.e=_.d=_.c=_.b=null _.r=0 _.$ti=a}, -cG:function cG(a){this.a=a}, -cJ:function cJ(a,b){this.a=a +cA:function cA(a,b){this.a=a this.b=b this.c=null}, -O:function O(a,b){this.a=a +aa:function aa(a,b){this.a=a this.$ti=b}, -bK:function bK(a,b){var _=this +bF:function bF(a,b,c){var _=this _.a=a _.b=b -_.d=_.c=null}, -e1:function e1(a){this.a=a}, -e2:function e2(a){this.a=a}, -e3:function e3(a){this.a=a}, -bf:function bf(){}, -cf:function cf(){}, -cE:function cE(a,b){var _=this +_.c=c +_.d=null}, +aT:function aT(a,b){this.a=a +this.$ti=b}, +aS:function aS(a,b,c){var _=this _.a=a _.b=b -_.d=_.c=null}, -ce:function ce(a){this.b=a}, -d3:function d3(a,b,c){var _=this +_.c=c +_.d=null}, +dL:function dL(a){this.a=a}, +dM:function dM(a){this.a=a}, +dN:function dN(a){this.a=a}, +bb:function bb(){}, +c9:function c9(){}, +cw:function cw(a,b){var _=this +_.a=a +_.b=b +_.e=_.d=_.c=null}, +c8:function c8(a){this.b=a}, +cT:function cT(a,b,c){var _=this _.a=a _.b=b _.c=c _.d=null}, -j_(a){return a}, -hW(a){return new Int8Array(a)}, -hX(a){return new Uint8Array(a)}, -V(a,b,c){if(a>>>0!==a||a>=c)throw A.a(A.eF(b,a))}, -iW(a,b,c){var s +iM(a){return a}, +hF(a){return new Int8Array(a)}, +hG(a){return new Uint8Array(a)}, +ad(a,b,c){if(a>>>0!==a||a>=c)throw A.b(A.fN(b,a))}, +iJ(a,b,c){var s if(!(a>>>0!==a))s=b>>>0!==b||a>b||b>c else s=!0 -if(s)throw A.a(A.jF(a,b,c)) +if(s)throw A.b(A.jv(a,b,c)) return b}, +an:function an(){}, +aX:function aX(){}, +bG:function bG(){}, +ao:function ao(){}, +aV:function aV(){}, +aW:function aW(){}, +bH:function bH(){}, +bI:function bI(){}, +bJ:function bJ(){}, +bK:function bK(){}, +bL:function bL(){}, bM:function bM(){}, -aZ:function aZ(){}, bN:function bN(){}, -aw:function aw(){}, -aX:function aX(){}, aY:function aY(){}, bO:function bO(){}, -bP:function bP(){}, -bQ:function bQ(){}, -bR:function bR(){}, -bS:function bS(){}, -bT:function bT(){}, -bU:function bU(){}, -b_:function b_(){}, -b0:function b0(){}, -bb:function bb(){}, -bc:function bc(){}, -bd:function bd(){}, -be:function be(){}, -f7(a,b){var s=b.c -return s==null?b.c=A.er(a,b.x,!0):s}, -em(a,b){var s=b.c -return s==null?b.c=A.bj(a,"a0",[b.x]):s}, -f8(a){var s=a.w -if(s===6||s===7||s===8)return A.f8(a.x) -return s===12||s===13}, -i4(a){return a.as}, -bt(a){return A.ck(v.typeUniverse,a,!1)}, -aa(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w +b7:function b7(){}, +b8:function b8(){}, +b9:function b9(){}, +ba:function ba(){}, +e8(a,b){var s=b.c +return s==null?b.c=A.bf(a,"V",[b.x]):s}, +eV(a){var s=a.w +if(s===6||s===7)return A.eV(a.x) +return s===11||s===12}, +hL(a){return a.as}, +bp(a){return A.dm(v.typeUniverse,a,!1)}, +ae(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w switch(a0){case 5:case 1:case 2:case 3:case 4:return a2 case 6:s=a2.x -r=A.aa(a1,s,a3,a4) +r=A.ae(a1,s,a3,a4) if(r===s)return a2 -return A.fr(a1,r,!0) +return A.fb(a1,r,!0) case 7:s=a2.x -r=A.aa(a1,s,a3,a4) -if(r===s)return a2 -return A.er(a1,r,!0) -case 8:s=a2.x -r=A.aa(a1,s,a3,a4) +r=A.ae(a1,s,a3,a4) if(r===s)return a2 -return A.fp(a1,r,!0) -case 9:q=a2.y -p=A.aD(a1,q,a3,a4) +return A.fa(a1,r,!0) +case 8:q=a2.y +p=A.ax(a1,q,a3,a4) if(p===q)return a2 -return A.bj(a1,a2.x,p) -case 10:o=a2.x -n=A.aa(a1,o,a3,a4) +return A.bf(a1,a2.x,p) +case 9:o=a2.x +n=A.ae(a1,o,a3,a4) m=a2.y -l=A.aD(a1,m,a3,a4) +l=A.ax(a1,m,a3,a4) if(n===o&&l===m)return a2 -return A.ep(a1,n,l) -case 11:k=a2.x +return A.ec(a1,n,l) +case 10:k=a2.x j=a2.y -i=A.aD(a1,j,a3,a4) +i=A.ax(a1,j,a3,a4) if(i===j)return a2 -return A.fq(a1,k,i) -case 12:h=a2.x -g=A.aa(a1,h,a3,a4) +return A.fc(a1,k,i) +case 11:h=a2.x +g=A.ae(a1,h,a3,a4) f=a2.y -e=A.ju(a1,f,a3,a4) +e=A.jl(a1,f,a3,a4) if(g===h&&e===f)return a2 -return A.fo(a1,g,e) -case 13:d=a2.y +return A.f9(a1,g,e) +case 12:d=a2.y a4+=d.length -c=A.aD(a1,d,a3,a4) +c=A.ax(a1,d,a3,a4) o=a2.x -n=A.aa(a1,o,a3,a4) +n=A.ae(a1,o,a3,a4) if(c===d&&n===o)return a2 -return A.eq(a1,n,c,!0) -case 14:b=a2.x +return A.ed(a1,n,c,!0) +case 13:b=a2.x if(b") -for(r=1;r") +for(r=1;r=0)p+=" "+r[q];++q}return p+"})"}, -fM(a3,a4,a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2=", " -if(a5!=null){s=a5.length -if(a4==null){a4=A.h([],t.s) -r=null}else r=a4.length -q=a4.length -for(p=s;p>0;--p)a4.push("T"+(q+p)) -for(o=t.X,n=t._,m="<",l="",p=0;p0){a0+=a1+"[" -for(a1="",p=0;p0){a0+=a1+"{" -for(a1="",p=0;p "+a}, -C(a,b){var s,r,q,p,o,n,m=a.w +fw(a1,a2,a3){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a=", ",a0=null +if(a3!=null){s=a3.length +if(a2==null)a2=A.k([],t.s) +else a0=a2.length +r=a2.length +for(q=s;q>0;--q)a2.push("T"+(r+q)) +for(p=t.X,o="<",n="",q=0;q0){c+=b+"[" +for(b="",q=0;q0){c+=b+"{" +for(b="",q=0;q "+d}, +D(a,b){var s,r,q,p,o,n,m=a.w if(m===5)return"erased" if(m===2)return"dynamic" if(m===3)return"void" if(m===1)return"Never" if(m===4)return"any" -if(m===6)return A.C(a.x,b) -if(m===7){s=a.x -r=A.C(s,b) +if(m===6){s=a.x +r=A.D(s,b) q=s.w -return(q===12||q===13?"("+r+")":r)+"?"}if(m===8)return"FutureOr<"+A.C(a.x,b)+">" -if(m===9){p=A.jw(a.x) +return(q===11||q===12?"("+r+")":r)+"?"}if(m===7)return"FutureOr<"+A.D(a.x,b)+">" +if(m===8){p=A.jn(a.x) o=a.y -return o.length>0?p+("<"+A.fT(o,b)+">"):p}if(m===11)return A.jo(a,b) -if(m===12)return A.fM(a,b,null) -if(m===13)return A.fM(a.x,b,a.y) -if(m===14){n=a.x +return o.length>0?p+("<"+A.fE(o,b)+">"):p}if(m===10)return A.jd(a,b) +if(m===11)return A.fw(a,b,null) +if(m===12)return A.fw(a.x,b,a.y) +if(m===13){n=a.x return b[b.length-1-n]}return"?"}, -jw(a){var s=v.mangledGlobalNames[a] +jn(a){var s=v.mangledGlobalNames[a] if(s!=null)return s return"minified:"+a}, -iy(a,b){var s=a.tR[b] +ie(a,b){var s=a.tR[b] for(;typeof s=="string";)s=a.tR[s] return s}, -ix(a,b){var s,r,q,p,o,n=a.eT,m=n[b] -if(m==null)return A.ck(a,b,!1) +id(a,b){var s,r,q,p,o,n=a.eT,m=n[b] +if(m==null)return A.dm(a,b,!1) else if(typeof m=="number"){s=m -r=A.bk(a,5,"#") -q=A.dI(s) +r=A.bg(a,5,"#") +q=A.dv(s) for(p=0;p0)p+="<"+A.bi(c)+">" +bf(a,b,c){var s,r,q,p=b +if(c.length>0)p+="<"+A.be(c)+">" s=a.eC.get(p) if(s!=null)return s -r=new A.H(null,null) -r.w=9 +r=new A.K(null,null) +r.w=8 r.x=b r.y=c if(c.length>0)r.c=c[0] r.as=p -q=A.U(a,r) +q=A.a1(a,r) a.eC.set(p,q) return q}, -ep(a,b,c){var s,r,q,p,o,n -if(b.w===10){s=b.x +ec(a,b,c){var s,r,q,p,o,n +if(b.w===9){s=b.x r=b.y.concat(c)}else{r=c -s=b}q=s.as+(";<"+A.bi(r)+">") +s=b}q=s.as+(";<"+A.be(r)+">") p=a.eC.get(q) if(p!=null)return p -o=new A.H(null,null) -o.w=10 +o=new A.K(null,null) +o.w=9 o.x=s o.y=r o.as=q -n=A.U(a,o) +n=A.a1(a,o) a.eC.set(q,n) return n}, -fq(a,b,c){var s,r,q="+"+(b+"("+A.bi(c)+")"),p=a.eC.get(q) +fc(a,b,c){var s,r,q="+"+(b+"("+A.be(c)+")"),p=a.eC.get(q) if(p!=null)return p -s=new A.H(null,null) -s.w=11 +s=new A.K(null,null) +s.w=10 s.x=b s.y=c s.as=q -r=A.U(a,s) +r=A.a1(a,s) a.eC.set(q,r) return r}, -fo(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.bi(m) +f9(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.be(m) if(j>0){s=l>0?",":"" -g+=s+"["+A.bi(k)+"]"}if(h>0){s=l>0?",":"" -g+=s+"{"+A.ip(i)+"}"}r=n+(g+")") +g+=s+"["+A.be(k)+"]"}if(h>0){s=l>0?",":"" +g+=s+"{"+A.i6(i)+"}"}r=n+(g+")") q=a.eC.get(r) if(q!=null)return q -p=new A.H(null,null) -p.w=12 +p=new A.K(null,null) +p.w=11 p.x=b p.y=c p.as=r -o=A.U(a,p) +o=A.a1(a,p) a.eC.set(r,o) return o}, -eq(a,b,c,d){var s,r=b.as+("<"+A.bi(c)+">"),q=a.eC.get(r) +ed(a,b,c,d){var s,r=b.as+("<"+A.be(c)+">"),q=a.eC.get(r) if(q!=null)return q -s=A.ir(a,b,c,r,d) +s=A.i8(a,b,c,r,d) a.eC.set(r,s) return s}, -ir(a,b,c,d,e){var s,r,q,p,o,n,m,l +i8(a,b,c,d,e){var s,r,q,p,o,n,m,l if(e){s=c.length -r=A.dI(s) +r=A.dv(s) for(q=0,p=0;p0){n=A.aa(a,b,r,0) -m=A.aD(a,c,r,0) -return A.eq(a,n,m,c!==m)}}l=new A.H(null,null) -l.w=13 +if(o.w===1){r[p]=o;++q}}if(q>0){n=A.ae(a,b,r,0) +m=A.ax(a,c,r,0) +return A.ed(a,n,m,c!==m)}}l=new A.K(null,null) +l.w=12 l.x=b l.y=c l.as=d -return A.U(a,l)}, -fk(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, -fm(a){var s,r,q,p,o,n,m,l=a.r,k=a.s +return A.a1(a,l)}, +f5(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, +f7(a){var s,r,q,p,o,n,m,l=a.r,k=a.s for(s=l.length,r=0;r=48&&q<=57)r=A.ih(r+1,q,l,k) -else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.fl(a,r,l,k,!1) -else if(q===46)r=A.fl(a,r,l,k,!0) +if(q>=48&&q<=57)r=A.i0(r+1,q,l,k) +else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.f6(a,r,l,k,!1) +else if(q===46)r=A.f6(a,r,l,k,!0) else{++r switch(q){case 44:break case 58:k.push(!1) break case 33:k.push(!0) break -case 59:k.push(A.a9(a.u,a.e,k.pop())) +case 59:k.push(A.ac(a.u,a.e,k.pop())) break -case 94:k.push(A.iu(a.u,k.pop())) +case 94:k.push(A.ia(a.u,k.pop())) break -case 35:k.push(A.bk(a.u,5,"#")) +case 35:k.push(A.bg(a.u,5,"#")) break -case 64:k.push(A.bk(a.u,2,"@")) +case 64:k.push(A.bg(a.u,2,"@")) break -case 126:k.push(A.bk(a.u,3,"~")) +case 126:k.push(A.bg(a.u,3,"~")) break case 60:k.push(a.p) a.p=k.length break -case 62:A.ij(a,k) -break -case 38:A.ii(a,k) +case 62:A.i2(a,k) break -case 42:p=a.u -k.push(A.fr(p,A.a9(p,a.e,k.pop()),a.n)) +case 38:A.i1(a,k) break case 63:p=a.u -k.push(A.er(p,A.a9(p,a.e,k.pop()),a.n)) +k.push(A.fb(p,A.ac(p,a.e,k.pop()),a.n)) break case 47:p=a.u -k.push(A.fp(p,A.a9(p,a.e,k.pop()),a.n)) +k.push(A.fa(p,A.ac(p,a.e,k.pop()),a.n)) break case 40:k.push(-3) k.push(a.p) a.p=k.length break -case 41:A.ig(a,k) +case 41:A.i_(a,k) break case 91:k.push(a.p) a.p=k.length break case 93:o=k.splice(a.p) -A.fn(a.u,a.e,o) +A.f8(a.u,a.e,o) a.p=k.pop() k.push(o) k.push(-1) @@ -1213,7 +1142,7 @@ case 123:k.push(a.p) a.p=k.length break case 125:o=k.splice(a.p) -A.il(a.u,a.e,o) +A.i4(a.u,a.e,o) a.p=k.pop() k.push(o) k.push(-2) @@ -1226,13 +1155,13 @@ a.p=k.length r=n+1 break default:throw"Bad character "+q}}}m=k.pop() -return A.a9(a.u,a.e,m)}, -ih(a,b,c,d){var s,r,q=b-48 +return A.ac(a.u,a.e,m)}, +i0(a,b,c,d){var s,r,q=b-48 for(s=c.length;a=48&&r<=57))break q=q*10+(r-48)}d.push(q) return a}, -fl(a,b,c,d,e){var s,r,q,p,o,n,m=b+1 +f6(a,b,c,d,e){var s,r,q,p,o,n,m=b+1 for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57 @@ -1240,109 +1169,96 @@ else q=!0 if(!q)break}}p=c.substring(b,m) if(e){s=a.u o=a.e -if(o.w===10)o=o.x -n=A.iy(s,o.x)[p] -if(n==null)A.aH('No "'+p+'" in "'+A.i4(o)+'"') -d.push(A.bl(s,o,n))}else d.push(p) +if(o.w===9)o=o.x +n=A.ie(s,o.x)[p] +if(n==null)A.eA('No "'+p+'" in "'+A.hL(o)+'"') +d.push(A.bh(s,o,n))}else d.push(p) return m}, -ij(a,b){var s,r=a.u,q=A.fj(a,b),p=b.pop() -if(typeof p=="string")b.push(A.bj(r,p,q)) -else{s=A.a9(r,a.e,p) -switch(s.w){case 12:b.push(A.eq(r,s,q,a.n)) +i2(a,b){var s,r=a.u,q=A.f4(a,b),p=b.pop() +if(typeof p=="string")b.push(A.bf(r,p,q)) +else{s=A.ac(r,a.e,p) +switch(s.w){case 11:b.push(A.ed(r,s,q,a.n)) break -default:b.push(A.ep(r,s,q)) +default:b.push(A.ec(r,s,q)) break}}}, -ig(a,b){var s,r,q,p,o,n=null,m=a.u,l=b.pop() -if(typeof l=="number")switch(l){case-1:s=b.pop() -r=n +i_(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null +if(typeof o=="number")switch(o){case-1:n=b.pop() break -case-2:r=b.pop() -s=n +case-2:m=b.pop() break -default:b.push(l) -r=n -s=r -break}else{b.push(l) -r=n -s=r}q=A.fj(a,b) -l=b.pop() -switch(l){case-3:l=b.pop() -if(s==null)s=m.sEA -if(r==null)r=m.sEA -p=A.a9(m,a.e,l) -o=new A.cb() -o.a=q -o.b=s -o.c=r -b.push(A.fo(m,p,o)) +default:b.push(o) +break}else b.push(o) +s=A.f4(a,b) +o=b.pop() +switch(o){case-3:o=b.pop() +if(n==null)n=p.sEA +if(m==null)m=p.sEA +r=A.ac(p,a.e,o) +q=new A.c4() +q.a=s +q.b=n +q.c=m +b.push(A.f9(p,r,q)) return -case-4:b.push(A.fq(m,b.pop(),q)) +case-4:b.push(A.fc(p,b.pop(),s)) return -default:throw A.a(A.by("Unexpected state under `()`: "+A.i(l)))}}, -ii(a,b){var s=b.pop() -if(0===s){b.push(A.bk(a.u,1,"0&")) -return}if(1===s){b.push(A.bk(a.u,4,"1&")) -return}throw A.a(A.by("Unexpected extended operation "+A.i(s)))}, -fj(a,b){var s=b.splice(a.p) -A.fn(a.u,a.e,s) +default:throw A.b(A.bs("Unexpected state under `()`: "+A.i(o)))}}, +i1(a,b){var s=b.pop() +if(0===s){b.push(A.bg(a.u,1,"0&")) +return}if(1===s){b.push(A.bg(a.u,4,"1&")) +return}throw A.b(A.bs("Unexpected extended operation "+A.i(s)))}, +f4(a,b){var s=b.splice(a.p) +A.f8(a.u,a.e,s) a.p=b.pop() return s}, -a9(a,b,c){if(typeof c=="string")return A.bj(a,c,a.sEA) +ac(a,b,c){if(typeof c=="string")return A.bf(a,c,a.sEA) else if(typeof c=="number"){b.toString -return A.ik(a,b,c)}else return c}, -fn(a,b,c){var s,r=c.length -for(s=0;s0?new Array(q):v.typeUniverse.sEA -for(o=0;o0?new Array(a):v.typeUniverse.sEA}, -H:function H(a,b){var _=this +dv(a){return a>0?new Array(a):v.typeUniverse.sEA}, +K:function K(a,b){var _=this _.a=a _.b=b _.r=_.f=_.d=_.c=null _.w=0 _.as=_.Q=_.z=_.y=_.x=null}, -cb:function cb(){this.c=this.b=this.a=null}, -dA:function dA(a){this.a=a}, -ca:function ca(){}, -bh:function bh(a){this.a=a}, -ia(){var s,r,q={} -if(self.scheduleImmediate!=null)return A.jz() -if(self.MutationObserver!=null&&self.document!=null){s=self.document.createElement("div") -r=self.document.createElement("span") -q.a=null -new self.MutationObserver(A.aF(new A.d5(q),1)).observe(s,{childList:true}) -return new A.d4(q,s,r)}else if(self.setImmediate!=null)return A.jA() -return A.jB()}, -ib(a){self.scheduleImmediate(A.aF(new A.d6(a),0))}, -ic(a){self.setImmediate(A.aF(new A.d7(a),0))}, -id(a){A.im(0,a)}, -im(a,b){var s=new A.dy() -s.bf(a,b) +c4:function c4(){this.c=this.b=this.a=null}, +dl:function dl(a){this.a=a}, +c3:function c3(){}, +bd:function bd(a){this.a=a}, +hW(){var s,r,q +if(self.scheduleImmediate!=null)return A.jq() +if(self.MutationObserver!=null&&self.document!=null){s={} +r=self.document.createElement("div") +q=self.document.createElement("span") +s.a=null +new self.MutationObserver(A.az(new A.cV(s),1)).observe(r,{childList:true}) +return new A.cU(s,r,q)}else if(self.setImmediate!=null)return A.jr() +return A.js()}, +hX(a){self.scheduleImmediate(A.az(new A.cW(a),0))}, +hY(a){self.setImmediate(A.az(new A.cX(a),0))}, +hZ(a){A.i5(0,a)}, +i5(a,b){var s=new A.dj() +s.b8(a,b) return s}, -fR(a){return new A.c5(new A.v($.r,a.i("v<0>")),a.i("c5<0>"))}, -fJ(a,b){a.$2(0,null) +fC(a){return new A.c_(new A.w($.p,a.j("w<0>")),a.j("c_<0>"))}, +fu(a,b){a.$2(0,null) b.b=!0 return b.a}, -fG(a,b){A.iU(a,b)}, -fI(a,b){b.ad(a)}, -fH(a,b){b.ae(A.ad(a),A.ao(a))}, -iU(a,b){var s,r,q=new A.dK(b),p=new A.dL(b) -if(a instanceof A.v)a.aG(q,p,t.z) +fr(a,b){A.iH(a,b)}, +ft(a,b){b.ab(a)}, +fs(a,b){b.ac(A.aj(a),A.aA(a))}, +iH(a,b){var s,r,q=new A.dx(b),p=new A.dy(b) +if(a instanceof A.w)a.aD(q,p,t.z) else{s=t.z -if(a instanceof A.v)a.ar(q,p,s) -else{r=new A.v($.r,t.e) +if(a instanceof A.w)a.an(q,p,s) +else{r=new A.w($.p,t.c) r.a=8 r.c=a -r.aG(q,p,s)}}}, -fY(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e) +r.aD(q,p,s)}}}, +fJ(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e) break}catch(r){e=r d=c}}}}(a,1) -return $.r.b1(new A.dY(s))}, -cp(a,b){var s=A.cn(a,"error",t.K) -return new A.bz(s,b==null?A.eN(a):b)}, -eN(a){var s -if(t.Q.b(a)){s=a.gR() -if(s!=null)return s}return B.H}, -fi(a,b){var s,r -for(;s=a.a,(s&4)!==0;)a=a.c -s|=b.a&1 -a.a=s -if((s&24)!==0){r=b.aa() -b.S(a) -A.ba(b,r)}else{r=b.c -b.aE(a) -a.a9(r)}}, -ie(a,b){var s,r,q={},p=q.a=a -for(;s=p.a,(s&4)!==0;){p=p.c -q.a=p}if((s&24)===0){r=b.c -b.aE(p) -q.a.a9(r) -return}if((s&16)===0&&b.c==null){b.S(p) +return $.p.aW(new A.dI(s))}, +e_(a){var s +if(t.C.b(a)){s=a.gJ() +if(s!=null)return s}return B.f}, +iW(a,b){if($.p===B.d)return null +return null}, +iX(a,b){if($.p!==B.d)A.iW(a,b) +if(b==null)if(t.C.b(a)){b=a.gJ() +if(b==null){A.eT(a,B.f) +b=B.f}}else b=B.f +else if(t.C.b(a))A.eT(a,b) +return new A.I(a,b)}, +ea(a,b,c){var s,r,q,p={},o=p.a=a +for(;s=o.a,(s&4)!==0;){o=o.c +p.a=o}if(o===b){s=A.hM() +b.a2(new A.I(new A.H(!0,o,null,"Cannot complete a future with itself"),s)) +return}r=b.a&1 +s=o.a=s|r +if((s&24)===0){q=b.c +b.a=b.a&1|4 +b.c=o +o.aA(q) +return}if(!c)if(b.c==null)o=(s&16)===0||r!==0 +else o=!1 +else o=!0 +if(o){q=b.S() +b.R(p.a) +A.au(b,q) return}b.a^=2 -A.aC(null,null,b.b,new A.dd(q,b))}, -ba(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a +A.cf(null,null,b.b,new A.d2(p,b))}, +au(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a for(;!0;){s={} r=f.a q=(r&16)===0 p=!q if(b==null){if(p&&(r&1)===0){f=f.c -A.eB(f.a,f.b)}return}s.a=b +A.eq(f.a,f.b)}return}s.a=b o=b.a for(f=b;o!=null;f=o,o=n){f.a=null -A.ba(g.a,f) +A.au(g.a,f) s.a=o n=o.a}r=g.a m=r.c @@ -1511,17 +1427,17 @@ l=(l&1)!==0||(l&15)===8}else l=!0 if(l){k=f.b.b if(p){r=r.b===k r=!(r||r)}else r=!1 -if(r){A.eB(m.a,m.b) -return}j=$.r -if(j!==k)$.r=k +if(r){A.eq(m.a,m.b) +return}j=$.p +if(j!==k)$.p=k else j=null f=f.c -if((f&15)===8)new A.dk(s,g,p).$0() -else if(q){if((f&1)!==0)new A.dj(s,m).$0()}else if((f&2)!==0)new A.di(g,s).$0() -if(j!=null)$.r=j +if((f&15)===8)new A.d6(s,g,p).$0() +else if(q){if((f&1)!==0)new A.d5(s,m).$0()}else if((f&2)!==0)new A.d4(g,s).$0() +if(j!=null)$.p=j f=s.c -if(f instanceof A.v){r=s.a.$ti -r=r.i("a0<2>").b(f)||!r.y[1].b(f)}else r=!1 +if(f instanceof A.w){r=s.a.$ti +r=r.j("V<2>").b(f)||!r.y[1].b(f)}else r=!1 if(r){i=s.a.b if((f.a&24)!==0){h=i.c i.c=null @@ -1529,7 +1445,7 @@ b=i.T(h) i.a=f.a&30|i.a&1 i.c=f.c g.a=f -continue}else A.fi(f,i) +continue}else A.ea(f,i,!0) return}}i=s.a.b h=i.c i.c=null @@ -1540,171 +1456,169 @@ if(!f){i.a=8 i.c=r}else{i.a=i.a&1|16 i.c=r}g.a=i f=i}}, -jp(a,b){if(t.C.b(a))return b.b1(a) +je(a,b){if(t.Q.b(a))return b.aW(a) if(t.v.b(a))return a -throw A.a(A.eM(a,"onError",u.c))}, -jm(){var s,r -for(s=$.aB;s!=null;s=$.aB){$.bs=null +throw A.b(A.eE(a,"onError",u.c))}, +jb(){var s,r +for(s=$.aw;s!=null;s=$.aw){$.bn=null r=s.b -$.aB=r -if(r==null)$.br=null +$.aw=r +if(r==null)$.bm=null s.a.$0()}}, -jt(){$.eA=!0 -try{A.jm()}finally{$.bs=null -$.eA=!1 -if($.aB!=null)$.eL().$1(A.h_())}}, -fV(a){var s=new A.c6(a),r=$.br -if(r==null){$.aB=$.br=s -if(!$.eA)$.eL().$1(A.h_())}else $.br=r.b=s}, -js(a){var s,r,q,p=$.aB -if(p==null){A.fV(a) -$.bs=$.br -return}s=new A.c6(a) -r=$.bs +jk(){$.ep=!0 +try{A.jb()}finally{$.bn=null +$.ep=!1 +if($.aw!=null)$.eC().$1(A.fL())}}, +fG(a){var s=new A.c0(a),r=$.bm +if(r==null){$.aw=$.bm=s +if(!$.ep)$.eC().$1(A.fL())}else $.bm=r.b=s}, +jh(a){var s,r,q,p=$.aw +if(p==null){A.fG(a) +$.bn=$.bm +return}s=new A.c0(a) +r=$.bn if(r==null){s.b=p -$.aB=$.bs=s}else{q=r.b +$.aw=$.bn=s}else{q=r.b s.b=q -$.bs=r.b=s -if(q==null)$.br=s}}, -k_(a){var s=null,r=$.r -if(B.d===r){A.aC(s,s,B.d,a) -return}A.aC(s,s,r,r.aJ(a))}, -ka(a){A.cn(a,"stream",t.K) -return new A.ci()}, -eB(a,b){A.js(new A.dW(a,b))}, -fS(a,b,c,d){var s,r=$.r +$.bn=r.b=s +if(q==null)$.bm=s}}, +k_(a){A.et(a,"stream",t.K) +return new A.cc()}, +eq(a,b){A.jh(new A.dG(a,b))}, +fD(a,b,c,d){var s,r=$.p if(r===c)return d.$0() -$.r=c +$.p=c s=r try{r=d.$0() -return r}finally{$.r=s}}, -jr(a,b,c,d,e){var s,r=$.r +return r}finally{$.p=s}}, +jg(a,b,c,d,e){var s,r=$.p if(r===c)return d.$1(e) -$.r=c +$.p=c s=r try{r=d.$1(e) -return r}finally{$.r=s}}, -jq(a,b,c,d,e,f){var s,r=$.r +return r}finally{$.p=s}}, +jf(a,b,c,d,e,f){var s,r=$.p if(r===c)return d.$2(e,f) -$.r=c +$.p=c s=r try{r=d.$2(e,f) -return r}finally{$.r=s}}, -aC(a,b,c,d){if(B.d!==c)d=c.aJ(d) -A.fV(d)}, -d5:function d5(a){this.a=a}, -d4:function d4(a,b,c){this.a=a +return r}finally{$.p=s}}, +cf(a,b,c,d){if(B.d!==c){d=c.bs(d) +d=d}A.fG(d)}, +cV:function cV(a){this.a=a}, +cU:function cU(a,b,c){this.a=a this.b=b this.c=c}, -d6:function d6(a){this.a=a}, -d7:function d7(a){this.a=a}, -dy:function dy(){}, -dz:function dz(a,b){this.a=a +cW:function cW(a){this.a=a}, +cX:function cX(a){this.a=a}, +dj:function dj(){}, +dk:function dk(a,b){this.a=a this.b=b}, -c5:function c5(a,b){this.a=a +c_:function c_(a,b){this.a=a this.b=!1 this.$ti=b}, -dK:function dK(a){this.a=a}, -dL:function dL(a){this.a=a}, -dY:function dY(a){this.a=a}, -bz:function bz(a,b){this.a=a +dx:function dx(a){this.a=a}, +dy:function dy(a){this.a=a}, +dI:function dI(a){this.a=a}, +I:function I(a,b){this.a=a this.b=b}, -c7:function c7(){}, -b7:function b7(a,b){this.a=a +c1:function c1(){}, +b4:function b4(a,b){this.a=a this.$ti=b}, -az:function az(a,b,c,d,e){var _=this +at:function at(a,b,c,d,e){var _=this _.a=null _.b=a _.c=b _.d=c _.e=d _.$ti=e}, -v:function v(a,b){var _=this +w:function w(a,b){var _=this _.a=0 _.b=a _.c=null _.$ti=b}, -da:function da(a,b){this.a=a +d_:function d_(a,b){this.a=a this.b=b}, -dh:function dh(a,b){this.a=a +d3:function d3(a,b){this.a=a this.b=b}, -de:function de(a){this.a=a}, -df:function df(a){this.a=a}, -dg:function dg(a,b,c){this.a=a -this.b=b -this.c=c}, -dd:function dd(a,b){this.a=a +d2:function d2(a,b){this.a=a this.b=b}, -dc:function dc(a,b){this.a=a +d1:function d1(a,b){this.a=a this.b=b}, -db:function db(a,b,c){this.a=a -this.b=b -this.c=c}, -dk:function dk(a,b,c){this.a=a +d0:function d0(a,b){this.a=a +this.b=b}, +d6:function d6(a,b,c){this.a=a this.b=b this.c=c}, -dl:function dl(a){this.a=a}, -dj:function dj(a,b){this.a=a +d7:function d7(a,b){this.a=a this.b=b}, -di:function di(a,b){this.a=a +d8:function d8(a){this.a=a}, +d5:function d5(a,b){this.a=a +this.b=b}, +d4:function d4(a,b){this.a=a this.b=b}, -c6:function c6(a){this.a=a +c0:function c0(a){this.a=a this.b=null}, -ci:function ci(){}, -dJ:function dJ(){}, -dW:function dW(a,b){this.a=a +cc:function cc(){}, +dw:function dw(){}, +dG:function dG(a,b){this.a=a this.b=b}, -dq:function dq(){}, -dr:function dr(a,b){this.a=a +db:function db(){}, +dc:function dc(a,b){this.a=a this.b=b}, -f_(a,b,c){return A.jH(a,new A.N(b.i("@<0>").A(c).i("N<1,2>")))}, -ej(a,b){return new A.N(a.i("@<0>").A(b).i("N<1,2>"))}, -ek(a){var s,r={} -if(A.eI(a))return"{...}" -s=new A.y("") -try{$.ap.push(a) +eN(a,b,c){return A.jx(a,new A.a9(b.j("@<0>").C(c).j("a9<1,2>")))}, +e4(a,b){return new A.a9(a.j("@<0>").C(b).j("a9<1,2>"))}, +hx(a){var s,r=A.a2(a),q=new J.U(a,a.length,r.j("U<1>")) +if(q.m()){s=q.d +return s==null?r.c.a(s):s}return null}, +e5(a){var s,r +if(A.ey(a))return"{...}" +s=new A.A("") +try{r={} +$.ai.push(a) s.a+="{" r.a=!0 -a.C(0,new A.cK(r,s)) -s.a+="}"}finally{$.ap.pop()}r=s.a +a.F(0,new A.cB(r,s)) +s.a+="}"}finally{$.ai.pop()}r=s.a return r.charCodeAt(0)==0?r:r}, e:function e(){}, -P:function P(){}, -cK:function cK(a,b){this.a=a +O:function O(){}, +cB:function cB(a,b){this.a=a this.b=b}, -cl:function cl(){}, -aW:function aW(){}, -a7:function a7(a,b){this.a=a +ce:function ce(){}, +aU:function aU(){}, +as:function as(a,b){this.a=a this.$ti=b}, -bm:function bm(){}, -jn(a,b){var s,r,q,p=null -try{p=JSON.parse(a)}catch(r){s=A.ad(r) -q=A.z(String(s),null,null) -throw A.a(q)}q=A.dM(p) +ap:function ap(){}, +bi:function bi(){}, +jc(a,b){var s,r,q,p=null +try{p=JSON.parse(a)}catch(r){s=A.aj(r) +q=A.y(String(s),null,null) +throw A.b(q)}q=A.dz(p) return q}, -dM(a){var s +dz(a){var s if(a==null)return null if(typeof a!="object")return a -if(!Array.isArray(a))return new A.cc(a,Object.create(null)) -for(s=0;s")) -for(s=J.L(a);s.m();)r.push(s.gp()) -if(b)return r -return J.eg(r)}, -bL(a,b,c){var s=A.hT(a,c) -return s}, -hT(a,b){var s,r -if(Array.isArray(a))return A.h(a.slice(0),b.i("o<0>")) -s=A.h([],b.i("o<0>")) -for(r=J.L(a);r.m();)s.push(r.gp()) -return s}, -fb(a,b,c){var s,r -A.f5(b,"start") +hE(a,b,c){var s,r,q=A.k([],c.j("o<0>")) +for(s=a.length,r=0;r")) +for(s=J.aE(a);s.m();)r.push(s.gn()) +return r}, +eY(a,b,c){var s,r +A.e6(b,"start") if(c!=null){s=c-b -if(s<0)throw A.a(A.G(c,b,null,"end",null)) -if(s===0)return""}r=A.i5(a,b,c) +if(s<0)throw A.b(A.E(c,b,null,"end",null)) +if(s===0)return""}r=A.hN(a,b,c) return r}, -i5(a,b,c){var s=a.length +hN(a,b,c){var s=a.length if(b>=s)return"" -return A.i2(a,b,c==null||c>s?s:c)}, -f6(a,b){return new A.cE(a,A.eZ(a,!1,b,!1,!1,!1))}, -fa(a,b,c){var s=J.L(b) +return A.hJ(a,b,c==null||c>s?s:c)}, +eU(a,b){return new A.cw(a,A.eL(a,!1,b,!1,!1,""))}, +eX(a,b,c){var s=J.aE(b) if(!s.m())return a -if(c.length===0){do a+=A.i(s.gp()) -while(s.m())}else{a+=A.i(s.gp()) -for(;s.m();)a=a+c+A.i(s.gp())}return a}, -f1(a,b){return new A.bV(a,b.gbN(),b.gbQ(),b.gbO())}, -fz(a,b,c,d){var s,r,q,p,o,n="0123456789ABCDEF" -if(c===B.e){s=$.hk() +if(c.length===0){do a+=A.i(s.gn()) +while(s.m())}else{a+=A.i(s.gn()) +for(;s.m();)a=a+c+A.i(s.gn())}return a}, +fk(a,b,c,d){var s,r,q,p,o,n="0123456789ABCDEF" +if(c===B.e){s=$.h4() s=s.b.test(b)}else s=!1 if(s)return b -r=B.G.I(b) +r=B.y.G(b) for(s=r.length,q=0,p="";q>>4]&1<<(o&15))!==0)p+=A.Q(o) +if(o<128&&(u.f.charCodeAt(o)&a)!==0)p+=A.Y(o) else p=d&&o===32?p+"+":p+"%"+n[o>>>4&15]+n[o&15]}return p.charCodeAt(0)==0?p:p}, -iG(a){var s,r,q -if(!$.hl())return A.iH(a) +io(a){var s,r,q +if(!$.h5())return A.ip(a) s=new URLSearchParams() -a.C(0,new A.dD(s)) +a.F(0,new A.dq(s)) r=s.toString() q=r.length -if(q>0&&r[q-1]==="=")r=B.a.j(r,0,q-1) +if(q>0&&r[q-1]==="=")r=B.a.i(r,0,q-1) return r.replace(/=&|\*|%7E/g,b=>b==="=&"?"&":b==="*"?"%2A":"~")}, -at(a){if(typeof a=="number"||A.ez(a)||a==null)return J.aq(a) +hM(){return A.aA(new Error())}, +cp(a){if(typeof a=="number"||A.eo(a)||a==null)return J.ak(a) if(typeof a=="string")return JSON.stringify(a) -return A.f4(a)}, -hH(a,b){A.cn(a,"error",t.K) -A.cn(b,"stackTrace",t.l) -A.hG(a,b)}, -by(a){return new A.bx(a)}, -a_(a,b){return new A.K(!1,null,b,a)}, -eM(a,b,c){return new A.K(!0,a,b,c)}, -i3(a,b){return new A.b2(null,null,!0,a,b,"Value not in range")}, -G(a,b,c,d,e){return new A.b2(b,c,!0,a,d,"Invalid value")}, -b3(a,b,c){if(0>a||a>c)throw A.a(A.G(a,0,c,"start",null)) -if(b!=null){if(a>b||b>c)throw A.a(A.G(b,a,c,"end",null)) +return A.eS(a)}, +hp(a,b){A.et(a,"error",t.K) +A.et(b,"stackTrace",t.l) +A.ho(a,b)}, +bs(a){return new A.br(a)}, +T(a,b){return new A.H(!1,null,b,a)}, +eE(a,b,c){return new A.H(!0,a,b,c)}, +hK(a,b){return new A.b_(null,null,!0,a,b,"Value not in range")}, +E(a,b,c,d,e){return new A.b_(b,c,!0,a,d,"Invalid value")}, +bT(a,b,c){if(0>a||a>c)throw A.b(A.E(a,0,c,"start",null)) +if(b!=null){if(a>b||b>c)throw A.b(A.E(b,a,c,"end",null)) return b}return c}, -f5(a,b){if(a<0)throw A.a(A.G(a,0,null,b,null)) +e6(a,b){if(a<0)throw A.b(A.E(a,0,null,b,null)) return a}, -eU(a,b,c,d){return new A.bF(b,!0,a,d,"Index out of range")}, -T(a){return new A.c2(a)}, -fd(a){return new A.c_(a)}, -f9(a){return new A.b5(a)}, -as(a){return new A.bD(a)}, -z(a,b,c){return new A.cw(a,b,c)}, -hO(a,b,c){var s,r -if(A.eI(a)){if(b==="("&&c===")")return"(...)" -return b+"..."+c}s=A.h([],t.s) -$.ap.push(a) -try{A.jk(a,s)}finally{$.ap.pop()}r=A.fa(b,s,", ")+c +e0(a,b,c,d){return new A.by(b,!0,a,d,"Index out of range")}, +cK(a){return new A.b3(a)}, +f_(a){return new A.bV(a)}, +eW(a){return new A.b2(a)}, +al(a){return new A.bw(a)}, +y(a,b,c){return new A.M(a,b,c)}, +hy(a,b,c){var s,r +if(A.ey(a)){if(b==="("&&c===")")return"(...)" +return b+"..."+c}s=A.k([],t.s) +$.ai.push(a) +try{A.j9(a,s)}finally{$.ai.pop()}r=A.eX(b,s,", ")+c return r.charCodeAt(0)==0?r:r}, -eW(a,b,c){var s,r -if(A.eI(a))return b+"..."+c -s=new A.y(b) -$.ap.push(a) +e1(a,b,c){var s,r +if(A.ey(a))return b+"..."+c +s=new A.A(b) +$.ai.push(a) try{r=s -r.a=A.fa(r.a,a,", ")}finally{$.ap.pop()}s.a+=c +r.a=A.eX(r.a,a,", ")}finally{$.ai.pop()}s.a+=c r=s.a return r.charCodeAt(0)==0?r:r}, -jk(a,b){var s,r,q,p,o,n,m,l=a.gB(a),k=0,j=0 +j9(a,b){var s,r,q,p,o,n,m,l=a.gv(a),k=0,j=0 while(!0){if(!(k<80||j<3))break if(!l.m())return -s=A.i(l.gp()) +s=A.i(l.gn()) b.push(s) k+=s.length+2;++j}if(!l.m()){if(j<=5)return r=b.pop() -q=b.pop()}else{p=l.gp();++j +q=b.pop()}else{p=l.gn();++j if(!l.m()){if(j<=4){b.push(A.i(p)) return}r=A.i(p) q=b.pop() -k+=r.length+2}else{o=l.gp();++j -for(;l.m();p=o,o=n){n=l.gp();++j +k+=r.length+2}else{o=l.gn();++j +for(;l.m();p=o,o=n){n=l.gn();++j if(j>100){while(!0){if(!(k>75&&j>3))break k-=b.pop().length+2;--j}b.push("...") return}}q=A.i(p) @@ -1849,115 +1758,166 @@ if(m==null){k+=5 m="..."}}if(m!=null)b.push(m) b.push(q) b.push(r)}, -hY(a,b,c,d){var s -if(B.i===c){s=B.c.gn(a) -b=J.Z(b) -return A.en(A.a6(A.a6($.ee(),s),b))}if(B.i===d){s=B.c.gn(a) -b=J.Z(b) -c=J.Z(c) -return A.en(A.a6(A.a6(A.a6($.ee(),s),b),c))}s=B.c.gn(a) -b=J.Z(b) -c=J.Z(c) -d=J.Z(d) -d=A.en(A.a6(A.a6(A.a6(A.a6($.ee(),s),b),c),d)) +hH(a,b,c,d){var s +if(B.h===c){s=B.c.gp(a) +b=J.S(b) +return A.e9(A.a_(A.a_($.dZ(),s),b))}if(B.h===d){s=B.c.gp(a) +b=J.S(b) +c=J.S(c) +return A.e9(A.a_(A.a_(A.a_($.dZ(),s),b),c))}s=B.c.gp(a) +b=J.S(b) +c=J.S(c) +d=J.S(d) +d=A.e9(A.a_(A.a_(A.a_(A.a_($.dZ(),s),b),c),d)) return d}, -c4(a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3=null,a4=a5.length -if(a4>=5){s=((a5.charCodeAt(4)^58)*3|a5.charCodeAt(0)^100|a5.charCodeAt(1)^97|a5.charCodeAt(2)^116|a5.charCodeAt(3)^97)>>>0 -if(s===0)return A.fe(a4=14)r[7]=a4 -q=r[1] -if(q>=0)if(A.fU(a5,0,q,20,r)===20)r[7]=q -p=r[2]+1 -o=r[3] -n=r[4] -m=r[5] -l=r[6] -if(lq+3){j=a3 -k=!1}else{i=o>0 -if(i&&o+1===n){j=a3 -k=!1}else{if(!B.a.v(a5,"\\",n))if(p>0)h=B.a.v(a5,"\\",p-1)||B.a.v(a5,"\\",p-2) -else h=!1 -else h=!0 -if(h){j=a3 -k=!1}else{if(!(mn+2&&B.a.v(a5,"/..",m-3) -else h=!0 -if(h)j=a3 -else if(q===4)if(B.a.v(a5,"file",0)){if(p<=0){if(!B.a.v(a5,"/",n)){g="file:///" -s=3}else{g="file://" -s=2}a5=g+B.a.j(a5,n,a4) -q-=0 -i=s-0 -m+=i -l+=i -a4=a5.length -p=7 -o=7 -n=7}else if(n===m){++l -f=m+1 -a5=B.a.J(a5,n,m,"/");++a4 -m=f}j="file"}else if(B.a.v(a5,"http",0)){if(i&&o+3===n&&B.a.v(a5,"80",o+1)){l-=3 -e=n-3 -m-=3 -a5=B.a.J(a5,o,n,"") -a4-=3 -n=e}j="http"}else j=a3 -else if(q===5&&B.a.v(a5,"https",0)){if(i&&o+4===n&&B.a.v(a5,"443",o+1)){l-=4 -e=n-4 -m-=4 -a5=B.a.J(a5,o,n,"") -a4-=3 -n=e}j="https"}else j=a3 -k=!h}}}else j=a3 -if(k){if(a40)j=A.iI(a5,0,q) -else{if(q===0)A.aA(a5,0,"Invalid empty scheme") -j=""}if(p>0){d=q+3 -c=d=s){r=((a4.charCodeAt(a5+4)^58)*3|a4.charCodeAt(a5)^100|a4.charCodeAt(a5+1)^97|a4.charCodeAt(a5+2)^116|a4.charCodeAt(a5+3)^97)>>>0 +if(r===0)return A.f0(a5>0||a6=14)q[7]=a6 +o=q[1] +if(o>=a5)if(A.fF(a4,a5,o,20,q)===20)q[7]=o +n=q[2]+1 +m=q[3] +l=q[4] +k=q[5] +j=q[6] +if(jo+3)){p=m>a5 +g=0 +if(!(p&&m+1===l)){if(!B.a.t(a4,"\\",l))if(n>a5)f=B.a.t(a4,"\\",n-1)||B.a.t(a4,"\\",n-2) +else f=!1 +else f=!0 +if(!f){if(!(kl+2&&B.a.t(a4,"/..",k-3) +else f=!0 +if(!f)if(o===a5+4){if(B.a.t(a4,"file",a5)){if(n<=a5){if(!B.a.t(a4,"/",l)){e="file:///" +r=3}else{e="file://" +r=2}a4=e+B.a.i(a4,l,a6) +o-=a5 +s=r-a5 +k+=s +j+=s +a6=a4.length +a5=g +n=7 +m=7 +l=7}else if(l===k){s=a5===0 +s +if(s){a4=B.a.I(a4,l,k,"/");++k;++j;++a6}else{a4=B.a.i(a4,a5,l)+"/"+B.a.i(a4,k,a6) +o-=a5 +n-=a5 +m-=a5 +l-=a5 +s=1-a5 +k+=s +j+=s +a6=a4.length +a5=g}}h="file"}else if(B.a.t(a4,"http",a5)){if(p&&m+3===l&&B.a.t(a4,"80",m+1)){s=a5===0 +s +if(s){a4=B.a.I(a4,m,l,"") +l-=3 +k-=3 +j-=3 +a6-=3}else{a4=B.a.i(a4,a5,m)+B.a.i(a4,l,a6) +o-=a5 +n-=a5 +m-=a5 +s=3+a5 +l-=s +k-=s +j-=s +a6=a4.length +a5=g}}h="http"}}else if(o===s&&B.a.t(a4,"https",a5)){if(p&&m+4===l&&B.a.t(a4,"443",m+1)){s=a5===0 +s +if(s){a4=B.a.I(a4,m,l,"") +l-=4 +k-=4 +j-=4 +a6-=3}else{a4=B.a.i(a4,a5,m)+B.a.i(a4,l,a6) +o-=a5 +n-=a5 +m-=a5 +s=4+a5 +l-=s +k-=s +j-=s +a6=a4.length +a5=g}}h="https"}i=!f}}}}if(i){if(a5>0||a6a5)h=A.iq(a4,a5,o) +else{if(o===a5)A.av(a4,a5,"Invalid empty scheme") +h=""}d=a3 +if(n>a5){c=o+3 +b=c9)k.$2("invalid character",s)}else{if(q===3)k.$2(m,s) -o=A.e8(B.a.j(a,r,s),null) +o=A.dS(B.a.i(a,r,s),null) if(o>255)k.$2(l,r) n=q+1 j[q]=o r=s+1 q=n}}if(q!==3)k.$2(m,c) -o=A.e8(B.a.j(a,r,c),null) +o=A.dS(B.a.i(a,r,c),null) if(o>255)k.$2(l,r) j[q]=o return j}, -ff(a,b,a0){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e=null,d=new A.cY(a),c=new A.cZ(d,a) +hT(a,b,c){var s +if(b===c)throw A.b(A.y("Empty IP address",a,b)) +if(a.charCodeAt(b)===118){s=A.hU(a,b,c) +if(s!=null)throw A.b(s) +return!1}A.f1(a,b,c) +return!0}, +hU(a,b,c){var s,r,q,p,o="Missing hex-digit in IPvFuture address";++b +for(s=b;!0;s=r){if(s=97&&p<=102)continue +if(q===46){if(r-1===b)return new A.M(o,a,r) +s=r +break}return new A.M("Unexpected character",a,r-1)}if(s-1===b)return new A.M(o,a,s) +return new A.M("Missing '.' in IPvFuture address",a,s)}if(s===c)return new A.M("Missing address in IPvFuture address, host, cursor",null,null) +for(;!0;){if((u.f.charCodeAt(a.charCodeAt(s))&16)!==0){++s +if(s>>0) s.push((k[2]<<8|k[3])>>>0)}if(p){if(s.length>7)d.$2("an address with a wildcard must have less than 7 parts",e)}else if(s.length!==8)d.$2("an address without a wildcard must contain exactly 8 parts",e) j=new Uint8Array(16) for(l=s.length,i=9-l,r=0,h=0;r=b&&q=b&&s=b&&s>>4]&1<<(p&15))!==0){if(q&&65<=p&&90>=p){if(i==null)i=new A.y("") -if(r=p){if(i==null)i=new A.A("") +if(r>>4]&1<<(o&15))!==0){if(p&&65<=o&&90>=o){if(q==null)q=new A.y("") -if(r>>4]&1<<(o&15))!==0)A.aA(a,s,"Invalid character") -else{if((o&64512)===55296&&s+1=o){if(q==null)q=new A.A("") +if(r>>4]&1<<(q&15))!==0))A.aA(a,s,"Illegal scheme character") -if(65<=q&&q<=90)r=!0}a=B.a.j(a,b,c) -return A.iz(r?a.toLowerCase():a)}, -iz(a){if(a==="http")return"http" +if(!(q<128&&(u.f.charCodeAt(q)&8)!==0))A.av(a,s,"Illegal scheme character") +if(65<=q&&q<=90)r=!0}a=B.a.i(a,b,c) +return A.ig(r?a.toLowerCase():a)}, +ig(a){if(a==="http")return"http" if(a==="file")return"file" if(a==="https")return"https" if(a==="package")return"package" return a}, -iJ(a,b,c){return A.bo(a,b,c,B.a8,!1,!1)}, -iE(a,b,c,d,e,f){var s,r=e==="file",q=r||f +ir(a,b,c){return A.bk(a,b,c,16,!1,!1)}, +il(a,b,c,d,e,f){var s,r=e==="file",q=r||f if(a==null)return r?"/":"" -else s=A.bo(a,b,c,B.p,!0,!0) +else s=A.bk(a,b,c,128,!0,!0) if(s.length===0){if(r)return"/"}else if(q&&!B.a.u(s,"/"))s="/"+s -return A.iK(s,e,f)}, -iK(a,b,c){var s=b.length===0 -if(s&&!c&&!B.a.u(a,"/")&&!B.a.u(a,"\\"))return A.iM(a,!s||c) -return A.iN(a)}, -eu(a,b,c,d){if(a!=null){if(d!=null)throw A.a(A.a_("Both query and queryParameters specified",null)) -return A.bo(a,b,c,B.f,!0,!1)}if(d==null)return null -return A.iG(d)}, -iH(a){var s={},r=new A.y("") +return A.is(s,e,f)}, +is(a,b,c){var s=b.length===0 +if(s&&!c&&!B.a.u(a,"/")&&!B.a.u(a,"\\"))return A.iu(a,!s||c) +return A.iv(a)}, +eg(a,b,c,d){if(a!=null){if(d!=null)throw A.b(A.T("Both query and queryParameters specified",null)) +return A.bk(a,b,c,256,!0,!1)}if(d==null)return null +return A.io(d)}, +ip(a){var s={},r=new A.A("") s.a="" -a.C(0,new A.dB(new A.dC(s,r))) +a.F(0,new A.dn(new A.dp(s,r))) s=r.a return s.charCodeAt(0)==0?s:s}, -iC(a,b,c){return A.bo(a,b,c,B.f,!0,!1)}, -ev(a,b,c){var s,r,q,p,o,n=b+2 +ij(a,b,c){return A.bk(a,b,c,256,!0,!1)}, +eh(a,b,c){var s,r,q,p,o,n=b+2 if(n>=a.length)return"%" s=a.charCodeAt(b+1) r=a.charCodeAt(n) -q=A.e0(s) -p=A.e0(r) +q=A.dK(s) +p=A.dK(r) if(q<0||p<0)return"%" o=q*16+p -if(o<127&&(B.h[B.c.U(o,4)]&1<<(o&15))!==0)return A.Q(c&&65<=o&&90>=o?(o|32)>>>0:o) -if(s>=97||r>=97)return B.a.j(a,b,b+3).toUpperCase() +if(o<127&&(u.f.charCodeAt(o)&1)!==0)return A.Y(c&&65<=o&&90>=o?(o|32)>>>0:o) +if(s>=97||r>=97)return B.a.i(a,b,b+3).toUpperCase() return null}, -et(a){var s,r,q,p,o,n="0123456789ABCDEF" -if(a<128){s=new Uint8Array(3) +ef(a){var s,r,q,p,o,n="0123456789ABCDEF" +if(a<=127){s=new Uint8Array(3) s[0]=37 s[1]=n.charCodeAt(a>>>4) s[2]=n.charCodeAt(a&15)}else{if(a>2047)if(a>65535){r=240 q=4}else{r=224 q=3}else{r=192 q=2}s=new Uint8Array(3*q) -for(p=0;--q,q>=0;r=128){o=B.c.bv(a,6*q)&63|r +for(p=0;--q,q>=0;r=128){o=B.c.bn(a,6*q)&63|r s[p]=37 s[p+1]=n.charCodeAt(o>>>4) s[p+2]=n.charCodeAt(o&15) -p+=3}}return A.fb(s,0,null)}, -bo(a,b,c,d,e,f){var s=A.fx(a,b,c,d,e,f) -return s==null?B.a.j(a,b,c):s}, -fx(a,b,c,d,e,f){var s,r,q,p,o,n,m,l,k,j,i=null -for(s=!e,r=b,q=r,p=i;r>>4]&1<<(o&15))!==0)++r -else{if(o===37){n=A.ev(a,r,!1) -if(n==null){r+=3 -continue}if("%"===n){n="%25" -m=1}else m=3}else if(o===92&&f){n="/" -m=1}else if(s&&o<=93&&(B.r[o>>>4]&1<<(o&15))!==0){A.aA(a,r,"Invalid character") -m=i -n=m}else{if((o&64512)===55296){l=r+1 +p+=3}}return A.eY(s,0,null)}, +bk(a,b,c,d,e,f){var s=A.fi(a,b,c,d,e,f) +return s==null?B.a.i(a,b,c):s}, +fi(a,b,c,d,e,f){var s,r,q,p,o,n,m,l,k,j=null,i=u.f +for(s=!e,r=b,q=r,p=j;r=2&&A.fv(a.charCodeAt(0)))for(s=1;s127||(B.o[r>>>4]&1<<(r&15))===0)break}return a}, -iB(a,b){var s,r,q +if(p||B.b.gY(s)==="..")s.push("") +if(!b)s[0]=A.ff(s[0]) +return B.b.aT(s,"/")}, +ff(a){var s,r,q=a.length +if(q>=2&&A.fg(a.charCodeAt(0)))for(s=1;s127||(u.f.charCodeAt(r)&8)===0)break}return a}, +ii(a,b){var s,r,q for(s=0,r=0;r<2;++r){q=a.charCodeAt(b+r) if(48<=q&&q<=57)s=s*16+q-48 else{q|=32 if(97<=q&&q<=102)s=s*16+q-87 -else throw A.a(A.a_("Invalid URL encoding",null))}}return s}, -ew(a,b,c,d,e){var s,r,q,p,o=b +else throw A.b(A.T("Invalid URL encoding",null))}}return s}, +ei(a,b,c,d,e){var s,r,q,p,o=b while(!0){if(!(o127)throw A.a(A.a_("Illegal percent encoding in URI",null)) -if(r===37){if(o+3>q)throw A.a(A.a_("Truncated URI",null)) -p.push(A.iB(a,o+1)) +if(r>127)throw A.b(A.T("Illegal percent encoding in URI",null)) +if(r===37){if(o+3>q)throw A.b(A.T("Truncated URI",null)) +p.push(A.ii(a,o+1)) o+=2}else if(r===43)p.push(32) -else p.push(r)}}return B.ap.I(p)}, -fv(a){var s=a|32 +else p.push(r)}}return B.af.G(p)}, +fg(a){var s=a|32 return 97<=s&&s<=122}, -fe(a,b,c){var s,r,q,p,o,n,m,l,k="Invalid MIME type",j=A.h([b-1],t.t) +f0(a,b,c){var s,r,q,p,o,n,m,l,k="Invalid MIME type",j=A.k([b-1],t.t) for(s=a.length,r=b,q=-1,p=null;rb)throw A.a(A.z(k,a,r)) +continue}throw A.b(A.y(k,a,r))}}if(q<0&&r>b)throw A.b(A.y(k,a,r)) for(;p!==44;){j.push(r);++r for(o=-1;r=0)j.push(o) -else{n=B.b.gZ(j) -if(p!==44||r!==n+7||!B.a.v(a,"base64",n+1))throw A.a(A.z("Expecting '='",a,r)) +else{n=B.b.gY(j) +if(p!==44||r!==n+7||!B.a.t(a,"base64",n+1))throw A.b(A.y("Expecting '='",a,r)) break}}j.push(r) m=r+1 -if((j.length&1)===1)a=B.x.bP(a,m,s) -else{l=A.fx(a,m,s,B.f,!0,!1) -if(l!=null)a=B.a.J(a,m,s,l)}return new A.cW(a,j,c)}, -iZ(){var s,r,q,p,o,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~!$&'()*+,;=",m=".",l=":",k="/",j="\\",i="?",h="#",g="/\\",f=J.eX(22,t.D) -for(s=0;s<22;++s)f[s]=new Uint8Array(96) -r=new A.dP(f) -q=new A.dQ() -p=new A.dR() -o=r.$2(0,225) -q.$3(o,n,1) -q.$3(o,m,14) -q.$3(o,l,34) -q.$3(o,k,3) -q.$3(o,j,227) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(14,225) -q.$3(o,n,1) -q.$3(o,m,15) -q.$3(o,l,34) -q.$3(o,g,234) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(15,225) -q.$3(o,n,1) -q.$3(o,"%",225) -q.$3(o,l,34) -q.$3(o,k,9) -q.$3(o,j,233) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(1,225) -q.$3(o,n,1) -q.$3(o,l,34) -q.$3(o,k,10) -q.$3(o,j,234) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(2,235) -q.$3(o,n,139) -q.$3(o,k,131) -q.$3(o,j,131) -q.$3(o,m,146) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(3,235) -q.$3(o,n,11) -q.$3(o,k,68) -q.$3(o,j,68) -q.$3(o,m,18) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(4,229) -q.$3(o,n,5) -p.$3(o,"AZ",229) -q.$3(o,l,102) -q.$3(o,"@",68) -q.$3(o,"[",232) -q.$3(o,k,138) -q.$3(o,j,138) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(5,229) -q.$3(o,n,5) -p.$3(o,"AZ",229) -q.$3(o,l,102) -q.$3(o,"@",68) -q.$3(o,k,138) -q.$3(o,j,138) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(6,231) -p.$3(o,"19",7) -q.$3(o,"@",68) -q.$3(o,k,138) -q.$3(o,j,138) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(7,231) -p.$3(o,"09",7) -q.$3(o,"@",68) -q.$3(o,k,138) -q.$3(o,j,138) -q.$3(o,i,172) -q.$3(o,h,205) -q.$3(r.$2(8,8),"]",5) -o=r.$2(9,235) -q.$3(o,n,11) -q.$3(o,m,16) -q.$3(o,g,234) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(16,235) -q.$3(o,n,11) -q.$3(o,m,17) -q.$3(o,g,234) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(17,235) -q.$3(o,n,11) -q.$3(o,k,9) -q.$3(o,j,233) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(10,235) -q.$3(o,n,11) -q.$3(o,m,18) -q.$3(o,k,10) -q.$3(o,j,234) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(18,235) -q.$3(o,n,11) -q.$3(o,m,19) -q.$3(o,g,234) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(19,235) -q.$3(o,n,11) -q.$3(o,g,234) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(11,235) -q.$3(o,n,11) -q.$3(o,k,10) -q.$3(o,j,234) -q.$3(o,i,172) -q.$3(o,h,205) -o=r.$2(12,236) -q.$3(o,n,12) -q.$3(o,i,12) -q.$3(o,h,205) -o=r.$2(13,237) -q.$3(o,n,13) -q.$3(o,i,13) -p.$3(r.$2(20,245),"az",21) -o=r.$2(21,245) -p.$3(o,"az",21) -p.$3(o,"09",21) -q.$3(o,"+-.",21) -return f}, -fU(a,b,c,d,e){var s,r,q,p,o=$.hp() -for(s=b;s95?31:q] -d=p&31 -e[p>>>5]=s}return d}, -cM:function cM(a,b){this.a=a -this.b=b}, -dD:function dD(a){this.a=a}, -d8:function d8(){}, -k:function k(){}, -bx:function bx(a){this.a=a}, -R:function R(){}, -K:function K(a,b,c,d){var _=this +if((j.length&1)===1)a=B.o.bE(a,m,s) +else{l=A.fi(a,m,s,256,!0,!1) +if(l!=null)a=B.a.I(a,m,s,l)}return new A.cL(a,j,c)}, +fF(a,b,c,d,e){var s,r,q +for(s=b;s95)r=31 +q='\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe3\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x0e\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xea\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\n\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\xeb\xeb\x8b\xeb\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\x83\xeb\xeb\x8b\xeb\x8b\xeb\xcd\x8b\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x92\x83\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\x8b\xeb\x8b\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xebD\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x12D\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\xe5\xe5\xe5\x05\xe5D\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe8\x8a\xe5\xe5\x05\xe5\x05\xe5\xcd\x05\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x8a\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05f\x05\xe5\x05\xe5\xac\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\xe5\xe5\xe5\x05\xe5D\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\x8a\xe5\xe5\x05\xe5\x05\xe5\xcd\x05\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x8a\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05f\x05\xe5\x05\xe5\xac\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7D\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\xe7\xe7\xe7\xe7\xe7\xcd\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\x07\x07\x07\x07\x07\x07\x07\x07\x07\xe7\xe7\xe7\xe7\xe7\xac\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7D\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\xe7\xe7\xe7\xe7\xe7\xcd\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\xe7\xe7\xe7\xe7\xe7\xac\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\x05\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x10\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x12\n\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\n\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xec\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\xec\xec\xec\f\xec\xec\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\xec\xec\xec\xec\f\xec\f\xec\xcd\f\xec\f\f\f\f\f\f\f\f\f\xec\f\f\f\f\f\f\f\f\f\f\xec\f\xec\f\xec\f\xed\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\xed\xed\xed\r\xed\xed\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\xed\xed\xed\xed\r\xed\r\xed\xed\r\xed\r\r\r\r\r\r\r\r\r\xed\r\r\r\r\r\r\r\r\r\r\xed\r\xed\r\xed\r\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xea\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x0f\xea\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe9\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x11\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xe9\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\t\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x13\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\x15\xf5\x15\x15\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5'.charCodeAt(d*96+r) +d=q&31 +e[q>>>5]=s}return d}, +dq:function dq(a){this.a=a}, +cY:function cY(){}, +l:function l(){}, +br:function br(a){this.a=a}, +P:function P(){}, +H:function H(a,b,c,d){var _=this _.a=a _.b=b _.c=c _.d=d}, -b2:function b2(a,b,c,d,e,f){var _=this +b_:function b_(a,b,c,d,e,f){var _=this _.e=a _.f=b _.a=c _.b=d _.c=e _.d=f}, -bF:function bF(a,b,c,d,e){var _=this +by:function by(a,b,c,d,e){var _=this _.f=a _.a=b _.b=c _.c=d _.d=e}, -bV:function bV(a,b,c,d){var _=this -_.a=a -_.b=b -_.c=c -_.d=d}, -c2:function c2(a){this.a=a}, -c_:function c_(a){this.a=a}, -b5:function b5(a){this.a=a}, -bD:function bD(a){this.a=a}, -bW:function bW(){}, -b4:function b4(){}, -d9:function d9(a){this.a=a}, -cw:function cw(a,b,c){this.a=a +b3:function b3(a){this.a=a}, +bV:function bV(a){this.a=a}, +b2:function b2(a){this.a=a}, +bw:function bw(a){this.a=a}, +bP:function bP(){}, +b1:function b1(){}, +cZ:function cZ(a){this.a=a}, +M:function M(a,b,c){this.a=a this.b=b this.c=c}, -n:function n(){}, -u:function u(){}, -l:function l(){}, -cj:function cj(){}, -y:function y(a){this.a=a}, -d_:function d_(a){this.a=a}, -cX:function cX(a){this.a=a}, -cY:function cY(a){this.a=a}, -cZ:function cZ(a,b){this.a=a +r:function r(){}, +t:function t(){}, +j:function j(){}, +cd:function cd(){}, +A:function A(a){this.a=a}, +cP:function cP(a){this.a=a}, +cM:function cM(a){this.a=a}, +cN:function cN(a){this.a=a}, +cO:function cO(a,b){this.a=a this.b=b}, -bn:function bn(a,b,c,d,e,f,g){var _=this +bj:function bj(a,b,c,d,e,f,g){var _=this _.a=a _.b=b _.c=c @@ -2413,16 +2227,13 @@ _.e=e _.f=f _.r=g _.z=_.y=_.w=$}, -dC:function dC(a,b){this.a=a +dp:function dp(a,b){this.a=a this.b=b}, -dB:function dB(a){this.a=a}, -cW:function cW(a,b,c){this.a=a +dn:function dn(a){this.a=a}, +cL:function cL(a,b,c){this.a=a this.b=b this.c=c}, -dP:function dP(a){this.a=a}, -dQ:function dQ(){}, -dR:function dR(){}, -ch:function ch(a,b,c,d,e,f,g,h){var _=this +cb:function cb(a,b,c,d,e,f,g,h){var _=this _.a=a _.b=b _.c=c @@ -2432,7 +2243,7 @@ _.f=f _.r=g _.w=h _.x=null}, -c9:function c9(a,b,c,d,e,f,g){var _=this +c2:function c2(a,b,c,d,e,f,g){var _=this _.a=a _.b=b _.c=c @@ -2441,43 +2252,41 @@ _.e=e _.f=f _.r=g _.z=_.y=_.w=$}, -iX(a){var s,r=a.$dart_jsFunction -if(r!=null)return r -s=function(b,c){return function(){return b(c,Array.prototype.slice.apply(arguments))}}(A.iV,a) -s[$.eK()]=a -a.$dart_jsFunction=s +a4(a){var s +if(typeof a=="function")throw A.b(A.T("Attempting to rewrap a JS function.",null)) +s=function(b,c){return function(d){return b(c,d,arguments.length)}}(A.iI,a) +s[$.eB()]=a return s}, -iV(a,b){return A.i0(a,b,null)}, -ab(a){if(typeof a=="function")return a -else return A.iX(a)}, -eb(a,b){var s=new A.v($.r,b.i("v<0>")),r=new A.b7(s,b.i("b7<0>")) -a.then(A.aF(new A.ec(r),1),A.aF(new A.ed(r),1)) +iI(a,b,c){if(c>=1)return a.$1(b) +return a.$0()}, +dV(a,b){var s=new A.w($.p,b.j("w<0>")),r=new A.b4(s,b.j("b4<0>")) +a.then(A.az(new A.dW(r),1),A.az(new A.dX(r),1)) return s}, -ec:function ec(a){this.a=a}, -ed:function ed(a){this.a=a}, -cN:function cN(a){this.a=a}, -m:function m(a,b){this.a=a +dW:function dW(a){this.a=a}, +dX:function dX(a){this.a=a}, +cD:function cD(a){this.a=a}, +n:function n(a,b){this.a=a this.b=b}, -hK(a){var s,r,q,p,o,n,m,l,k="enclosedBy" +hs(a){var s,r,q,p,o,n,m,l,k="enclosedBy" if(a.k(0,k)!=null){s=t.a.a(a.k(0,k)) -r=new A.cu(A.fF(s.k(0,"name")),B.q[A.fD(s.k(0,"kind"))],A.fF(s.k(0,"href")))}else r=null +r=new A.cn(A.el(s.k(0,"name")),B.m[A.ej(s.k(0,"kind"))],A.el(s.k(0,"href")))}else r=null q=a.k(0,"name") p=a.k(0,"qualifiedName") -o=A.fE(a.k(0,"packageRank")) +o=A.ek(a.k(0,"packageRank")) if(o==null)o=0 n=a.k(0,"href") -m=B.q[A.fD(a.k(0,"kind"))] -l=A.fE(a.k(0,"overriddenDepth")) +m=B.m[A.ej(a.k(0,"kind"))] +l=A.ek(a.k(0,"overriddenDepth")) if(l==null)l=0 -return new A.w(q,p,o,m,n,l,a.k(0,"desc"),r)}, -A:function A(a,b){this.a=a +return new A.x(q,p,o,m,n,l,a.k(0,"desc"),r)}, +B:function B(a,b){this.a=a this.b=b}, -cz:function cz(a){this.a=a}, -cC:function cC(a,b){this.a=a +cs:function cs(a){this.a=a}, +cv:function cv(a,b){this.a=a this.b=b}, -cA:function cA(){}, -cB:function cB(){}, -w:function w(a,b,c,d,e,f,g,h){var _=this +ct:function ct(){}, +cu:function cu(){}, +x:function x(a,b,c,d,e,f,g,h){var _=this _.a=a _.b=b _.c=c @@ -2486,67 +2295,66 @@ _.e=e _.f=f _.r=g _.w=h}, -cu:function cu(a,b,c){this.a=a +cn:function cn(a,b,c){this.a=a this.b=b this.c=c}, -jM(){var s=self,r=s.document.getElementById("search-box"),q=s.document.getElementById("search-body"),p=s.document.getElementById("search-sidebar") -A.eb(s.window.fetch($.bw()+"index.json"),t.m).aq(new A.e5(new A.e6(r,q,p),r,q,p),t.P)}, -eo(a){var s=A.h([],t.O),r=A.h([],t.M) -return new A.ds(a,A.c4(self.window.location.href),s,r)}, -iY(a,b){var s,r,q,p,o,n,m,l,k=self,j=k.document.createElement("div"),i=b.e -if(i==null)i="" -j.setAttribute("data-href",i) -j.classList.add("tt-suggestion") -s=k.document.createElement("span") +jC(){var s=v.G,r=s.document.getElementById("search-box"),q=s.document.getElementById("search-body"),p=s.document.getElementById("search-sidebar") +A.dV(s.window.fetch($.bq()+"index.json"),t.m).aX(new A.dP(new A.dQ(r,q,p),r,q,p),t.P)}, +eb(a){var s=A.k([],t.O),r=A.k([],t.M) +return new A.dd(a,A.bZ(v.G.window.location.href,0,null),s,r)}, +iK(a,b){var s,r,q,p,o,n,m,l=v.G,k=l.document.createElement("div"),j=b.e +if(j==null)j="" +k.setAttribute("data-href",j) +k.classList.add("tt-suggestion") +s=l.document.createElement("span") s.classList.add("tt-suggestion-title") -s.innerHTML=A.ex(b.a+" "+b.d.h(0).toLowerCase(),a) -j.appendChild(s) +s.innerHTML=A.em(b.a+" "+b.d.h(0).toLowerCase(),a) +k.appendChild(s) r=b.w -i=r!=null -if(i){q=k.document.createElement("span") -q.classList.add("tt-suggestion-container") -q.innerHTML="(in "+A.ex(r.a,a)+")" -j.appendChild(q)}p=b.r -if(p!=null&&p.length!==0){o=k.document.createElement("blockquote") -o.classList.add("one-line-description") -q=k.document.createElement("textarea") -q.innerHTML=p -o.setAttribute("title",q.value) -o.innerHTML=A.ex(p,a) -j.appendChild(o)}q=t.g -j.addEventListener("mousedown",q.a(A.ab(new A.dN()))) -j.addEventListener("click",q.a(A.ab(new A.dO(b)))) -if(i){i=r.a -q=r.b.h(0) +j=r!=null +if(j){s=l.document.createElement("span") +s.classList.add("tt-suggestion-container") +s.innerHTML="(in "+A.em(r.a,a)+")" +k.appendChild(s)}q=b.r +if(q!=null&&q.length!==0){s=l.document.createElement("blockquote") +s.classList.add("one-line-description") +p=l.document.createElement("textarea") +p.innerHTML=q +s.setAttribute("title",p.value) +s.innerHTML=A.em(q,a) +k.appendChild(s)}k.addEventListener("mousedown",A.a4(new A.dA())) +k.addEventListener("click",A.a4(new A.dB(b))) +if(j){j=r.a +o=r.b.h(0) n=r.c -m=k.document.createElement("div") -m.classList.add("tt-container") -l=k.document.createElement("p") -l.textContent="Results from " -l.classList.add("tt-container-text") -k=k.document.createElement("a") -k.setAttribute("href",n) -k.innerHTML=i+" "+q -l.appendChild(k) -m.appendChild(l) -A.jl(m,j)}return j}, -jl(a,b){var s,r=a.innerHTML +s=l.document.createElement("div") +s.classList.add("tt-container") +p=l.document.createElement("p") +p.textContent="Results from " +p.classList.add("tt-container-text") +m=l.document.createElement("a") +m.setAttribute("href",n) +m.innerHTML=j+" "+o +p.appendChild(m) +s.appendChild(p) +A.ja(s,k)}return k}, +ja(a,b){var s,r=a.innerHTML if(r.length===0)return -s=$.bq.k(0,r) +s=$.a3.k(0,r) if(s!=null)s.appendChild(b) else{a.appendChild(b) -$.bq.q(0,r,a)}}, -ex(a,b){return A.k2(a,A.f6(b,!1),new A.dS(),null)}, -dT:function dT(){}, -e6:function e6(a,b,c){this.a=a +$.a3.A(0,r,a)}}, +em(a,b){return A.jR(a,A.eU(b,!1),new A.dC(),null)}, +dD:function dD(){}, +dQ:function dQ(a,b,c){this.a=a this.b=b this.c=c}, -e5:function e5(a,b,c,d){var _=this +dP:function dP(a,b,c,d){var _=this _.a=a _.b=b _.c=c _.d=d}, -ds:function ds(a,b,c,d){var _=this +dd:function dd(a,b,c,d){var _=this _.a=a _.b=b _.e=_.d=_.c=$ @@ -2555,22 +2363,22 @@ _.r="" _.w=c _.x=d _.y=-1}, -dt:function dt(a){this.a=a}, -du:function du(a,b){this.a=a +de:function de(a){this.a=a}, +df:function df(a,b){this.a=a this.b=b}, -dv:function dv(a,b){this.a=a +dg:function dg(a,b){this.a=a this.b=b}, -dw:function dw(a,b){this.a=a +dh:function dh(a,b){this.a=a this.b=b}, -dx:function dx(a,b){this.a=a +di:function di(a,b){this.a=a this.b=b}, -dN:function dN(){}, -dO:function dO(a){this.a=a}, -dS:function dS(){}, -j5(){var s=self,r=s.document.getElementById("sidenav-left-toggle"),q=s.document.querySelector(".sidebar-offcanvas-left"),p=s.document.getElementById("overlay-under-drawer"),o=t.g.a(A.ab(new A.dU(q,p))) +dA:function dA(){}, +dB:function dB(a){this.a=a}, +dC:function dC(){}, +iS(){var s=v.G,r=s.document.getElementById("sidenav-left-toggle"),q=s.document.querySelector(".sidebar-offcanvas-left"),p=s.document.getElementById("overlay-under-drawer"),o=A.a4(new A.dE(q,p)) if(p!=null)p.addEventListener("click",o) if(r!=null)r.addEventListener("click",o)}, -j4(){var s,r,q,p,o=self,n=o.document.body +iR(){var s,r,q,p,o=v.G,n=o.document.body if(n==null)return s=n.getAttribute("data-using-base-href") if(s==null)return @@ -2579,352 +2387,315 @@ if(r==null)return q=r}else q="" p=o.document.getElementById("dartdoc-main-content") if(p==null)return -A.fQ(q,p.getAttribute("data-above-sidebar"),o.document.getElementById("dartdoc-sidebar-left-content")) -A.fQ(q,p.getAttribute("data-below-sidebar"),o.document.getElementById("dartdoc-sidebar-right"))}, -fQ(a,b,c){if(b==null||b.length===0||c==null)return -A.eb(self.window.fetch(a+A.i(b)),t.m).aq(new A.dV(c,a),t.P)}, -fX(a,b){var s,r,q,p -if(b.nodeName.toLowerCase()==="a"){s=b.getAttribute("href") -if(s!=null)if(!A.c4(s).gaX())b.href=a+s}r=b.childNodes -for(q=0;q").A(b).i("M<1,2>"))}, -ac(a,b){if(!!a.fixed$length)A.aH(A.T("add")) -a.push(b)}, -aI(a,b){var s -if(!!a.fixed$length)A.aH(A.T("addAll")) -if(Array.isArray(b)){this.bg(a,b) -return}for(s=J.L(b);s.m();)a.push(s.gp())}, -bg(a,b){var s,r=b.length -if(r===0)return -if(a===b)throw A.a(A.as(a)) -for(s=0;s").C(b).j("N<1,2>"))}, +W(a){a.$flags&1&&A.aD(a,"clear","clear") a.length=0}, -aY(a,b){var s,r=A.f0(a.length,"",!1,t.N) +aT(a,b){var s,r=A.eP(a.length,"",!1,t.N) for(s=0;ss)throw A.a(A.G(b,0,s,"start",null)) -if(cs)throw A.a(A.G(c,b,s,"end",null)) -if(b===c)return A.h([],A.al(a)) -return A.h(a.slice(b,c),A.al(a))}, -gbF(a){if(a.length>0)return a[0] -throw A.a(A.eV())}, -gZ(a){var s=a.length +if(a.length!==q)throw A.b(A.al(a))}return s}, +by(a,b,c){return this.bx(a,b,c,t.z)}, +D(a,b){return a[b]}, +b6(a,b,c){var s=a.length +if(b>s)throw A.b(A.E(b,0,s,"start",null)) +if(cs)throw A.b(A.E(c,b,s,"end",null)) +if(b===c)return A.k([],A.a2(a)) +return A.k(a.slice(b,c),A.a2(a))}, +gY(a){var s=a.length if(s>0)return a[s-1] -throw A.a(A.eV())}, -bc(a,b){var s,r,q,p,o -if(!!a.immutable$list)A.aH(A.T("sort")) +throw A.b(A.hw())}, +b5(a,b){var s,r,q,p,o +a.$flags&2&&A.aD(a,"sort") s=a.length if(s<2)return -if(b==null)b=J.j9() +if(b==null)b=J.iY() if(s===2){r=a[0] q=a[1] if(b.$2(r,q)>0){a[0]=q -a[1]=r}return}if(A.al(a).c.b(null)){for(p=0,o=0;o0)this.bt(a,p)}, -bt(a,b){var s,r=a.length +a[1]=r}return}p=0 +if(A.a2(a).c.b(null))for(o=0;o0)this.bl(a,p)}, +bl(a,b){var s,r=a.length for(;s=r-1,r>0;r=s)if(a[s]===null){a[s]=void 0;--b if(b===0)break}}, -h(a){return A.eW(a,"[","]")}, -gB(a){return new J.ar(a,a.length,A.al(a).i("ar<1>"))}, -gn(a){return A.bY(a)}, +h(a){return A.e1(a,"[","]")}, +gv(a){return new J.U(a,a.length,A.a2(a).j("U<1>"))}, +gp(a){return A.bR(a)}, gl(a){return a.length}, -k(a,b){if(!(b>=0&&b=0&&b=0&&b=p){r.d=null return!1}r.d=q[s] r.c=s+1 return!0}} -J.aR.prototype={ -aL(a,b){var s +J.aO.prototype={ +aG(a,b){var s if(ab)return 1 -else if(a===b){if(a===0){s=this.gal(b) -if(this.gal(a)===s)return 0 -if(this.gal(a))return-1 +else if(a===b){if(a===0){s=this.gai(b) +if(this.gai(a)===s)return 0 +if(this.gai(a))return-1 return 1}return 0}else if(isNaN(a)){if(isNaN(b))return 0 return 1}else return-1}, -gal(a){return a===0?1/a<0:a<0}, +gai(a){return a===0?1/a<0:a<0}, h(a){if(a===0&&1/a<0)return"-0.0" else return""+a}, -gn(a){var s,r,q,p,o=a|0 +gp(a){var s,r,q,p,o=a|0 if(a===o)return o&536870911 s=Math.abs(a) r=Math.log(s)/0.6931471805599453|0 q=Math.pow(2,r) p=s<1?s/q:q/s return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911}, -a0(a,b){var s=a%b +a_(a,b){var s=a%b if(s===0)return 0 if(s>0)return s return s+b}, -bw(a,b){return(a|0)===a?a/b|0:this.bx(a,b)}, -bx(a,b){var s=a/b +bo(a,b){return(a|0)===a?a/b|0:this.bp(a,b)}, +bp(a,b){var s=a/b if(s>=-2147483648&&s<=2147483647)return s|0 if(s>0){if(s!==1/0)return Math.floor(s)}else if(s>-1/0)return Math.ceil(s) -throw A.a(A.T("Result of truncating division is "+A.i(s)+": "+A.i(a)+" ~/ "+b))}, -U(a,b){var s -if(a>0)s=this.aF(a,b) +throw A.b(A.cK("Result of truncating division is "+A.i(s)+": "+A.i(a)+" ~/ "+b))}, +a9(a,b){var s +if(a>0)s=this.aC(a,b) else{s=b>31?31:b s=a>>s>>>0}return s}, -bv(a,b){if(0>b)throw A.a(A.jy(b)) -return this.aF(a,b)}, -aF(a,b){return b>31?0:a>>>b}, -gt(a){return A.am(t.H)}, -$it:1} -J.aP.prototype={ -gt(a){return A.am(t.S)}, -$ij:1, -$ib:1} -J.bI.prototype={ -gt(a){return A.am(t.i)}, -$ij:1} -J.ah.prototype={ -b6(a,b){return a+b}, -J(a,b,c,d){var s=A.b3(b,c,a.length) +bn(a,b){if(0>b)throw A.b(A.jp(b)) +return this.aC(a,b)}, +aC(a,b){return b>31?0:a>>>b}, +gq(a){return A.af(t.H)}, +$iq:1} +J.aM.prototype={ +gq(a){return A.af(t.S)}, +$ih:1, +$ia:1} +J.bC.prototype={ +gq(a){return A.af(t.i)}, +$ih:1} +J.a8.prototype={ +I(a,b,c,d){var s=A.bT(b,c,a.length) return a.substring(0,b)+d+a.substring(s)}, -v(a,b,c){var s -if(c<0||c>a.length)throw A.a(A.G(c,0,a.length,null,null)) +t(a,b,c){var s +if(c<0||c>a.length)throw A.b(A.E(c,0,a.length,null,null)) s=c+b.length if(s>a.length)return!1 return b===a.substring(c,s)}, -u(a,b){return this.v(a,b,0)}, -j(a,b,c){return a.substring(b,A.b3(b,c,a.length))}, -K(a,b){return this.j(a,b,null)}, -b9(a,b){var s,r +u(a,b){return this.t(a,b,0)}, +i(a,b,c){return a.substring(b,A.bT(b,c,a.length))}, +K(a,b){return this.i(a,b,null)}, +b2(a,b){var s,r if(0>=b)return"" if(b===1||a.length===0)return a -if(b!==b>>>0)throw A.a(B.F) +if(b!==b>>>0)throw A.b(B.x) for(s=a,r="";!0;){if((b&1)===1)r=s+r b=b>>>1 if(b===0)break s+=s}return r}, -Y(a,b,c){var s -if(c<0||c>a.length)throw A.a(A.G(c,0,a.length,null,null)) +X(a,b,c){var s +if(c<0||c>a.length)throw A.b(A.E(c,0,a.length,null,null)) s=a.indexOf(b,c) return s}, -aU(a,b){return this.Y(a,b,0)}, -af(a,b){return A.k1(a,b,0)}, -aL(a,b){var s +aP(a,b){return this.X(a,b,0)}, +N(a,b){return A.jQ(a,b,0)}, +aG(a,b){var s if(a===b)s=0 else s=a>6}r=r+((r&67108863)<<3)&536870911 r^=r>>11 return r+((r&16383)<<15)&536870911}, -gt(a){return A.am(t.N)}, +gq(a){return A.af(t.N)}, gl(a){return a.length}, -$ij:1, +$ih:1, $id:1} -A.a8.prototype={ -gB(a){var s=A.E(this) -return new A.bA(J.L(this.gN()),s.i("@<1>").A(s.y[1]).i("bA<1,2>"))}, -gl(a){return J.aI(this.gN())}, -E(a,b){return A.E(this).y[1].a(J.ef(this.gN(),b))}, -h(a){return J.aq(this.gN())}} -A.bA.prototype={ +A.a0.prototype={ +gv(a){return new A.bt(J.aE(this.gM()),A.R(this).j("bt<1,2>"))}, +gl(a){return J.ci(this.gM())}, +D(a,b){return A.R(this).y[1].a(J.eD(this.gM(),b))}, +h(a){return J.ak(this.gM())}} +A.bt.prototype={ m(){return this.a.m()}, -gp(){return this.$ti.y[1].a(this.a.gp())}} -A.ae.prototype={ -gN(){return this.a}} -A.b9.prototype={$ic:1} -A.b8.prototype={ -k(a,b){return this.$ti.y[1].a(J.hq(this.a,b))}, -q(a,b,c){J.hr(this.a,b,this.$ti.c.a(c))}, +gn(){return this.$ti.y[1].a(this.a.gn())}} +A.a6.prototype={ +gM(){return this.a}} +A.b6.prototype={$ic:1} +A.b5.prototype={ +k(a,b){return this.$ti.y[1].a(J.ha(this.a,b))}, $ic:1, $if:1} -A.M.prototype={ -W(a,b){return new A.M(this.a,this.$ti.i("@<1>").A(b).i("M<1,2>"))}, -gN(){return this.a}} -A.aV.prototype={ +A.N.prototype={ +V(a,b){return new A.N(this.a,this.$ti.j("@<1>").C(b).j("N<1,2>"))}, +gM(){return this.a}} +A.bE.prototype={ h(a){return"LateInitializationError: "+this.a}} -A.bB.prototype={ +A.bu.prototype={ gl(a){return this.a.length}, k(a,b){return this.a.charCodeAt(b)}} -A.cR.prototype={} +A.cF.prototype={} A.c.prototype={} -A.I.prototype={ -gB(a){var s=this -return new A.au(s,s.gl(s),A.E(s).i("au"))}} -A.au.prototype={ -gp(){var s=this.d +A.J.prototype={ +gv(a){var s=this +return new A.am(s,s.gl(s),A.R(s).j("am"))}} +A.am.prototype={ +gn(){var s=this.d return s==null?this.$ti.c.a(s):s}, -m(){var s,r=this,q=r.a,p=J.an(q),o=p.gl(q) -if(r.b!==o)throw A.a(A.as(q)) +m(){var s,r=this,q=r.a,p=J.cg(q),o=p.gl(q) +if(r.b!==o)throw A.b(A.al(q)) s=r.c if(s>=o){r.d=null -return!1}r.d=p.E(q,s);++r.c +return!1}r.d=p.D(q,s);++r.c return!0}} -A.ai.prototype={ -gB(a){var s=A.E(this) -return new A.av(J.L(this.a),this.b,s.i("@<1>").A(s.y[1]).i("av<1,2>"))}, -gl(a){return J.aI(this.a)}, -E(a,b){return this.b.$1(J.ef(this.a,b))}} -A.aM.prototype={$ic:1} -A.av.prototype={ -m(){var s=this,r=s.b -if(r.m()){s.a=s.c.$1(r.gp()) -return!0}s.a=null -return!1}, -gp(){var s=this.a -return s==null?this.$ti.y[1].a(s):s}} -A.aj.prototype={ -gl(a){return J.aI(this.a)}, -E(a,b){return this.b.$1(J.ef(this.a,b))}} -A.aO.prototype={} -A.c1.prototype={ -q(a,b,c){throw A.a(A.T("Cannot modify an unmodifiable list"))}} -A.ay.prototype={} -A.a5.prototype={ -gn(a){var s=this._hashCode -if(s!=null)return s -s=664597*B.a.gn(this.a)&536870911 -this._hashCode=s -return s}, -h(a){return'Symbol("'+this.a+'")'}, -F(a,b){if(b==null)return!1 -return b instanceof A.a5&&this.a===b.a}, -$ib6:1} -A.bp.prototype={} -A.cg.prototype={$r:"+item,matchPosition(1,2)",$s:1} +A.ab.prototype={ +gl(a){return J.ci(this.a)}, +D(a,b){return this.b.$1(J.eD(this.a,b))}} A.aL.prototype={} -A.aK.prototype={ -h(a){return A.ek(this)}, -q(a,b,c){A.hF()}, -$ix:1} -A.ag.prototype={ +A.bX.prototype={} +A.ar.prototype={} +A.bl.prototype={} +A.ca.prototype={$r:"+item,matchPosition(1,2)",$s:1} +A.aG.prototype={ +h(a){return A.e5(this)}, +A(a,b,c){A.hn()}, +$iz:1} +A.aI.prototype={ gl(a){return this.b.length}, -gbq(){var s=this.$keys +gbi(){var s=this.$keys if(s==null){s=Object.keys(this.a) this.$keys=s}return s}, -H(a){if("__proto__"===a)return!1 +O(a){if("__proto__"===a)return!1 return this.a.hasOwnProperty(a)}, -k(a,b){if(!this.H(b))return null +k(a,b){if(!this.O(b))return null return this.b[this.a[b]]}, -C(a,b){var s,r,q=this.gbq(),p=this.b +F(a,b){var s,r,q=this.gbi(),p=this.b for(s=q.length,r=0;r=s.b){s.d=null +return!1}s.d=s.a[r] +s.c=r+1 +return!0}} +A.aH.prototype={} +A.aJ.prototype={ +gl(a){return this.b}, +gv(a){var s,r=this,q=r.$keys +if(q==null){q=Object.keys(r.a) +r.$keys=q}s=q +return new A.c7(s,s.length,r.$ti.j("c7<1>"))}, +N(a,b){if("__proto__"===b)return!1 +return this.a.hasOwnProperty(b)}} +A.b0.prototype={} +A.cI.prototype={ +B(a){var s,r,q=this,p=new RegExp(q.a).exec(a) if(p==null)return null s=Object.create(null) r=q.b @@ -2938,59 +2709,54 @@ if(r!==-1)s.method=p[r+1] r=q.f if(r!==-1)s.receiver=p[r+1] return s}} -A.b1.prototype={ +A.aZ.prototype={ h(a){return"Null check operator used on a null value"}} -A.bJ.prototype={ +A.bD.prototype={ h(a){var s,r=this,q="NoSuchMethodError: method not found: '",p=r.b if(p==null)return"NoSuchMethodError: "+r.a s=r.c if(s==null)return q+p+"' ("+r.a+")" return q+p+"' on '"+s+"' ("+r.a+")"}} -A.c0.prototype={ +A.bW.prototype={ h(a){var s=this.a return s.length===0?"Error":"Error: "+s}} -A.cO.prototype={ +A.cE.prototype={ h(a){return"Throw of null ('"+(this.a===null?"null":"undefined")+"' from JavaScript)"}} -A.aN.prototype={} -A.bg.prototype={ +A.aK.prototype={} +A.bc.prototype={ h(a){var s,r=this.b if(r!=null)return r r=this.a s=r!==null&&typeof r==="object"?r.stack:null return this.b=s==null?"":s}, -$ia4:1} -A.af.prototype={ +$iZ:1} +A.a7.prototype={ h(a){var s=this.constructor,r=s==null?null:s.name -return"Closure '"+A.h8(r==null?"unknown":r)+"'"}, -gbZ(){return this}, +return"Closure '"+A.fT(r==null?"unknown":r)+"'"}, +gbO(){return this}, $C:"$1", $R:1, $D:null} -A.cs.prototype={$C:"$0",$R:0} -A.ct.prototype={$C:"$2",$R:2} -A.cT.prototype={} -A.cS.prototype={ +A.cl.prototype={$C:"$0",$R:0} +A.cm.prototype={$C:"$2",$R:2} +A.cH.prototype={} +A.cG.prototype={ h(a){var s=this.$static_name if(s==null)return"Closure of unknown static method" -return"Closure '"+A.h8(s)+"'"}} -A.aJ.prototype={ -F(a,b){if(b==null)return!1 +return"Closure '"+A.fT(s)+"'"}} +A.aF.prototype={ +E(a,b){if(b==null)return!1 if(this===b)return!0 -if(!(b instanceof A.aJ))return!1 +if(!(b instanceof A.aF))return!1 return this.$_target===b.$_target&&this.a===b.a}, -gn(a){return(A.h4(this.a)^A.bY(this.$_target))>>>0}, -h(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.cQ(this.a)+"'")}} -A.c8.prototype={ -h(a){return"Reading static variable '"+this.a+"' during its initialization"}} -A.bZ.prototype={ +gp(a){return(A.fQ(this.a)^A.bR(this.$_target))>>>0}, +h(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.bS(this.a)+"'")}} +A.bU.prototype={ h(a){return"RuntimeError: "+this.a}} -A.dp.prototype={} -A.N.prototype={ +A.a9.prototype={ gl(a){return this.a}, -gO(){return new A.O(this,A.E(this).i("O<1>"))}, -gb5(){var s=A.E(this) -return A.hV(new A.O(this,s.i("O<1>")),new A.cG(this),s.c,s.y[1])}, -H(a){var s=this.b +gP(){return new A.aa(this,A.R(this).j("aa<1>"))}, +O(a){var s=this.b if(s==null)return!1 return s[a]!=null}, k(a,b){var s,r,q,p,o=null @@ -3002,311 +2768,309 @@ return q}else if(typeof b=="number"&&(b&0x3fffffff)===b){p=this.c if(p==null)return o r=p[b] q=r==null?o:r.b -return q}else return this.bL(b)}, -bL(a){var s,r,q=this.d +return q}else return this.bC(b)}, +bC(a){var s,r,q=this.d if(q==null)return null -s=q[this.aV(a)] -r=this.aW(s,a) +s=q[this.aQ(a)] +r=this.aR(s,a) if(r<0)return null return s[r].b}, -q(a,b,c){var s,r,q,p,o,n,m=this +A(a,b,c){var s,r,q,p,o,n,m=this if(typeof b=="string"){s=m.b -m.au(s==null?m.b=m.a7():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=m.c -m.au(r==null?m.c=m.a7():r,b,c)}else{q=m.d +m.ap(s==null?m.b=m.a7():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=m.c +m.ap(r==null?m.c=m.a7():r,b,c)}else{q=m.d if(q==null)q=m.d=m.a7() -p=m.aV(b) +p=m.aQ(b) o=q[p] if(o==null)q[p]=[m.a8(b,c)] -else{n=m.aW(o,b) +else{n=m.aR(o,b) if(n>=0)o[n].b=c else o.push(m.a8(b,c))}}}, -X(a){var s=this +W(a){var s=this if(s.a>0){s.b=s.c=s.d=s.e=s.f=null s.a=0 -s.aC()}}, -C(a,b){var s=this,r=s.e,q=s.r +s.az()}}, +F(a,b){var s=this,r=s.e,q=s.r for(;r!=null;){b.$2(r.a,r.b) -if(q!==s.r)throw A.a(A.as(s)) +if(q!==s.r)throw A.b(A.al(s)) r=r.c}}, -au(a,b,c){var s=a[b] +ap(a,b,c){var s=a[b] if(s==null)a[b]=this.a8(b,c) else s.b=c}, -aC(){this.r=this.r+1&1073741823}, -a8(a,b){var s=this,r=new A.cJ(a,b) +az(){this.r=this.r+1&1073741823}, +a8(a,b){var s=this,r=new A.cA(a,b) if(s.e==null)s.e=s.f=r else s.f=s.f.c=r;++s.a -s.aC() +s.az() return r}, -aV(a){return J.Z(a)&1073741823}, -aW(a,b){var s,r +aQ(a){return J.S(a)&1073741823}, +aR(a,b){var s,r if(a==null)return-1 s=a.length -for(r=0;r"]=s delete s[""] return s}} -A.cG.prototype={ -$1(a){var s=this.a,r=s.k(0,a) -return r==null?A.E(s).y[1].a(r):r}, -$S(){return A.E(this.a).i("2(1)")}} -A.cJ.prototype={} -A.O.prototype={ +A.cA.prototype={} +A.aa.prototype={ gl(a){return this.a.a}, -gB(a){var s=this.a,r=new A.bK(s,s.r) -r.c=s.e -return r}} -A.bK.prototype={ -gp(){return this.d}, +gv(a){var s=this.a +return new A.bF(s,s.r,s.e)}} +A.bF.prototype={ +gn(){return this.d}, m(){var s,r=this,q=r.a -if(r.b!==q.r)throw A.a(A.as(q)) +if(r.b!==q.r)throw A.b(A.al(q)) s=r.c if(s==null){r.d=null return!1}else{r.d=s.a r.c=s.c return!0}}} -A.e1.prototype={ +A.aT.prototype={ +gl(a){return this.a.a}, +gv(a){var s=this.a +return new A.aS(s,s.r,s.e)}} +A.aS.prototype={ +gn(){return this.d}, +m(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.b(A.al(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=s.b +r.c=s.c +return!0}}} +A.dL.prototype={ $1(a){return this.a(a)}, -$S:10} -A.e2.prototype={ +$S:9} +A.dM.prototype={ $2(a,b){return this.a(a,b)}, -$S:11} -A.e3.prototype={ +$S:10} +A.dN.prototype={ $1(a){return this.a(a)}, -$S:12} -A.bf.prototype={ -h(a){return this.aH(!1)}, -aH(a){var s,r,q,p,o,n=this.bo(),m=this.aB(),l=(a?""+"Record ":"")+"(" +$S:11} +A.bb.prototype={ +h(a){return this.aE(!1)}, +aE(a){var s,r,q,p,o,n=this.bg(),m=this.aw(),l=(a?"Record ":"")+"(" for(s=n.length,r="",q=0;q0;){--q;--s -j[q]=r[s]}}return J.eY(A.hU(j,!1,k))}} -A.cf.prototype={ -aB(){return[this.a,this.b]}, -F(a,b){if(b==null)return!1 -return b instanceof A.cf&&this.$s===b.$s&&J.F(this.a,b.a)&&J.F(this.b,b.b)}, -gn(a){return A.hY(this.$s,this.a,this.b,B.i)}} -A.cE.prototype={ +k[q]=r[s]}}k=A.hE(k,!1,t.K) +k.$flags=3 +return k}} +A.c9.prototype={ +aw(){return[this.a,this.b]}, +E(a,b){if(b==null)return!1 +return b instanceof A.c9&&this.$s===b.$s&&J.G(this.a,b.a)&&J.G(this.b,b.b)}, +gp(a){return A.hH(this.$s,this.a,this.b,B.h)}} +A.cw.prototype={ h(a){return"RegExp/"+this.a+"/"+this.b.flags}, -gbr(){var s=this,r=s.c +gbj(){var s=this,r=s.c if(r!=null)return r r=s.b -return s.c=A.eZ(s.a,r.multiline,!r.ignoreCase,r.unicode,r.dotAll,!0)}, -bn(a,b){var s,r=this.gbr() +return s.c=A.eL(s.a,r.multiline,!r.ignoreCase,r.unicode,r.dotAll,"g")}, +bf(a,b){var s,r=this.gbj() r.lastIndex=b s=r.exec(a) if(s==null)return null -return new A.ce(s)}} -A.ce.prototype={ -gbD(){var s=this.b +return new A.c8(s)}} +A.c8.prototype={ +gbw(){var s=this.b return s.index+s[0].length}, k(a,b){return this.b[b]}, -$icL:1, -$iel:1} -A.d3.prototype={ -gp(){var s=this.d +$icC:1, +$ie7:1} +A.cT.prototype={ +gn(){var s=this.d return s==null?t.F.a(s):s}, -m(){var s,r,q,p,o,n=this,m=n.b -if(m==null)return!1 -s=n.c -r=m.length -if(s<=r){q=n.a -p=q.bn(m,s) -if(p!=null){n.d=p -o=p.gbD() -if(p.b.index===o){if(q.b.unicode){s=n.c -q=s+1 -if(q=55296&&s<=56319){s=m.charCodeAt(q) -s=s>=56320&&s<=57343}else s=!1}else s=!1}else s=!1 -o=(s?o+1:o)+1}n.c=o -return!0}}n.b=n.d=null +m(){var s,r,q,p,o,n,m=this,l=m.b +if(l==null)return!1 +s=m.c +r=l.length +if(s<=r){q=m.a +p=q.bf(l,s) +if(p!=null){m.d=p +o=p.gbw() +if(p.b.index===o){s=!1 +if(q.b.unicode){q=m.c +n=q+1 +if(n=55296&&r<=56319){s=l.charCodeAt(n) +s=s>=56320&&s<=57343}}}o=(s?o+1:o)+1}m.c=o +return!0}}m.b=m.d=null return!1}} -A.bM.prototype={ -gt(a){return B.ad}, -$ij:1} -A.aZ.prototype={} -A.bN.prototype={ -gt(a){return B.ae}, -$ij:1} -A.aw.prototype={ +A.an.prototype={ +gq(a){return B.a3}, +$ih:1} +A.aX.prototype={} +A.bG.prototype={ +gq(a){return B.a4}, +$ih:1} +A.ao.prototype={ gl(a){return a.length}, -$iD:1} -A.aX.prototype={ -k(a,b){A.V(b,a,a.length) +$iC:1} +A.aV.prototype={ +k(a,b){A.ad(b,a,a.length) return a[b]}, -q(a,b,c){A.V(b,a,a.length) -a[b]=c}, -$ic:1, -$if:1} -A.aY.prototype={ -q(a,b,c){A.V(b,a,a.length) -a[b]=c}, $ic:1, $if:1} -A.bO.prototype={ -gt(a){return B.af}, -$ij:1} -A.bP.prototype={ -gt(a){return B.ag}, -$ij:1} -A.bQ.prototype={ -gt(a){return B.ah}, -k(a,b){A.V(b,a,a.length) +A.aW.prototype={$ic:1,$if:1} +A.bH.prototype={ +gq(a){return B.a5}, +$ih:1} +A.bI.prototype={ +gq(a){return B.a6}, +$ih:1} +A.bJ.prototype={ +gq(a){return B.a7}, +k(a,b){A.ad(b,a,a.length) return a[b]}, -$ij:1} -A.bR.prototype={ -gt(a){return B.ai}, -k(a,b){A.V(b,a,a.length) +$ih:1} +A.bK.prototype={ +gq(a){return B.a8}, +k(a,b){A.ad(b,a,a.length) return a[b]}, -$ij:1} -A.bS.prototype={ -gt(a){return B.aj}, -k(a,b){A.V(b,a,a.length) +$ih:1} +A.bL.prototype={ +gq(a){return B.a9}, +k(a,b){A.ad(b,a,a.length) return a[b]}, -$ij:1} -A.bT.prototype={ -gt(a){return B.al}, -k(a,b){A.V(b,a,a.length) +$ih:1} +A.bM.prototype={ +gq(a){return B.ab}, +k(a,b){A.ad(b,a,a.length) return a[b]}, -$ij:1} -A.bU.prototype={ -gt(a){return B.am}, -k(a,b){A.V(b,a,a.length) +$ih:1} +A.bN.prototype={ +gq(a){return B.ac}, +k(a,b){A.ad(b,a,a.length) return a[b]}, -$ij:1} -A.b_.prototype={ -gt(a){return B.an}, +$ih:1} +A.aY.prototype={ +gq(a){return B.ad}, gl(a){return a.length}, -k(a,b){A.V(b,a,a.length) +k(a,b){A.ad(b,a,a.length) return a[b]}, -$ij:1} -A.b0.prototype={ -gt(a){return B.ao}, +$ih:1} +A.bO.prototype={ +gq(a){return B.ae}, gl(a){return a.length}, -k(a,b){A.V(b,a,a.length) +k(a,b){A.ad(b,a,a.length) return a[b]}, -$ij:1, -$iak:1} -A.bb.prototype={} -A.bc.prototype={} -A.bd.prototype={} -A.be.prototype={} -A.H.prototype={ -i(a){return A.bl(v.typeUniverse,this,a)}, -A(a){return A.fs(v.typeUniverse,this,a)}} -A.cb.prototype={} -A.dA.prototype={ -h(a){return A.C(this.a,null)}} -A.ca.prototype={ +$ih:1} +A.b7.prototype={} +A.b8.prototype={} +A.b9.prototype={} +A.ba.prototype={} +A.K.prototype={ +j(a){return A.bh(v.typeUniverse,this,a)}, +C(a){return A.fd(v.typeUniverse,this,a)}} +A.c4.prototype={} +A.dl.prototype={ +h(a){return A.D(this.a,null)}} +A.c3.prototype={ h(a){return this.a}} -A.bh.prototype={$iR:1} -A.d5.prototype={ +A.bd.prototype={$iP:1} +A.cV.prototype={ $1(a){var s=this.a,r=s.a s.a=null r.$0()}, -$S:5} -A.d4.prototype={ +$S:4} +A.cU.prototype={ $1(a){var s,r this.a.a=a s=this.b r=this.c s.firstChild?s.removeChild(r):s.appendChild(r)}, -$S:13} -A.d6.prototype={ +$S:12} +A.cW.prototype={ $0(){this.a.$0()}, -$S:6} -A.d7.prototype={ +$S:5} +A.cX.prototype={ $0(){this.a.$0()}, -$S:6} -A.dy.prototype={ -bf(a,b){if(self.setTimeout!=null)self.setTimeout(A.aF(new A.dz(this,b),0),a) -else throw A.a(A.T("`setTimeout()` not found."))}} -A.dz.prototype={ +$S:5} +A.dj.prototype={ +b8(a,b){if(self.setTimeout!=null)self.setTimeout(A.az(new A.dk(this,b),0),a) +else throw A.b(A.cK("`setTimeout()` not found."))}} +A.dk.prototype={ $0(){this.b.$0()}, $S:0} -A.c5.prototype={ -ad(a){var s,r=this +A.c_.prototype={ +ab(a){var s,r=this if(a==null)a=r.$ti.c.a(a) -if(!r.b)r.a.av(a) +if(!r.b)r.a.aq(a) else{s=r.a -if(r.$ti.i("a0<1>").b(a))s.az(a) -else s.a3(a)}}, -ae(a,b){var s=this.a -if(this.b)s.L(a,b) -else s.aw(a,b)}} -A.dK.prototype={ +if(r.$ti.j("V<1>").b(a))s.ar(a) +else s.au(a)}}, +ac(a,b){var s=this.a +if(this.b)s.a3(new A.I(a,b)) +else s.a2(new A.I(a,b))}} +A.dx.prototype={ $1(a){return this.a.$2(0,a)}, -$S:3} -A.dL.prototype={ -$2(a,b){this.a.$2(1,new A.aN(a,b))}, -$S:14} -A.dY.prototype={ +$S:2} +A.dy.prototype={ +$2(a,b){this.a.$2(1,new A.aK(a,b))}, +$S:13} +A.dI.prototype={ $2(a,b){this.a(a,b)}, -$S:15} -A.bz.prototype={ +$S:14} +A.I.prototype={ h(a){return A.i(this.a)}, -$ik:1, -gR(){return this.b}} -A.c7.prototype={ -ae(a,b){var s -A.cn(a,"error",t.K) -s=this.a -if((s.a&30)!==0)throw A.a(A.f9("Future already completed")) -if(b==null)b=A.eN(a) -s.aw(a,b)}, -aM(a){return this.ae(a,null)}} -A.b7.prototype={ -ad(a){var s=this.a -if((s.a&30)!==0)throw A.a(A.f9("Future already completed")) -s.av(a)}} -A.az.prototype={ -bM(a){if((this.c&15)!==6)return!0 -return this.b.b.ap(this.d,a.a)}, -bI(a){var s,r=this.e,q=null,p=a.a,o=this.b.b -if(t.C.b(r))q=o.bU(r,p,a.b) -else q=o.ap(r,p) +$il:1, +gJ(){return this.b}} +A.c1.prototype={ +ac(a,b){var s=this.a +if((s.a&30)!==0)throw A.b(A.eW("Future already completed")) +s.a2(A.iX(a,b))}, +aH(a){return this.ac(a,null)}} +A.b4.prototype={ +ab(a){var s=this.a +if((s.a&30)!==0)throw A.b(A.eW("Future already completed")) +s.aq(a)}} +A.at.prototype={ +bD(a){if((this.c&15)!==6)return!0 +return this.b.b.am(this.d,a.a)}, +bz(a){var s,r=this.e,q=null,p=a.a,o=this.b.b +if(t.Q.b(r))q=o.bI(r,p,a.b) +else q=o.am(r,p) try{p=q -return p}catch(s){if(t.c.b(A.ad(s))){if((this.c&1)!==0)throw A.a(A.a_("The error handler of Future.then must return a value of the returned future's type","onError")) -throw A.a(A.a_("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} -A.v.prototype={ -aE(a){this.a=this.a&1|4 -this.c=a}, -ar(a,b,c){var s,r,q=$.r -if(q===B.d){if(b!=null&&!t.C.b(b)&&!t.v.b(b))throw A.a(A.eM(b,"onError",u.c))}else if(b!=null)b=A.jp(b,q) -s=new A.v(q,c.i("v<0>")) +return p}catch(s){if(t._.b(A.aj(s))){if((this.c&1)!==0)throw A.b(A.T("The error handler of Future.then must return a value of the returned future's type","onError")) +throw A.b(A.T("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} +A.w.prototype={ +an(a,b,c){var s,r,q=$.p +if(q===B.d){if(b!=null&&!t.Q.b(b)&&!t.v.b(b))throw A.b(A.eE(b,"onError",u.c))}else if(b!=null)b=A.je(b,q) +s=new A.w(q,c.j("w<0>")) r=b==null?1:3 -this.a2(new A.az(s,r,a,b,this.$ti.i("@<1>").A(c).i("az<1,2>"))) +this.a1(new A.at(s,r,a,b,this.$ti.j("@<1>").C(c).j("at<1,2>"))) return s}, -aq(a,b){return this.ar(a,null,b)}, -aG(a,b,c){var s=new A.v($.r,c.i("v<0>")) -this.a2(new A.az(s,19,a,b,this.$ti.i("@<1>").A(c).i("az<1,2>"))) +aX(a,b){return this.an(a,null,b)}, +aD(a,b,c){var s=new A.w($.p,c.j("w<0>")) +this.a1(new A.at(s,19,a,b,this.$ti.j("@<1>").C(c).j("at<1,2>"))) return s}, -bu(a){this.a=this.a&1|16 +bm(a){this.a=this.a&1|16 this.c=a}, -S(a){this.a=a.a&30|this.a&1 +R(a){this.a=a.a&30|this.a&1 this.c=a.c}, -a2(a){var s=this,r=s.a +a1(a){var s=this,r=s.a if(r<=3){a.a=s.c s.c=a}else{if((r&4)!==0){r=s.c -if((r.a&24)===0){r.a2(a) -return}s.S(r)}A.aC(null,null,s.b,new A.da(s,a))}}, -a9(a){var s,r,q,p,o,n=this,m={} +if((r.a&24)===0){r.a1(a) +return}s.R(r)}A.cf(null,null,s.b,new A.d_(s,a))}}, +aA(a){var s,r,q,p,o,n=this,m={} m.a=a if(a==null)return s=n.a @@ -3315,247 +3079,252 @@ n.c=a if(r!=null){q=a.a for(p=a;q!=null;p=q,q=o)o=q.a p.a=r}}else{if((s&4)!==0){s=n.c -if((s.a&24)===0){s.a9(a) -return}n.S(s)}m.a=n.T(a) -A.aC(null,null,n.b,new A.dh(m,n))}}, -aa(){var s=this.c +if((s.a&24)===0){s.aA(a) +return}n.R(s)}m.a=n.T(a) +A.cf(null,null,n.b,new A.d3(m,n))}}, +S(){var s=this.c this.c=null return this.T(s)}, T(a){var s,r,q for(s=a,r=null;s!=null;r=s,s=q){q=s.a s.a=r}return r}, -bi(a){var s,r,q,p=this -p.a^=2 -try{a.ar(new A.de(p),new A.df(p),t.P)}catch(q){s=A.ad(q) -r=A.ao(q) -A.k_(new A.dg(p,s,r))}}, -a3(a){var s=this,r=s.aa() +au(a){var s=this,r=s.S() s.a=8 s.c=a -A.ba(s,r)}, -L(a,b){var s=this.aa() -this.bu(A.cp(a,b)) -A.ba(this,s)}, -av(a){if(this.$ti.i("a0<1>").b(a)){this.az(a) -return}this.bh(a)}, -bh(a){this.a^=2 -A.aC(null,null,this.b,new A.dc(this,a))}, -az(a){if(this.$ti.b(a)){A.ie(a,this) -return}this.bi(a)}, -aw(a,b){this.a^=2 -A.aC(null,null,this.b,new A.db(this,a,b))}, -$ia0:1} -A.da.prototype={ -$0(){A.ba(this.a,this.b)}, +A.au(s,r)}, +ba(a){var s,r,q=this +if((a.a&16)!==0){s=q.b===a.b +s=!(s||s)}else s=!1 +if(s)return +r=q.S() +q.R(a) +A.au(q,r)}, +a3(a){var s=this.S() +this.bm(a) +A.au(this,s)}, +aq(a){if(this.$ti.j("V<1>").b(a)){this.ar(a) +return}this.b9(a)}, +b9(a){this.a^=2 +A.cf(null,null,this.b,new A.d1(this,a))}, +ar(a){A.ea(a,this,!1) +return}, +a2(a){this.a^=2 +A.cf(null,null,this.b,new A.d0(this,a))}, +$iV:1} +A.d_.prototype={ +$0(){A.au(this.a,this.b)}, $S:0} -A.dh.prototype={ -$0(){A.ba(this.b,this.a.a)}, +A.d3.prototype={ +$0(){A.au(this.b,this.a.a)}, $S:0} -A.de.prototype={ -$1(a){var s,r,q,p=this.a -p.a^=2 -try{p.a3(p.$ti.c.a(a))}catch(q){s=A.ad(q) -r=A.ao(q) -p.L(s,r)}}, -$S:5} -A.df.prototype={ -$2(a,b){this.a.L(a,b)}, -$S:16} -A.dg.prototype={ -$0(){this.a.L(this.b,this.c)}, +A.d2.prototype={ +$0(){A.ea(this.a.a,this.b,!0)}, $S:0} -A.dd.prototype={ -$0(){A.fi(this.a.a,this.b)}, +A.d1.prototype={ +$0(){this.a.au(this.b)}, $S:0} -A.dc.prototype={ +A.d0.prototype={ $0(){this.a.a3(this.b)}, $S:0} -A.db.prototype={ -$0(){this.a.L(this.b,this.c)}, -$S:0} -A.dk.prototype={ -$0(){var s,r,q,p,o,n,m=this,l=null -try{q=m.a.a -l=q.b.b.bS(q.d)}catch(p){s=A.ad(p) -r=A.ao(p) -q=m.c&&m.b.a.c.a===s -o=m.a -if(q)o.c=m.b.a.c -else o.c=A.cp(s,r) -o.b=!0 -return}if(l instanceof A.v&&(l.a&24)!==0){if((l.a&16)!==0){q=m.a -q.c=l.c -q.b=!0}return}if(l instanceof A.v){n=m.b.a -q=m.a -q.c=l.aq(new A.dl(n),t.z) +A.d6.prototype={ +$0(){var s,r,q,p,o,n,m,l,k=this,j=null +try{q=k.a.a +j=q.b.b.bG(q.d)}catch(p){s=A.aj(p) +r=A.aA(p) +if(k.c&&k.b.a.c.a===s){q=k.a +q.c=k.b.a.c}else{q=s +o=r +if(o==null)o=A.e_(q) +n=k.a +n.c=new A.I(q,o) +q=n}q.b=!0 +return}if(j instanceof A.w&&(j.a&24)!==0){if((j.a&16)!==0){q=k.a +q.c=j.c +q.b=!0}return}if(j instanceof A.w){m=k.b.a +l=new A.w(m.b,m.$ti) +j.an(new A.d7(l,m),new A.d8(l),t.q) +q=k.a +q.c=l q.b=!1}}, $S:0} -A.dl.prototype={ -$1(a){return this.a}, -$S:17} -A.dj.prototype={ -$0(){var s,r,q,p,o +A.d7.prototype={ +$1(a){this.a.ba(this.b)}, +$S:4} +A.d8.prototype={ +$2(a,b){this.a.a3(new A.I(a,b))}, +$S:15} +A.d5.prototype={ +$0(){var s,r,q,p,o,n try{q=this.a p=q.a -q.c=p.b.b.ap(p.d,this.b)}catch(o){s=A.ad(o) -r=A.ao(o) -q=this.a -q.c=A.cp(s,r) -q.b=!0}}, -$S:0} -A.di.prototype={ -$0(){var s,r,q,p,o,n,m=this -try{s=m.a.a.c -p=m.b -if(p.a.bM(s)&&p.a.e!=null){p.c=p.a.bI(s) -p.b=!1}}catch(o){r=A.ad(o) -q=A.ao(o) -p=m.a.a.c -n=m.b -if(p.a===r)n.c=p -else n.c=A.cp(r,q) +q.c=p.b.b.am(p.d,this.b)}catch(o){s=A.aj(o) +r=A.aA(o) +q=s +p=r +if(p==null)p=A.e_(q) +n=this.a +n.c=new A.I(q,p) n.b=!0}}, $S:0} -A.c6.prototype={} -A.ci.prototype={} -A.dJ.prototype={} -A.dW.prototype={ -$0(){A.hH(this.a,this.b)}, +A.d4.prototype={ +$0(){var s,r,q,p,o,n,m,l=this +try{s=l.a.a.c +p=l.b +if(p.a.bD(s)&&p.a.e!=null){p.c=p.a.bz(s) +p.b=!1}}catch(o){r=A.aj(o) +q=A.aA(o) +p=l.a.a.c +if(p.a===r){n=l.b +n.c=p +p=n}else{p=r +n=q +if(n==null)n=A.e_(p) +m=l.b +m.c=new A.I(p,n) +p=m}p.b=!0}}, $S:0} -A.dq.prototype={ -bW(a){var s,r,q -try{if(B.d===$.r){a.$0() -return}A.fS(null,null,this,a)}catch(q){s=A.ad(q) -r=A.ao(q) -A.eB(s,r)}}, -aJ(a){return new A.dr(this,a)}, -bT(a){if($.r===B.d)return a.$0() -return A.fS(null,null,this,a)}, -bS(a){return this.bT(a,t.z)}, -bX(a,b){if($.r===B.d)return a.$1(b) -return A.jr(null,null,this,a,b)}, -ap(a,b){var s=t.z -return this.bX(a,b,s,s)}, -bV(a,b,c){if($.r===B.d)return a.$2(b,c) -return A.jq(null,null,this,a,b,c)}, -bU(a,b,c){var s=t.z -return this.bV(a,b,c,s,s,s)}, -bR(a){return a}, -b1(a){var s=t.z -return this.bR(a,s,s,s)}} -A.dr.prototype={ -$0(){return this.a.bW(this.b)}, +A.c0.prototype={} +A.cc.prototype={} +A.dw.prototype={} +A.dG.prototype={ +$0(){A.hp(this.a,this.b)}, +$S:0} +A.db.prototype={ +bK(a){var s,r,q +try{if(B.d===$.p){a.$0() +return}A.fD(null,null,this,a)}catch(q){s=A.aj(q) +r=A.aA(q) +A.eq(s,r)}}, +bs(a){return new A.dc(this,a)}, +bH(a){if($.p===B.d)return a.$0() +return A.fD(null,null,this,a)}, +bG(a){return this.bH(a,t.z)}, +bL(a,b){if($.p===B.d)return a.$1(b) +return A.jg(null,null,this,a,b)}, +am(a,b){var s=t.z +return this.bL(a,b,s,s)}, +bJ(a,b,c){if($.p===B.d)return a.$2(b,c) +return A.jf(null,null,this,a,b,c)}, +bI(a,b,c){var s=t.z +return this.bJ(a,b,c,s,s,s)}, +bF(a){return a}, +aW(a){var s=t.z +return this.bF(a,s,s,s)}} +A.dc.prototype={ +$0(){return this.a.bK(this.b)}, $S:0} A.e.prototype={ -gB(a){return new A.au(a,this.gl(a),A.aG(a).i("au"))}, -E(a,b){return this.k(a,b)}, -W(a,b){return new A.M(a,A.aG(a).i("@").A(b).i("M<1,2>"))}, -bE(a,b,c,d){var s -A.b3(b,c,this.gl(a)) -for(s=b;s"))}, +D(a,b){return this.k(a,b)}, +V(a,b){return new A.N(a,A.aB(a).j("@").C(b).j("N<1,2>"))}, +h(a){return A.e1(a,"[","]")}, $ic:1, $if:1} -A.P.prototype={ -C(a,b){var s,r,q,p -for(s=this.gO(),s=s.gB(s),r=A.E(this).i("P.V");s.m();){q=s.gp() +A.O.prototype={ +F(a,b){var s,r,q,p +for(s=this.gP(),s=s.gv(s),r=A.R(this).j("O.V");s.m();){q=s.gn() p=this.k(0,q) b.$2(q,p==null?r.a(p):p)}}, -gl(a){var s=this.gO() +gl(a){var s=this.gP() return s.gl(s)}, -h(a){return A.ek(this)}, -$ix:1} -A.cK.prototype={ +h(a){return A.e5(this)}, +$iz:1} +A.cB.prototype={ $2(a,b){var s,r=this.a if(!r.a)this.b.a+=", " r.a=!1 r=this.b s=A.i(a) -s=r.a+=s -r.a=s+": " +r.a=(r.a+=s)+": " s=A.i(b) r.a+=s}, -$S:18} -A.cl.prototype={ -q(a,b,c){throw A.a(A.T("Cannot modify unmodifiable map"))}} -A.aW.prototype={ +$S:16} +A.ce.prototype={ +A(a,b,c){throw A.b(A.cK("Cannot modify unmodifiable map"))}} +A.aU.prototype={ k(a,b){return this.a.k(0,b)}, -q(a,b,c){this.a.q(0,b,c)}, -C(a,b){this.a.C(0,b)}, +A(a,b,c){this.a.A(0,b,c)}, gl(a){var s=this.a return s.gl(s)}, h(a){return this.a.h(0)}, -$ix:1} -A.a7.prototype={} -A.bm.prototype={} -A.cc.prototype={ +$iz:1} +A.as.prototype={} +A.ap.prototype={ +h(a){return A.e1(this,"{","}")}, +D(a,b){var s,r +A.e6(b,"index") +s=this.gv(this) +for(r=b;s.m();){if(r===0)return s.gn();--r}throw A.b(A.e0(b,b-r,this,"index"))}, +$ic:1} +A.bi.prototype={} +A.c5.prototype={ k(a,b){var s,r=this.b if(r==null)return this.c.k(0,b) else if(typeof b!="string")return null else{s=r[b] -return typeof s=="undefined"?this.bs(b):s}}, -gl(a){return this.b==null?this.c.a:this.M().length}, -gO(){if(this.b==null){var s=this.c -return new A.O(s,A.E(s).i("O<1>"))}return new A.cd(this)}, -q(a,b,c){var s,r,q=this -if(q.b==null)q.c.q(0,b,c) -else if(q.H(b)){s=q.b +return typeof s=="undefined"?this.bk(b):s}}, +gl(a){return this.b==null?this.c.a:this.L().length}, +gP(){if(this.b==null){var s=this.c +return new A.aa(s,A.R(s).j("aa<1>"))}return new A.c6(this)}, +A(a,b,c){var s,r,q=this +if(q.b==null)q.c.A(0,b,c) +else if(q.O(b)){s=q.b s[b]=c r=q.a -if(r==null?s!=null:r!==s)r[b]=null}else q.by().q(0,b,c)}, -H(a){if(this.b==null)return this.c.H(a) +if(r==null?s!=null:r!==s)r[b]=null}else q.bq().A(0,b,c)}, +O(a){if(this.b==null)return this.c.O(a) return Object.prototype.hasOwnProperty.call(this.a,a)}, -C(a,b){var s,r,q,p,o=this -if(o.b==null)return o.c.C(0,b) -s=o.M() +F(a,b){var s,r,q,p,o=this +if(o.b==null)return o.c.F(0,b) +s=o.L() for(r=0;r"))}return s}} -A.dG.prototype={ +D(a,b){var s=this.a +return s.b==null?s.gP().D(0,b):s.L()[b]}, +gv(a){var s=this.a +if(s.b==null){s=s.gP() +s=s.gv(s)}else{s=s.L() +s=new J.U(s,s.length,A.a2(s).j("U<1>"))}return s}} +A.dt.prototype={ $0(){var s,r try{s=new TextDecoder("utf-8",{fatal:true}) return s}catch(r){}return null}, -$S:7} -A.dF.prototype={ +$S:6} +A.ds.prototype={ $0(){var s,r try{s=new TextDecoder("utf-8",{fatal:false}) return s}catch(r){}return null}, -$S:7} -A.cq.prototype={ -bP(a0,a1,a2){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a="Invalid base64 encoding length " -a2=A.b3(a1,a2,a0.length) -s=$.hj() +$S:6} +A.cj.prototype={ +bE(a0,a1,a2){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a="Invalid base64 encoding length " +a2=A.bT(a1,a2,a0.length) +s=$.h3() for(r=a1,q=r,p=null,o=-1,n=-1,m=0;r=0)A.eO(a0,n,a2,o,m,d) -else{c=B.c.a0(d-1,4)+1 -if(c===1)throw A.a(A.z(a,a0,a2)) +if(o>=0)A.eF(a0,n,a2,o,m,d) +else{c=B.c.a_(d-1,4)+1 +if(c===1)throw A.b(A.y(a,a0,a2)) for(;c<4;){e+="=" p.a=e;++c}}e=p.a -return B.a.J(a0,a1,a2,e.charCodeAt(0)==0?e:e)}b=a2-a1 -if(o>=0)A.eO(a0,n,a2,o,m,b) -else{c=B.c.a0(b,4) -if(c===1)throw A.a(A.z(a,a0,a2)) -if(c>1)a0=B.a.J(a0,a2,a2,c===2?"==":"=")}return a0}} -A.cr.prototype={} -A.bC.prototype={} -A.bE.prototype={} -A.cv.prototype={} -A.cy.prototype={ +return B.a.I(a0,a1,a2,e.charCodeAt(0)==0?e:e)}b=a2-a1 +if(o>=0)A.eF(a0,n,a2,o,m,b) +else{c=B.c.a_(b,4) +if(c===1)throw A.b(A.y(a,a0,a2)) +if(c>1)a0=B.a.I(a0,a2,a2,c===2?"==":"=")}return a0}} +A.ck.prototype={} +A.bv.prototype={} +A.bx.prototype={} +A.co.prototype={} +A.cr.prototype={ h(a){return"unknown"}} -A.cx.prototype={ -I(a){var s=this.bl(a,0,a.length) +A.cq.prototype={ +G(a){var s=this.bd(a,0,a.length) return s==null?a:s}, -bl(a,b,c){var s,r,q,p +bd(a,b,c){var s,r,q,p for(s=b,r=null;s":q=">" break case"/":q="/" break -default:q=null}if(q!=null){if(r==null)r=new A.y("") -if(s>b)r.a+=B.a.j(a,b,s) +default:q=null}if(q!=null){if(r==null)r=new A.A("") +if(s>b)r.a+=B.a.i(a,b,s) r.a+=q b=s+1}}if(r==null)return null -if(c>b){p=B.a.j(a,b,c) +if(c>b){p=B.a.i(a,b,c) r.a+=p}p=r.a return p.charCodeAt(0)==0?p:p}} -A.cH.prototype={ -bA(a,b){var s=A.jn(a,this.gbC().a) +A.cy.prototype={ +bt(a,b){var s=A.jc(a,this.gbv().a) return s}, -gbC(){return B.L}} -A.cI.prototype={} -A.d0.prototype={} -A.d2.prototype={ -I(a){var s,r,q,p=A.b3(0,null,a.length),o=p-0 -if(o===0)return new Uint8Array(0) -s=o*3 +gbv(){return B.C}} +A.cz.prototype={} +A.cQ.prototype={} +A.cS.prototype={ +G(a){var s,r,q,p=A.bT(0,null,a.length) +if(p===0)return new Uint8Array(0) +s=p*3 r=new Uint8Array(s) -q=new A.dH(r) -if(q.bp(a,0,p)!==p)q.ab() -return new Uint8Array(r.subarray(0,A.iW(0,q.b,s)))}} -A.dH.prototype={ -ab(){var s=this,r=s.c,q=s.b,p=s.b=q+1 +q=new A.du(r) +if(q.bh(a,0,p)!==p)q.aa() +return new Uint8Array(r.subarray(0,A.iJ(0,q.b,s)))}} +A.du.prototype={ +aa(){var s=this,r=s.c,q=s.b,p=s.b=q+1 +r.$flags&2&&A.aD(r) r[q]=239 q=s.b=p+1 r[p]=191 s.b=q+1 r[q]=189}, -bz(a,b){var s,r,q,p,o=this +br(a,b){var s,r,q,p,o=this if((b&64512)===56320){s=65536+((a&1023)<<10)|b&1023 r=o.c q=o.b p=o.b=q+1 +r.$flags&2&&A.aD(r) r[q]=s>>>18|240 q=o.b=p+1 r[p]=s>>>12&63|128 @@ -3647,71 +3418,73 @@ p=o.b=q+1 r[q]=s>>>6&63|128 o.b=p+1 r[p]=s&63|128 -return!0}else{o.ab() +return!0}else{o.aa() return!1}}, -bp(a,b,c){var s,r,q,p,o,n,m,l=this +bh(a,b,c){var s,r,q,p,o,n,m,l,k=this if(b!==c&&(a.charCodeAt(c-1)&64512)===55296)--c -for(s=l.c,r=s.length,q=b;q=r)break -l.b=o+1 -s[o]=p}else{o=p&64512 -if(o===55296){if(l.b+4>r)break -n=q+1 -if(l.bz(p,a.charCodeAt(n)))q=n}else if(o===56320){if(l.b+3>r)break -l.ab()}else if(p<=2047){o=l.b -m=o+1 -if(m>=r)break -l.b=m -s[o]=p>>>6|192 -l.b=m+1 -s[m]=p&63|128}else{o=l.b -if(o+2>=r)break -m=l.b=o+1 -s[o]=p>>>12|224 -o=l.b=m+1 -s[m]=p>>>6&63|128 -l.b=o+1 -s[o]=p&63|128}}}return q}} -A.d1.prototype={ -I(a){return new A.dE(this.a).bm(a,0,null,!0)}} -A.dE.prototype={ -bm(a,b,c,d){var s,r,q,p,o,n,m=this,l=A.b3(b,c,J.aI(a)) +for(s=k.c,r=s.$flags|0,q=s.length,p=b;p=q)break +k.b=n+1 +r&2&&A.aD(s) +s[n]=o}else{n=o&64512 +if(n===55296){if(k.b+4>q)break +m=p+1 +if(k.br(o,a.charCodeAt(m)))p=m}else if(n===56320){if(k.b+3>q)break +k.aa()}else if(o<=2047){n=k.b +l=n+1 +if(l>=q)break +k.b=l +r&2&&A.aD(s) +s[n]=o>>>6|192 +k.b=l+1 +s[l]=o&63|128}else{n=k.b +if(n+2>=q)break +l=k.b=n+1 +r&2&&A.aD(s) +s[n]=o>>>12|224 +n=k.b=l+1 +s[l]=o>>>6&63|128 +k.b=n+1 +s[n]=o&63|128}}}return p}} +A.cR.prototype={ +G(a){return new A.dr(this.a).be(a,0,null,!0)}} +A.dr.prototype={ +be(a,b,c,d){var s,r,q,p,o,n,m=this,l=A.bT(b,c,J.ci(a)) if(b===l)return"" if(a instanceof Uint8Array){s=a r=s -q=0}else{r=A.iP(a,b,l) +q=0}else{r=A.ix(a,b,l) l-=b q=b b=0}if(l-b>=15){p=m.a -o=A.iO(p,r,b,l) +o=A.iw(p,r,b,l) if(o!=null){if(!p)return o if(o.indexOf("\ufffd")<0)return o}}o=m.a4(r,b,l,!0) p=m.b -if((p&1)!==0){n=A.iQ(p) +if((p&1)!==0){n=A.iy(p) m.b=0 -throw A.a(A.z(n,a,q+m.c))}return o}, +throw A.b(A.y(n,a,q+m.c))}return o}, a4(a,b,c,d){var s,r,q=this -if(c-b>1000){s=B.c.bw(b+c,2) +if(c-b>1000){s=B.c.bo(b+c,2) r=q.a4(a,b,s,!1) if((q.b&1)!==0)return r -return r+q.a4(a,s,c,d)}return q.bB(a,b,c,d)}, -bB(a,b,c,d){var s,r,q,p,o,n,m,l=this,k=65533,j=l.b,i=l.c,h=new A.y(""),g=b+1,f=a[b] +return r+q.a4(a,s,c,d)}return q.bu(a,b,c,d)}, +bu(a,b,c,d){var s,r,q,p,o,n,m,l=this,k=65533,j=l.b,i=l.c,h=new A.A(""),g=b+1,f=a[b] $label0$0:for(s=l.a;!0;){for(;!0;g=p){r="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHHJEEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKCCCCCCCCCCCCDCLONNNMEEEEEEEEEEE".charCodeAt(f)&31 i=j<=32?f&61694>>>r:(f&63|i<<6)>>>0 j=" \x000:XECCCCCN:lDb \x000:XECCCCCNvlDb \x000:XECCCCCN:lDb AAAAA\x00\x00\x00\x00\x00AAAAA00000AAAAA:::::AAAAAGG000AAAAA00KKKAAAAAG::::AAAAA:IIIIAAAAA000\x800AAAAA\x00\x00\x00\x00 AAAAA".charCodeAt(j+r) -if(j===0){q=A.Q(i) +if(j===0){q=A.Y(i) h.a+=q if(g===c)break $label0$0 -break}else if((j&1)!==0){if(s)switch(j){case 69:case 67:q=A.Q(k) +break}else if((j&1)!==0){if(s)switch(j){case 69:case 67:q=A.Y(k) h.a+=q break -case 65:q=A.Q(k) +case 65:q=A.Y(k) h.a+=q;--g break -default:q=A.Q(k) -q=h.a+=q -h.a=q+A.Q(k) +default:q=A.Y(k) +h.a=(h.a+=q)+q break}else{l.b=j l.c=g-1 return""}j=0}if(g===c)break $label0$0 @@ -3723,52 +3496,43 @@ break}n=p+1 f=a[p] if(f>=128){o=n-1 p=n -break}p=n}if(o-g<20)for(m=g;m32)if(s){s=A.Q(k) +g=p}else g=p}if(d&&j>32)if(s){s=A.Y(k) h.a+=s}else{l.b=77 l.c=c return""}l.b=j l.c=i s=h.a return s.charCodeAt(0)==0?s:s}} -A.cM.prototype={ -$2(a,b){var s=this.b,r=this.a,q=s.a+=r.a -q+=a.a -s.a=q -s.a=q+": " -q=A.at(b) -s.a+=q -r.a=", "}, -$S:19} -A.dD.prototype={ +A.dq.prototype={ $2(a,b){var s,r if(typeof b=="string")this.a.set(a,b) else if(b==null)this.a.set(a,"") -else for(s=J.L(b),r=this.a;s.m();){b=s.gp() +else for(s=J.aE(b),r=this.a;s.m();){b=s.gn() if(typeof b=="string")r.append(a,b) else if(b==null)r.append(a,"") -else A.iS(b)}}, -$S:2} -A.d8.prototype={ -h(a){return this.aA()}} -A.k.prototype={ -gR(){return A.i1(this)}} -A.bx.prototype={ +else A.fq(b)}}, +$S:7} +A.cY.prototype={ +h(a){return this.av()}} +A.l.prototype={ +gJ(){return A.hI(this)}} +A.br.prototype={ h(a){var s=this.a -if(s!=null)return"Assertion failed: "+A.at(s) +if(s!=null)return"Assertion failed: "+A.cp(s) return"Assertion failed"}} -A.R.prototype={} -A.K.prototype={ +A.P.prototype={} +A.H.prototype={ ga6(){return"Invalid argument"+(!this.a?"(s)":"")}, ga5(){return""}, h(a){var s=this,r=s.c,q=r==null?"":" ("+r+")",p=s.d,o=p==null?"":": "+p,n=s.ga6()+q+o if(!s.a)return n -return n+s.ga5()+": "+A.at(s.gak())}, -gak(){return this.b}} -A.b2.prototype={ -gak(){return this.b}, +return n+s.ga5()+": "+A.cp(s.gah())}, +gah(){return this.b}} +A.b_.prototype={ +gah(){return this.b}, ga6(){return"RangeError"}, ga5(){var s,r=this.e,q=this.f if(r==null)s=q!=null?": Not less than or equal to "+A.i(q):"" @@ -3776,52 +3540,40 @@ else if(q==null)s=": Not greater than or equal to "+A.i(r) else if(q>r)s=": Not in inclusive range "+A.i(r)+".."+A.i(q) else s=qe.length else s=!1 if(s)f=null -if(f==null){if(e.length>78)e=B.a.j(e,0,75)+"..." +if(f==null){if(e.length>78)e=B.a.i(e,0,75)+"..." return g+"\n"+e}for(r=1,q=0,p=!1,o=0;o1?g+(" (at line "+r+", character "+(f-q+1)+")\n"):g+(" (at character " m=e.length for(o=f;o78)if(f-q<75){l=q+75 -k=q -j="" -i="..."}else{if(m-f<75){k=m-75 -l=m -i=""}else{k=f-36 -l=f+36 -i="..."}j="..."}else{l=m -k=q -j="" -i=""}return g+j+B.a.j(e,k,l)+i+"\n"+B.a.b9(" ",f-k+j.length)+"^\n"}else return f!=null?g+(" (at offset "+A.i(f)+")"):g}} -A.n.prototype={ -W(a,b){return A.hz(this,A.E(this).i("n.E"),b)}, -gl(a){var s,r=this.gB(this) +break}}l="" +if(m-q>78){k="..." +if(f-q<75){j=q+75 +i=q}else{if(m-f<75){i=m-75 +j=m +k=""}else{i=f-36 +j=f+36}l="..."}}else{j=m +i=q +k=""}return g+l+B.a.i(e,i,j)+k+"\n"+B.a.b2(" ",f-i+l.length)+"^\n"}else return f!=null?g+(" (at offset "+A.i(f)+")"):g}} +A.r.prototype={ +V(a,b){return A.hh(this,A.R(this).j("r.E"),b)}, +gl(a){var s,r=this.gv(this) for(s=0;r.m();)++s return s}, -E(a,b){var s,r -A.f5(b,"index") -s=this.gB(this) -for(r=b;s.m();){if(r===0)return s.gp();--r}throw A.a(A.eU(b,b-r,this,"index"))}, -h(a){return A.hO(this,"(",")")}} -A.u.prototype={ -gn(a){return A.l.prototype.gn.call(this,0)}, +D(a,b){var s,r +A.e6(b,"index") +s=this.gv(this) +for(r=b;s.m();){if(r===0)return s.gn();--r}throw A.b(A.e0(b,b-r,this,"index"))}, +h(a){return A.hy(this,"(",")")}} +A.t.prototype={ +gp(a){return A.j.prototype.gp.call(this,0)}, h(a){return"null"}} -A.l.prototype={$il:1, -F(a,b){return this===b}, -gn(a){return A.bY(this)}, -h(a){return"Instance of '"+A.cQ(this)+"'"}, -b_(a,b){throw A.a(A.f1(this,b))}, -gt(a){return A.jK(this)}, +A.j.prototype={$ij:1, +E(a,b){return this===b}, +gp(a){return A.bR(this)}, +h(a){return"Instance of '"+A.bS(this)+"'"}, +gq(a){return A.jA(this)}, toString(){return this.h(this)}} -A.cj.prototype={ +A.cd.prototype={ h(a){return""}, -$ia4:1} -A.y.prototype={ +$iZ:1} +A.A.prototype={ gl(a){return this.a.length}, h(a){var s=this.a return s.charCodeAt(0)==0?s:s}} -A.d_.prototype={ -$2(a,b){var s,r,q,p=B.a.aU(b,"=") -if(p===-1){if(b!=="")a.q(0,A.ew(b,0,b.length,this.a,!0),"")}else if(p!==0){s=B.a.j(b,0,p) +A.cP.prototype={ +$2(a,b){var s,r,q,p=B.a.aP(b,"=") +if(p===-1){if(b!=="")a.A(0,A.ei(b,0,b.length,this.a,!0),"")}else if(p!==0){s=B.a.i(b,0,p) r=B.a.K(b,p+1) q=this.a -a.q(0,A.ew(s,0,s.length,q,!0),A.ew(r,0,r.length,q,!0))}return a}, -$S:20} -A.cX.prototype={ -$2(a,b){throw A.a(A.z("Illegal IPv4 address, "+a,this.a,b))}, -$S:21} -A.cY.prototype={ -$2(a,b){throw A.a(A.z("Illegal IPv6 address, "+a,this.a,b))}, -$S:22} -A.cZ.prototype={ +a.A(0,A.ei(s,0,s.length,q,!0),A.ei(r,0,r.length,q,!0))}return a}, +$S:17} +A.cM.prototype={ +$2(a,b){throw A.b(A.y("Illegal IPv4 address, "+a,this.a,b))}, +$S:18} +A.cN.prototype={ +$2(a,b){throw A.b(A.y("Illegal IPv6 address, "+a,this.a,b))}, +$S:19} +A.cO.prototype={ $2(a,b){var s if(b-a>4)this.a.$2("an IPv6 part can only contain a maximum of 4 hex digits",a) -s=A.e8(B.a.j(this.b,a,b),16) +s=A.dS(B.a.i(this.b,a,b),16) if(s<0||s>65535)this.a.$2("each part must be in the range of `0x0..0xFFFF`",a) return s}, -$S:23} -A.bn.prototype={ -gV(){var s,r,q,p,o=this,n=o.w +$S:20} +A.bj.prototype={ +gU(){var s,r,q,p,o=this,n=o.w if(n===$){s=o.a -r=s.length!==0?""+s+":":"" +r=s.length!==0?s+":":"" q=o.c p=q==null if(!p||s==="file"){s=r+"//" @@ -3906,169 +3655,149 @@ r=o.f if(r!=null)s=s+"?"+r r=o.r if(r!=null)s=s+"#"+r -n!==$&&A.bv() n=o.w=s.charCodeAt(0)==0?s:s}return n}, -gn(a){var s,r=this,q=r.y -if(q===$){s=B.a.gn(r.gV()) -r.y!==$&&A.bv() +gp(a){var s,r=this,q=r.y +if(q===$){s=B.a.gp(r.gU()) +r.y!==$&&A.ch() r.y=s q=s}return q}, -gan(){var s,r=this,q=r.z +gak(){var s,r=this,q=r.z if(q===$){s=r.f -s=A.fg(s==null?"":s) -r.z!==$&&A.bv() -q=r.z=new A.a7(s,t.h)}return q}, -gb4(){return this.b}, -gai(){var s=this.c +s=A.f2(s==null?"":s) +r.z!==$&&A.ch() +q=r.z=new A.as(s,t.h)}return q}, +gb_(){return this.b}, +gaf(){var s=this.c if(s==null)return"" -if(B.a.u(s,"["))return B.a.j(s,1,s.length-1) +if(B.a.u(s,"[")&&!B.a.t(s,"v",1))return B.a.i(s,1,s.length-1) return s}, -ga_(){var s=this.d -return s==null?A.ft(this.a):s}, -gam(){var s=this.f +gZ(){var s=this.d +return s==null?A.fe(this.a):s}, +gaj(){var s=this.f return s==null?"":s}, -gaO(){var s=this.r +gaJ(){var s=this.r return s==null?"":s}, -ao(a){var s,r,q,p,o=this,n=o.a,m=n==="file",l=o.b,k=o.d,j=o.c +al(a){var s,r,q,p,o=this,n=o.a,m=n==="file",l=o.b,k=o.d,j=o.c if(!(j!=null))j=l.length!==0||k!=null||m?"":null s=o.e if(!m)r=j!=null&&s.length!==0 else r=!0 if(r&&!B.a.u(s,"/"))s="/"+s q=s -p=A.eu(null,0,0,a) -return A.es(n,l,j,k,q,p,o.r)}, -gaX(){if(this.a!==""){var s=this.r +p=A.eg(null,0,0,a) +return A.ee(n,l,j,k,q,p,o.r)}, +gaS(){if(this.a!==""){var s=this.r s=(s==null?"":s)===""}else s=!1 return s}, -gaQ(){return this.c!=null}, -gaT(){return this.f!=null}, -gaR(){return this.r!=null}, -h(a){return this.gV()}, -F(a,b){var s,r,q=this +gaL(){return this.c!=null}, +gaO(){return this.f!=null}, +gaM(){return this.r!=null}, +h(a){return this.gU()}, +E(a,b){var s,r,q,p=this if(b==null)return!1 -if(q===b)return!0 -if(t.R.b(b))if(q.a===b.ga1())if(q.c!=null===b.gaQ())if(q.b===b.gb4())if(q.gai()===b.gai())if(q.ga_()===b.ga_())if(q.e===b.gb0()){s=q.f -r=s==null -if(!r===b.gaT()){if(r)s="" -if(s===b.gam()){s=q.r -r=s==null -if(!r===b.gaR()){if(r)s="" -s=s===b.gaO()}else s=!1}else s=!1}else s=!1}else s=!1 -else s=!1 -else s=!1 -else s=!1 -else s=!1 -else s=!1 -else s=!1 -return s}, -$ic3:1, -ga1(){return this.a}, -gb0(){return this.e}} -A.dC.prototype={ +if(p===b)return!0 +s=!1 +if(t.R.b(b))if(p.a===b.ga0())if(p.c!=null===b.gaL())if(p.b===b.gb_())if(p.gaf()===b.gaf())if(p.gZ()===b.gZ())if(p.e===b.gaV()){r=p.f +q=r==null +if(!q===b.gaO()){if(q)r="" +if(r===b.gaj()){r=p.r +q=r==null +if(!q===b.gaM()){s=q?"":r +s=s===b.gaJ()}}}}return s}, +$ibY:1, +ga0(){return this.a}, +gaV(){return this.e}} +A.dp.prototype={ $2(a,b){var s=this.b,r=this.a s.a+=r.a r.a="&" -r=A.fz(B.h,a,B.e,!0) +r=A.fk(1,a,B.e,!0) r=s.a+=r if(b!=null&&b.length!==0){s.a=r+"=" -r=A.fz(B.h,b,B.e,!0) +r=A.fk(1,b,B.e,!0) s.a+=r}}, -$S:24} -A.dB.prototype={ +$S:21} +A.dn.prototype={ $2(a,b){var s,r if(b==null||typeof b=="string")this.a.$2(a,b) -else for(s=J.L(b),r=this.a;s.m();)r.$2(a,s.gp())}, -$S:2} -A.cW.prototype={ -gb3(){var s,r,q,p,o=this,n=null,m=o.c +else for(s=J.aE(b),r=this.a;s.m();)r.$2(a,s.gn())}, +$S:7} +A.cL.prototype={ +gaZ(){var s,r,q,p,o=this,n=null,m=o.c if(m==null){m=o.a s=o.b[0]+1 -r=B.a.Y(m,"?",s) +r=B.a.X(m,"?",s) q=m.length -if(r>=0){p=A.bo(m,r+1,q,B.f,!1,!1) +if(r>=0){p=A.bk(m,r+1,q,256,!1,!1) q=r}else p=n -m=o.c=new A.c9("data","",n,n,A.bo(m,s,q,B.p,!1,!1),p,n)}return m}, +m=o.c=new A.c2("data","",n,n,A.bk(m,s,q,128,!1,!1),p,n)}return m}, h(a){var s=this.a return this.b[0]===-1?"data:"+s:s}} -A.dP.prototype={ -$2(a,b){var s=this.a[a] -B.ab.bE(s,0,96,b) -return s}, -$S:25} -A.dQ.prototype={ -$3(a,b,c){var s,r -for(s=b.length,r=0;r>>0]=c}, -$S:8} -A.ch.prototype={ -gaQ(){return this.c>0}, -gaS(){return this.c>0&&this.d+10&&this.r>=this.a.length}, -ga1(){var s=this.w -return s==null?this.w=this.bk():s}, -bk(){var s,r=this,q=r.b +A.cb.prototype={ +gaL(){return this.c>0}, +gaN(){return this.c>0&&this.d+10&&this.r>=this.a.length}, +ga0(){var s=this.w +return s==null?this.w=this.bc():s}, +bc(){var s,r=this,q=r.b if(q<=0)return"" s=q===4 if(s&&B.a.u(r.a,"http"))return"http" if(q===5&&B.a.u(r.a,"https"))return"https" if(s&&B.a.u(r.a,"file"))return"file" if(q===7&&B.a.u(r.a,"package"))return"package" -return B.a.j(r.a,0,q)}, -gb4(){var s=this.c,r=this.b+3 -return s>r?B.a.j(this.a,r,s-1):""}, -gai(){var s=this.c -return s>0?B.a.j(this.a,s,this.d):""}, -ga_(){var s,r=this -if(r.gaS())return A.e8(B.a.j(r.a,r.d+1,r.e),null) +return B.a.i(r.a,0,q)}, +gb_(){var s=this.c,r=this.b+3 +return s>r?B.a.i(this.a,r,s-1):""}, +gaf(){var s=this.c +return s>0?B.a.i(this.a,s,this.d):""}, +gZ(){var s,r=this +if(r.gaN())return A.dS(B.a.i(r.a,r.d+1,r.e),null) s=r.b if(s===4&&B.a.u(r.a,"http"))return 80 if(s===5&&B.a.u(r.a,"https"))return 443 return 0}, -gb0(){return B.a.j(this.a,this.e,this.f)}, -gam(){var s=this.f,r=this.r -return s=this.r)return B.aa -return new A.a7(A.fg(this.gam()),t.h)}, -ao(a){var s,r,q,p,o,n=this,m=null,l=n.ga1(),k=l==="file",j=n.c,i=j>0?B.a.j(n.a,n.b+3,j):"",h=n.gaS()?n.ga_():m +gak(){if(this.f>=this.r)return B.a_ +return new A.as(A.f2(this.gaj()),t.h)}, +al(a){var s,r,q,p,o,n=this,m=null,l=n.ga0(),k=l==="file",j=n.c,i=j>0?B.a.i(n.a,n.b+3,j):"",h=n.gaN()?n.gZ():m j=n.c -if(j>0)s=B.a.j(n.a,j,n.d) +if(j>0)s=B.a.i(n.a,j,n.d) else s=i.length!==0||h!=null||k?"":m j=n.a -r=B.a.j(j,n.e,n.f) +r=B.a.i(j,n.e,n.f) if(!k)q=s!=null&&r.length!==0 else q=!0 if(q&&!B.a.u(r,"/"))r="/"+r -p=A.eu(m,0,0,a) +p=A.eg(m,0,0,a) q=n.r o=q1,n="dart:"+s,m=0;m1,n="dart:"+s,m=0;m") -m=new A.cz(A.bL(new A.aj(o,A.k0(),n),!0,n.i("I.E"))) -n=self -l=A.c4(J.aq(n.window.location)).gan().k(0,"search") -if(l!=null){k=m.aN(l) -if(k.length!==0){j=B.b.gbF(k).e -if(j!=null){n.window.location.assign($.bw()+j) +return A.fr(A.dV(a.text(),t.N),$async$$1) +case 3:o=i.hb(h.a(g.bt(c,null)),t.a) +n=o.$ti.j("ab") +n=A.eO(new A.ab(o,A.jP(),n),n.j("J.E")) +m=new A.cs(n) +n=v.G +l=A.bZ(J.ak(n.window.location),0,null).gak().k(0,"search") +if(l!=null){k=A.hx(m.aI(l)) +j=k==null?null:k.e +if(j!=null){n.window.location.assign($.bq()+j) s=1 -break}}}n=p.b -if(n!=null)A.eo(m).aj(n) +break}}n=p.b +if(n!=null)A.eb(m).ag(n) n=p.c -if(n!=null)A.eo(m).aj(n) +if(n!=null)A.eb(m).ag(n) n=p.d -if(n!=null)A.eo(m).aj(n) -case 1:return A.fI(q,r)}}) -return A.fJ($async$$1,r)}, -$S:9} -A.ds.prototype={ -gG(){var s,r=this,q=r.c -if(q===$){s=self.document.createElement("div") +if(n!=null)A.eb(m).ag(n) +case 1:return A.ft(q,r)}}) +return A.fu($async$$1,r)}, +$S:8} +A.dd.prototype={ +gH(){var s,r=this,q=r.c +if(q===$){s=v.G.document.createElement("div") s.setAttribute("role","listbox") s.setAttribute("aria-expanded","false") s.style.display="none" s.classList.add("tt-menu") -s.appendChild(r.gaZ()) -s.appendChild(r.gP()) -r.c!==$&&A.bv() +s.appendChild(r.gaU()) +s.appendChild(r.gao()) +r.c!==$&&A.ch() r.c=s q=s}return q}, -gaZ(){var s,r=this.d -if(r===$){s=self.document.createElement("div") +gaU(){var s,r=this.d +if(r===$){s=v.G.document.createElement("div") s.classList.add("enter-search-message") -this.d!==$&&A.bv() +this.d!==$&&A.ch() this.d=s r=s}return r}, -gP(){var s,r=this.e -if(r===$){s=self.document.createElement("div") +gao(){var s,r=this.e +if(r===$){s=v.G.document.createElement("div") s.classList.add("tt-search-results") -this.e!==$&&A.bv() +this.e!==$&&A.ch() this.e=s r=s}return r}, -aj(a){var s,r,q,p=this +ag(a){var s,r,q,p=this a.disabled=!1 a.setAttribute("placeholder","Search API Docs") -s=self -s.document.addEventListener("keydown",t.g.a(A.ab(new A.dt(a)))) +s=v.G +s.document.addEventListener("keydown",A.a4(new A.de(a))) r=s.document.createElement("div") r.classList.add("tt-wrapper") a.replaceWith(r) @@ -4281,129 +4005,132 @@ a.setAttribute("autocomplete","off") a.setAttribute("spellcheck","false") a.classList.add("tt-input") r.appendChild(a) -r.appendChild(p.gG()) -p.ba(a) -if(J.hu(s.window.location.href,"search.html")){q=p.b.gan().k(0,"q") +r.appendChild(p.gH()) +p.b3(a) +if(J.hd(s.window.location.href,"search.html")){q=p.b.gak().k(0,"q") if(q==null)return -q=B.k.I(q) -$.eD=$.dX -p.bK(q,!0) -p.bb(q) -p.ah() -$.eD=10}}, -bb(a){var s,r,q,p,o,n=self,m=n.document.getElementById("dartdoc-main-content") -if(m==null)return -m.textContent="" -s=n.document.createElement("section") +q=B.j.G(q) +$.es=$.dH +p.bB(q,!0) +p.b4(q) +p.ae() +$.es=10}}, +b4(a){var s,r,q,p=v.G,o=p.document.getElementById("dartdoc-main-content") +if(o==null)return +o.textContent="" +s=p.document.createElement("section") s.classList.add("search-summary") -m.appendChild(s) -s=n.document.createElement("h2") +o.appendChild(s) +s=p.document.createElement("h2") s.innerHTML="Search Results" -m.appendChild(s) -s=n.document.createElement("div") +o.appendChild(s) +s=p.document.createElement("div") +s.classList.add("search-summary") +s.innerHTML=""+$.dH+' results for "'+a+'"' +o.appendChild(s) +if($.a3.a!==0)for(p=new A.aS($.a3,$.a3.r,$.a3.e);p.m();)o.appendChild(p.d) +else{s=p.document.createElement("div") s.classList.add("search-summary") -s.innerHTML=""+$.dX+' results for "'+a+'"' -m.appendChild(s) -if($.bq.a!==0)for(n=$.bq.gb5(),s=A.E(n),s=s.i("@<1>").A(s.y[1]),n=new A.av(J.L(n.a),n.b,s.i("av<1,2>")),s=s.y[1];n.m();){r=n.a -if(r==null)r=s.a(r) -m.appendChild(r)}else{q=n.document.createElement("div") -q.classList.add("search-summary") -q.innerHTML='There was not a match for "'+a+'". Want to try searching from additional Dart-related sites? ' -p=A.c4("https://dart.dev/search?cx=011220921317074318178%3A_yy-tmb5t_i&ie=UTF-8&hl=en&q=").ao(A.f_(["q",a],t.N,t.z)) -o=n.document.createElement("a") -o.setAttribute("href",p.gV()) -o.textContent="Search on dart.dev." -q.appendChild(o) -m.appendChild(q)}}, -ah(){var s=this.gG() +s.innerHTML='There was not a match for "'+a+'". Want to try searching from additional Dart-related sites? ' +r=A.bZ("https://dart.dev/search?cx=011220921317074318178%3A_yy-tmb5t_i&ie=UTF-8&hl=en&q=",0,null).al(A.eN(["q",a],t.N,t.z)) +q=p.document.createElement("a") +q.setAttribute("href",r.gU()) +q.textContent="Search on dart.dev." +s.appendChild(q) +o.appendChild(s)}}, +ae(){var s=this.gH() s.style.display="none" s.setAttribute("aria-expanded","false") return s}, -b2(a,b,c){var s,r,q,p,o=this -o.x=A.h([],t.M) +aY(a,b,c){var s,r,q,p,o=this +o.x=A.k([],t.M) s=o.w -B.b.X(s) -$.bq.X(0) -o.gP().textContent="" -r=b.length -if(r===0){o.ah() -return}for(q=0;q")):s);q.m();)r.appendChild(q.gn()) +o.x=b o.y=-1 -if(o.gP().hasChildNodes()){r=o.gG() +if(r.hasChildNodes()){r=o.gH() r.style.display="block" -r.setAttribute("aria-expanded","true")}r=$.dX +r.setAttribute("aria-expanded","true")}r=$.dH r=r>10?'Press "Enter" key to see all '+r+" results":"" -o.gaZ().textContent=r}, -bY(a,b){return this.b2(a,b,!1)}, -ag(a,b,c){var s,r,q,p=this +o.gaU().textContent=r}, +bN(a,b){return this.aY(a,b,!1)}, +ad(a,b,c){var s,r,q,p=this if(p.r===a&&!b)return -if(a.length===0){p.bY("",A.h([],t.M)) -return}s=p.a.aN(a) +if(a.length===0){p.bN("",A.k([],t.M)) +return}s=p.a.aI(a) r=s.length -$.dX=r -q=$.eD -if(r>q)s=B.b.bd(s,0,q) +$.dH=r +q=$.es +if(r>q)s=B.b.b6(s,0,q) p.r=a -p.b2(a,s,c)}, -bK(a,b){return this.ag(a,!1,b)}, -aP(a){return this.ag(a,!1,!1)}, -bJ(a,b){return this.ag(a,b,!1)}, -aK(a){var s,r=this +p.aY(a,s,c)}, +bB(a,b){return this.ad(a,!1,b)}, +aK(a){return this.ad(a,!1,!1)}, +bA(a,b){return this.ad(a,b,!1)}, +aF(a){var s,r=this r.y=-1 s=r.f if(s!=null){a.value=s -r.f=null}r.ah()}, -ba(a){var s=this,r=t.g -a.addEventListener("focus",r.a(A.ab(new A.du(s,a)))) -a.addEventListener("blur",r.a(A.ab(new A.dv(s,a)))) -a.addEventListener("input",r.a(A.ab(new A.dw(s,a)))) -a.addEventListener("keydown",r.a(A.ab(new A.dx(s,a))))}} -A.dt.prototype={ -$1(a){if(J.F(a.key,"/")&&!t.m.b(self.document.activeElement)){a.preventDefault() +r.f=null}r.ae()}, +b3(a){var s=this +a.addEventListener("focus",A.a4(new A.df(s,a))) +a.addEventListener("blur",A.a4(new A.dg(s,a))) +a.addEventListener("input",A.a4(new A.dh(s,a))) +a.addEventListener("keydown",A.a4(new A.di(s,a)))}} +A.de.prototype={ +$1(a){var s +if(!J.G(a.key,"/"))return +s=v.G.document.activeElement +if(s==null||!B.a2.N(0,s.nodeName.toLowerCase())){a.preventDefault() this.a.focus()}}, $S:1} -A.du.prototype={ -$1(a){this.a.bJ(this.b.value,!0)}, +A.df.prototype={ +$1(a){this.a.bA(this.b.value,!0)}, $S:1} -A.dv.prototype={ -$1(a){this.a.aK(this.b)}, +A.dg.prototype={ +$1(a){this.a.aF(this.b)}, $S:1} -A.dw.prototype={ -$1(a){this.a.aP(this.b.value)}, +A.dh.prototype={ +$1(a){this.a.aK(this.b.value)}, $S:1} -A.dx.prototype={ +A.di.prototype={ $1(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e=this -if(!J.F(a.type,"keydown"))return -if(J.F(a.code,"Enter")){a.preventDefault() +if(!J.G(a.type,"keydown"))return +if(J.G(a.code,"Enter")){a.preventDefault() s=e.a r=s.y if(r!==-1){q=s.w[r].getAttribute("data-href") -if(q!=null)self.window.location.assign($.bw()+q) -return}else{p=B.k.I(s.r) -o=A.c4($.bw()+"search.html").ao(A.f_(["q",p],t.N,t.z)) -self.window.location.assign(o.gV()) +if(q!=null)v.G.window.location.assign($.bq()+q) +return}else{p=B.j.G(s.r) +o=A.bZ($.bq()+"search.html",0,null).al(A.eN(["q",p],t.N,t.z)) +v.G.window.location.assign(o.gU()) return}}s=e.a r=s.w n=r.length-1 m=s.y -if(J.F(a.code,"ArrowUp")){l=s.y +if(J.G(a.code,"ArrowUp")){l=s.y if(l===-1)s.y=n -else s.y=l-1}else if(J.F(a.code,"ArrowDown")){l=s.y +else s.y=l-1}else if(J.G(a.code,"ArrowDown")){l=s.y if(l===n)s.y=-1 -else s.y=l+1}else if(J.F(a.code,"Escape"))s.aK(e.b) +else s.y=l+1}else if(J.G(a.code,"Escape"))s.aF(e.b) else{if(s.f!=null){s.f=null -s.aP(e.b.value)}return}l=m!==-1 +s.aK(e.b.value)}return}l=m!==-1 if(l)r[m].classList.remove("tt-cursor") k=s.y if(k!==-1){j=r[k] j.classList.add("tt-cursor") r=s.y -if(r===0)s.gG().scrollTop=0 -else if(r===n)s.gG().scrollTop=s.gG().scrollHeight -else{i=j.offsetTop -h=s.gG().offsetHeight +if(r===0)s.gH().scrollTop=0 +else if(r===n){r=s.gH() +r.scrollTop=r.scrollHeight}else{i=j.offsetTop +h=s.gH().offsetHeight if(i"+A.i(a.k(0,0))+""}, -$S:30} -A.dU.prototype={ +$S:26} +A.dE.prototype={ $1(a){var s=this.a if(s!=null)s.classList.toggle("active") s=this.b if(s!=null)s.classList.toggle("active")}, $S:1} -A.dV.prototype={ -$1(a){return this.b7(a)}, -b7(a){var s=0,r=A.fR(t.P),q,p=this,o,n,m -var $async$$1=A.fY(function(b,c){if(b===1)return A.fH(c,r) -while(true)switch(s){case 0:if(!J.F(a.status,200)){o=self.document.createElement("a") +A.dF.prototype={ +$1(a){return this.b0(a)}, +b0(a){var s=0,r=A.fC(t.P),q,p=this,o,n +var $async$$1=A.fJ(function(b,c){if(b===1)return A.fs(c,r) +while(true)switch(s){case 0:if(!J.G(a.status,200)){o=v.G.document.createElement("a") o.href="https://dart.dev/tools/dart-doc#troubleshoot" o.text="Failed to load sidebar. Visit dart.dev for help troubleshooting." p.a.appendChild(o) s=1 break}s=3 -return A.fG(A.eb(a.text(),t.N),$async$$1) +return A.fr(A.dV(a.text(),t.N),$async$$1) case 3:n=c -m=self.document.createElement("div") -m.innerHTML=n -A.fX(p.b,m) -p.a.appendChild(m) -case 1:return A.fI(q,r)}}) -return A.fJ($async$$1,r)}, -$S:9} -A.e7.prototype={ -$0(){var s=this.a,r=this.b -if(s.checked){r.setAttribute("class","dark-theme") -s.setAttribute("value","dark-theme") -self.window.localStorage.setItem("colorTheme","true")}else{r.setAttribute("class","light-theme") -s.setAttribute("value","light-theme") -self.window.localStorage.setItem("colorTheme","false")}}, -$S:0} -A.e4.prototype={ -$1(a){this.a.$0()}, -$S:1};(function aliases(){var s=J.a2.prototype -s.be=s.h})();(function installTearOffs(){var s=hunkHelpers._static_2,r=hunkHelpers._static_1,q=hunkHelpers._static_0 -s(J,"j9","hS",31) -r(A,"jz","ib",4) -r(A,"jA","ic",4) -r(A,"jB","id",4) -q(A,"h_","jt",0) -r(A,"k0","hK",32)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany -r(A.l,null) -q(A.l,[A.eh,J.bG,J.ar,A.n,A.bA,A.k,A.e,A.cR,A.au,A.av,A.aO,A.c1,A.a5,A.bf,A.aW,A.aK,A.cD,A.af,A.cU,A.cO,A.aN,A.bg,A.dp,A.P,A.cJ,A.bK,A.cE,A.ce,A.d3,A.H,A.cb,A.dA,A.dy,A.c5,A.bz,A.c7,A.az,A.v,A.c6,A.ci,A.dJ,A.cl,A.bC,A.bE,A.cy,A.dH,A.dE,A.d8,A.bW,A.b4,A.d9,A.cw,A.u,A.cj,A.y,A.bn,A.cW,A.ch,A.cN,A.cz,A.w,A.cu,A.ds]) -q(J.bG,[J.bH,J.aQ,J.aT,J.aS,J.aU,J.aR,J.ah]) -q(J.aT,[J.a2,J.o,A.bM,A.aZ]) -q(J.a2,[J.bX,J.ax,J.a1]) -r(J.cF,J.o) -q(J.aR,[J.aP,J.bI]) -q(A.n,[A.a8,A.c,A.ai]) -q(A.a8,[A.ae,A.bp]) -r(A.b9,A.ae) -r(A.b8,A.bp) -r(A.M,A.b8) -q(A.k,[A.aV,A.R,A.bJ,A.c0,A.c8,A.bZ,A.ca,A.bx,A.K,A.bV,A.c2,A.c_,A.b5,A.bD]) -r(A.ay,A.e) -r(A.bB,A.ay) -q(A.c,[A.I,A.O]) -r(A.aM,A.ai) -q(A.I,[A.aj,A.cd]) -r(A.cf,A.bf) -r(A.cg,A.cf) -r(A.bm,A.aW) -r(A.a7,A.bm) -r(A.aL,A.a7) -r(A.ag,A.aK) -q(A.af,[A.ct,A.cs,A.cT,A.cG,A.e1,A.e3,A.d5,A.d4,A.dK,A.de,A.dl,A.dQ,A.dR,A.ec,A.ed,A.cC,A.cB,A.e5,A.dt,A.du,A.dv,A.dw,A.dx,A.dN,A.dO,A.dS,A.dU,A.dV,A.e4]) -q(A.ct,[A.cP,A.e2,A.dL,A.dY,A.df,A.cK,A.cM,A.dD,A.d_,A.cX,A.cY,A.cZ,A.dC,A.dB,A.dP,A.cA]) -r(A.b1,A.R) -q(A.cT,[A.cS,A.aJ]) -q(A.P,[A.N,A.cc]) -q(A.aZ,[A.bN,A.aw]) -q(A.aw,[A.bb,A.bd]) -r(A.bc,A.bb) -r(A.aX,A.bc) -r(A.be,A.bd) -r(A.aY,A.be) -q(A.aX,[A.bO,A.bP]) -q(A.aY,[A.bQ,A.bR,A.bS,A.bT,A.bU,A.b_,A.b0]) -r(A.bh,A.ca) -q(A.cs,[A.d6,A.d7,A.dz,A.da,A.dh,A.dg,A.dd,A.dc,A.db,A.dk,A.dj,A.di,A.dW,A.dr,A.dG,A.dF,A.dT,A.e6,A.e7]) -r(A.b7,A.c7) -r(A.dq,A.dJ) -q(A.bC,[A.cq,A.cv,A.cH]) -q(A.bE,[A.cr,A.cx,A.cI,A.d2,A.d1]) -r(A.d0,A.cv) -q(A.K,[A.b2,A.bF]) -r(A.c9,A.bn) -q(A.d8,[A.m,A.A]) -s(A.ay,A.c1) -s(A.bp,A.e) -s(A.bb,A.e) -s(A.bc,A.aO) -s(A.bd,A.e) -s(A.be,A.aO) -s(A.bm,A.cl)})() -var v={typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{b:"int",t:"double",jX:"num",d:"String",jC:"bool",u:"Null",f:"List",l:"Object",x:"Map"},mangledNames:{},types:["~()","u(p)","~(d,@)","~(@)","~(~())","u(@)","u()","@()","~(ak,d,b)","a0(p)","@(@)","@(@,d)","@(d)","u(~())","u(@,a4)","~(b,@)","u(l,a4)","v<@>(@)","~(l?,l?)","~(b6,@)","x(x,d)","~(d,b)","~(d,b?)","b(b,b)","~(d,d?)","ak(@,@)","~(A)","b(+item,matchPosition(w,A),+item,matchPosition(w,A))","w(+item,matchPosition(w,A))","d()","d(cL)","b(@,@)","w(x)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti"),rttc:{"2;item,matchPosition":(a,b)=>c=>c instanceof A.cg&&a.b(c.a)&&b.b(c.b)}} -A.iw(v.typeUniverse,JSON.parse('{"bX":"a2","ax":"a2","a1":"a2","bH":{"j":[]},"aQ":{"u":[],"j":[]},"aT":{"p":[]},"a2":{"p":[]},"o":{"f":["1"],"c":["1"],"p":[]},"cF":{"o":["1"],"f":["1"],"c":["1"],"p":[]},"aR":{"t":[]},"aP":{"t":[],"b":[],"j":[]},"bI":{"t":[],"j":[]},"ah":{"d":[],"j":[]},"a8":{"n":["2"]},"ae":{"a8":["1","2"],"n":["2"],"n.E":"2"},"b9":{"ae":["1","2"],"a8":["1","2"],"c":["2"],"n":["2"],"n.E":"2"},"b8":{"e":["2"],"f":["2"],"a8":["1","2"],"c":["2"],"n":["2"]},"M":{"b8":["1","2"],"e":["2"],"f":["2"],"a8":["1","2"],"c":["2"],"n":["2"],"e.E":"2","n.E":"2"},"aV":{"k":[]},"bB":{"e":["b"],"f":["b"],"c":["b"],"e.E":"b"},"c":{"n":["1"]},"I":{"c":["1"],"n":["1"]},"ai":{"n":["2"],"n.E":"2"},"aM":{"ai":["1","2"],"c":["2"],"n":["2"],"n.E":"2"},"aj":{"I":["2"],"c":["2"],"n":["2"],"I.E":"2","n.E":"2"},"ay":{"e":["1"],"f":["1"],"c":["1"]},"a5":{"b6":[]},"aL":{"a7":["1","2"],"x":["1","2"]},"aK":{"x":["1","2"]},"ag":{"x":["1","2"]},"b1":{"R":[],"k":[]},"bJ":{"k":[]},"c0":{"k":[]},"bg":{"a4":[]},"c8":{"k":[]},"bZ":{"k":[]},"N":{"P":["1","2"],"x":["1","2"],"P.V":"2"},"O":{"c":["1"],"n":["1"],"n.E":"1"},"ce":{"el":[],"cL":[]},"bM":{"p":[],"j":[]},"aZ":{"p":[]},"bN":{"p":[],"j":[]},"aw":{"D":["1"],"p":[]},"aX":{"e":["t"],"f":["t"],"D":["t"],"c":["t"],"p":[]},"aY":{"e":["b"],"f":["b"],"D":["b"],"c":["b"],"p":[]},"bO":{"e":["t"],"f":["t"],"D":["t"],"c":["t"],"p":[],"j":[],"e.E":"t"},"bP":{"e":["t"],"f":["t"],"D":["t"],"c":["t"],"p":[],"j":[],"e.E":"t"},"bQ":{"e":["b"],"f":["b"],"D":["b"],"c":["b"],"p":[],"j":[],"e.E":"b"},"bR":{"e":["b"],"f":["b"],"D":["b"],"c":["b"],"p":[],"j":[],"e.E":"b"},"bS":{"e":["b"],"f":["b"],"D":["b"],"c":["b"],"p":[],"j":[],"e.E":"b"},"bT":{"e":["b"],"f":["b"],"D":["b"],"c":["b"],"p":[],"j":[],"e.E":"b"},"bU":{"e":["b"],"f":["b"],"D":["b"],"c":["b"],"p":[],"j":[],"e.E":"b"},"b_":{"e":["b"],"f":["b"],"D":["b"],"c":["b"],"p":[],"j":[],"e.E":"b"},"b0":{"e":["b"],"ak":[],"f":["b"],"D":["b"],"c":["b"],"p":[],"j":[],"e.E":"b"},"ca":{"k":[]},"bh":{"R":[],"k":[]},"v":{"a0":["1"]},"bz":{"k":[]},"b7":{"c7":["1"]},"e":{"f":["1"],"c":["1"]},"P":{"x":["1","2"]},"aW":{"x":["1","2"]},"a7":{"x":["1","2"]},"cc":{"P":["d","@"],"x":["d","@"],"P.V":"@"},"cd":{"I":["d"],"c":["d"],"n":["d"],"I.E":"d","n.E":"d"},"f":{"c":["1"]},"el":{"cL":[]},"bx":{"k":[]},"R":{"k":[]},"K":{"k":[]},"b2":{"k":[]},"bF":{"k":[]},"bV":{"k":[]},"c2":{"k":[]},"c_":{"k":[]},"b5":{"k":[]},"bD":{"k":[]},"bW":{"k":[]},"b4":{"k":[]},"cj":{"a4":[]},"bn":{"c3":[]},"ch":{"c3":[]},"c9":{"c3":[]},"hN":{"f":["b"],"c":["b"]},"ak":{"f":["b"],"c":["b"]},"i8":{"f":["b"],"c":["b"]},"hL":{"f":["b"],"c":["b"]},"i6":{"f":["b"],"c":["b"]},"hM":{"f":["b"],"c":["b"]},"i7":{"f":["b"],"c":["b"]},"hI":{"f":["t"],"c":["t"]},"hJ":{"f":["t"],"c":["t"]}}')) -A.iv(v.typeUniverse,JSON.parse('{"aO":1,"c1":1,"ay":1,"bp":2,"aK":2,"bK":1,"aw":1,"ci":1,"cl":2,"aW":2,"bm":2,"bC":2,"bE":2}')) -var u={c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"} -var t=(function rtii(){var s=A.bt -return{Z:s("aL"),U:s("c<@>"),Q:s("k"),Y:s("k8"),M:s("o"),O:s("o

      "),r:s("o<+item,matchPosition(w,A)>"),s:s("o"),b:s("o<@>"),t:s("o"),T:s("aQ"),m:s("p"),g:s("a1"),p:s("D<@>"),B:s("N"),j:s("f<@>"),a:s("x"),V:s("aj<+item,matchPosition(w,A),w>"),P:s("u"),K:s("l"),L:s("k9"),d:s("+()"),F:s("el"),l:s("a4"),N:s("d"),k:s("j"),c:s("R"),D:s("ak"),o:s("ax"),h:s("a7"),R:s("c3"),e:s("v<@>"),y:s("jC"),i:s("t"),z:s("@"),v:s("@(l)"),C:s("@(l,a4)"),S:s("b"),A:s("0&*"),_:s("l*"),W:s("a0?"),X:s("l?"),H:s("jX")}})();(function constants(){var s=hunkHelpers.makeConstList -B.I=J.bG.prototype +o=v.G.document.createElement("div") +o.innerHTML=n +A.fI(p.b,o) +p.a.appendChild(o) +case 1:return A.ft(q,r)}}) +return A.fu($async$$1,r)}, +$S:8} +A.dR.prototype={ +$1(a){var s=this.a,r=v.G +if(a){s.classList.remove("light-theme") +s.classList.add("dark-theme") +r.window.localStorage.setItem("colorTheme","true")}else{s.classList.remove("dark-theme") +s.classList.add("light-theme") +r.window.localStorage.setItem("colorTheme","false")}}, +$S:27} +A.dO.prototype={ +$1(a){this.b.$1(!this.a.classList.contains("dark-theme"))}, +$S:1};(function aliases(){var s=J.X.prototype +s.b7=s.h})();(function installTearOffs(){var s=hunkHelpers._static_2,r=hunkHelpers._static_1,q=hunkHelpers._static_0 +s(J,"iY","hD",28) +r(A,"jq","hX",3) +r(A,"jr","hY",3) +r(A,"js","hZ",3) +q(A,"fL","jk",0) +r(A,"jP","hs",29)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany +r(A.j,null) +q(A.j,[A.e2,J.bz,A.b0,J.U,A.r,A.bt,A.l,A.e,A.cF,A.am,A.aL,A.bX,A.bb,A.aG,A.c7,A.ap,A.cI,A.cE,A.aK,A.bc,A.a7,A.O,A.cA,A.bF,A.aS,A.cw,A.c8,A.cT,A.K,A.c4,A.dl,A.dj,A.c_,A.I,A.c1,A.at,A.w,A.c0,A.cc,A.dw,A.ce,A.aU,A.bv,A.bx,A.cr,A.du,A.dr,A.cY,A.bP,A.b1,A.cZ,A.M,A.t,A.cd,A.A,A.bj,A.cL,A.cb,A.cD,A.cs,A.x,A.cn,A.dd]) +q(J.bz,[J.bB,J.aN,J.aQ,J.aP,J.aR,J.aO,J.a8]) +q(J.aQ,[J.X,J.o,A.an,A.aX]) +q(J.X,[J.bQ,J.aq,J.W]) +r(J.bA,A.b0) +r(J.cx,J.o) +q(J.aO,[J.aM,J.bC]) +q(A.r,[A.a0,A.c]) +q(A.a0,[A.a6,A.bl]) +r(A.b6,A.a6) +r(A.b5,A.bl) +r(A.N,A.b5) +q(A.l,[A.bE,A.P,A.bD,A.bW,A.bU,A.c3,A.br,A.H,A.b3,A.bV,A.b2,A.bw]) +r(A.ar,A.e) +r(A.bu,A.ar) +q(A.c,[A.J,A.aa,A.aT]) +q(A.J,[A.ab,A.c6]) +r(A.c9,A.bb) +r(A.ca,A.c9) +r(A.aI,A.aG) +r(A.aH,A.ap) +r(A.aJ,A.aH) +r(A.aZ,A.P) +q(A.a7,[A.cl,A.cm,A.cH,A.dL,A.dN,A.cV,A.cU,A.dx,A.d7,A.dW,A.dX,A.cv,A.cu,A.dP,A.de,A.df,A.dg,A.dh,A.di,A.dA,A.dB,A.dC,A.dE,A.dF,A.dR,A.dO]) +q(A.cH,[A.cG,A.aF]) +q(A.O,[A.a9,A.c5]) +q(A.cm,[A.dM,A.dy,A.dI,A.d8,A.cB,A.dq,A.cP,A.cM,A.cN,A.cO,A.dp,A.dn,A.ct]) +q(A.aX,[A.bG,A.ao]) +q(A.ao,[A.b7,A.b9]) +r(A.b8,A.b7) +r(A.aV,A.b8) +r(A.ba,A.b9) +r(A.aW,A.ba) +q(A.aV,[A.bH,A.bI]) +q(A.aW,[A.bJ,A.bK,A.bL,A.bM,A.bN,A.aY,A.bO]) +r(A.bd,A.c3) +q(A.cl,[A.cW,A.cX,A.dk,A.d_,A.d3,A.d2,A.d1,A.d0,A.d6,A.d5,A.d4,A.dG,A.dc,A.dt,A.ds,A.dD,A.dQ]) +r(A.b4,A.c1) +r(A.db,A.dw) +r(A.bi,A.aU) +r(A.as,A.bi) +q(A.bv,[A.cj,A.co,A.cy]) +q(A.bx,[A.ck,A.cq,A.cz,A.cS,A.cR]) +r(A.cQ,A.co) +q(A.H,[A.b_,A.by]) +r(A.c2,A.bj) +q(A.cY,[A.n,A.B]) +s(A.ar,A.bX) +s(A.bl,A.e) +s(A.b7,A.e) +s(A.b8,A.aL) +s(A.b9,A.e) +s(A.ba,A.aL) +s(A.bi,A.ce)})() +var v={G:typeof self!="undefined"?self:globalThis,typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{a:"int",q:"double",fP:"num",d:"String",bo:"bool",t:"Null",f:"List",j:"Object",z:"Map",m:"JSObject"},mangledNames:{},types:["~()","t(m)","~(@)","~(~())","t(@)","t()","@()","~(d,@)","V(m)","@(@)","@(@,d)","@(d)","t(~())","t(@,Z)","~(a,@)","t(j,Z)","~(j?,j?)","z(z,d)","~(d,a)","~(d,a?)","a(a,a)","~(d,d?)","~(B)","a(+item,matchPosition(x,B),+item,matchPosition(x,B))","x(+item,matchPosition(x,B))","d()","d(cC)","~(bo)","a(@,@)","x(z)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti"),rttc:{"2;item,matchPosition":(a,b)=>c=>c instanceof A.ca&&a.b(c.a)&&b.b(c.b)}} +A.ic(v.typeUniverse,JSON.parse('{"bQ":"X","aq":"X","W":"X","jY":"an","bB":{"bo":[],"h":[]},"aN":{"t":[],"h":[]},"aQ":{"m":[]},"X":{"m":[]},"o":{"f":["1"],"c":["1"],"m":[]},"bA":{"b0":[]},"cx":{"o":["1"],"f":["1"],"c":["1"],"m":[]},"aO":{"q":[]},"aM":{"q":[],"a":[],"h":[]},"bC":{"q":[],"h":[]},"a8":{"d":[],"h":[]},"a0":{"r":["2"]},"a6":{"a0":["1","2"],"r":["2"],"r.E":"2"},"b6":{"a6":["1","2"],"a0":["1","2"],"c":["2"],"r":["2"],"r.E":"2"},"b5":{"e":["2"],"f":["2"],"a0":["1","2"],"c":["2"],"r":["2"]},"N":{"b5":["1","2"],"e":["2"],"f":["2"],"a0":["1","2"],"c":["2"],"r":["2"],"e.E":"2","r.E":"2"},"bE":{"l":[]},"bu":{"e":["a"],"f":["a"],"c":["a"],"e.E":"a"},"c":{"r":["1"]},"J":{"c":["1"],"r":["1"]},"ab":{"J":["2"],"c":["2"],"r":["2"],"J.E":"2","r.E":"2"},"ar":{"e":["1"],"f":["1"],"c":["1"]},"aG":{"z":["1","2"]},"aI":{"z":["1","2"]},"aH":{"ap":["1"],"c":["1"]},"aJ":{"ap":["1"],"c":["1"]},"aZ":{"P":[],"l":[]},"bD":{"l":[]},"bW":{"l":[]},"bc":{"Z":[]},"bU":{"l":[]},"a9":{"O":["1","2"],"z":["1","2"],"O.V":"2"},"aa":{"c":["1"],"r":["1"],"r.E":"1"},"aT":{"c":["1"],"r":["1"],"r.E":"1"},"c8":{"e7":[],"cC":[]},"an":{"m":[],"h":[]},"aX":{"m":[]},"bG":{"m":[],"h":[]},"ao":{"C":["1"],"m":[]},"aV":{"e":["q"],"f":["q"],"C":["q"],"c":["q"],"m":[]},"aW":{"e":["a"],"f":["a"],"C":["a"],"c":["a"],"m":[]},"bH":{"e":["q"],"f":["q"],"C":["q"],"c":["q"],"m":[],"h":[],"e.E":"q"},"bI":{"e":["q"],"f":["q"],"C":["q"],"c":["q"],"m":[],"h":[],"e.E":"q"},"bJ":{"e":["a"],"f":["a"],"C":["a"],"c":["a"],"m":[],"h":[],"e.E":"a"},"bK":{"e":["a"],"f":["a"],"C":["a"],"c":["a"],"m":[],"h":[],"e.E":"a"},"bL":{"e":["a"],"f":["a"],"C":["a"],"c":["a"],"m":[],"h":[],"e.E":"a"},"bM":{"e":["a"],"f":["a"],"C":["a"],"c":["a"],"m":[],"h":[],"e.E":"a"},"bN":{"e":["a"],"f":["a"],"C":["a"],"c":["a"],"m":[],"h":[],"e.E":"a"},"aY":{"e":["a"],"f":["a"],"C":["a"],"c":["a"],"m":[],"h":[],"e.E":"a"},"bO":{"e":["a"],"f":["a"],"C":["a"],"c":["a"],"m":[],"h":[],"e.E":"a"},"c3":{"l":[]},"bd":{"P":[],"l":[]},"I":{"l":[]},"b4":{"c1":["1"]},"w":{"V":["1"]},"e":{"f":["1"],"c":["1"]},"O":{"z":["1","2"]},"aU":{"z":["1","2"]},"as":{"z":["1","2"]},"ap":{"c":["1"]},"c5":{"O":["d","@"],"z":["d","@"],"O.V":"@"},"c6":{"J":["d"],"c":["d"],"r":["d"],"J.E":"d","r.E":"d"},"f":{"c":["1"]},"e7":{"cC":[]},"br":{"l":[]},"P":{"l":[]},"H":{"l":[]},"b_":{"l":[]},"by":{"l":[]},"b3":{"l":[]},"bV":{"l":[]},"b2":{"l":[]},"bw":{"l":[]},"bP":{"l":[]},"b1":{"l":[]},"cd":{"Z":[]},"bj":{"bY":[]},"cb":{"bY":[]},"c2":{"bY":[]},"hv":{"f":["a"],"c":["a"]},"hR":{"f":["a"],"c":["a"]},"hQ":{"f":["a"],"c":["a"]},"ht":{"f":["a"],"c":["a"]},"hO":{"f":["a"],"c":["a"]},"hu":{"f":["a"],"c":["a"]},"hP":{"f":["a"],"c":["a"]},"hq":{"f":["q"],"c":["q"]},"hr":{"f":["q"],"c":["q"]}}')) +A.ib(v.typeUniverse,JSON.parse('{"aL":1,"bX":1,"ar":1,"bl":2,"aG":2,"aH":1,"bF":1,"aS":1,"ao":1,"cc":1,"ce":2,"aU":2,"bi":2,"bv":2,"bx":2}')) +var u={f:"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u03f6\x00\u0404\u03f4 \u03f4\u03f6\u01f6\u01f6\u03f6\u03fc\u01f4\u03ff\u03ff\u0584\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u05d4\u01f4\x00\u01f4\x00\u0504\u05c4\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0400\x00\u0400\u0200\u03f7\u0200\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0200\u0200\u0200\u03f7\x00",c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"} +var t=(function rtii(){var s=A.bp +return{U:s("c<@>"),C:s("l"),Z:s("jX"),M:s("o"),O:s("o"),f:s("o"),r:s("o<+item,matchPosition(x,B)>"),s:s("o"),b:s("o<@>"),t:s("o"),T:s("aN"),m:s("m"),g:s("W"),p:s("C<@>"),j:s("f<@>"),a:s("z"),V:s("ab<+item,matchPosition(x,B),x>"),P:s("t"),K:s("j"),L:s("jZ"),d:s("+()"),F:s("e7"),l:s("Z"),N:s("d"),k:s("h"),_:s("P"),o:s("aq"),h:s("as"),R:s("bY"),c:s("w<@>"),y:s("bo"),i:s("q"),z:s("@"),v:s("@(j)"),Q:s("@(j,Z)"),S:s("a"),W:s("V?"),A:s("m?"),X:s("j?"),w:s("d?"),u:s("bo?"),I:s("q?"),x:s("a?"),n:s("fP?"),H:s("fP"),q:s("~")}})();(function constants(){var s=hunkHelpers.makeConstList +B.z=J.bz.prototype B.b=J.o.prototype -B.c=J.aP.prototype -B.a=J.ah.prototype -B.J=J.a1.prototype -B.K=J.aT.prototype -B.ab=A.b0.prototype -B.w=J.bX.prototype -B.j=J.ax.prototype -B.at=new A.cr() -B.x=new A.cq() -B.au=new A.cy() -B.k=new A.cx() -B.l=function getTagFallback(o) { +B.c=J.aM.prototype +B.a=J.a8.prototype +B.A=J.W.prototype +B.B=J.aQ.prototype +B.n=J.bQ.prototype +B.i=J.aq.prototype +B.aj=new A.ck() +B.o=new A.cj() +B.ak=new A.cr() +B.j=new A.cq() +B.k=function getTagFallback(o) { var s = Object.prototype.toString.call(o); return s.substring(8, s.length - 1); } -B.y=function() { +B.p=function() { var toStringFunction = Object.prototype.toString; function getTag(o) { var s = toStringFunction.call(o); @@ -4574,7 +4301,7 @@ B.y=function() { prototypeForTag: prototypeForTag, discriminator: discriminator }; } -B.D=function(getTagFallback) { +B.v=function(getTagFallback) { return function(hooks) { if (typeof navigator != "object") return hooks; var userAgent = navigator.userAgent; @@ -4589,11 +4316,11 @@ B.D=function(getTagFallback) { hooks.getTag = getTagFallback; }; } -B.z=function(hooks) { +B.q=function(hooks) { if (typeof dartExperimentalFixupGetTag != "function") return hooks; hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); } -B.C=function(hooks) { +B.u=function(hooks) { if (typeof navigator != "object") return hooks; var userAgent = navigator.userAgent; if (typeof userAgent != "string") return hooks; @@ -4612,7 +4339,7 @@ B.C=function(hooks) { } hooks.getTag = getTagFirefox; } -B.B=function(hooks) { +B.t=function(hooks) { if (typeof navigator != "object") return hooks; var userAgent = navigator.userAgent; if (typeof userAgent != "string") return hooks; @@ -4643,7 +4370,7 @@ B.B=function(hooks) { hooks.getTag = getTagIE; hooks.prototypeForTag = prototypeForTagIE; } -B.A=function(hooks) { +B.r=function(hooks) { var getTag = hooks.getTag; var prototypeForTag = hooks.prototypeForTag; function getTagFixed(o) { @@ -4661,113 +4388,104 @@ B.A=function(hooks) { hooks.getTag = getTagFixed; hooks.prototypeForTag = prototypeForTagFixed; } -B.m=function(hooks) { return hooks; } +B.l=function(hooks) { return hooks; } -B.E=new A.cH() -B.F=new A.bW() -B.i=new A.cR() -B.e=new A.d0() -B.G=new A.d2() -B.n=new A.dp() -B.d=new A.dq() -B.H=new A.cj() -B.L=new A.cI(null) -B.a8=A.h(s([0,0,32722,12287,65534,34815,65534,18431]),t.t) -B.f=A.h(s([0,0,65490,45055,65535,34815,65534,18431]),t.t) -B.a9=A.h(s([0,0,32754,11263,65534,34815,65534,18431]),t.t) -B.o=A.h(s([0,0,26624,1023,65534,2047,65534,2047]),t.t) -B.p=A.h(s([0,0,65490,12287,65535,34815,65534,18431]),t.t) -B.M=new A.m(0,"accessor") -B.N=new A.m(1,"constant") -B.Y=new A.m(2,"constructor") -B.a1=new A.m(3,"class_") -B.a2=new A.m(4,"dynamic") -B.a3=new A.m(5,"enum_") -B.a4=new A.m(6,"extension") -B.a5=new A.m(7,"extensionType") -B.a6=new A.m(8,"function") -B.a7=new A.m(9,"library") -B.O=new A.m(10,"method") -B.P=new A.m(11,"mixin") -B.Q=new A.m(12,"never") -B.R=new A.m(13,"package") -B.S=new A.m(14,"parameter") -B.T=new A.m(15,"prefix") -B.U=new A.m(16,"property") -B.V=new A.m(17,"sdk") -B.W=new A.m(18,"topic") -B.X=new A.m(19,"topLevelConstant") -B.Z=new A.m(20,"topLevelProperty") -B.a_=new A.m(21,"typedef") -B.a0=new A.m(22,"typeParameter") -B.q=A.h(s([B.M,B.N,B.Y,B.a1,B.a2,B.a3,B.a4,B.a5,B.a6,B.a7,B.O,B.P,B.Q,B.R,B.S,B.T,B.U,B.V,B.W,B.X,B.Z,B.a_,B.a0]),A.bt("o")) -B.r=A.h(s([0,0,32776,33792,1,10240,0,0]),t.t) -B.t=A.h(s([]),t.b) -B.h=A.h(s([0,0,24576,1023,65534,34815,65534,18431]),t.t) -B.v={} -B.aa=new A.ag(B.v,[],A.bt("ag")) -B.u=new A.ag(B.v,[],A.bt("ag")) -B.ac=new A.a5("call") -B.ad=A.J("k5") -B.ae=A.J("k6") -B.af=A.J("hI") -B.ag=A.J("hJ") -B.ah=A.J("hL") -B.ai=A.J("hM") -B.aj=A.J("hN") -B.ak=A.J("l") -B.al=A.J("i6") -B.am=A.J("i7") -B.an=A.J("i8") -B.ao=A.J("ak") -B.ap=new A.d1(!1) -B.aq=new A.A(0,"isExactly") -B.ar=new A.A(1,"startsWith") -B.as=new A.A(2,"contains")})();(function staticFields(){$.dm=null -$.ap=A.h([],A.bt("o")) -$.f2=null -$.eR=null +B.w=new A.cy() +B.x=new A.bP() +B.h=new A.cF() +B.e=new A.cQ() +B.y=new A.cS() +B.d=new A.db() +B.f=new A.cd() +B.C=new A.cz(null) +B.D=new A.n(0,"accessor") +B.E=new A.n(1,"constant") +B.P=new A.n(2,"constructor") +B.T=new A.n(3,"class_") +B.U=new A.n(4,"dynamic") +B.V=new A.n(5,"enum_") +B.W=new A.n(6,"extension") +B.X=new A.n(7,"extensionType") +B.Y=new A.n(8,"function") +B.Z=new A.n(9,"library") +B.F=new A.n(10,"method") +B.G=new A.n(11,"mixin") +B.H=new A.n(12,"never") +B.I=new A.n(13,"package") +B.J=new A.n(14,"parameter") +B.K=new A.n(15,"prefix") +B.L=new A.n(16,"property") +B.M=new A.n(17,"sdk") +B.N=new A.n(18,"topic") +B.O=new A.n(19,"topLevelConstant") +B.Q=new A.n(20,"topLevelProperty") +B.R=new A.n(21,"typedef") +B.S=new A.n(22,"typeParameter") +B.m=s([B.D,B.E,B.P,B.T,B.U,B.V,B.W,B.X,B.Y,B.Z,B.F,B.G,B.H,B.I,B.J,B.K,B.L,B.M,B.N,B.O,B.Q,B.R,B.S],A.bp("o")) +B.a0={} +B.a_=new A.aI(B.a0,[],A.bp("aI")) +B.a1={input:0,textarea:1} +B.a2=new A.aJ(B.a1,2,A.bp("aJ")) +B.a3=A.L("jU") +B.a4=A.L("jV") +B.a5=A.L("hq") +B.a6=A.L("hr") +B.a7=A.L("ht") +B.a8=A.L("hu") +B.a9=A.L("hv") +B.aa=A.L("j") +B.ab=A.L("hO") +B.ac=A.L("hP") +B.ad=A.L("hQ") +B.ae=A.L("hR") +B.af=new A.cR(!1) +B.ag=new A.B(0,"isExactly") +B.ah=new A.B(1,"startsWith") +B.ai=new A.B(2,"contains")})();(function staticFields(){$.d9=null +$.ai=A.k([],t.f) $.eQ=null -$.h1=null -$.fZ=null -$.h6=null -$.dZ=null -$.e9=null +$.eI=null $.eH=null -$.dn=A.h([],A.bt("o?>")) -$.aB=null -$.br=null -$.bs=null -$.eA=!1 -$.r=B.d -$.eD=10 -$.dX=0 -$.bq=A.ej(t.N,t.m)})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal -s($,"k7","eK",()=>A.jJ("_$dart_dartClosure")) -s($,"kb","h9",()=>A.S(A.cV({ +$.fO=null +$.fK=null +$.fS=null +$.dJ=null +$.dT=null +$.ex=null +$.da=A.k([],A.bp("o?>")) +$.aw=null +$.bm=null +$.bn=null +$.ep=!1 +$.p=B.d +$.es=10 +$.dH=0 +$.a3=A.e4(t.N,t.m)})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal +s($,"jW","eB",()=>A.jz("_$dart_dartClosure")) +s($,"kj","h9",()=>A.k([new J.bA()],A.bp("o"))) +s($,"k0","fU",()=>A.Q(A.cJ({ toString:function(){return"$receiver$"}}))) -s($,"kc","ha",()=>A.S(A.cV({$method$:null, +s($,"k1","fV",()=>A.Q(A.cJ({$method$:null, toString:function(){return"$receiver$"}}))) -s($,"kd","hb",()=>A.S(A.cV(null))) -s($,"ke","hc",()=>A.S(function(){var $argumentsExpr$="$arguments$" +s($,"k2","fW",()=>A.Q(A.cJ(null))) +s($,"k3","fX",()=>A.Q(function(){var $argumentsExpr$="$arguments$" try{null.$method$($argumentsExpr$)}catch(r){return r.message}}())) -s($,"kh","hf",()=>A.S(A.cV(void 0))) -s($,"ki","hg",()=>A.S(function(){var $argumentsExpr$="$arguments$" +s($,"k6","h_",()=>A.Q(A.cJ(void 0))) +s($,"k7","h0",()=>A.Q(function(){var $argumentsExpr$="$arguments$" try{(void 0).$method$($argumentsExpr$)}catch(r){return r.message}}())) -s($,"kg","he",()=>A.S(A.fc(null))) -s($,"kf","hd",()=>A.S(function(){try{null.$method$}catch(r){return r.message}}())) -s($,"kk","hi",()=>A.S(A.fc(void 0))) -s($,"kj","hh",()=>A.S(function(){try{(void 0).$method$}catch(r){return r.message}}())) -s($,"kl","eL",()=>A.ia()) -s($,"kr","ho",()=>A.hX(4096)) -s($,"kp","hm",()=>new A.dG().$0()) -s($,"kq","hn",()=>new A.dF().$0()) -s($,"km","hj",()=>A.hW(A.j_(A.h([-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-2,-2,-2,-2,62,-2,62,-2,63,52,53,54,55,56,57,58,59,60,61,-2,-2,-2,-1,-2,-2,-2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-2,-2,-2,-2,63,-2,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-2,-2,-2,-2,-2],t.t)))) -s($,"kn","hk",()=>A.f6("^[\\-\\.0-9A-Z_a-z~]*$",!0)) -s($,"ko","hl",()=>typeof URLSearchParams=="function") -s($,"kD","ee",()=>A.h4(B.ak)) -s($,"kF","hp",()=>A.iZ()) -s($,"kE","bw",()=>new A.dT().$0())})();(function nativeSupport(){!function(){var s=function(a){var m={} +s($,"k5","fZ",()=>A.Q(A.eZ(null))) +s($,"k4","fY",()=>A.Q(function(){try{null.$method$}catch(r){return r.message}}())) +s($,"k9","h2",()=>A.Q(A.eZ(void 0))) +s($,"k8","h1",()=>A.Q(function(){try{(void 0).$method$}catch(r){return r.message}}())) +s($,"ka","eC",()=>A.hW()) +s($,"kg","h8",()=>A.hG(4096)) +s($,"ke","h6",()=>new A.dt().$0()) +s($,"kf","h7",()=>new A.ds().$0()) +s($,"kb","h3",()=>A.hF(A.iM(A.k([-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-2,-2,-2,-2,62,-2,62,-2,63,52,53,54,55,56,57,58,59,60,61,-2,-2,-2,-1,-2,-2,-2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-2,-2,-2,-2,63,-2,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-2,-2,-2,-2,-2],t.t)))) +s($,"kc","h4",()=>A.eU("^[\\-\\.0-9A-Z_a-z~]*$",!0)) +s($,"kd","h5",()=>typeof URLSearchParams=="function") +s($,"kh","dZ",()=>A.fQ(B.aa)) +s($,"ki","bq",()=>new A.dD().$0())})();(function nativeSupport(){!function(){var s=function(a){var m={} m[a]=1 return Object.keys(hunkHelpers.convertToFastObject(m))[0]} v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)} @@ -4778,17 +4496,17 @@ for(var o=0;;o++){var n=s(p+"_"+o+"_") if(!(n in q)){q[n]=1 v.isolateTag=n break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}() -hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer:A.bM,ArrayBufferView:A.aZ,DataView:A.bN,Float32Array:A.bO,Float64Array:A.bP,Int16Array:A.bQ,Int32Array:A.bR,Int8Array:A.bS,Uint16Array:A.bT,Uint32Array:A.bU,Uint8ClampedArray:A.b_,CanvasPixelArray:A.b_,Uint8Array:A.b0}) -hunkHelpers.setOrUpdateLeafTags({ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false}) -A.aw.$nativeSuperclassTag="ArrayBufferView" -A.bb.$nativeSuperclassTag="ArrayBufferView" -A.bc.$nativeSuperclassTag="ArrayBufferView" -A.aX.$nativeSuperclassTag="ArrayBufferView" -A.bd.$nativeSuperclassTag="ArrayBufferView" -A.be.$nativeSuperclassTag="ArrayBufferView" -A.aY.$nativeSuperclassTag="ArrayBufferView"})() -Function.prototype.$0=function(){return this()} +hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer:A.an,SharedArrayBuffer:A.an,ArrayBufferView:A.aX,DataView:A.bG,Float32Array:A.bH,Float64Array:A.bI,Int16Array:A.bJ,Int32Array:A.bK,Int8Array:A.bL,Uint16Array:A.bM,Uint32Array:A.bN,Uint8ClampedArray:A.aY,CanvasPixelArray:A.aY,Uint8Array:A.bO}) +hunkHelpers.setOrUpdateLeafTags({ArrayBuffer:true,SharedArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false}) +A.ao.$nativeSuperclassTag="ArrayBufferView" +A.b7.$nativeSuperclassTag="ArrayBufferView" +A.b8.$nativeSuperclassTag="ArrayBufferView" +A.aV.$nativeSuperclassTag="ArrayBufferView" +A.b9.$nativeSuperclassTag="ArrayBufferView" +A.ba.$nativeSuperclassTag="ArrayBufferView" +A.aW.$nativeSuperclassTag="ArrayBufferView"})() Function.prototype.$1=function(a){return this(a)} +Function.prototype.$0=function(){return this()} Function.prototype.$2=function(a,b){return this(a,b)} Function.prototype.$1$1=function(a){return this(a)} Function.prototype.$3=function(a,b,c){return this(a,b,c)} @@ -4799,6 +4517,6 @@ convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null) return}if(typeof document.currentScript!="undefined"){a(document.currentScript) return}var s=document.scripts function onLoad(b){for(var q=0;q","TypeErrorDecoder.matchTypeError","NullError.toString","JsNoSuchMethodError.toString","UnknownJsTypeError.toString","NullThrownFromJavaScriptException.toString","_StackTrace.toString","Closure.toString","StaticClosure.toString","BoundClosure.==","BoundClosure.hashCode","BoundClosure.toString","_CyclicInitializationError.toString","RuntimeError.toString","JsLinkedHashMap.keys","JsLinkedHashMap.length","JsLinkedHashMap.values","JsLinkedHashMap.containsKey","JsLinkedHashMap._containsTableEntry","JsLinkedHashMap.[]","JsLinkedHashMap.internalGet","JsLinkedHashMap._getBucket","JsLinkedHashMap.[]=","JsLinkedHashMap.internalSet","JsLinkedHashMap.clear","JsLinkedHashMap.forEach","JsLinkedHashMap._addHashTableEntry","JsLinkedHashMap._modified","JsLinkedHashMap._newLinkedCell","JsLinkedHashMap.internalComputeHashCode","JsLinkedHashMap.internalFindBucketIndex","JsLinkedHashMap.toString","JsLinkedHashMap._newHashTable","JsLinkedHashMap.values.","JsLinkedHashMap_values_closure","LinkedHashMapKeyIterable.length","LinkedHashMapKeyIterable.iterator","LinkedHashMapKeyIterator","LinkedHashMapKeyIterator.current","LinkedHashMapKeyIterator.moveNext","initHooks.","_Record.toString","_Record._toString","StringBuffer._writeString","_Record._fieldKeys","_Record._computeFieldKeys","List.unmodifiable","_Record2._getFieldValues","_Record2.==","_Record._sameShape","_Record2.hashCode","JSSyntaxRegExp.toString","JSSyntaxRegExp._nativeGlobalVersion","JSSyntaxRegExp._execGlobal","_MatchImplementation.end","_MatchImplementation.[]","_AllMatchesIterator.current","_AllMatchesIterator.moveNext","JSSyntaxRegExp.isUnicode","NativeByteBuffer.runtimeType","NativeByteData.runtimeType","NativeTypedArray.length","NativeTypedArrayOfDouble.[]","NativeTypedArrayOfDouble.[]=","NativeTypedArrayOfInt.[]=","NativeFloat32List.runtimeType","NativeFloat64List.runtimeType","NativeInt16List.runtimeType","NativeInt16List.[]","NativeInt32List.runtimeType","NativeInt32List.[]","NativeInt8List.runtimeType","NativeInt8List.[]","NativeUint16List.runtimeType","NativeUint16List.[]","NativeUint32List.runtimeType","NativeUint32List.[]","NativeUint8ClampedList.runtimeType","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.runtimeType","NativeUint8List.length","NativeUint8List.[]","Rti._eval","Rti._bind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_Completer.completeError","_Completer.completeError[function-entry$1]","_AsyncCompleter.complete","_FutureListener.matchesErrorTest","_FutureListener.handleError","_Future._setChained","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._chainCoreFutureAsync.","_Future._asyncCompleteWithValue.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","_rootHandleError.","_RootZone.runGuarded","_RootZone.bindCallbackGuarded","_RootZone.run","_RootZone.run[function-entry$1]","_RootZone.runUnary","_RootZone.runUnary[function-entry$2]","_RootZone.runBinary","_RootZone.runBinary[function-entry$3]","_RootZone.registerBinaryCallback","_RootZone.registerBinaryCallback[function-entry$1]","_RootZone.bindCallbackGuarded.","ListBase.iterator","ListBase.elementAt","ListBase.cast","ListBase.fillRange","ListBase.toString","MapBase.forEach","MapBase.length","MapBase.toString","MapBase.mapToString.","_UnmodifiableMapMixin.[]=","MapView.[]","MapView.[]=","MapView.forEach","MapView.length","MapView.toString","_JsonMap.[]","_JsonMap.length","_JsonMap.keys","_JsonMap.[]=","_JsonMap.containsKey","_JsonMap.forEach","_JsonMap._computeKeys","_JsonMap._upgrade","_JsonMap._process","_JsonMapKeyIterable.length","_JsonMapKeyIterable.elementAt","_JsonMapKeyIterable.iterator","_Utf8Decoder._decoder.","_Utf8Decoder._decoderNonfatal.","Base64Codec.normalize","HtmlEscapeMode.toString","HtmlEscape.convert","HtmlEscape._convert","JsonCodec.decode","JsonCodec.decoder","Utf8Encoder.convert","NativeUint8List.sublist","_Utf8Encoder._writeReplacementCharacter","_Utf8Encoder._writeSurrogate","_Utf8Encoder._fillBuffer","Utf8Decoder.convert","_Utf8Decoder._convertGeneral","_Utf8Decoder._decodeRecursive","_Utf8Decoder.decodeGeneral","NoSuchMethodError.toString.","_symbolToString","_Uri._makeQueryFromParameters.","_Enum.toString","Error.stackTrace","AssertionError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","NoSuchMethodError.toString","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","OutOfMemoryError.toString","OutOfMemoryError.stackTrace","StackOverflowError.toString","StackOverflowError.stackTrace","_Exception.toString","FormatException.toString","Iterable.cast","Iterable.length","Iterable.elementAt","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.==","Object.toString","Object.noSuchMethod","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","Uri.splitQueryString.","Uri._parseIPv4Address.error","Uri.parseIPv6Address.error","Uri.parseIPv6Address.parseHex","_Uri._text","_Uri._initializeText","_Uri._writeAuthority","_Uri.hashCode","_Uri.queryParameters","_Uri.userInfo","_Uri.host","_Uri.port","_Uri.query","_Uri.fragment","_Uri.replace","_Uri.isAbsolute","_Uri.hasAuthority","_Uri.hasQuery","_Uri.hasFragment","_Uri.toString","_Uri.==","_Uri._makeQueryFromParametersDefault.writeParameter","_Uri._makeQueryFromParametersDefault.","UriData.uri","UriData._computeUri","UriData.toString","_createTables.build","_createTables.setChars","_createTables.setRange","_SimpleUri.hasAuthority","_SimpleUri.hasPort","_SimpleUri.hasQuery","_SimpleUri.hasFragment","_SimpleUri.isAbsolute","_SimpleUri.scheme","_SimpleUri._computeScheme","_SimpleUri.userInfo","_SimpleUri.host","_SimpleUri.port","_SimpleUri.path","_SimpleUri.query","_SimpleUri.fragment","_SimpleUri.queryParameters","_SimpleUri.replace","_SimpleUri.hashCode","_SimpleUri.==","_SimpleUri.toString","promiseToFuture.","NullRejectionException.toString","Kind._enumToString","Kind.toString","_MatchPosition._enumToString","Index.find","JSArray.map","Index.find.score","Index.find.","IndexItem._scope","_htmlBase.","init.disableSearch","print","init.","init_closure","Index.fromJson","ListBase.map","_Search.listBox","_Search.moreResults","_Search.searchResults","_Search.initialize","_Search.showSearchResultPage","_Search.hideSuggestions","_Search.updateSuggestions","_Search.showSuggestions","_Search.showEnterMessage","_Search.updateSuggestions[function-entry$2]","_Search.handleSearch","_Search.handleSearch[function-entry$1$isSearchPage]","_Search.handleSearch[function-entry$1]","_Search.handleSearch[function-entry$1$forceUpdate]","_Search.clearSearch","_Search.setEventListeners","_Search.initialize.","_Search.setEventListeners.","_createSuggestion.","_highlight.","_initializeToggles.","_loadSidebar.","_loadSidebar_closure","init.switchThemes","DART_CLOSURE_PROPERTY_NAME","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","_Utf8Decoder._reusableBuffer","_Utf8Decoder._decoder","_Utf8Decoder._decoderNonfatal","_Base64Decoder._inverseAlphabet","_Uri._needsNoEncoding","_Uri._useURLSearchParams","_hashSeed","_scannerTables","_htmlBase","","$intercepted$$eq$Iu","$intercepted$__$asx","$intercepted$___$ax","$intercepted$cast10$ax","$intercepted$compareTo1$ns","$intercepted$contains1$asx","$intercepted$elementAt1$ax","$intercepted$get$hashCode$IJavaScriptBigIntJavaScriptSymbolLegacyJavaScriptObjectabnsu","$intercepted$get$iterator$ax","$intercepted$get$length$asx","$intercepted$get$runtimeType$Ibdinsux","$intercepted$noSuchMethod1$Iu","$intercepted$toString0$IJavaScriptBigIntJavaScriptFunctionJavaScriptSymbolLegacyJavaScriptObjectabnsux","ArrayIterator","Base64Codec","Base64Encoder","BoundClosure","ByteBuffer","ByteData","CastIterator","CastList","Closure","Closure0Args","Closure2Args","CodeUnits","Codec","ConstantMap","ConstantMapView","ConstantStringMap","Converter","EfficientLengthIterable","EfficientLengthMappedIterable","EnclosedBy","Encoding","Error","ExceptionAndStackTrace","FixedLengthListMixin","Float32List","Float64List","Function","Future","HtmlEscape","HtmlEscapeMode","Index","IndexError","IndexItem","Index_find_closure","Index_find_score","Int16List","Int32List","Int8List","Interceptor","Iterable","JSArray","JSBool","JSInt","JSInvocationMirror","JSNull","JSNumNotInt","JSNumber","JSObject","JSString","JSSyntaxRegExp","JSUnmodifiableArray","JS_CONST","JavaScriptBigInt","JavaScriptFunction","JavaScriptIndexingBehavior","JavaScriptObject","JavaScriptSymbol","JsLinkedHashMap","JsonCodec","JsonDecoder","Kind","LateError","LegacyJavaScriptObject","LinkedHashMapCell","LinkedHashMapKeyIterable","List","ListBase","ListIterable","ListIterator","Map","MapBase","MapBase_mapToString_closure","MapView","MappedIterator","MappedListIterable","Match","NativeByteBuffer","NativeByteData","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeTypedData","NativeUint16List","NativeUint32List","NativeUint8ClampedList","NoSuchMethodError","NoSuchMethodError_toString_closure","Null","NullError","NullRejectionException","NullThrownFromJavaScriptException","Object","OutOfMemoryError","PlainJavaScriptObject","Primitives_functionNoSuchMethod_closure","RangeError","Record","RegExpMatch","Rti","RuntimeError","SentinelValue","StackOverflowError","StackTrace","StaticClosure","String","StringBuffer","Symbol","TearOffClosure","TrustedGetRuntimeType","TypeError","TypeErrorDecoder","Uint16List","Uint32List","Uint8ClampedList","Uint8List","UnknownJavaScriptObject","UnknownJsTypeError","UnmodifiableListBase","UnmodifiableListMixin","UnmodifiableMapView","Uri","UriData","Uri__parseIPv4Address_error","Uri_parseIPv6Address_error","Uri_parseIPv6Address_parseHex","Uri_splitQueryString_closure","Utf8Codec","Utf8Decoder","Utf8Encoder","_#fromMap#tearOff","_AllMatchesIterator","_AsyncAwaitCompleter","_AsyncCallbackEntry","_AsyncCompleter","_AsyncRun__initializeScheduleImmediate_closure","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_CastIterableBase","_CastListBase","_Completer","_CyclicInitializationError","_DataUri","_EfficientLengthCastIterable","_Enum","_Error","_Exception","_FunctionParameters","_Future","_FutureListener","_Future__addListener_closure","_Future__asyncCompleteError_closure","_Future__asyncCompleteWithValue_closure","_Future__chainCoreFutureAsync_closure","_Future__chainForeignFuture_closure","_Future__prependListeners_closure","_Future__propagateToListeners_handleError","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_JS_INTEROP_INTERCEPTOR_TAG","_JsonMap","_JsonMapKeyIterable","_MatchImplementation","_MatchPosition","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_Record","_Record2","_Record_2_item_matchPosition","_Required","_RootZone","_RootZone_bindCallbackGuarded_closure","_Search_initialize_closure","_Search_setEventListeners_closure","_SimpleUri","_StackTrace","_StreamIterator","_StringStackTrace","_TimerImpl_internalCallback","_TypeError","_UnmodifiableMapMixin","_UnmodifiableMapView&MapView&_UnmodifiableMapMixin","_Uri","_Uri__makeQueryFromParametersDefault_closure","_Uri__makeQueryFromParametersDefault_writeParameter","_Uri__makeQueryFromParameters_closure","_Utf8Decoder","_Utf8Decoder__decoderNonfatal_closure","_Utf8Decoder__decoder_closure","_Utf8Encoder","_Zone","__CastListBase&_CastIterableBase&ListMixin","_awaitOnObject_closure","_canonicalRecipeJoin","_canonicalRecipeJoinNamed","_canonicalizeScheme","_chainCoreFutureAsync","_chainCoreFutureSync","_checkPadding","_checkZoneID","_compareAny","_computeFieldNamed","_computeSignatureFunctionNewRti","_computedFieldKeys","_containerMap","_convertInterceptedUint8List","_create1","_createFutureOrRti","_createGenericFunctionRti","_createQuestionRti","_createStarRti","_createSuggestion_closure","_createTables_build","_createTables_setChars","_createTables_setRange","_current","_decoder","_decoderNonfatal","_defaultPort","_empty","_escapeChar","_escapeScheme","_fail","_generalApplyFunction","_getCanonicalRecipe","_getFutureFromFutureOr","_getQuestionFromStar","_hexCharPairToByte","_highlight_closure","_htmlBase_closure","_identityHashCodeProperty","_initializeScheduleImmediate","_initializeToggles_closure","_installTypeTests","_interceptorFieldNameCache","_interceptors_JSArray__compareAny$closure","_internal","_inverseAlphabet","_isAlphabeticCharacter","_isInCallbackLoop","_isUnionOfFunctionType","_lastCallback","_lastPriorityCallback","_literal","_lookupBindingRti","_lookupFunctionRti","_lookupFutureOrRti","_lookupGenericFunctionParameterRti","_lookupGenericFunctionRti","_lookupInterfaceRti","_lookupQuestionRti","_lookupRecordRti","_lookupStarRti","_lookupTerminalRti","_makeFragment","_makeHost","_makeNativeUint8List","_makePath","_makePort","_makeQuery","_makeQueryFromParameters","_makeQueryFromParametersDefault","_makeScheme","_makeUserInfo","_mayContainDotSegments","_needsNoEncoding","_nextCallback","_normalize","_normalizeEscape","_normalizeOrSubstring","_normalizePath","_normalizeRegName","_normalizeRelativePath","_normalizeZoneID","_objectTypeNameNewRti","_of","_parse","_parseIPv4Address","_propagateToListeners","_receiverFieldNameCache","_removeDotSegments","_reusableBuffer","_rootHandleError_closure","_scheduleImmediateClosure","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_stringFromUint8List","_suggestionLength","_suggestionLimit","_throw","_throwUnmodifiable","_uriDecode","_uriEncode","_useTextDecoder","_useURLSearchParams","_wrapJsFunctionForAsync_closure","_writeAll","addErasedTypes","addRules","allocateGrowable","alternateTagFunction","applyFunction","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","async___startMicrotaskLoop$closure","bind","bool","checkNotNegative","checkValidRange","collectArray","combine","compose","create","cspForwardCall","cspForwardInterceptedCall","defaultStackTrace","dispatchRecordsForInstanceTags","double","errorDescription","eval","evalInEnvironment","evalRecipe","extractPattern","extractStackTrace","filled","findErasedType","findRule","finish","fixed","forType","forwardCallTo","forwardInterceptedCallTo","from","fromCharCodes","fromMessage","fromTearOff","functionNoSuchMethod","getInterceptor$","getInterceptor$asx","getInterceptor$ax","getInterceptor$ns","getTagFunction","growable","handleArguments","handleDigit","handleExtendedOperations","handleIdentifier","handleTypeArguments","hash","indexToType","initHooks_closure","initNativeDispatchFlag","init_disableSearch","init_switchThemes","int","interceptorOf","interceptorsForUncacheableTags","iterableToFullString","iterableToShortString","makeNative","mapToString","markFixed","markFixedList","markUnmodifiableList","newArrayOrEmpty","noElement","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","nullLiteralPropertyPattern","nullPropertyPattern","num","objectAssign","objectTypeName","of","parse","parseIPv6Address","parseInt","promiseToFuture_closure","prototypeForTagFunction","provokeCallErrorOn","provokePropertyErrorOn","range","receiverOf","safeToString","search_IndexItem___fromMap_tearOff$closure","splitQueryString","stringFromCharCode","stringFromNativeUint8List","throwWithStackTrace","toStringVisiting","toType","toTypes","toTypesNamed","undefinedCallPattern","undefinedLiteralCallPattern","undefinedLiteralPropertyPattern","undefinedPropertyPattern","value","withInvocation","withLength","$add","$eq","$index","$indexSet","$mod","$mul","add","addAll","bindCallbackGuarded","call","cast","clear","clearSearch","compareTo","complete","completeError","contains","containsKey","convert","current","dart:_interceptors#_addAllFromArray","dart:_interceptors#_replaceSomeNullsWithUndefined","dart:_interceptors#_shrBothPositive","dart:_interceptors#_shrOtherPositive","dart:_interceptors#_shrReceiverPositive","dart:_interceptors#_tdivFast","dart:_interceptors#_tdivSlow","dart:_internal#_source","dart:_js_helper#_addHashTableEntry","dart:_js_helper#_computeFieldKeys","dart:_js_helper#_execGlobal","dart:_js_helper#_fieldKeys","dart:_js_helper#_getFieldValues","dart:_js_helper#_keys","dart:_js_helper#_modified","dart:_js_helper#_nativeGlobalVersion","dart:_js_helper#_newHashTable","dart:_js_helper#_newLinkedCell","dart:_js_helper#_toString","dart:_rti#_bind","dart:_rti#_eval","dart:async#_addListener","dart:async#_asyncComplete","dart:async#_asyncCompleteError","dart:async#_asyncCompleteWithValue","dart:async#_chainForeignFuture","dart:async#_chainFuture","dart:async#_cloneResult","dart:async#_completeError","dart:async#_completeWithValue","dart:async#_prependListeners","dart:async#_removeListeners","dart:async#_reverseListeners","dart:async#_setChained","dart:async#_setErrorObject","dart:async#_thenAwait","dart:convert#_computeKeys","dart:convert#_convert","dart:convert#_convertGeneral","dart:convert#_decodeRecursive","dart:convert#_fillBuffer","dart:convert#_process","dart:convert#_upgrade","dart:convert#_writeReplacementCharacter","dart:convert#_writeSurrogate","dart:core#_computeScheme","dart:core#_enumToString","dart:core#_errorExplanation","dart:core#_errorName","dart:core#_text","decode","decodeGeneral","decoder","elementAt","end","fillRange","find","first","fold","forEach","fragment","handleError","handleSearch","hasAuthority","hasFragment","hasPort","hasQuery","hashCode","hideSuggestions","host","indexOf","initialize","internalComputeHashCode","internalFindBucketIndex","internalGet","invalidValue","isAbsolute","isNegative","iterator","join","keys","last","length","listBox","matchTypeError","matchesErrorTest","memberName","moreResults","moveNext","namedArguments","noSuchMethod","normalize","package:dartdoc/src/search.dart#_scope","path","port","positionalArguments","query","queryParameters","registerBinaryCallback","replace","replaceRange","run","runBinary","runGuarded","runUnary","runtimeType","scheme","searchResults","setEventListeners","showSearchResultPage","sort","stackTrace","startsWith","sublist","substring","then","toString","updateSuggestions","uri","userInfo","values","Rti._unstar","isTopType","_Universe._canonicalRecipeOfStar","_Universe._canonicalRecipeOfQuestion","_Universe._canonicalRecipeOfFutureOr","_Universe._canonicalRecipeOfBinding","_Universe._canonicalRecipeOfGenericFunction","Error._stringToSafeString","_Utf8Encoder.withBufferSize","_Utf8Encoder._createBuffer","-","FunctionToJSExportedDartFunction|get#toJS","JSPromiseToFuture|get#toDart","_","_asCheck","_callMethodUnchecked0","_callMethodUnchecked1","_callMethodUnchecked2","_canonicalRecipeOfBinding","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_canonicalRecipeOfFutureOr","_canonicalRecipeOfGenericFunction","_canonicalRecipeOfInterface","_canonicalRecipeOfQuestion","_canonicalRecipeOfRecord","_canonicalRecipeOfStar","_chainSource","_cloneResult","_combineSurrogatePair","_completeError","_computeIdentityHashCodeProperty","_computeUri","_containsTableEntry","_createBindingRti","_createBuffer","_createFunctionRti","_createGenericFunctionParameterRti","_createInterfaceRti","_createLength","_createRecordRti","_createTerminalRti","_createTimer","_equalFields","_error","_errorTest","_failedAsCheckError","_findRule","_future","_getBindCache","_getBindingArguments","_getBindingBase","_getBucket","_getCachedRuntimeType","_getEvalCache","_getFunctionParameters","_getFutureOrArgument","_getGenericFunctionBase","_getGenericFunctionBounds","_getGenericFunctionParameterIndex","_getInterfaceName","_getInterfaceTypeArguments","_getIsSubtypeCache","_getKind","_getNamed","_getOptionalPositional","_getPrimary","_getProperty","_getQuestionArgument","_getRecordFields","_getRecordPartialShapeTag","_getRequiredPositional","_getReturnType","_getRti","_getRuntimeTypeOfArrayAsRti","_getSpecializedTestResource","_getStarArgument","_getTableBucket","_getTableCell","_hasError","_hasProperty","_hasTimer","_initializeText","_installRti","_isChained","_isCheck","_isClosure","_isComplete","_isDartObject","_isDotAll","_isFile","_isGeneralDelimiter","_isHttp","_isHttps","_isLeadSurrogate","_isMultiLine","_isPackage","_isRegNameChar","_isSchemeCharacter","_isSubtypeUncached","_isTrailSurrogate","_isUnicode","_isUnreservedChar","_isUpgraded","_isZoneIDChar","_keysFromIndex","_lookupAnyRti","_lookupDynamicRti","_lookupErasedRti","_lookupFutureRti","_lookupNeverRti","_lookupVoidRti","_mayAddListener","_mayComplete","_name","_newJavaScriptObject","_objectToString","_ofArray","_onError","_onValue","_parseRecipe","_processed","_recipeJoin","_removeListeners","_sameShape","_scheduleImmediate","_setAsCheckFunction","_setBindCache","_setCachedRuntimeType","_setCanonicalRecipe","_setError","_setErrorObject","_setEvalCache","_setIsTestFunction","_setKind","_setNamed","_setOptionalPositional","_setPrecomputed1","_setPrimary","_setRequiredPositional","_setRest","_setSpecializedTestResource","_setValue","_shapeTag","_startsWithData","_stringToSafeString","_target","_theUniverse","_unstar","_upgradedMap","_whenCompleteAction","_writeAuthority","_writeOne","_writeString","_zone","allocate","apply","arrayAt","arrayConcat","arrayLength","arraySplice","asBool","asInt","asRti","asRtiOrNull","asString","as_Type","castFrom","charCodeAt","checkGrowable","checkMutable","checkString","codeUnits","collectNamed","compare","constructorNameFallback","convertSingle","decodeQueryComponent","defineProperty","dispatchRecordExtension","dispatchRecordIndexability","dispatchRecordInterceptor","dispatchRecordProto","encode","encodeQueryComponent","environment","erasedTypes","evalCache","evalTypeVariable","fieldADI","fromCharCode","fromJson","fromList","fromMap","future","getDispatchProperty","getIndex","getLegacyErasedRecipe","getLength","getName","getProperty","getRuntimeTypeOfInterceptorNotArray","group","handleNamedGroup","handleOptionalGroup","handleStartRecord","handleUncaughtError","handleValue","handleWhenComplete","handlesComplete","handlesValue","hasErrorCallback","hasErrorTest","hasMatch","hasScheme","hash2","hash3","hash4","identityHashCode","instanceTypeName","interceptorFieldName","interceptorsByTag","internalSet","isAccessor","isArray","isDigit","isEmpty","isGetter","isIdentical","isNaN","isNotEmpty","isRequired","isUnicode","jsHasOwnProperty","jsonDecode","jsonEncodeNative","leafTags","listToString","lookupSupertype","lookupTypeVariable","makeFixedListUnmodifiable","makeListFixedLength","map","mapGet","mapSet","markGrowable","notSimple","objectKeys","objectToHumanReadableString","parseHexByte","pop","position","printToConsole","propertyGet","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","push","pushStackFrame","receiverFieldName","recipe","removeSelectedElement","replaceAllMapped","setProperty","sharedEmptyArray","shouldChain","showEnterMessage","showSuggestions","splitMapJoin","stack","start","staticInteropGlobalContext","stringConcatUnchecked","stringIndexOf","stringIndexOfStringUnchecked","stringReplaceRangeUnchecked","stringSafeToString","stringSplit","suggestionElements","suggestionsInfo","thenAwait","toGenericFunctionParameter","toList","toLowerCase","toUpperCase","tryParse","tryStringifyException","typeRules","typed","universe","unmangleGlobalNameIfPreservedAnyways","unmodifiable","unvalidated","withBufferSize","write","writeAll","writeCharCode"], - "mappings": "A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoFAA,UA6BEA,uBAEFA,C;EASAC,qBApDSA,EACiBA;AAsDxBA,eACMA,WACFA;GAzDGA,EACiBA,uBA6DxBA,eAhB6BA;AAkB3BA,UAAoBA,QAnBaA,EA0ErCA;AAtDIA,UAAmBA,QAsDvBA;AArDsBA;AAClBA,SACEA,QAvB+BA,EA0ErCA;IAxEmCA,OA8B7BA,UAAMA,+BAA4CA,IAD3BA,aAOTA;WAEdA;QAuCGC;WCgkFAC,QADgBA;GDzjFjBF,IA7CNA,WAAyBA,QAkC3BA;AA9BgBA;AACdA,WAAyBA,QA6B3BA;AAvBEA,wBAIEA,QAHcA,EAsBlBA;AAjBcA;AACZA,WAEEA,QAIcA,EAUlBA;wBAPIA,QAHcA,EAUlBA;AALEA,4BAUOG;WCgkFAD,QADgBA;AC5rFvBC,kCFuHOH;AAFLA,QAEKA,EACTA,CADEA,QAAOA,EACTA,C;EGvKUI,MAWNA,qBACEA,UAAiBA;AAEnBA,OAAOA,KAAqBA,eAC9BA,C;EAmCQC,MAGNA,OACEA,UAAMA;AAERA,OAsCEA,IANiCC,yBA/BrCD,C;EAUQE,MAGNA,OACEA,UAAMA;AAERA,OAqBEA,IANiCD,yBAdrCC,C;EAgBQC,MACJA,YAAsCA,mBAA8BA,C;EAKzDC;AAKbA,QACFA,C;EAEeC;ACzCmCC;AD+ChDD,QACFA,C;EAkgBWC,MACTA,gBACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEtkBQC,uBACKA,KACTA,OAUJA,yCAPAA;AADEA,OANFA,yCAOAA,C;EC2CEC,IAAwBA;AAM1BA,QAAgBA,QAIlBA;AAHgBA;AACdA,iBAAgCA,WAElCA;AADEA,QACFA,C;EAuDaC,MACFA;AACAA;AACPA,cACFA,C;EAEWC,IACFA;AACAA;AACPA,kCACFA,C;EA6iBAC,QAIAA,QACFA,C;EAwSKC,IACHA;OAAoBA,GAAiBA,YAArCA,gBAAoBA,GACIA,IAAsBA,QAGhDA;AADEA,QACFA,C;EClrBUC,UACOA,YACXA,OAsBJA,2CAnBAA;AADEA,OAGFA,2CAFAA,C;EAsqBkBC,GAAeA,OC1djCA,sBD0dyDA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEx+B5CC,GACXA,UAAMA,sCACRA,C;ERmDKC,WShFOA,mBACLA;ATiFPA,WAAuBA,QAGzBA;AAF+BA,mBAE/BA,C;EAuBKC,MACHA;eDV0CA;ACYxCA,WAAoBA,QAGxBA,CADEA,OAAcA,QAChBA,C;CAEOC,IACLA;sBAAqBA,QAmBvBA;AAlBEA,uBACEA,SAEEA,UAeNA,MAbSA,UACLA,YAYJA;KAXSA,UACLA,aAUJA;KATSA,WACLA,YAQJA;AANeA;AAKbA,QACFA,C;EA2HaC,aAELA;WAUFA;GATUA;AACZA;OAIAA,QACFA,C;EAKYC,+EAGIA;AAIdA,WAIEA,QA0DJA;GAxDyBA;AACvBA,YACEA,WAEEA,OAAOA,cAoDbA;AAhDaA,IAFLA,UAEFA,qBAgDNA;AA9CIA,QA8CJA,CAxCEA,aACEA,UAAiBA;AAEnBA,mBAEEA,OAAOA,cAmCXA;AA/BEA;GAoBsBA;OACWA,YAA/BA,QACsBA,0BAElBA,QAORA,CADEA,OAAOA,aACTA,C;EAgEcC,IACZA,OAAOA,OACTA,C;EAOcC,IACRA;AUkdCA,iBVlduBA,GAG1BA,WU8cMA,aV1aVA;AAjCoBA;AAGPA,QAFgBA,SACAA,cCvLtBA,GACHA;ADyMAA,wBAAwCA,QAY5CA;GAXsBA;AAClBA,4BACwBA;AACtBA,4CAEEA,QAMRA,EADEA,OU4aKA,IADGA,aV1aVA,C;EAecC,IACkCA,wCAC5CA,OAAOA,OAcXA;AAZEA,sBACEA,OAywEGC,iBA9vEPD;AAPWA,qBAAPA,aAOJA;AAJWA,qBAAPA,eAIJA;AADEA,sBAvBcA,WAwBhBA,C;EAyFcE,QAGZA;AACSA,uBAD8CA,QACrDA,wCAcJA;AAXEA,sBACkBA;AAOZA;mDAENA,QACFA,C;CAEcC,IACZA;SACEA,YACEA,OAAOA,sBAYbA;AATIA,eACaA;AAGXA,OAAOA,qBADcA,oCAM3BA,EADEA,UAAiBA,2BACnBA,C;EAgNOC,QAEDA;;AAMFA;AAiBkDA;CAlBlDA,IAAqCA;AACrCA;CAGKA;aWvyBWA,OXyyBhBA,MAAuBA;AAWzBA,OAAOA,OA7nBTC,UA8nBMD,aACNA,C;EAiCOE,QAGLA;AAAwBA,gCW11BNA;KX01BiBA;AAAnCA,SAGgCA;AAC9BA,UAGWA,UAAPA,aAiDRA,MA/CWA,UAGIA,UAAPA,iBA4CRA,MA1CWA,UAGIA,UAAPA,sBAuCRA,MApCWA,UAGIA,UAAPA,2BAiCRA,MA9BWA,UAGIA,UAAPA,gCA2BRA,MAxBWA,SAGIA,UAAPA,qCAqBRA;GAPiBA;AACbA,WACEA,OAAOA,YAKbA,CADEA,OAAOA,WACTA,C;EAEOC,QAIqBA,iDAGLA,kBAMSA,WAEDA;AAG7BA,OACEA,OAAOA,WAuGXA;GApG6BA;AAGKA;AAKDA;AAEbA;GAEdA;AACJA,yBAGeA;AAGfA,MAIWA,aWj8BOC,OXi8BdD,kBA6ENA;AA3EIA,SACEA,OAAOA,YA0EbA;AAxEIA,OAAOA,WAwEXA,CArEkDA,qBAMrCA,aW/8BOC,OX+8BdD,kBA+DNA;KA5DyBA;AAErBA,OAEEA,OAAOA,cAwDbA;AAtDIA,QACyBA;AAEvBA,SAEmBA;AAEnBA,YAEFA,OAAOA,YA6CXA,MAzCIA,OAGEA,OAAOA,WAsCbA;AAnCIA,SAEmBA;AAGPA;AACZA,kBACEA,yDACqBA,EADrBA;AAGWA,IA6xEyBA,OA7xEhCA,kBAyBVA;AAvBQA,wBAIFA;AACMA,WACFA;AACAA,SAAcA,kBAEKA;AAEVA,IAgxEuBA,OAhxE9BA,kBAYZA;AAVUA,aAKKA,QW1gCGA,GX0gCVA,kBAKRA,CAFIA,OAAOA,YAEXA,E;EAEmBE,WACHA;AACdA,WAAqBA,WAEvBA;AADEA,OAAOA,OACTA,C;EAyBIC,MACJA;YAAmBA,OO/4BnBA,oBP05BFA;AAVyBA;AAIvBA,aACEA,OAAkBA,aAKtBA;AADEA,OAAkBA,SACpBA,C;EAKMC,QAIJA,OACEA,OAAkBA,uBAYtBA;AAVEA,WAIEA,YACEA,OAAkBA,qBAKxBA;AADEA,OO/6BAA,wBPg7BFA,C;EAOcC,IACZA,OOx7BAA,uBPy7BFA,C;CAiCAC,IAEEA,OAAOA,KADSA,cAElBA,C;EAGAC,MACEA;WO5hCIA;;;APgiCJA,+BAKEA;eAgBKC;AAPPD,QACFA,C;EAGAC,GAGEA,gBAAOA,eACTA,C;EAOMC,IAEJA,MAAyBA,MAC3BA,C;EAEMC,MACJA,MAAyBA,SAC3BA,C;EA2BAC,IACEA,UAAMA,QACRA,C;CAqJSC,IAULA;AAIUA,OAJAA;AAUNA;AACJA,WAA2BA;AAKXA;AACIA;AACTA;AACEA;AACEA;AAiBfA,OArHFA,mRAyGmBA,4EAcnBA,C;EAMcC,IAmDZA,OAReA;gEAQRA,GACTA,C;EAkCcC,IASZA,OAPeA,gEAORA,GACTA,C;EA8CAC,8BACuCA;AADvCA,4BAGiCA,UAHjCA,AAGuEA,C;EA+ClEC,IAGLA,WACEA,OA7BFA,WA2CFA;AAVWA,qBAAPA,eAA6BA,GAUjCA;AANEA,uBAA6CA,QAM/CA;AAJEA,wBACEA,OAAOA,QAAmBA,eAG9BA;AADEA,OAAOA,OACTA,C;EAKOC,MACKA,gBACeA;AAKzBA,QACFA,C;EAEOC,IACLA;qBACEA,QAqGJA;GAjGgBA;gDAMCA;AAKKA;AACMA,2BAKtBA,mBAEIA,OAAOA,OACCA,KAAsBA,8BA6ExCA;mBA1EgDA;AAAtCA,OAAOA,OA5HfA,WAsMFA,EArEEA,2BAE8BA;AACMA;AACFA;AACOA;AACNA;AACOA;AACJA;AACOA;AACNA;AACOA;AAC/BA;AAAbA,WACEA,OAAOA,OAAmBA,UAwDhCA;KAvDwBA;AAAbA,YAMEA;AAAPA,cAA0BA,UAiDhCA,MAhDwBA,iBACPA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,aACXA,OAAOA,OA9JXA,WAsMFA,CAlCIA,OAAOA,OAtITA,kCAwKFA,CA9BEA,4BC7tDOA,oDD+tDHA,OOtoCEA,UPkqCRA;yDAMSA;AAvBLA,OAAOA,OOzjDTA,wCPujDcA,mCAmBhBA,CAbEA,gEAIEA,gDACEA,OO1pCEA,UPkqCRA;AADEA,QACFA,C;EAqBWC,IACTA;qBACEA,QAAiBA,EAiBrBA;AAfEA,WAAuBA,OAoBvBA,WALFA;GAduBA;AACrBA,WAAmBA,QAarBA;AAKEA;AAVAA;AAIAA,QACFA,C;EAwBIC,IAEFA,WAAoBA,OAAcA,MAMpCA;AALEA,sBACEA,OAAkBA,OAItBA;AADEA,OAAcA,MAChBA,C;EAsBAC,mBA+CSA;AA1CPA,iBACoCA;AACEA;AACpCA,OAkCKA,UAhCPA,QACFA,C;EAuCAC,cAEEA,iBAEIA,OAAOA,MAWbA;OATMA,OAAOA,OASbA;OAPMA,OAAOA,SAObA;OALMA,OAAOA,WAKbA;OAHMA,OAAOA,aAGbA,CADEA,UYp4DAC,gEZq4DFD,C;EAIAE,aAEiBA;AACfA,OAAkCA,QAIpCA;AAHaA;;AAEXA,QACFA,C;EAEAC,MAOUA;AACRA,oBAEYA;AADVA;UAGUA;AADVA;UAGUA;AADVA;UAGUA;AADVA;UAGUA;AAVZA;QAYIA,OAAJA,WACEA,OAAOA,SA0BXA;AAXEA,uEAAOA,UAWTA,C;EA4BSC,iCAcDA,QAGAA,QAEAA,QACqBA,SAGrBA,QAGAA,QAEAA,OAKUA,OACKA,QACAA,SAOfA;EAAiEA;AA6B/DA,kBAoZEA,kCAlZFA,cAkbRA;eA/a0CA;AAkBDA,IAZjCA,+CAEIA;;;;;AAmBNA;AAAJA,KAEMA;;AAWgBA,KAJlBA;;AAOJA,eAAgCA,QAAhCA,QACiBA;AAGfA,0BAESA;AASaA;AAAUA,SAZdA;GAMKA;AAGvBA,YACEA,KAEMA;OAIRA;OAS+BA;OAKQA;AAKzCA,QACFA,C;EAEOC,QAELA,sBAEEA,QAoBJA;AAlBEA,uBAEEA,KAEEA;AAGFA,yDAAOA,QAWXA,CADEA,6CACFA,C;EAEOC;AAiBLA,sBAEIA,4DAAOA,KAuEbA;OA7DMA,8DAAOA,KA6DbA;OAnDMA,kEAAOA,KAmDbA;OAzCMA,sEAAOA,KAyCbA;OA/BMA,0EAAOA,KA+BbA;OArBMA,8EAAOA,KAqBbA;QAVMA,0EAAOA,KAUbA,E;EAIOC,UAELA,KACEA,OAAOA,WA4BXA;AAxBIA,OAAOA,MAHGA,cA2BdA,C;EAEOC;AAMLA,sBAIIA,UAwZNA;OAtZMA,qEAAOA,OA+EbA;OApEMA,wEAAOA,OAoEbA;OAzDMA,4EAAOA,OAyDbA;OA9CMA,gFAAOA,OA8CbA;OAnCMA,oFAAOA,OAmCbA;OAxBMA,wFAAOA,OAwBbA;QAbMA;;2BAAOA,OAabA,E;EAEOC,QAEEA;IA8ILA,UAA+BA;IAJ/BA,UAA4BA;GAxIlBA;AAIHA;AAAPA,QAwBJA,C;EAwBFC,IACEA,OAAeA,OACjBA,C;EAoESC,MACLA,OUngEeC,MAHOC,cA8BRF,MVw+DuBA,MACvCA,C;EAIOG,IAAoCA,QAAQA,EAASA,C;EAIrDC,IAAuCA,QAAQA,EAAYA,C;EAYpDC,IA/CdA,iDAiDsBA,KAChBA;OACsBA,YAA1BA,YACaA;YAETA,QAINA,CADEA,UAAMA,yCACRA,C;EA4IGC,IACHA,UAaAA,YAZFA,C;EAoEOC,IAELA,OAAOA,CADgBA,iBAEzBA,C;ECnnFAC,IAE6BA,iBAAdA,aAIYA,GA/HlBA;AAgIPA,YAlFAC,yBFOYC;AE2EQF,QFpCeE,EEuGrCF,IAlEgCA,GAjIvBA;AAkIPA,WAAyBA,QAiE3BA;GA7HyBG,kBAtEhBA;AAuIPH,YACuCA,GAApBA;AACjBA,eAGuBA,GA5IlBA;AA6IHA,YA/FJC,yBFOYC;AEwFYF,QFjDWE,EEuGrCF,IArDgCA,GA9IvBA;AA+IHA,WAAyBA,QAoD/BA;GA7HyBG,kBAtEhBA;KAqJPH,WAQEA,WAsCJA;GAnCgBA;GAEHA;AAEXA,YACWA;CACGA;AAxHdC,yBFOYC;AEkHVF,QF3EiCE,EEuGrCF,CAzBEA,aACcA;AACZA,QAuBJA,CApBEA,YACyBA;AAlIzBC,sBA6JoBD,0BFtJRI;AE2HVJ,QFpFiCI,EEuGrCJ,CAhBEA,WACEA,OAAOA,SAeXA;AAZEA,WAEEA,UAAMA;IA7GMA,qBAmHWA;AAjJzBC,sBA6JoBD,0BFtJRI;AE0IVJ,QFnGiCI,EEuGrCJ,MAFIA,OAAOA,SAEXA,C;EAYAK,MACcA;AAlKZJ,yBFOYI,6BE4JCA;AAEbA,QACFA,C;EAEAC,IAGEA,OAAOA,uBACTA,C;EAEAC,eACoBA;AAGTA,IApJKA,oBAoJZA,cAIJA;KAFIA,OAAOA,mBAEXA,C;EAgBKC,YACSA,IAAwBA,MAGtCA;;AADEA,MACFA,C;EAGKC,GACHA;AAAiCA;AACAA;AAEjCA;GAzLuBA;AA+LRA;AAEfA,+BACgBA;AACJA;AACVA,WAAyBA,QAAzBA,QACYA;AACyBA,GAAvBA;AACZA,YAEeA,UADUA;AAEvBA,YAlONR,yBFOYQ;iBEuOZA,WAAyBA,QAAzBA,QACYA;gBACNA,YA9RCA;;;;;YAuSTA,C;EAmCKC,GAESA,mBAAcA;AAiBlBA,QACJA,GALIA,MAAsBA,GAFtBA,MADsBA,GAAtBA,MAAsBA,GADtBA,MAAsBA,GADtBA,MAAsBA,GAHtBA,KAFmCA,CACvCA,IAA+CA;AAqBnDA,2DACqBA;AACnBA,wBAGmCA;AAA/BA,oBACFA,WAAoBA,QAApBA,QACoBA;AAClBA,wBAmBSA,cAZFA;GACOA;GACEA;AAELA;AAEbA;AAEAA,gBACNA,C;EAEAC,MAEEA,OADeA,OAEjBA,C;EYhJQC,aAGeA,WAEPA,KAGGA;AAEjBA,WAGEA,WAsBJA;AAnBEA,SACEA,QAkBJA;AANWA,QAFWA,QAElBA,sBAMJA;AADEA,OAAOA,IACTA,C;EChOSC,uIAUQA;AAgBbA,uBAA+CA,QAKjDA;AADEA,UAAMA,+BADgBA,sBAExBA,C;ECIGC,QAzGIC;AA2GLD,WAOJA,C;EAgCAE,4BAGMA,QACFA,OAAOA,uCAGXA;AADEA,QACFA,C;EA8EOC,IAAkCA,QAAMA,C;EAExCC,UDQLC;KCQAD,WDN2BA;WAASA;GA/DgCA;GAAhEA;AE8daA,QDxZFA,KAAWA,eCwZTA,IDvZFA;QDpEXA,QE2daA,QDpZJA,KAAWA;AACxBA,6BACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AE+qBME;EAvjBDC,IACsBA,QAM3BA,C;EA+iBwBD,IAClBA,uBAA6CA,C;EA6JzCE,IAA+BA,OA8BUA,iBA9ByBA,C;CAqvBvEC,QACHA,mBACEA,UAAMA,UAEVA,C;EASIC,QACFA;AAAgCA,gBAGoBA;KAHpBA;AAAhCA,KAIEA,UAAMA;AAGRA,QACFA,C;;;;;;;;;;;;;;;;;;;;EPpsDaC,MAKOA,OAwiHoBA;AAriHpCA,gBAdIA,WAkjHyBC,QAniH/BD,C;EAEWE,MA2xEPA,OAuwCkCA;AA3hHpCA,gBAxBIA,iBAkjHyBC,MAzhH/BD,C;EAuEYE,WA+8GmBC;AA78G7BD,uBACEA,OAAOA,MA+8GoBA,GA58G/BA;AADEA,qBACFA,C;EAqJcE,IAGZA,QAmzGmCA,GAlzGrCA,C;EAsIEC,IASFA,OAAiBA,MAzBOA,mBA0B1BA,C;EAuEIC,6DAylG6BH;AAvlG/BG,8CAMIA,SAoFNA;WAggGiCA;AAhlGvBA;AACJA,SAAuDA,SA+E7DA;AA9EMA,OAAiBA,aA8EvBA;WAggGiCA;AA1kGvBA;AACJA,SAAuDA,SAyE7DA;AAxEMA,OAAiBA,aAwEvBA;WAggGiCA;AApkGvBA;AACJA,SAAuDA,SAmE7DA;AAlEMA,OAAiBA,aAkEvBA;WAhaWA;AAiWmCA;AAExCA,SAEEA,SA2DRA;AA1DMA,OAAiBA,UAyjGgBC,KA//FvCD;YAggGiCE;AAtjGLF;IAhWjBA;AAmWDA;AACJA,gBACyDA,SAiD/DA;AAhDMA,OAAiBA,YAgDvBA;YA7b6CG;IAiDlCH;AAkWDA;AACJA,SAAmDA,SAyCzDA;AAxCMA,OAAiBA,YAwCvBA;YAggGiCI;AApiGvBJ;IA/UCA;AAkVDA;AAEJA,gBAEEA,SA6BRA;AA5BMA,OAAiBA,YA4BvBA;YAzWWA;KA44GgCA;AAzjGjCA;IAshGuBK;AAphGLL;AACtBA,gBAC+CA,SAkBrDA;AAjBMA,OAAiBA,eAiBvBA;YA6/FiCM;AAxgG3BN,QAAmBA,SAWzBA;IAqiGkDA;AA1iG5CA,WAAsBA,SAK5BA;AAJMA,QAINA;QAFMA,UAAMA,yDAEZA,C;EAEQO,UAIkBA,eA6hGiBA;AA5hGzCA,yBAy/F+BA;AAv/FRA;AACrBA,SACYA;OAIdA,YACFA,C;EAEQC,UAKkBA,mBA4gGiBA;AA3gGzCA,0BA6gGgDA;;GArCjBA;AAp+FRA;AACrBA,SACYA;AAEZA,oBAGFA,YACFA,C;EAEoBC,UAKdA,SAzQAA,sBAQAA,KAqQAA,iBAnPAA,KAsPAA;AACJA,uBAEiDA,QAQnDA;AAhSMC;CAQSD;CAQAA;CAiBAA;AA8PbA,QACFA,C;CAcQE,SAEYA;AAElBA,QACFA,C;EAKKC,WAEaA;AAChBA,YACEA,sBACEA,OAAOA,OAabA;AAJMA,OA65F2BA,MAz5FjCA,CADEA,WACFA,C;EAOIC,MACFA;AAAQA,4BA5CNA,KAiDaA;AACXA,WAAiBA,QAIvBA,CADEA,OAAOA,OACTA,C;EAKIC,IAUOA,iBAxEPA,GAwEAA,aASJA;AAg5FoCA,oBAr5FhCA,OAAOA,OAKXA;AADEA,OAAOA,KADWA,OAEpBA,C;EAIIC,WAiBQA,EAAwBA;AAIlCA,WAAiBA,QAUnBA;iCALIA,QAKJA;AADEA,QACFA,C;CAKIC,IAEuCA,OAD/BA;AACVA,wBACFA,C;EAOIC,WACgBA,gBACNA;AACZA,WAAmBA,QAErBA;AADEA,OAAOA,SACTA,C;EAGIC,0BAxIAA,mDA2JMA,iBAGUA,MA9ZMA,eA+ZFA;;AAGtBA,QACFA,C;EASIC,aACUA,UAqzFoCA;AAnzFhDA,uBAtZiBA,QAzBOpB;AA8bjBqB;AAZLD,QAGJA,CADEA,QACFA,C;EAOKC,IAEHA,YADUA,OAEZA,C;EAyDIC,IACFA;AGx+BgBC,qBHw+BMD,aGz+BhBC,IACuCA,OHi/B/CD;AA1FyBA,gBAxKrBE;AA2PFF,WAAyBA,QAO3BA;AANaA,YAETA,OAisFiCA,OAjsFLA,EAIhCA;AA4tFoCA,oBA9tFNA,OAxDlBA,OA0DZA;AADEA,OAAOA,OACTA,C;EAIKG,IAKUA,OAr0BTA;AAi0BJA,gBA/zBMC,YAg0BRD,C;EAQME,IA5nBKA,WAbKA;AA+oBdA,SACEA,QA/0BIC,GAk3BND,WA9BFA;AAHgCA,QAzhBNA;AA2gBXA,GAr0BTA;AAo1BJA,gBAl1BMD,YAo1BRC,C;EAEIE,qBAEoBA;AACtBA,SAAiBA,UAcnBA;AA5iBmBA,QAHOnE,cAoiBpBmE,MAAkBA;AAMtBA,gBA/hBiBA,QAXOC,gBA2iBQD,MAAkBA;AAGlDA,OA3iBiBA,MAHOnE,kBA+iB1BmE,C;CAGKE,IACHA,OAAOA,KA1hBUA,MAzBO/B,oBAojB1B+B,C;EAuDKC,IAGCA;AAGKA,WAAPA,oBA4DJA;AA++EIC;KAA2CA;AAziF7CD,KACEA,OAAOA,aAyDXA;GA19BmDA;AAm6BjDA,SACEA,OAAOA,aAsDXA;AA7CEA,SACEA,OAAOA,aA4CXA;SAghFiCtC;GAHAI;AAnjF/BkC,SACEA,OAAOA,aAqCXA;;;;;AAjCEA,WACEA,OAAOA,UAgCXA;AA7BEA,aA4iFqC9B;AAriF/B8B,IA13BGA,iBA7FHA;AA+9BFA,WACEA,OAAOA,aAafA;AAVMA,OAAOA,aAUbA,OANSA,WAkCKA,QAm/EyB5B,IA34G5B8B;AAw3BPF,OAAOA,uBAIXA,CAFEA,OAAOA,aAETA,C;CAGKG,QAzkCMA,CAVHA;AAqlCNA,aACFA,C;EA8BQC;AA28EJH;KAh8E+CG;AALjDA;;KAMIA;AAFGA,YAznCEA,CATHA;AAyoCNA,aACFA,C;EAEKC,aAq9E4BvC;AAn9ExBuC,uCAGEA,SACmBA,kBAk9EG3C,KAj9EC2C,eAi9EDzC;KAl9ENyC;KADhBA;KADEA;KADPA;KAIuEA;AAL3EA,QAOFA,C;EAGKC,IAGCA;AACJA,WAAoBA,OAAOA,OAG7BA;AADEA,OAAOA,MAvvBiBA,cAsvBRA,YAElBA,C;EAQKC,IACHA,WAAoBA,QAMtBA;AADEA,OA/pCSA,IAslHsBC,OAt7EjCD,C;EAGKE,IAGCA;AACJA,WAAoBA,OAAOA,OAY7BA;GA9lCeA;AA4lCKA,iBA3hBhBA,GAwhBAA,YAKJA;AADEA,iBACFA,C;EAIKC,IAGCA;AACJA,WAAoBA,OAAOA,OAoB7BA;AAdEA,sBAAgDA,QAclDA;AAw6EoCA,oBAp7ENA,QAY9BA;GA1nCeA;AAwnCKA,iBAvjBhBA,GAojBAA,YAKJA;AADEA,iBACFA,C;EAIQC,IAGFA;AACJA,YAEMA,WACFA,QAWNA,MAruCWA,UAmuCiCA,QAE5CA;AADEA,SACFA,C;EAIQC,IAGFA;AACJA,WACEA,QAGJA;KAjvCWA,UA+uCiCA,QAE5CA;AADEA,SACFA,C;EAQMC,MACJA,UALkBA,KADMA,OAAgBA,cAO1CA,C;EAqBgBC,MAIZA,OAHiCA,mBAEFA,IADfA,kDAKlBA,C;EAOAC,oCAAqEA,C;CAE7DC,MACNA,OAHFA,uBAGuCA,UACvCA,C;EAaGC,IA/yCMA,cAmlHsBnD,QAGAJ;AApyE/BuD,QAoyE+BrD,SAlyEnBqD,MA35BYA,iBAzZfA,IAqzCXA,C;EAIKC,IACHA,cACFA,C;EAIQC,IACNA,WAAoBA,QAStBA;AADEA,UAAiBA,gBACnBA,C;EAIKC,IACHA,QACFA,C;EAIQC,IACNA,QACFA,C;EAIKC,IACHA,QACFA,C;EAIKC,IACHA,oBACFA,C;EAMKC,IACHA,UAAoBA,QAGtBA;AAFEA,UAAqBA,QAEvBA;AADEA,UAAiBA,cACnBA,C;EAIMC,IACJA,UAAoBA,QAUtBA;AATEA,UAAqBA,QASvBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,cACnBA,C;EAIMC,IACJA,UAAoBA,QAItBA;AAHEA,UAAqBA,QAGvBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,eACnBA,C;EAIOC,IACLA,sBAAoBA,QAEtBA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAoBA,QAStBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,iBACnBA,C;EAIKC,IACHA,4CAEFA,C;EAIIC,6CACkBA,QAEtBA;AADEA,UAAiBA,aACnBA,C;EAIKC,6CACiBA,QAStBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,aACnBA,C;EAIKC,6CACiBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cACnBA,C;EAIKC,IACHA,yBACFA,C;EAIIC,IACFA,sBAAoBA,QAEtBA;AADEA,UAAiBA,aACnBA,C;EAIKC,IACHA,sBAAoBA,QAStBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,aACnBA,C;EAIKC,IACHA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cACnBA,C;EAIKC,IACHA,yBACFA,C;EAIOC,IACLA,sBAAuBA,QAEzBA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAuBA,QASzBA;AAREA,WAKEA,QAGJA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAuBA,QAGzBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,iBACnBA,C;EAEOC,MACEA;AACPA,qBA2mEyCA,QA3mEzCA,WAEMA,UAskEyBA;AAnkE/BA,QACFA,C;EAEOC,yBA+jEgCvE,MA34G5BuE;AAo1CTA,UAEEA,UAAaA,aAmBjBA;GAskE2CA;AAkBrCA;GAlBqCA;AAjlEzCA,mCACEA;AAEAA,SAAqBA;AAChBA,QA0iEwBA;AAziE7BA,gBAwiEmCA,IAriEnCA,IAEFA,aACFA,C;EAEOC,WAEEA;AAGPA,iBA+jEyCA;AA7jEvCA,aAC2BA;gBAEWA;IAEVA;AAC5BA,gBACEA;+BAKFA,cAEEA,eAAsBA,GAA8BA;IA4gEzBA;GAHA9E;AA9BcmC,wCA2CI4C;KA3CJ5C;AAz+DzC2C,MAEoBA,yBAItBA,YA3B0BA;WA95CevE;IA0ElCuE;GAqJLA;GAiwGqCA;GAzvGrCA;GAyvGqCA;GAvuGrCA;GAuuGqCA;AAxhEjBA;AAIxBA,kCAEMA,YA++DyBA;AA1+D/BA,QACEA;AAEAA,4BAEMA,YAq+DuBA;AAj+D7BA,QAGFA,QACEA;AAEAA,8BACEA;IAq9D6BA,MAn9D3BA;AAEeA,SAs9DUA,eADMA,IA/8DnCA,QAGFA,cAEuCA;YAOvCA,yBACFA,C;CAYOE,yBAo7D0BhF;AAj7D/BgF,SAA4BA,cA4E9BA;AA3EEA,SAA6BA,eA2E/BA;AA1EEA,SAA0BA,YA0E5BA;AAzEEA,SAA2BA,aAyE7BA;AAxEEA,SAAyBA,WAwE3BA;AAtEEA,SAWIA,OATSA,KA46DkBpF,KAx2DjCoF;AAvDEA,aA+5D+BtC;AA75DlBsC;GA05DkBhF;AAp5D7BgF,sCA+CJA,CA5CEA,SAEEA,kBAAmBA,KAk5DUlF,SAx2DjCkF;AAvCEA,UAESA,QA44D4B5E;AAl4DnB4E,GA7hDTA;AA+hDPA,QAHcA,iCA4BlBA,CAtBEA,UACEA,OAAOA,SAqBXA;AAlBEA,UACEA,OAAOA,cAiBXA;AAdEA,UAGEA,OAAOA,MAm3DsBxE,MAz2GtBwE,GAigDXA;AAPEA,cA9kD2CvE;AAilDzCuE,QAAOA,EAFqBA,YAMhCA,CADEA,SACFA,C;EAEOC,WD50DOA,mBACLA;AC60DPA,WAAuBA,QAEzBA;AADEA,mBACFA,C;EAgLiBC,aAXXC,GASAD;KAIFA,uBAbEC,GASAD;AAOFA,QACFA,C;EAEWE,uBAhBPA,OAkBUA;AACZA,WACEA,OAAOA,YAcXA;KAbSA,uBAkqDsBA;AA99CtBA;AAjMsBA;AAC3BA;AAGgBA;AAYTC;AAVPD,QAIJA,MAFIA,QAEJA,C;EAKYC,MACRA,aA3CAA,MA2C+CA,C;EA2BvCC,MACRA,OAAOA,MApEPA,MAoEiDA,C;EAS1CC,QA8qDPA,SAlwDAA;AAuFFA,WAAmBA,QAIrBA;AA2DoBA,OADGA;AAgnDrBA;AA3qDAA,QACFA,C;EAEWC,mBAlvDkCA;AAqvD3CA,WACUA,GApvDNA;AAq5GFA;AA7pDFA,WAAmBA,QAIrBA;AA6CoBA,OADGA;AAgnDrBA;AA7pDAA,QACFA,C;EAEWC,qBA5uDkCA;AA8uD3CA,WACUA,GA7uDNA;GA+zG+BxF;AAkEjCwF;AA/oDFA,WAAmBA,QAUrBA;AAHYA,YAokDmBzF,SAn5GtByF;AA09GPA;AAzoDAA,QACFA,C;CA6BWC,OA7jELA;CAIAA;AAikEJA,QACFA,C;EAmFWC,QA4gDPA,WAlwDAA;AAyPFA,WAAmBA,QAErBA;AA1qEIC;CAwIEC;CAwLAA;AAg3DGF;AAogDPG,CArwDEA;AA0PFH,QACFA,C;EASWI,QA8/CPA,SAlEiC9F,WAhsDjC8F;AAwQFA,WAAmBA,QAGrBA;AADqBA;AA2/CnBD,CArwDEA;AAyQFC,QAEFA,C;EAEWC,UAETA;SA+6C6BhG;AA76CvBgG;KAE6BA;AAFjCA,KAIEA,QAQNA,CA5sEIJ;CAwIEI;CA6CAA;AAshEGA,CA34DHA;AA24DJA,eACFA,C;EAEWC,QAm+CPA,SAlEiChG,WAhsDjCgG;AAoSFA,WAAmBA,QAGrBA;AADqBA;AA+9CnBH,CArwDEA;AAqSFG,QAEFA,C;EAEWC,UAETA;SAm5C6BlG;AAj5CvBkG,kCAESA,SAELA,eAg5CmBpG;KAl5CdoG;KADTA;KAC6BA;AAFjCA,KAKEA,QAoBNA;uBAjBMA,UAiBNA;KAhBWA,aA24CoBtG;AAv4CrBsG,IAo4CqBlG,cAGAF,IAt4CvBoG,QAWRA;KATQA,OAAWA,SASnBA,EArvEIN;CAwIEM;CA6CAA;AA+jEGA,CAp7DHA;AAo7DJA,eACFA,C;EAEWC,QA07CPA,SAlEiClG,WAhsDjCkG;AA6UFA,WAAmBA,QAGrBA;AADqBA;AAs7CnBL,CArwDEA;AA8UFK,QAEFA,C;EAEWC,UAETA;SA7nE+CA;AA+nEzCA,4BAGFA,QAYNA;KAXWA,SACLA,OAgGFA,gBAtFJA;yBARMA,UAQNA,CApxEIR;CAwIEQ;CA6CAA;AA8lEGA,CAn9DHA;AAm9DJA,eACFA,C;EAEWC,MA25CPA,sBAlwDAA;AA2WFA,WAAmBA,QAGrBA;AA7xEIT;CAwIEU;CA6CAA;CA2IAA;AAq+DGD;AA+4CPP,CArwDEA;AA4WFO,QAEFA,C;EAWcE,iBA22C2BA;AAx2CvCA,sCAq0C6BA,GADMtG;AA9zCnCsG,QACFA,C;EAEcC,qBA+1C2BA;AA31CvCA,qCA61C8CA;GA1CfA;UAKFA,KADMvG,IA5yCnCuG,QACFA,C;EAaWC,QAEFA;IAg0CgCC,UAv0CjCD;AAq2CJA,GAlwDAA;AAuaFA,WAAmBA,QAGrBA;AAz1EIb;CAwIEe;CA6CAA;CAeAA;IA+8GmCA,WArlHnCA,IAulH0CA;CAr1G1CA;AAsiEGF;AA80CPX,CArwDEA;AAwaFW,QAEFA,C;EA+BWG,QACLA;IAovCyB5G,YAGAK;AAkD3BuG,GAx8GKA,kBAsqEyCA;AAATA,IAbnCA,GA4vC+B3G;AAkEjC2G,GAlwDAA;AAodFA,WAAmBA,QAGrBA;AAt4EIhB;CAwIEiB;CA6CAA;CAeAA;CA4HAA;AA+kEGD;AAqyCPd,CArwDEA;AAqdFc,QAEFA,C;EAsBWE,QAJLA,oCAyxCFA,CAlwDAA;AAkfFA,WAAmBA,QAGrBA;AAp6EIlB;CAwIEmB;CA6CAA;CAeAA;CA4HAA;AA6mEGD;AAuwCPhB,CArwDEA;AAmfFgB,QAEFA,C;EAmDWE,QArBLC,iBAxoEQA,OAwFVC,MAiwGqCA,WAzvGrCA,MAyvGqCA,WAvuGrCA,MAuuGqCA;AA/sCvCD,QAIMA;AAEAA,qBAINA,QAEgCA;AAC1BA,qBA7W2CA;AA6kD/CD,GAlwDAA;AA6iBFA,WAAmBA,QAGrBA;AA/9EIpB;CAwIEuB;CA6CAA;CAeAA;CA4HAA;AAwqEGH;AA4sCPlB,CArwDEA;AA8iBFkB,QAEFA,C;EAoBWI,UAHHA,SA+nC6BnH,wBAkEjCmH,CAlwDAA;AAykBFA,WAAmBA,QAMrBA;AAFMA;AAwrCJtB,CArwDEA;AA0kBFsB,QAKFA,C;EAEWC,YAETA;SAipCuCA;AA9oCNA;AAC/BA,wBA0mC2BA;IAHArH,eAnmCvBqH,KAGJA,QAEMA;AAEAA;AACJA,OAAOA,iBAabA,EA/hFIzB;CAwIEyB;CA6CAA;CAeAA;AA01EGA,CA9tEHA;AA8tEJA,eACFA,C;EA6HcC,UAEZA,gCAcFA,C;EAqBWC,yBAhB6BA,MACDA;OAmBnBA,YAAlBA,MAXwCA;AAatCA,gBACMA;KACCA,uDACDA;KACCA,UACDA;KAEJA;AACAA,kBAEIA;QArBRA;AAyBQA;QAzBRA;AA6BQA;QA7BRA,OAiCYA,MA9C4BA,IACCA,GAeNA;AA+B3BA;QAlCRA,OAuYiBA,MApZuBA,GA87BXC;AA14BrBD;QAvCRA,OA7iBOA,MAgiBiCA;AAwDhCA;QA3CRA,OAxiBOA,MA2hBiCA;AA4DhCA;SA/CRA,OAniBOA,MAshBiCA;AAgEhCA;QAnDRE,QATqCA;KAg+BEA;AAh6B/BF;QAGAA;AACAA;QAGAA;AACAA;WA5EgCA;AAaxCA,OAqEsBA,OAENA,QAnFyBA,GAeNA,UAPIA;AA6E/BA;WAtFgCA;AAaxCA,OA+EsBA,OAENA,QA7FyBA,GAeNA,UAPIA;AAuF/BA;WAhGgCA;AAaxCA,OAyFsBA,OAENA,QAvGyBA,GAeNA,UAPIA;AAiG/BA;QA7FRA;AAAAE,QATqCA;KAg+BEA;AAr3B/BF;QAGAA;AACAA;QAtGRE,QATqCA;KAg+BEA;AA72B/BF;QAy3BNG,YA5+BmCA;AAsUrCC,MA1UwCD,IACCA;AA67BZA;AAj7B7BC;;AA8GQJ;SA9GRE,QATqCA;KAg+BEA;AAr2B/BF;SAi3BNK,YA5+BmCA;AA6UrCC,MAjVwCD,IACCA;AA67BZA;AAj7B7BC;;AAsHQN;QAy3BNO;AA/+BFA,OA4+BEA;AA5+BFA;AAAAL,QATqCA;KAg+BEA;AA5qBhCF;AAjLCA;QAGAA,0BA1H2BA;AA+HnCA,OAAOA,MA/IiCA,IACCA,KA+I3CA,C;EAOWQ,UACLA;OACcA,QAAlBA,SA9IwCA;AAgJtCA,mBAAyBA;AACXA,cA/IhBA;AAkJAA,QACFA,C;EAEWC,YAELA;OACcA,QAAlBA,SA1JwCA;AA4JtCA,WACEA,KAAeA;AACHA,UAC0BA,0DQn2FKA;KRk2F/BA;AACPA,MAGLA,OA40BFA;AAx0BFA,SAjLwCA;GACCA;IA67BZhI,WAGAK;AAvjDR2H,UAsjDc5H,GA/hBjC6H;AAphCFD,WACEA,uBAA4BA;AA+nB9BA,OA7nBiBA,kBA6nBjBA;AA4KAA,QACFA,C;EAEYE,MAEMA,SA9LwBA,iBAgBLA;AAgLnCA,sBAnLAA,OAqLwBA;KAEXA,UAnM4BA;QA67BZlI,YAj7B7BkI,OA4LoBA,YAhMmBA;AAkMjCA;QA9LNA,OAiM4BA;AACtBA,OAGRA,C;EAOYC,MAzMyBA,wBAhBKA;AA8OxCA,sBAEEA,iBAhOiCA;;AAmO7BA;OAnO6BA;;AAuO7BA;QA1ONA;;;AA8OMA,WA9ONA;AA2PIA;IAPyBA;AAjPMA;AAoPnCA,iBApPmCA;cAhsBgBA;;AAy7B9BA,UAxQoBA;AAnyEvCtH;CAQSsH;CAQAA;CAiBAA;AA8wEXA,OAoQkBA;AACdA,MAgBNA;OArREA,OA8QkBA,OAqqBiBA;AAnqB/BA,MAKNA;QAFMA,UAAMA,qCAA8CA,SAE1DA,C;EAyBYC,MA3SyBA;AA6SnCA,UAhTAA,OA/hBOA,MAkhBiCA;AA+TtCA,MAOJA,CALEA,UApTAA,OA1hBOA,MA6gBiCA;AAmUtCA,MAGJA,CADEA,UAAMA,sCAA+CA,QACvDA,C;EAEeV,MAwqBXA,gBA5+BmCA;AAsUrCA,MA1UwCA,IACCA;AA67BZA;AAlnB7BA,QACFA,C;EAWWW,QACTA,sBAEEA,OAAiBA,UA3gCgCA,KAkhCrDA;KALSA,uBACUA,CAAiCA;AAAhDA,kBAIJA,MAFIA,QAEJA,C;EAEYC,iBAgoB6BA;AA9nBvCA,gBAEaA,eA8nBiCA,IA3nBhDA,C;EAEYC,iBAunB6BA;AApnBvCA,iBAEaA,eAonBiCA,IAjnBhDA,C;EAEWC,mBAukBoBxI;AArkB7BwI,WACEA,SAAgBA,QAukBWnI,EAjjB/BmI;GAr2FSA;GAy7GgCA;AAvmBrCA,QACEA,QAmkByBA,KAjjB/BA;AAfIA;GAgkB2BnI;GAHAL,QAzjB3BwI,SAAgBA,QAWpBA;AATEA,SACEA,UAAMA;GAv2FDA;OAm8GgCA,QAvlBrCA,QAojB2BA,KAjjB/BA;AADEA,UAAMA,4BAAsCA,QAC9CA,C;EAoDGC,iBAvhGKA;WAAoBA,GAApBA;AAqlHJA;AA3jBJA,YAqBSA;AAyiBPA,WA1jBFA,SAAmCA,QAOrCA;AANEA,SAAkCA,QAMpCA;AADEA,QACFA,C;CAuCKC,cAWHA;SAA8BA,QAwKhCA;AAoPIA;KA5ZmCA;AAGrCA,KAA4BA,QAqK9BA;GAkRiC1I;AApb/B0I,SAA0BA,QAkK5BA;AA/JMA,UAAmBA,QA+JzBA;GArtGmDC;AAyjGjDD,SAA+BA,QA4JjCA;AAzJ0BA;AACxBA,KAGMA,UA0ayBA,EAHAjI,cAva6BiI,QAqJ9DA;GAkRiC1I;;AA/Z/B0I,MACEA,SACEA,OAAOA,WAgaoB5I,QArRjC4I;AAxIIA,qCAwIJA,aAnIIA,SACEA,OAAOA,OAuZoB5I,YArRjC4I;AA/HIA,SACEA,OAAOA,OAmZoB9I,YArRjC8I;AA3HIA,YA2HJA,CAvHEA,SACEA,OAAOA,OA2YsB9I,YArRjC8I;AAjHEA,UAOgBA;AANdA,OAAOA,iBAgHXA,CApGEA,UACOA,WAwXwB5I,aAtX3B4I,QAiGNA;AA/FIA,OAAOA,MAAyBA,mBA+FpCA,CA1FEA,UAEUA;AADRA,UAEIA,OA4WyBhG,YArRjCgG,CA7EEA,UACMA,cAiWyB5I,SA/V3B4I,QA0ENA;AAxEIA,OAAOA,UACCA,eAuEZA,CAnEEA,UAEUA;AADRA,UAEIA,WAqVyBhG,QArRjCgG,CAzDEA,KAAsBA,QAyDxBA;AAtDiCA;yBAE7BA,QAoDJA;AAhDMA;cAAqDA,QAgD3DA;AA3CEA,sBAC2BA,QA0C7BA;AAzCIA,UAAsCA,QAyC1CA;GAplGWA;;GA44GgCA;gBA3VfA,QAmC5BA;AAuUMA;;AArWFA,oBAmT6BA;;AAhTtBA,wBACAA,kBACHA,QAyBRA,CArBIA,OAAOA,QA0SsBlI,cArRjCkI,CAlBEA,sBAC2BA,QAiB7BA;AAhBIA,KAA+BA,QAgBnCA;AAfIA,OAAOA,kBAeXA,CAXEA,UACEA,SAAgCA,QAUpCA;AATIA,OAAOA,kBASXA,CALEA,aACEA,OAAOA,kBAIXA;AADEA,QACFA,C;EAEKE,oBAC0EA;AAMxEA,aA4Q0BrI,kBA3Q7BqI,QAuFJA;IA/rGWA;;GAqJLA;;GAiwGqCA;;AAlSzCA,OAA2DA,QA2E7DA;AAzEMA;GAz9FAA;;GAyvGqCA;;AAxRzCA,WAC2DA,QAgE7DA;AA9DEA,oBAuRgDA;AApRzCA,YA+OwBA,gBA9O3BA,QA0DNA,CAtDEA,oBA+QgDA;AA3QzCA,YAsOwBA,kBArO3BA,QAiDNA,CA7CEA,oBAsQgDA;AAlQzCA,YA6NwBA,gBA5N3BA,QAwCNA,IAhhGMA;;GAuuGqCA;;AArPzCA,0BAiNqCA;KA/MnCA,KACEA,QAA4BA,QA2BlCA;IAmLuCA;AA5MjCA;AACAA,SAAyCA,QAwB/CA;IA+KmCA;AApM7BA,UACEA,MAAiBA,QAoBzBA;AAnBQA,YA4O0CA;AAxO5CA,UAAiCA,QAevCA;GAyNkDA;AArOvCA,YAgMsBA,kBA/LzBA,QAWRA;AAVMA,YAIFA,UAqL+BA,MApL0BA,QAK7DA;AAJMA,KAGJA,QACFA,C;EAEKC,+BAiLkCzI;KA5KrCyI,WAhhDI1D,GASA0D;AAohDFA,WAAkBA,QA8BtBA;AA7BIA,uBA8JmCA;AA5JjCA,YAhYAA;AAoYFA,WAAqBA,QAuBzBA;GAqK2CA;AALnCA,oBA3tGkBC,aA4kD6BA;AA29CnDD,gBAE+BA,eAmJIA;AA/InCA,OAAOA,iBAhxGAA,QA8xGXA,CAFEA,OAAOA,QA5xGEA,mBA8xGXA,C;EAEKE,yBAmKsCA;AAxJzCA,gBA8BSA,WAuFsBA,iBAtFzBA,QAKRA;AADEA,QACFA,C;EAEKC,uBA7zGMA,YA+6GgCA;gBA1GnBA,QAaxBA;IAyDuC1I,SAnEnB0I,QAUpBA;AAREA,gBAGOA,WA+DwBA,iBA9D3BA,QAINA;AADEA,QACFA,C;EAEKC,aAqD4BjJ;uBAlD3BiJ,WACKA,SACmBA,kBAmDGrJ,KAlDCqJ,eAkDDnJ;KAnDNmJ;KADhBA;KADLA;KAE4DA;AAHhEA,QAKFA,C;EAWK9G,IAA8BA;AAK/BA;KAA2CA;AALZA,QACsCA,C;CAMpE+G,WA4B4BlJ;AA1B/BkJ,0CAKFA,C;EA2CcC,MAFRA,4BAkBqCA;AAZvCA,oBAxBmCA;AA+B/BL,UAHNK,C;EAEeL,IAA+BA,yBA1tGtBA,aA4kD6BA,IAgpDLA,C;;;;;;;;;;;EStsHhCM,GACdA;AAESA,OADLA,yBACFA,aAgCJA;OA9BMA,6BACAA,iBAEQA;AACCA;;AASIA,0BACXA,KAPYA,gBAQhBA;AAEAA,OAAOA,eAaXA,MAJWA,OADEA,oBACTA,aAIJA;AADEA,OAAOA,MACTA,C;EAEYC,IAKVA,uBACIA,KALYA,eAMlBA,C;EAEYC,IAKVA,kBACIA,KALYA,eAMlBA,C;EAEYC,IAWHA,SATTA,C;EA0BAC;;QAaAA,C;EA0FWC,IACXA,OAjCAA,SCoGAC,SAAyBA,GAAzBA,aDpGAD,aAkCFA,C;EAUQE,MAENA;CACUA;AACVA,QAxBwBA,EAyB1BA,C;EASQC,MACNA,SACFA,C;EAQQC,MACNA,OACFA,C;EAOQC,MAENA,KACIA,QAAyBA,QAC/BA,C;EASKC,MAECA,wBAEqBA;oBASvBA;;oBAEAA;KCLFA,WAAyBA;CA4IvBA;CACAA;ADnIAA,aAEJA,C;EAIkBC;;OACAA;AAuBhBA,OAAYA,CE6QeA,MF7QgBA,YAG7CA,C;EG3TEC,MACcA;AADdA,0BAEiCA,UAFjCA,AAEyDA,C;EAOvCC,IAChBA;AAAUA,aACeA;AACvBA,WAAwBA,QAG5BA,CADEA,QAAkBA,EACpBA,C;EFiiBYC,MAAqDA;QAxQzCA,iBA8GfA;IA+JiBA;CAAjBA;AACPA,eAC+BA;AAC7BA;AACAA,kBAEoCA;AACpCA;AACAA,QAEJA,C;EAQYC;QA/RYA,kBA8GfA;CAoLLA,KAEFA,kBAGsCA;AACpCA;AACAA;AACAA,MAeJA,iBAVkCA,UAC9BA;AACAA,MAQJA;ACiiCEA,gBDpiCOA,GAAwBA,cAGjCA,C;EAgIYC;KAEVA;GAzbqBA;AAAOA;AAAeA;AA4bzCA,YACEA,oBAtVGA;AC8sCPA,MDr3B0CA,IAAkBA,IAExDA,MA+JNA,EA1JoBA;GACyBA;AACzCA,0BACWA;AACTA,MAAsBA;CACtBA;GACwBA,MAGGA;GAAOA;CAQ/BA;CACDA;AAKkCA,SArpBhBA;AAqpBGA,6BArCpBA;AAqCLA,SAvpBeA,EAAOA;AAypBPA,SAAWA;AAARA,eAAHA;AAAbA,MCq1BJA,MDj1B0CA,IAAkBA;AACtDA,MA4HRA,IAxH0BA;AAApBA;KAmFIA;GAhvBmBA;AAmuBvBA,cA/D+BA,gBAgE7BA;KACKA,MACLA,aA9BsBA,cA+BpBA,UAGFA,aAzBcA,cA0BZA;AAKJA;GAIIA;wBACAA;eAtqBuCA,OAAsBA,iBAqqB9BA;AAAnCA,SAKmBA,EAASA;KAtkBTA,eA2MIA;CAC3BA;AACOA;CAtEPA,IACYA,OAAkCA;CAC9CA,IAA4BA;CAkclBA;AACAA,cAEAA;AAKJA,MAeRA,KAXqBA,EAASA;GA5YDA;CAC3BA;AACOA;GA4YAA;GACcA;AADnBA,QAteFA;CACAA,WAKAA,IAAwBA;CACxBA,MAseEA;IAEJA,C;EAqDOC,MACUA,YACfA,OAAOA,OAWXA;AARmBA,YACfA,QAOJA;AALEA,UAAoBA,sBAKtBA,C;EG17BKC,GACHA;OAAiBA,IAAjBA,WAAuDA;GAEpCA;;AAEjBA;AACOA,SAEXA,C;EAEKC;IAKDA;;IAIIA,UJ3BJA,OAAyBA,GI4BMA,QAGnCA,C;EAMKC,IAnDHA,qBAqDoCA;AACpCA;KAEOA,IJ1CLA,OAAyBA,GI2CMA,mBAGlBA,IAGjBA,C;EAQKC,iBACCA;AAAJA,YACEA;MACwBA;AACxBA,MAgBJA,CA3FEA;GA8E4CA;AAC5CA,aACQA;oBAG0BA;CAC1BA;MACeA;AAErBA,kBAIJA,C;EA0BKC,kBACsBA;IACXA,QAGZA,UAHYA;AAIZA,MAUJA,CFggDIA,WEjgDkCA,QACtCA,C;EC64EUC,ICxkDWA;AD2kDfA,OC5kDJA,UD4kDkCA,C;EHzrC/BC,MACHA,KAA+BA,cAGjCA,C;EAEEC,mBACmBA;AAAnBA,SAAoCA,OAAOA,MAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAEEC,qBAEmBA;AAAnBA,SAAoCA,OAAOA,OAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAEEC,uBAEmBA;AAAnBA,SAAoCA,OAAOA,SAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAqBKC,cAEYA,OAGPA;AAKRA,OACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AK75BWC;EADDA,QACNA,cfrfFA,sCesfAA,C;EAMQC,MACNA,Of7fFA,qCe8fAA,C;ECxbcC,IAEZA;AAAIA,WACFA,aAwBJA;AX0gBAA;IW7hBIA;;CAEKA;AACLA,MAAUA;iBAYVA,cX6iB0CA;AW1iB5CA,6BACFA,C;;;;;;;;;;EC9GFC,MACEA;IAIWA,yBADXA;AAIQA,MAAgBA;AAAtBA,aAIOA;AAAPA,QAIJA,C;EA8CAC,IAEEA;WAAoBA,WAsBtBA;AAnBEA,sBACEA,QAkBJA;qBAdIA,OA8BFA,WA6LiCC,oBA7MnCD;AAVEA,WAAoBA,QAApBA,IAO8BA,WADjBA;AAGbA,QACFA,C;ECPmBE,QAELA;WAI0BA;KZkgCWhM;AY//BrCgM,kBADVA,SACUA;AACRA,eAASA;OAOXA,QACFA,C;EAKeC,UAEoBA,eAAmBA;AACpDA,WAAqBA,WASvBA;AAPWA,eAD0BA,QACjCA,gBAOJA;AAJEA,OAAOA,OAEHA,gBAENA,C;EAEeC,MAIbA;IACSA;AAAPA,QAGJA,WADEA,WACFA,C;EC2CYC,cAENA,mBACFA,UAAMA;AAMRA,WACEA,UAAMA;AAGRA,OACEA,UAAMA,gEAKVA,C;ECsTcC,IACZA,kBAEIA,8BAgBNA;QAdMA,iCAcNA;QAZMA,0BAYNA;QAVMA,yBAUNA;QARMA,4BAQNA;QANMA,yBAMNA;QAJMA,uCAINA;QAFMA,QAENA,E;;;;;;;;;;;;;;;;;;;;;;;;Ef1TWC,MAUSA;AAPlBA,WAAmBA,QAGrBA;AADEA,UAAMA,iBACRA,C;EAyCaC,MACHA;AACyBA;AACjCA;AACAA,wBACFA,C;EAqLQC,UAESA,oBAA8BA;AAC7CA,kBAEEA,WAA2BA,QAA3BA;AAMFA,QACFA,C;EAQQC,QACYA;AAClBA,oBACEA,OADFA;AAGAA,KAAcA,QAEhBA;AADEA,OgBrbaA,OhBsbfA,C;EAGQC,QAC4BA;AAAZA,QAOxBA,C;EAOQC,MACNA;AAAaA,oBAAYA,OdrYvBC,IANiCvS,uBcmZrCsS;AALoBA;AAClBA,oBACEA,OADFA;AAGAA,QACFA,C;EAoCQE,QAEKA;;AACXA,YACkBA;AAChBA,OACEA,UAAiBA;AAEnBA,SACEA,QAcNA,CAHWA;AAAPA,QAGJA,C;EAqBcC,eAEQA;AACpBA,QAAkBA,QAGpBA;AADEA,OAAkBA,0BACpBA,C;EA8BQC,MAKJA,OF7kBJA,WAM2BA,sBE2kBJA,C;EAwDTC,QACgBA;AACvBA,UAAqBA,QAa5BA;IiBrToBA,gBjBwTgCA,OAbVA;MAC7BA,YAYuCA,OAVZA;KAC7BA,OASyCA,UAPVA,QAGxCA,QACFA,C;EAgBQC,MAEJA,OASJA,WAT6CA,QAC1BA,QAAgCA,QAAeA,C;EA6GpDC,UAEZA;QAAwBA,IAASA;AFltB1BA,GAAyBA,gBdoiCtBC;AgBlVVD,KACEA,QAsBJA;Ae7xBeA;Of8wBaA,iBAA1BA,YACaA;YAELA,uBAlRUE;8BAyRDF,YACAA,OAGjBA,6BACFA,C;EAGcG,IAEZA;AAAKA,WACHA,OAAOA,OAoDXA;AA/CiBA;AACfA,MAAwBA;AAwBPA;GAUMA;SACLA,YACNA;AASZA,OALUA,yDAMZA,C;ET50BcC,IACgBA,wCAC1BA,OAAOA,OAMXA;AAJEA,sBACEA,OPsqFG1R,iBOnqFP0R;AADEA,OSkLkBA,OTjLpBA,C;EA8BaC,MACXA;AACAA;AACAA,SACFA,C;EAYAC,sBAA8BA,C;EAsD9BC,iCAEuBA,C;EAcvBC,gCAEsBA,C;EA4DtBC,4DAG+DA,C;CAe/DC,uDAIiEA,C;EAmEtDC,QAITA,YAEEA,UAAiBA;AAEnBA,YACEA,YAEEA,UAAiBA;AAEnBA,QAGJA,CADEA,QACFA,C;EAWWC,MACTA,OACEA,UAAiBA;AAEnBA,QACFA,C;EAkEAC,wDAEsEA,C;CAkFtEC,sBAAqCA,C;EAcrCC,sBAAkCA,C;EAyBlCC,sBAAwBA,C;EAaxBC,sBAAkDA,C;CKpgB5CC,8BAA8DA,C;EsByvBtDC,QAEZA;AAAIA,YACFA,oBAEEA,aAgBNA;AAdIA,gBAcJA,CAZ+BA;AAC7BA;IAEEA,kBAGAA,CALFA,UlBtKYA;AkB6KZA,6BAIFA,C;EAYcC,QAEZA;AAAIA,WACFA,gBAYJA;AlB7NAA;AkBoNEA;IAEEA;AlBrMUA,CAAZA,SAAsBA,mBkBwMpBA,CALFA;GlBrL4CA;AkB6L5CA,6BACFA,C;EA0BGC,MAwB6BA;AAGhCA;AACOA,UAAeA,MAkFxBA;AAjFwBA;AACpBA;IACeA,UACfA,IAQGA,WACHA,QAAoCA,MAqExCA;AApEqBA;AACGA,eAEKA,SACzBA;AACKA,WACHA,SACEA,OAAYA;AACZA,MA4DRA,CA1DyBA;AACCA;IACKA,eAEHA,SACtBA;KAGOA,MAAPA,SAEgBA,SACdA;AACAA,UAQEA;AAEYA,UAAmBA,UAC7BA,IAEFA;AACAA,MAgCVA,EA7B4BA;AACHA;IACMA,SAA2BA,iBAOtCA,WAEhBA;AAfgBA;AAqBlBA,sBAAqCA;AACzBA,UAAmBA;AAC7BA,YAEEA;AAzBcA,SA4BlBA,WACEA;AAEFA;AACAA,SACFA,C;ECl0BaC,UAmBTA;IAOqBA,QANaA;AAAkBA;AAAlDA,O9BJKA,KADAA,KADAA,K8BMuDA,aA2QhEA,KArQuBA,QAFPA;AAAkBA;AAAkBA;AADhDA,O9BCKA,KADAA,KADAA,KADAA,K8BGqDA,gBAuQ9DA,CApQoCA;AAAkBA;AACtCA;AAAkBA;A9BKzBA,OADAA,KADAA,KADAA,KADAA,K8BDmCA;AADxCA,QAoQJA,C;ECqXWC,qEAyDGA;AAGZA,UAm7HWA,2BACJA,qBACAA,oBACAA,qBACAA;AAr7HLA,SAGEA,OAAeA,WAD0BA,wBACLA,KAwO1CA;KAvOWA,UACLA,OAAeA,KAAOA,qBAAwCA,KAsOpEA,CA9NgBA;;;;;;;;;AAcFA;GAMIA;AAChBA,QAEUA;GAaMA;GACAA;GACAA;GACCA;GACGA;AAMpBA,OAOcA;AAHdA,OAYuCA;KARhCA,QAEOA;AAMdA,OAoBaA;GAXGA;AAEhBA,KAIEA;AA7E6CA,UAkFlCA;AAAJA;AAlFsCA,UAsFlCA,qBACWA,OACbA,sBACGA;KAzFiCA;KAlB/CA;AAwGSA;AAtFsCA,UAgGjCA,sCAEJA;KApHVA;AAgHSA;KAeLA,SAEMA,uBAEFA,SAKOA,qBACUA;AA6yHyBA,SAhzHpBA;AAmzHCA,IA7yHFA;AACnBA;AAIcA;AAAdA;AACAA;KAEUA;AAzHfA;;SA0HUA,UAKHA;AADAA;AADMA,qBAGNA;IA1BaA,cAwCRA,uBAKLA,mCAKAA;AAFAA;AACAA;AAFMA;AAINA;IAXoBA;KA0BSA,+BAK/BA,oCAKAA;AAFAA;AACAA;AAFMA;AAINA;IAX8CA;YAwCvBA;AAXjCA,cAC6BA,SACnBA;AACNA;AACAA;AACAA;AACAA;AACAA;AACAA,KAEFA,OA0tGJA,0BAptGAA,CAqcEA,WAEEA,OACWA;KACJA,SACLA;AA1gBqDA,KAghBzDA,QACsBA;AAEPA;AAENA;AACHA;AAAJA,QpB31CgBC,OoB61CGD;AAEVA,gBADEA,KAAMA,+CAc2BA;;AAviBWA,KA8hBrDA;AAGMA;AAneVA,OAyeYA,yBAFCA,mBArefA,C;EAuL2BE,IAEZA;AAAbA,cAAOA,sBAAsBA,UAAIA,cAcnCA,C;EAWiBC,QACLA,0HnBpNqC3O;AmB2N/C2O,yBACaA;AACXA,WACEA,YAEEA,iCAGFA,SACEA;AAEaA,OAAMA;AACrBA,SACEA;AAEKA;;AACKA;KAIhBA,SACEA;AAGaA,OAAMA;AACrBA,SACEA;;AAIFA,QACFA,C;EAmBiBC,SAULA,uDAKEA;IAWHA,UAAYA;AACHA;AAMlBA,gCACaA;AACXA,WACEA,UAEEA;AACIA,wBACFA;AAIAA,IAAJA,UAEEA,KACEA;AAGFA;AADeA,UAIfA,OAAUA;AAEAA,WACPA,UAPYA,SAWXA,YAAaA;AACTA;AACeA;AAC7BA,aACEA;AAEFA,MACEA,MACEA,OAAUA;KAEOA;AACjBA,SAAUA,QAAeA;AACzBA,SAAUA,QAAeA,UAG7BA,UACYA,UACRA,0EAEaA,YACfA;AnB7V6C5O;OmBgWV4O,sBAArCA,YACcA;AACZA,UAEEA;;AAGEA,UAGaA;;AAEfA,MAGJA,QACFA,C;EAmEAC,8CACgCA,C;EA4IrBC,IACTA,cAAsBA,SAGxBA;AAFEA,eAAuBA,UAEzBA;AADEA,QACFA,C;EAcaC,QACXA,UAAMA,WACRA,C;EAoTYC,MAEkBA,wBAAsBA,WAEpDA;AADEA,QACFA,C;EAWeC,UAEbA;AACAA,SAAkBA,QAkCpBA;AAhCMA,yBACkBA;AAAhBA,wBACFA;AAG6BA;AAAnBA;AACZA,QAE6BA;AAClBA,SADJA,oCAVgBA;AAanBA;AAEJA,OAAOA,aH33DFA,mBG84DTA,CAfIA,gBACMA,yBAmBIA;AAELA;AAlBDA,QAE6BA;AAClBA,SADJA,oCAzBYA;AA4BfA;AACJA,UAAWA,kBAKnBA,CADEA,OAAOA,WACTA,C;EAIWC,QACGA;AAEZA,oBACFA,C;EAYcC,UpB/6CdA;AoB07CEA,uBACaA;AACXA,WACwBA;AAClBA;AAAJA,SACEA;AACAA,oBpBh8CRA;AoBm8CqBA;AAGfA,KACgBA;KACTA,WACLA;CpBv6CNC;AoB06CID;;AApBgBA,sBAlBEA,0BA0ClBA,+BpBh9CNA;AoBm9CQA,QACeA;SAKjBA,SAGAA,6BACaA;AACXA,sBACiBA;AACAA,SA1D0BA;AA6D9BA;YpBn+CrBA;AAOEA;;AoB+9CcA;;AACVA;KAIJA,WAAoBA,OAAOA,YAM7BA;AALEA,QACiBA;UpB98C2BA;AoBi9C5CA,6BACFA,C;EAWcE,QACEA;AAMdA,8BACaA;AACXA,WAEwBA;AAClBA;AAAJA,SACEA;AACAA,oBpB1gDRA;AoB6gDqBA;AACfA,MHjgEGA;;AGogEHA,MACgBA;AATLA,SAUJA,YACSA;AACCA,SAZNA;CpBv+CfD;AoBs/CIC;;AAvBgBA,sBAbEA,2BAwClBA,+BpB5hDNA;AoB+hDQA,QACeA;SAKjBA,qBA2UEA,yBAzUFA;KAGAA,6BACaA;AACXA,sBACiBA;AACAA,SAzBFA;AA4BFA;AACfA,MHriEGA;YjBmfTA;AAOEA;;AoB8iDcA;;AACVA;KAIJA,WAAoBA,OAAOA,YAO7BA;AANEA,QACiBA;AACfA,MHhjEKA;UjBkhBqCA;AoBiiD5CA,6BACFA,C;EAKcC,QACZA;SAAkBA,QAkBpBA;AAhBOA,SADqBA,iBAExBA;AAGFA,sBACuBA;cA6RFA,0BA3RjBA;AAEFA,gBACsBA,KAGfA;AAETA,OAAOA,OH3kEAA,kBG4kETA,C;EAKcC,IACZA,cAAsBA,YAKxBA;AAJEA,cAAsBA,YAIxBA;AAHEA,eAAuBA,aAGzBA;AAFEA,iBAAyBA,eAE3BA;AADEA,QACFA,C;EAEcC,QAEZA,OAAOA,YAA4CA,UACrDA,C;EAEcC,cAEPA;AAGLA,WAC4BA,eAiB9BA;KAVaA,cAAwCA;IHz3DjCA,aG63DhBA,KAAYA,SAMhBA,MALoCA,oBACvBA;AAGXA,OADSA,WAEXA,C;EAOcC,eH14DMA;AG64DbA,0BACAA,cACHA,OAAOA,aAGXA;AADEA,OAAOA,OACTA,C;EAEeC,UAEbA,YACEA,WACEA,UAAMA;AAERA,OAAOA,YAAyCA,SAKpDA,CAFEA,WAA6BA,WAE/BA;AADEA,OAAOA,OACTA,C;EAScC,IpBvqDdA;CoB0qDMA;AAYJA,MAAwBA,SAVLA;GpB7oDyBA;AoBiqD5CA,6BACFA,C;EAEeC,QAEbA,OAAOA,YAA4CA,SAErDA,C;EAaeC,QAA2DA;OAEhDA,QACtBA,SAuBJA;AArBmBA;AACCA;AACIA;AACCA;AACvBA,YACEA,SAgBJA;AAd8BA;AAoqBLA,YAAjBA,8BA/pBJA,OpBtzDgBA,iCoB+zDpBA;AAPEA,gBAEEA,OAAOA,eHvtEFA,aG4tETA;AADEA,WACFA,C;EAEcC,IAAsBA;AAGlCA,UnBpxC+C/P;;AmBwxC9B+P;AACAA,6BAKfA,UAGEA,YAESA;AAXkCA,SAOpCA;AATaA,SAMXA;AAHDA,InBzxCmC/P;AmBwyC7C+P,wBACeA;;AAEUA;AACAA;AACvBA,MAIJA,OAAcA,cAChBA,C;EAMcC,cAGLA;AAAPA,eAGIA,cACNA,C;EAWeC,cAGCA;AAIdA,2BACaA;YACQA,uBACjBA;KAIAA,WACgBA;AAEdA,YACEA;AACAA,SAGFA,YACgBA;AAduBA,SAS5BA,SAUNA,cACSA;AApByBA,wBA8DvCA,0BAvCAA;;SAIAA,sBAEMA;AAAJA,QACaA;AACXA,sBAGiBA;AADAA,SAjCkBA;AAsCzBA,sBpBx1DtBA;AAOEA;AoBo1DcA;ApBp1DCA,CA2Bfb;AoB2zDIa;KAIJA,WACEA,QAMJA;AAJEA,QACeA;UpBt0D6BA;AoBw0D5CA,6BACFA,C;EAoDYC,IACNA,gBAAsBA,QAG5BA;AADEA,OADYA,mBAEdA,C;EAOcC,IACZA;AAAKA,YAA8BA,QAsBrCA;AApBwBA;AAECA,sBAAvBA;AAEMA,oBlC52DYC,akC82DZD;IlC92DYA,YkCg3DVA,WAGUA,UACLA;AAAJA,MAGLA,WAGJA,KAAiBA;AACjBA,OAAOA,aACTA,C;EAacE,MAAsDA;AAE7DA,YAEHA,SADyBA,SA2B7BA;AAvBwBA;AAECA,sBAAvBA;AAEEA,aACgCA,GlCr5DhBA;AkCq5DdA,KACEA;KAGAA,kBAEOA;AAAJA,MAGLA,clC95DcA;AkCi6DCA,mBAA0BA,GHpuE3BA;KG0tEEA;AAUpBA,KACEA,UAKJA;AAH4BA,uBAAcA;AACxCA,MAA8BA,WAAcA;AAC5CA,OAAOA,aACTA,C;EAGcC,eACHA;AAAeA,cAAuBA,iBAC7CA,iBACaA;AACXA,UACEA,OAAUA,mBAA0BA,YAS5CA;YANYA,yBACJA,MAINA,QACFA,C;EAwTWC,MACLA;AACJA,qBACiBA;AACfA,gBACmBA;KAGjBA;AACAA,iBACmBA;KAEjBA,UAAMA,oCAIZA,QACFA,C;EAYcC,YAC4DA;AAMxEA,qBADcA;MAEGA;AAEUA,UAAZA,UACOA;KALRA;;AAGZA,MLh7FsCA;AKo7FpCA,MANyBA,IAU7BA,KAEWA,IADLA,OACFA,mBAyBNA;K/Bl7FAC,W+B25FcD;KAGGA;OAOQA,YANrBA,SACiBA;AACfA,SACEA,UAAMA;AAERA,WACEA,SACEA,UAAMA;AAERA,OAAUA;AACVA,UACKA,UACLA;KAEAA,WAINA,OL/8FOA,CADKA,QKi9FdA,C;EAEYE,IACNA;AACJA,oBACFA,C;EAqwBeC,QASOA;OAIJA,wBAAhBA,SACSA;AACPA,kBAAwCA;AACxCA,WACEA;AAEEA,SAEFA,UAAMA,aAGVA,YAGEA,UAAMA;KAERA,SAEEA,UACAA;AAEAA,kBACSA;AACPA,WACEA,gBACKA,kBACLA,MAGJA,QACEA;KAG4BA;AAGvBA,2CACHA,UAAMA;AAERA,OAGJA;AAGgCA;KAFRA,eAEfA;KAKSA,cAAqCA;AAErDA,WACSA,iBAGXA,OAxiBFA,eAyiBAA,C;EA2McC,GAmDDA;iBnB1+FoC5Q;AmB8+FlC4Q;AAOFA;AAaAA;AAUTA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAGAA,KADIA;AAGAA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AAEIA;AACJA;AACAA;AAKAA,KADIA;AAGAA;AACJA;AACAA;AACAA;AAEAA,QACFA,C;EAWIC,YACWA;AAEbA,oBACcA;AAEDA;GAGMA;AACTA;WAGVA,QACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECvyIAC,aACiBA;AACfA,WAAsBA,QAexBA;sFAdYA;AAWaA;ArB0DHC;AqBxDpBD,QACFA,C;EAqBAC,MACEA,qBACFA,C;EAOEC,IACAA,wBAEEA,QAIJA;KAFIA,OAAOA,OAEXA,C;EC0ZUC,MlBjMRC,eAAyBA,GAAzBA,eAvPIC;AkBucJF,OAZgBA,KAAuBA,eACzBA,KAAuBA;AAYrCA,QACFA,C;;;;;;EChXUG;AAEFA,mBAC6BA,QAAnBA;AAgEhBC,WA9D0BD,KAAZA,gBACKA,GAAmBA,KAAZA,gBACAA,KAAZA,qBAWEA;AAPNA;AACSA;AACmBA,OAApBA;WAAgCA;AACxCA;AACyBA,GAThBA,EASJA,MAAOA;AACwBA,OAAxBA;WAH4BA;AAb1CA,OAxBRC,oBAyCUD,gBAjBFA,C;;;;;;;;;;;;;;;;;;;;ECxGLE,GF0HIA,cAlELA,yCAkEKA,CAlELA,0CAkEKA,CAlELA;AG6C8BA,KHqBzBA,CAlELA,cEzCYA,0BAETA,GAAKA,SAXQA,2BA8CpBA,C;EAyCEC,IAJ0DA,oBACbA;AAG7CA,kBAAgCA,SFrC9BA,2BEqCFA,AAA2DA,C;EAwSjDC,MF3QHA,8BAlELA,kCE+UkCA;WAAQA;AFvPrCA;AAtBAA,CAlELA;AAkEKA,GAlELA;AAkEKA,CAlELA;AEoVcA,kBACDA,OAAcA,SPrQpBA;AKdFA;GEsRwBA;AACVA;AAArBA,MFvROA,GAlELA;AAkEKA,CAlELA;AE4VuBA,yBAA4BA;AF1R9CA,oBE8RwBA;aP9BXC,aKhQbD,GAlELA;AAkEKA,CAlELA;AAkEKE,GAlELA;;AAwFKF,wBAxFLE;AEqWgBF;AFnSXA;AAsBAA,+BG1FwBA,IAAnBA,KD6WVA;AFnRKA,2BG1FwBA,IAAnBA,KDoXVA;AAQFA,SAG0BA;AAAyBA;GAC5BA;AF5ThBG,GAlELA;AAkEKA,CAlELA;AAkEKA,GAlELA;;AAkEKA,CAlELA;AAkEKA,GAlELA;AAwFKA;;AAtBAA;;AEyTLH,UAQFA,QACFA,C;EAGKI,eFvYDA;ILkUkBA,YOyElBA,MAUJA;AAPkBA;AAChBA,WF7UOA;;AEiVLA,CALcA,aAOlBA,C;EAeOC,MAAyCA,OP7arCC,OO8aLD,WACAA,gBACDA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEzeAE,GJoIIA,cAlELA,kDAkEKA,CAlELA,qDAkEKA,CAlELA,mDGF6BA,MAAnBA,KC3DmBA;WJqJxBA;wCI9ITA,C;EAEKC,yBJoDDA;AIlDFA,WACEA,MAgCJA;AJmFSA;AI/GPA,WAEEA,MA0BJA;AAtBEA,eJyGOA;AIvGLA,WACEA,MAmBNA;AALeA,SAVAA;AJkGNA,GAlELA;AI5BFA,WACEA,MAUJA;AALEA,OJwFOA,sCAlELA;AIlBFA,OJoFOA,sCAlELA,kDIjBJA,C;EAEKC,qBTiViBA,qBS3UlBA,MAoBJA;ADkCkCA,KHqBzBA,IAlELA,gBINsBA,aAA0BA,GAAKA,kBAiBzDA,C;EAIKC,MAEHA;AT+DSA,IKhFPA,+BAkEKA;AI/CLA,WACmBA,YACPA,oBJrBZA;AI4BFA,WJ5BEA,QI4BFA,KJsCOA;AIrCLA,WACEA,UAGNA,C;;;;;ECzGKZ,uBLwEDA;AKrEFA,WACEA,MA4BJA;AL0GSA,GAlELA;WKjE2CA;AAE5BA;ALuJVA,4BG1FwBA,MAAnBA,KE/CVA;ALmHKA,GAlELA;AK5CFA;AAEEA,OAEJA,C;;;;ECvBKa,IACHA,iCAEEA;AACAA,MAoBJA,+DAdIA;AACAA,MAaJA,CATEA,6BACEA;AACAA,MAOJA,CADEA,0CACFA,C;EClBKC,IAEHA,KCVAA,mEDSgBA,YAElBA,C;EAeKC,GAEHA,KC5BAA,8DD2BgBA,YAElBA,C;EEnCKC,GLCHA;AACAA;AKAOA;UTqELhB;WA6CKA;AShHDgB,MACRA,C;;;;AhDsTiCC;CAFjBC,MAAoBA,YAAsBA,C;EAEhDD,IAAYA,cAA+BA,C;CAE5CE,IAAcA,sBC6JLA,WD7JiDA,C;EAgBzDC,MACNA,UAAwBA,UAC1BA,C;EAESC,IACLA,OW4pBGA,KADGA,WX3pByDA,C;AAQ9CC;CAAdA,IAAcA,gBAAgCA,C;EAU7CC,IAAYA,sBAAwCA,C;EAGnDC,IAAeA,gBAAmCA,C;;;CAWpCC,MAAEA,cAAcA,C;CAGhCC,IAAcA,YAAMA,C;EAEnBC,IAAYA,QAACA,C;;;;AAmDAC;EALbC,IAAYA,QAACA,C;CAKdD,IAAcA,gBAA+BA,C;;;;CAyB7CE,IACiCA,OAApBA;AAClBA,WAAyBA,OAAaA,UAExCA;AADEA,iCAAkCA,OACpCA,C;AAiBqBC;EAHbC,IAAYA,QAACA,C;CAGdD,IAAcA,gBAA+BA,C;AAqB/BE;EAHbC,IAAYA,QAACA,C;CAGdD,IAAcA,gBAA+BA,C;AKzUpDE;CFRQC,MAAaA,iBAAKA,QEQ1BD,2BFR8CC,C;EACzCC,0BALDA,KAAMA;AAORA,SACFA,C;EAyGKC,MACHA;oBAlHEA,KAAMA;AAmHOA,qBACbA;AACAA,MAOJA,CAJEA,oBAEEA,OAFFA,OAIFA,C;EAEKC,eACaA;AAChBA,SAAcA,MAKhBA;AAJEA,SAA4BA,UAAMA;AAClCA,gBACEA,YAEJA,C;CAGKC,wBAxIDA,KAAMA;UA2IVA,C;EAqBOC,MACWA,cAAYA;AAC5BA,WAAyBA,QAAzBA,IACmBA;AAEnBA,OAAOA,SACTA,C;EAgCEC,mBAEkBA;AAClBA,qBAIUA,UADMA;IAELA,YAAkBA,UAAMA,SAEnCA,QACFA,C;EAXEC,kC;CAiEAC,MACAA,QAAWA,GACbA,C;EAEQC,eAGmBA;AAAzBA,OACEA,UAAiBA;AAMjBA,YACEA,UAAiBA;AAGrBA,SAAkBA,OAAUA,eAE9BA;AADEA,OArUEA,IANiC/Z,aA2U5B+Z,QACTA,C;GAOMC,QACAA,UAAYA,QAAWA,GAE7BA;AADEA,UAA2BA,OAC7BA,C;EAEMC,WACAA;AAAJA,OAAgBA,QAAWA,KAE7BA;AADEA,UAA2BA,OAC7BA,C;EAuHKC,MACHA;sBAxaEA,KAAMA;GAyaIA;AACZA,OAAaA,MAkEfA;WAjEcA;AACZA,aACgBA;GACAA;AACVA;OAMJA,MAuDJA,cAdoCA,SAChCA,eAAoBA,QAApBA,QACoBA,wBAKhBA,UAxDWA;AA4DjBA,OAA0BA;AAE1BA,OAAoBA,YACtBA,C;EAUKC,eAEKA;KAIRA,kBACoBA,wBAGVA;AAANA,SAAkBA,MAGxBA,C;CA2DOC,IAAcA,O8C9KJA,e9C8K+BA,C;EAahCC,IAAYA,OA8H5BA,YAEyBA,QAhIGA,QA8H5BA,WA9HkDA,C;EAE1CC,IAAYA,OAAWA,OAAoBA,C;EAE3CC,IAAUA,eAAiCA,C;CAsCxCC,oBAGmBA,SAASA,UAAMA;AAC3CA,QAAOA,GACTA,C;CAEcC,8BA5nBVA,KAAMA;cAgoBoBA,SAASA,UAAMA;MAE7CA,C;;;;;EA4EMC,GAAoBA,UAATA;uBAASA,SAAIA,C;CAEzBC,mBACUA,MAAUA;IAKnBA,OACFA,UAAMA;GAGJA;AAAJA,UACEA;AACAA,QAKJA,EAHEA,IAAWA;CACXA;AACAA,QACFA,C;;E+C51BIC,MACFA;AACAA,OACEA,QAmBJA;KAlBSA,OACLA,QAiBJA;KAhBSA,UACLA,UACuBA;AACjBA,mBAA2BA,QAarCA;AAZUA,eAAYA,QAYtBA;AAXMA,QAWNA,CATIA,QASJA,MARSA,AAYSA,aAXdA,AAWcA,YAVZA,QAMNA;AAJIA,QAIJA,MAFIA,QAEJA,C;GAESC,IAAcA,sBAAuCA,C;CA4MvDC,IACLA,gBACEA,YAIJA;KAFIA,UAEJA,C;EAEQC,IACFA;AAGJA,SAAsBA,kBA6BxBA;AAxBiBA;AACEA;AAIJA;AAWGA;AAOhBA,6EACFA,C;EAwBkBC,MAChBA;AAGAA,SAAiBA,QAOnBA;AANEA,OAAgBA,QAMlBA;AAFIA,UAEJA,C;EAeIC,MAEFA,sBAEMA,YACRA,C;EAEIC,MACEA;AACJA,iCAEEA,UAgBJA;AAdEA,QAGEA,WACEA,OAAOA,aAUbA,MARSA,UAELA,OAAOA,YAMXA;AAFEA,UAAMA,wCACiCA,YAAWA,iBACpDA,C;CA4BIC,MACFA;OACMA;;AAKAA,WANNA,QAOFA,C;EAEIC,MACFA,OAAeA,UAAMA;AACrBA,OAAOA,YACTA,C;EAEIC,MACFA,mBASFA,C;EAiDSC,IAAeA,gBAAkCA,C;;AA+MlCC;EAAfA,IAAeA,gBAAkCA,C;;;AAWlCC;EAAfA,IAAeA,gBAAqCA,C;;;EhBzoB7CC,MAEdA,UACFA,C;CAiDOC,UAGcA,gBAAiCA;AAEpDA,OlBkPWA,mBACAA,ckBlPbA,C;CA8BKC,QACHA;WAC8BA,QAC5BA,UAAiBA,SAAqBA;KAIdA;AAGRA,MADDA,QAAQA,QAI3BA;AAHIA,2BAGJA,C;CAbKC,2B;CAgBEC,QAGLA,OAAOA,cADUA,UAAiCA,SAEpDA,C;CAJOC,8B;EAqKSC,MACdA;QAAgBA,QAelBA;WAdyBA,YAAaA,QActCA;AAbEA,aAEEA,WAAYA;AAIdA,kBACEA,aAA6BA;AACrBA;AACRA,SAAgBA;AAChBA,KAEFA,QACFA,C;CAkBIC,QACFA;WAE8BA,QAC5BA,UAAiBA,SAAqBA;AlB5VnCA;AkB+VHA,QAWJA,C;EAlBIC,2B;EA0CCC,MAKHA,OAAOA,WACTA,C;EAMIC,MACFA;SAEMA;;AADNA,QAKFA,C;CAGOC,IAAcA,QAAIA,C;EAMjBC,IAGFA;OACgBA,gBAApBA,SAC8BA;AACrBA;AACAA,QAEFA;AACAA;AACPA,kCACFA,C;EAGSC,IAAeA,gBAAqCA,C;EAErDC,IAAUA,eAA4BA,C;;;;E7B5a9BC,IAAgBA;AAAJA,OAgD5BA,SAhD2DA,IAARA,WAgDnDA,eAhDgCA,OAgDhCA,aAhDoEA,C;EAuB5DC,IAAUA,OAAQA,KAARA,UAAcA,C;CAO9BC,MAAwBA,OAAyBA,iBAAzBA,kBAA6BA,C;CAahDC,IAAcA,sBAAkBA,C;AAMpBC;CAAdA,GAAcA,iBAAkBA,C;EAC/BC,GAAWA,OAAgBA,gBAARA,IAARA,QAAoBA,C;;;;AAqCMC;CAAhCA,MAAiBA,eAAeA,QAAfA,eAAmBA,C;CAEjCC,QACZA,cAAuBA,gBACzBA,C;;;AAuEAC;CAEQA,MAAaA,mBAAmBA,GAFxCA,oCAEgDA,C;;;C0C3IzCC,IAELA,sCADcA,EAIhBA,C;AzCsD0BC;EADlBC,IAAUA,aAAQA,OAAMA,C;CACnBD,MAAaA,2BAAqBA,C;;;;ECpD/BE,IAAYA;OAqS5BA,WAEyBA,QAvSGA,OAqS5BA,aArSiDA,C;;EA0S3CC,GAAoBA,UAATA;uBAASA,SAAIA,C;CAGzBC,GACoBA,gBAAVA,eAAUA;IACnBA,OACFA,UAAMA;GAEJA;AAAJA,UACEA;AACAA,QAKJA,CAHaA,CAAXA;AAEAA,QACFA,C;;EAkBgBC,IAAYA;OAwB5BA,SAxB2DA,QAAVA,QAAoBA,GAwBrEA,eAxB4BA,OAwB5BA,aAxBwEA,C;EAGhEC,IAAUA,OAAUA,SAAVA,GAAgBA,C;CAOhCC,MAAwBA,iBAAGA,eAA2BA,C;;;CAgBnDC,iBACCA;UACSA,CAAXA,IAAWA,MAAaA;AACxBA,QAIJA,EAFEA;AACAA,QACFA,C;EAEMC,GAAoBA,UAATA;uBAASA,YAAIA,C;AAcJC;EAAlBA,IAAUA,mBAAcA,C;CAC9BC,MAAwBA,iBAAGA,eAAyBA,C;;;C4ChVxCC,QACZA,UAAUA,0CACZA,C;;;ElBjEQC,cACMA;AACZA,WAAkBA,QAKpBA;AAH8CA,oBAANA;;AAEtCA,QACFA,C;CAGAC,IAAcA,qBAAUA,OAAQA,C;CmBRlBC,MAAEA,mBAAyDA;AAAvCA,8BAAmBA,MAAeA,EAAKA,C;;;;;A3CmB5CC;CAAtBA,IAAcA,iBAAyBA,C;CAMhCC,QACZA,MACFA,C;;;EA6DQC,IAAUA,aAAQA,OAAMA,C;GAEpBC,aACCA;AACXA,YAuDKA,kBAtDmBA;aAGxBA,QACFA,C;CAWKC,IAEHA,mBAAwBA,QAE1BA;AADEA,OR06EKA,IQ16EmBA,oBAC1BA,C;CAEYC,MACLA,cAAkBA,WAGzBA;AADEA,WAAsBA,EAAfA,KADoBA,EAAfA,IAEdA,C;CAEKC,MACUA,2BACEA;OACUA,YAAzBA,QAGEA,MAFQA,KACEA,IAGdA,C;;GR0EWC,aACLA;AmD7MAA,qBnD6MuBA,QAE7BA;AADEA,WAAOA,cACTA,C;GAiBSC,GACPA;IAfmBA,OAeLA,QAAOA,EASvBA;GAPMA;AAAWA;UAA6BA,MAApBA,KAA6BA;AACrDA,SAAwBA,QAHHA,EASvBA;;AAJEA,gBACEA,OAASA;AAEXA,OAAeA,OACjBA,C;GAEyBC,GACvBA;IAzBqBA,OAyBLA,QAAOA,EAWzBA;GAV2BA;AAAoBA;;GAEzCA;AAAWA;aAA8BA;AAC7CA,SAA6BA,QAJNA,EAWzBA;AWzOAA;AXoOEA,gBACEA,MmDpPEA,SnDoPiCA,UAC/BA;AAENA,OQxQFA,eRyQAA,C;;EAmkB2BC;CACrBA,IAAUA;AACVA;AACAA,oBAEDA,C;;;CA8fLC,iCAEyDA,IAD3CA;AAEZA,WAAmBA,WAmBrBA;AAlBeA;GACTA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;AAIAA,QACFA,C;;CAmNOC,IACLA,gDACFA,C;;CAaOC,+DACDA;AAAJA,WAAqBA,6BAA4BA,EAMnDA;GALMA;AAAJA,WACEA,kBAA0DA,MAI9DA;AAFEA,6BACoDA,MACtDA,C;;CAQOC,cAAcA;QiC5sCDA,+BjC4sCgDA,C;;CAQ7DC,IAGLA,8BAD6BA,kDAE/BA,C;;;CAyMOC,gBACDA;AAAJA,WAAoBA,QAQtBA;MAL+BA;iCAEnBA;AAEVA,WAAOA,eACTA,C;;;CA+nBOC,IAMcA,UAJDA,6BAEeA;AAEjCA,+CACFA,C;;;;;;;;;CAqBOC,cAEDA;AACJA,WAAkBA,wCAEpBA;AADEA,kBAAmBA,WACrBA,C;;CA6BcC,MAAEA,mBAKhBA;AAJEA,YAA4BA,QAI9BA;AAIyBC,wBAPKD,QAG9BA;AAFEA,WARoBA,4BASMA,MAAiBA,EAC7CA,C;EAGQC,IAENA,gBADsCA,IACDA,SAfjBA,eAgBtBA,C;CAGOC,IAGLA,sBAzBkBA,iCA9gEJA,SAwiEgCA,QAChDA,C;;CA+LOC,IAELA,sCADwBA,gCAI1BA,C;;CAOOC,IAAcA,2BAAgBA,EAAQA,C;;AW/3E7CC;EA9SQC,IAAUA,aAAOA,C;EAITD,GACdA,oBAAOA,UAySTA,UAxSAA,C;GAEgBE,GAHPA;AAIPA,OAAOA,KAqSTF,0BArSoCE,gBAA3BA,UACTA,C;CAEKC,cAEaA;AACdA,WAAqBA,QASzBA;AARIA,QA8OKC,SAtOTD,C;CAmBYE,MACVA;6BACgBA;AACdA,WAAqBA,QAWzBA;GAqMSA;aA9MyCA;AAA9CA,QASJA,MARSA,iDACMA;AACXA,WAAkBA,QAMtBA;GAqMSA;AAvMEA,aAFuCA;AAA9CA,QAIJA,MAFIA,iBAEJA,C;EAEGC,kBACUA;AACXA,WAAkBA,WAMpBA;AA0KaA,GAqBJC;AAnMKD;AACZA,OAAeA,WAGjBA;AADEA,QADyBA,GAClBA,EACTA,C;CAEcE,QACZA;0BACgBA;AAEdA,cADqBA,GAAqBA,mBAErCA,8CACMA;AAEXA,cADkBA,GAAeA,sBAQxBA;AACXA,WAAiCA,GAAfA;AACPA;GA4KJC;AA1KPD,WAC2BA;KAGbA;AACZA,SAC2BA,GACpBA;KAGLA,OADyBA,YAhB/BA,C;CAyDKE,IACHA;IAAIA,OACFA,IAAWA,IAAQA,IAAQA,IAASA;CACpCA;AACAA,OAEJA,C;CAEKC,oBACuBA,MACNA;KACpBA,UAGEA,MAFQA,IACEA;QAEWA,GACnBA,UAAMA;GAEIA,GAEhBA,C;EAEKC,eA8FIA;AA5FPA,WAC6BA;MAEtBA,IAETA,C;EAWKC,OAKHA,OAAkBA,eACpBA,C;EAGkBC,MA6GlBA;IA3GMA,UACFA,IAASA;MAITA,IAFyBA,EAAKA;AAKhCA;AACAA,QACFA,C;EAiCIC,IACFA,OAA4BA,iBAC9BA,C;EAOIC,MACFA;WAAoBA,QAOtBA;GANeA;AACbA,gBAEWA,QADgBA,GAChBA,MAAuBA,QAGpCA;AADEA,QACFA,C;CAEOC,IAAcA,OAAQA,UAAiBA,C;EAwB9CC,GAIcA;;;AAMZA,QACFA,C;;EArRoCC,IAAcA;AAAJA,eAAWA,kBAAIA,C;EAAzBC,gC;;;EAuS5BC,IAAUA,aAAKA,EAAOA,C;EAGdC,IA2BhBA,UA1BqCA,iBAAWA;CA2B9CC,IAAaA;AA3BbD,QACFA,C;;EA8BME,GAAWA,aAAaA,C;CAEzBC,mBACmBA;IAAlBA,MAAuBA,GACzBA,UAAMA;GAEGA;AACXA,aACEA;AACAA,QAMJA,OAJIA,IAAWA;CACXA,IAAaA;AACbA,QAEJA,E;AVKwBC;EAAPA,IAAOA,WAA0BA,KAAUA,C;;AAErCA;EAAnBA,MAAmBA,WAA6BA,OAAsBA,C;;AAEtDA;EAAhBA,IAAgBA,WAAeA,KAAqBA,C;;AYtXnCC;CAAdA,IAAcA,kBAAgBA,C;EAE9BC,IACQA,4BACEA;OAMUA,iBAAzBA,gBbilBOC;Ga/kBQD;AACbA,sBb8kBKC;Ga1kBSD;AAEQA,gBGwmBTA,OhBhCRC;AajkBPD,6BACFA,C;EAIaE,eApDQA;MAsDZA,GAAmBA,YAAoBA,CAAvCA;MACAA;YAAiCA;CADjCA,SACPA,QACFA,C;EAEaC,GASIA,gBAPXA,uBAQiBA,mBACLA,4BAKEA,qBACDA,kBAGUA;;AAC3BA,WACuBA;GAEPA;AACdA,cAAuBA,IAAgBA;AmBtC5BC,MnBsCoBD,KAGjCA,YGsbaA,aHrbfA,C;;EAsCcE,GAAqBA,WAACA,OAAIA,GAAGA,C;CAY7BC,MAAEA,mBAEhBA;AADEA,8BA1ImBC,YAgIZD,YAAYA,KAAMA,YAAYA,GAWvCA,C;EAGQE,IAAYA,OAAOA,SA9INA,QA8IsBA,OAAIA,OAAGA,C;;CC5G3CC,IACHA,oBAASA,WAAoCA,EAAxBA,MAAsCA,C;GAW3DC,iBACEA;AAAJA,WAAiCA,QAGnCA;AAF+BA,GAeoBA;AAfjDA,QAAOA,SACHA,IAcmBA,0BAEFA,UACDA,WAhBtBA,C;EA6EaC,MACKA;;AAECA;AACjBA,WAAmBA,WAErBA;AADEA,OAsCFA,WArCAA,C;;GA+CQC,aAF4DA;AAErDA,QAFXA,WAGAA,OACmBA,C;CAMNC,MAAiBA,WAFiBA,EAAvBA,GAEkBA,C;;;;EAqD9BC,GAAoBA,UAATA;yBAAuBA,C;CAU7CC,2BACUA;AACbA,WAAoBA,QAyBtBA;GAxBMA;GAAqBA;AAAzBA,YACuBA;;AACrBA,aACEA;AACsBA;IAhFwCA,EAAhEA,gBAjH2CC,EAAxBA,aAuMXD;;AAAeA,QACEA;AAAjBA,uBACkBA;AAlBTA,0BAKQA;AAgBrBA,eAEFA;AACAA,QAMNA,GAFEA,IADAA;AAEAA,QACFA,C;;EG5PSE,IAAeA,WAAUA,C;;;;EA8XzBC,IAAeA,WAAQA,C;;;EA0QxBC,IAAUA,eAAgCA,C;;;CA2BlCC,MACdA,SAAmCA;AACnCA,QAAOA,GACTA,C;CAEcC,QACZA,SAAmCA;MAErCA,C;;;;CAkBcC,QACZA,SAAmCA;MAErCA,C;;;;EA4BSC,IAAeA,WAAWA,C;;;EAsC1BC,IAAeA,WAAWA,C;;;EAsC1BC,IAAeA,WAASA,C;CAEpBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;EAsCSC,IAAeA,WAASA,C;CAEpBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;EAsCSC,IAAeA,WAAQA,C;CAEnBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;EAyCSC,IAAeA,WAAUA,C;CAErBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;EAsCSC,IAAeA,WAAUA,C;CAErBC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;EAuCSC,IAAeA,WAAgBA,C;EAEhCC,IAAUA,eAAgCA,C;CAErCC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;EAmDSC,IAAeA,WAASA,C;EAEzBC,IAAUA,eAAgCA,C;CAErCC,MACXA,SAAmCA;AACnCA,QAAOA,GACTA,C;;;;;;;AP3lBiBC;CAtZbA,IAEFA,aAiZsB/f,qBAhZxB+f,C;CAKIC,IAA8BA,OAsZjBA,MAXO5b,qBA3YmD4b,C;;AA08BtDC;CAAdA,IAAcA,eAAaA,QAAWA,C;;CAkUtCC,IAAcA,aAAQA,C;;;ES/1CzBC,oBACUA;CACRA;AACCA,MACHA,C;;;EAMOC,IAAkBA;MAEvBA;MAG4DA;MACxDA;8CACLA,C;;;EASHC,GACEA,WACFA,C;;;EAOAC,GACEA,WACFA,C;;;EAkCF1U,aAgEOA,kBAxDOA,gBACNA,KAPiBA;KASrBA,UAAMA,iCAEVA,C;;EAXI2U,GAGEA,WACFA,C;;;EAmECC,IAEHA;WAAgCA;KAC3BA,GACHA;QAGAA;oBAFeA,KAEfA;KAEAA,QAEJA,C;EAEKC,gBAGDA;OADEA,GACFA;KAEAA,SAEJA,C;AAsEgBC;EAAZA,IAAYA,qBAAgDA,C;;;EAEvCA,MAGvBA,YnBw1CFA,cmBv1CCA,C;;;EA0C0CC,MACzCA,IAAkBA,OACnBA,C;;AGzSsBC;CAAhBA,IAAcA,eAAEA,GAAMA,C;;;;EFhBxBC,MAEHA;;MACKA;KAgSmBA,WAhSEA,UAAUA;WAMRA;AAuB5BA,SApBFA,C;EAZKC,2B;;EA0BAC,cACEA;KAwQmBA,WAxQEA,UAAUA;AACpCA,OACFA,C;;EAyHKC,IAEIA,QApCiBA,WAmCLA,QAErBA;AADEA,WAxCiBA,EAAOA,UAgBiBA,IAwBkBA,GAC7DA,C;EAEYC,gBAEeA,aASkBA,SAtD1BA,EAAOA;AAiDNA,YACPA,YACuCA;KAEvCA;IAMFA;AAAPA,QAeJA,UAdIA,SAFFA,kBAxDwBA,UA6DpBA,UAAMA;AAMRA,UAAMA,wGAXRA,QAgBFA,C;;EAkHKC,QAEHA,OAA0BA;IAC1BA,IACFA,C;EAEUC,mBCkRiBA;QDhREA,IAEbA,wBACAA,SACVA,UAAoBA,4BAQtBA,WAIYA;AArDhBA;;AAyDEA,QA3OFA;AA4OEA,QACFA,C;EAxBUC,+B;EA8BAC,QAjEVA,eAAyBA,GAAzBA;AAmEEA,QA/OFA;AAgPEA,QACFA,C;EA2EKC,QAEHA,OAAwBA;IACxBA,IACFA,C;CASKC,QAGHA,IACYA,UAAkCA;IAC9CA,IAA4BA,EAC9BA,C;EAEKC,kBA9IDA;AAgJFA,UACWA,IAAgBA;CACzBA,UAEAA,iBArCKA;KA7GgBA,YAwJjBA;AACAA,MAURA,CARMA,OC8rCJA,gBD1rCEA,GAAwBA,eAI5BA,C;EAEKC,IACHA;;WAAuBA,MA+BzBA;GAvMIA;AAyKFA,YACuCA;CACrCA;AACAA,eAEiCA;AAC/BA,2BAEgBA;CAETA,WAGTA,iBAvEKA;KA7GgBA,YA0LjBA;AACAA,MAURA,CARMA,OAGUA,CAAZA;ACypCFA,gBDxpCEA,GAAwBA,eAI5BA,C;EAEiBC,aAIYA;AAEpBA,IADPA;AACAA,gBACFA,C;CAEiBC,IACEA;AAEjBA,mCACkCA;CACxBA,KAIVA,QACFA,C;EASKC,IAAmCA;;IAOpCA,KAAYA,YAQAA,0BATdA;AAaEA;AAKAA,KAAkBA,iBAItBA,C;EAgFKC,IAG0BA;CA/N7BA;CACAA;AAgOAA,SACFA,C;CAEKC,MAG0BA;AA5N7BA,QAAoBA;AA8NpBA,YACFA,C;EAGKC,2BAaOA,MACRA;AACAA,MAGJA,CADEA,UACFA,C;EAqCKC;ACk8BHA,mBDh8BAA,GAAwBA,iBAG1BA,C;EAMKC,IAEOA,kBAERA;AACAA,MAIJA,CADEA,UACFA,C;EAEKC;AC46BHA,mBDx6BAA,GAAwBA,mBAG1BA,C;;;EArR4BC,GACtBA,SAAsBA,OAAMA,GAC7BA,C;;;EAgCuBC,GACtBA,SAAsBA,SAAMA,GAC7BA,C;;;EAuCWC,oBAEVA;;IAEEA,KAAyBA,uBAD3BA;AAEEA;AACAA,SAEHA,C;;;EAAWA,MAEVA,aACDA,C;;;EAMiBA,GAChBA,aAAeA,OAAGA,GACnBA,C;;;EAwD4BC,GAC7BA,WAAqBA,OAAQA,GAC9BA,C;;;EAkGuBC,GACtBA,cAAmBA,GACpBA,C;;;EAsBuBC,GACtBA,aAAeA,OAAOA,GACvBA,C;;;EA8DGC,GAAkCA;SAQbA;AAnmBlBA,GA9EUC,EAAOA,OAqBcA,aA2pBhCD;AAEEA;GACIA,OAAsBA,EAnZ3BA,EAmZyCA;;AAAxCA,MACEA,MAAuBA,EApZ1BA;KAsZ8BA,CAA3BA;CAEFA;AACAA,MAkBJA,wBAnhBmBA,iBACFA;CAogBXA,IA7ZHA;CA8ZGA,MAGFA,MAUJA,2BAJyBA;;AACEA,CAAvBA,QAA2CA;CAC3CA,MAEJA,C;;;EAH+CE,IAAOA,aAAcA,C;;;EAKpEC,GACEA;;GACyBA;AA5qBxBA,CA4qBCA,IA/sBSC,EAAOA,OASmBA,OAssBSD,aAD9CA;AAEEA;;AAC2BA,CAA3BA;CACAA,MAEJA,C;;;EAEAE,GACEA;SAC0BA,EAxbzBA;;AAybKA,eACAA,EA9sBYC,UA+sBSD,CAAvBA,IAAuBA;CACvBA,gBALJA;AAOEA;KACcA,EA/bfA;;IA+b6BA,QAC1BA;KAE2BA,CAA3BA;CAEFA,MAEJA,C;;;;;;ECmgByBE,GACvBA,SAAoBA,OAAOA,GAClCA,C;;;EAgMIC,IACHA;QACgBA,MAAgBA,IAC5BA;AACAA,MAMNA,CAJIA,gCALFA;AAMEA;AA4DFA,UAzDFA,C;EAuCgBC,IACdA,OAAOA,gBACTA,C;EAwBEC,IACgDA,IAA7BA,MAAUA,GAAYA,aAE3CA;AADEA,OAAOA,sBACTA,C;EAHEC,0B;EAMAC,MACgDA,IAA7BA,MAAUA,GAAYA,cAE3CA;AADEA,OAAOA,wBACTA,C;EAHEC;wB;EAKAC,QACgDA,IAA7BA,MAAUA,GAAYA,gBAE3CA;AADEA,OAAOA,0BACTA,C;EAHEC;4B;EAS4BC,IAE1BA,QAACA,C;EAFyBC;wB;AA7CfC;EAANA,GAAMA,qBAAgBA,GAAEA,C;;Af5wCjCC;E0CxSgBA,IAAYA,kB1C0SHA,W0C1SGA,Q1CwS5BA,a0CxSiDA,C;CAE/CC,MAAwBA,OAAIA,WAAOA,C;CA2Q7BC,MAAaA,O5CxIrBzO,U4CwI0ByO,Q5CxI1BzO,6B4CwI8CyO,C;EAyDzCC,UAGDA;AACSA,SAAiCA;AAC5CA,gBACMA,aAERA,C;CA0KOC,IAAcA,OAWJA,eAXsBA,C;;;;CrBhgBlCC,MACHA;AAAcA,kBAAdA,UACwBA,mBADxBA;AACkBA;AAAhBA,eAAsBA,UAE1BA,C;EAoEQC,IAAUA;OAAKA,OAAMA,C;CAItBC,IAAcA,iBAAiBA,C;;;EAaxBC;KACHA,OACHA;CAEFA;MACAA;AX4hBWA;;CA2BfpT;AA3BeoT;MWzhBZA,C;;;CA6ISC,QACZA,UAAMA,sCACRA,C;AAyD+BC;CAAnBA,MAAmBA,oBAASA,C;CAC1BC,QACZA,eACFA,C;CAaKC,MACHA,aACFA,C;EAIQC,IAAeA,UAALA;cAAWA,C;CAGtBC,IAAcA,kBAAeA,C;;;;;CC/N3BC,kBAwHeA;AAvHtBA,WACEA,OAAOA,IA6HFA,SArHTA;KAPSA,sBACLA,WAMJA;KAHyCA,GA6KEA;AA5KvCA,yCAEJA,E;EAEQC,IAAUA,WA4GMA,aAOfA,EjBxNSA,GiBqGoCA,QAAeA,OAAMA,C;EAKtDC,UAuGGA,UjB6FxBnJ,UiBtFSmJ;AA7GUA,iBjBtGVA,OAySTnJ,UiBjMAmJ,CADEA,OA8KFA,cA7KAA,C;CAOSC,QACPA;IA4FsBA,SA3FpBA,CAkGKA;KAjGIA,cACOA;;GAEDA;AACfA,wCAIAA,OAAUA,QAEdA,C;CAkBKC,IACqBA,OA6DFA,SA7DLA,WAoEVA,OAjETA;AADEA,OAqH8CA,yCArH1BA,KACtBA,C;CA6BKC,MACHA;AAAwBA,IA4BFA,SA5BLA,QAmCVA,SAbTA;AArBsBA;AACpBA,WAAyBA,QAAzBA,QACeA;GAIYA,EAiFcA;AAhFvCA,0BACUA,QAAoCA,EA+EPA;CA9ExBA,QAIfA;QAIqBA,GACnBA,UAAMA,SAGZA,C;CAgBaC,aAEEA;AACbA,WACiBA,MAARA,O1BzJ0BA,gB0ByJsBA;AAEzDA,QACFA,C;EAEqBC,GACnBA;IApBsBA,SAoBLA,QAbVA,EAuCTA;AAtBgCA;AACVA;AACpBA,WAAyBA,YAAzBA,QACeA;AACbA,QAAkBA,UAMpBA,SACEA;KAEAA;CAKFA,IAAYA;AAGZA,QAFAA,IAGFA,C;EAEAC,IACEA;AAS8CA,6CAT5BA,MAAiBA,WAGrCA;AAFeA,WAAoCA,EAURA;AATzCA,WAAoBA,OACtBA,C;AAuB0BC;EAAlBA,IAAUA,mBAAcA,C;CAEzBC,MAESA,UADPA;AAAPA,QA9EsBA,gBA+EHA,OACbA,KAAQA,GAChBA,C;EAKqBC,cACZA;IAvFeA,UAwFRA;AAAKA,eACbA;A1BghBRjP,cAEyBA,QAhIGiP,QA8H5BjP,Y0BlhBEiP,QAGFA,C;;EC1LwBC,GACtBA;IACSA;AAAPA,QAGHA,WADCA,WACDA,C;;;EAC+BC,GAC9BA;IACSA;AAAPA,QAGHA,WADCA,WACDA,C;;;ECtEMC,WACLA;AAAiBA,gBAAmCA;AAMfA;AAIrCA,4CAE+BA;AAAlBA;AAGXA,WACMA;AAAJA,UzBqBOA,OAAcA;AACdA,OAAcA;AACRA;AyBlBXA,UAdaA;mBAsBRA;AAATA,oBACcA;AACZA,8EACkBA;AAChBA,SAA0BA;AAeRA,SAdbA,WAELA,wBdihBUA,EAAUA;Wc5iBPA;AA6BoBA;IAGjCA;AAEAA,UAA4BA,SAKVA,IAHpBA,uBdqgBNA;AAOEA;Ac1gBgBA;AdkbE1W;;;Ac/aZ0W,UAGJA,UAAMA,iCAERA,YACeA;;Gd6fWA;Ac5fxBA,QAIEA;KAIgCA;AAChCA,SAEEA,UAAMA;KAERA,M9BmdGlI;CgB2DPvM,Kc5gBMyU,KAGGA,GdsgBmCA;ActgB1CA,6CAoBJA,CAjBeA;AACbA,QACEA;KAIgBA;AAChBA,SAEEA,UAAMA;AAERA,OAEWA,kCAGbA,SACFA,C;;;;;;CsB3COC,IAAcA,eAAKA,C;;CA0DnBC,IACKA,mBAAuBA;AACjCA,kBACFA,C;EAMQC,QACQA;AACdA,gCACWA,aAISA;AACdA;QAEmCA;AACnCA;QAEmCA;AACnCA;QAEmCA;AACnCA;QAEmCA;AACnCA;QAEoCA;AACpCA;QAEAA,OAAJA,uBpCkaJA;AoChaMA,OAA4BA;;AAEpBA,OAGZA,WAAoBA,WAGtBA;AAFEA,QAA8BA;UpCybcA;AoCxb5CA,6BACFA,C;;ECvCQC,MA6YyBA,aA1YHA,UA0YqBA;AA1Y5BA,QAEvBA,C;GAsBgBC,GACQA,QAAaA,EAErCA,C;;;;CtB9IUC,IAESA,yBADSA;AAG1BA,SAAiBA,Od0gC8BnkB,iBc1/BjDmkB;AAb4CA;AdugCKnkB;Ach+BjDmkB;AAtCoBA,mBAShBA;AAEFA,OdigCEC,eAVWD,aADFA,Qct/B+BA,OAC5CA,C;;EAiCKE,iBACHA,MAAQA;;GACAA;;CACAA;QACVA,C;EAWKC,MACHA;sBA0NQA;GApNNA;GAAQA;;;GACAA;;GACAA;;CACAA;;AACRA,QAMJA,MAHIA;AACAA,QAEJA,E;EASIC,QACFA;AAAqCA,4CAGnCA;OA6BIA,MADgCA,YAzBtCA,SACiBA;AAEfA,cACMA;AAAJA,QAAoCA;CAC5BA;YAiLXA;AAhLQA,kBACDA,OAAmCA;AAGLA;AAChBA,UADCA,0BAGdA,kBACDA,OAAmCA;AAEvCA,YAGAA,eACMA;;AAAJA,QAAwCA;CAChCA;;CACAA;sBAGJA;AAAJA,UAAwCA;GAChCA;;GACAA;;CACAA;gBAIdA,QACFA,C;AFlNAC;CEmUOA,IACHA,oBAAaA,IFhURA,eEgU6DA,C;;EFxT/DC,UAEgBA,kCAA2CA;AAChEA,SAAkBA,QAoDpBA;AAhDEA,4BAGMA;AAoB6CA;AAlBnCA,SAENA;AAGRA;AAmC0CA;AAxC5BA,IAgBhBA,eAEmCA;AAA7BA;AACJA,YACEA,MAAqBA,QAuB3BA;AAbUA,yBACFA,QAYRA,EAPkBA;GACCA;AAAjBA,cACmBA;CACjBA;AACAA,UAAMA,WAAkDA,KAE1DA,QACFA,C;EAEOC,UAGLA;aACmBA;AACLA;AAEAA,KADKA,UAASA,QAK9BA;AAHIA,sBAGJA,CADEA,OAAOA,aACTA,C;EE4eOC,Uf+DPA,oCe5DcA,MACDA,0BAGAA;iBAeDA,GAbVA,UAEEA,6QACuBA;AAMEA;4LAFCA;AACxBA,UfnCcxX;;AeqCZwX,SAAcA;AACdA,WACKA,cACLA,KACEA,0BfzCUxX;;Ae8CNwX;Qf9CMxX;OeoDNwX;AACAA;QfrDMxX;;CAmHlBA;AexDYwX,YAIJA;CACAA;AACAA,QA2CVA,CAzEmBA,IAiCbA,SAAcA;AACDA;GAANA,IAIIA;GAANA;AACPA,UAEEA,qBAQIA;MAPWA;GAANA;AACPA,WACYA;;AACVA,MAJGA,IAQPA,UACEA,iBfrFYxX,OesFWwX;YAGHA;OAEtBA,SAAoBA;aAIxBA,WAEEA,MfjGgBxX;aeoGdwX;CACAA;AACAA,QAMNA,EAHEA;CACAA;GfM4CA;AeL5CA,6BACFA,C;;Ef2E2BC,gBACrBA,oBAASA;ImCxtBgCC;CnCmpB7CzV;;AAwEmBwV;;CACfA,OACDA,C;;;EA6GqBE,MACtBA;sBACEA,IAAsBA;KACjBA,WACLA,IAAsBA;KAQtBA,mBAI6BA,GAJ7BA;AACEA,sBACEA;KACKA,WACLA;KAGMA,QAIbA,C;;AsChxBkBC;CAAdA,IAAcA,gBAAeA,C;AtC6JKC;EAAzBA,GAAcA,iBAAkCA,C;;CT1IzDC,cACDA;AAAJA,WACEA,2BAAkCA,OAGtCA;AADEA,wBACFA,C;;;GAoFWC,GAAcA,+BAAoBA,YAAwBA,C;GAC1DC,GAAqBA,QAAEA,C;CAE3BC,IAKaA,cAJEA,8BAEGA;AAKFA,KAFhBA,GAAWA,QAKlBA;AADEA,sBAD0BA,KAAaA,QAEzCA,C;;;GAWSC,GAAgBA,WAAMA,EAAYA,C;GA2IhCC,GAAcA,kBAAYA,C;GAC1BC,eAGSA,SACFA;AAChBA,WAEgDA;KAGzCA,WAC0CA;KAC1CA,OACoCA,0CAAQA;KAKXA;AAExCA,QACFA,C;;GAkBQC,GAAgBA,WAAMA,EAAYA,C;GA8D/BC,GAAcA,kBAAYA,C;GAC1BC,UA/DmBA,KAmE1BA,oCAMJA;UAJMA;AAAJA,SACEA,8BAGJA;AADEA,sCACFA,C;;;CSwPOC,IAzFPA;CA2FSA;GACSA;OAEdA;CA5DFvW;AA8DmBuW;;CACfA,QAKFA,CAFmBA,OAEIA;AASGA,QAAaA;AACbA;AAG1BA,gDALkCA,EmC/tBSd,2CnC+uB/Cc,C;;CTzPOC,IAAcA,oCAAyBA,EAAQA,C;;CAc/CC,IAELA,iCADmBA,EAIrBA,C;;CAoBOC,IAAcA,wBAAaA,EAAQA,C;;CAcnCC,cACDA;AAAJA,WACEA,iDAIJA;AAFEA,mDACaA,WACfA,C;;CAOOC,IAAcA,qBAAeA,C;EAEpBC,GAAcA,WAAIA,C;;;CAO3BC,IAAcA,sBAAgBA,C;EAErBC,GAAcA,WAAIA,C;;;CKrkB3BC,IAGLA,wBAFuBA,EAGzBA,C;;CAkDOC,oCAEkBA,0DAIJA,SACGA;AACtBA,uBACqBA,qBAAkCA;KANnDA;AAMFA,KAIIA;AAAJA,gBACaA,WACAA;AAEXA,eAgENA,CA3DIA,8BACaA;AACXA,WACEA,aACEA;AAEUA;AAzBdA,UA2BOA,WACLA;AACYA;AA7BNA,MAsEDA;GAhCYA;AACrBA,iBACaA;AACXA,mBAKWA;AAHTA,OAQJA,UAIEA,WACQA;;AAxDWA;AAYkBA,aA8C9BA,WACGA;;AA3DSA,UA+DTA;AACFA;AApD6BA,qBAwDAA;AAAPA;AApEXA;KAsErBA,WAFeA,oBAEyBA,gBADCA,cAS7CA,MAFIA,iCAF0BA,aAI9BA,C;AsBWyBC;CAAbA,MAAaA,sCAAwBA,C;EAqVzCC,IAGiBA;AACvBA,QAAOA,OACLA;AAEFA,QACFA,C;CA+QEC,MACWA;;AACSA;AAEpBA,QAAOA,QACLA,SAAoBA,OAAgBA,MAKxCA,CAJIA,IAEFA,UAAiBA,yBAEnBA,C;CAgBOC,IAAcA,yBAAqCA,C;AlB1uBhCC;EAAlBA,IAAYA,oCAAcA,C;CuC/C3BC,IAAcA,YAAMA,C;AvC8BIC;CAHjBC,MAAoBA,eAAsBA,C;EAGhDD,IAAYA,iBAA+BA,C;CAG5CE,IAAcA,sBhBmaLA,cgBnaiDA,C;EAGzDC,MACNA,UAAwBA,aAC1BA,C;EAGSC,IAAeA,iBAAgCA,C;;;CwChBjDC,IAAcA,QAAWA,C;;;ExC8lBxBC,IAAUA,aAAUA,OAAMA,C;CA4B3BC,cAAuCA;AAAzBA,6BAAmCA,C;;EoB0nBrBC,MACnBA;AACZA,WACEA,UACEA,MAnEMA,UAC8BA,YAkEQA,gBAEzCA,UACKA;AACEA;MAC4BA;AAAxCA,MAxEQA,UAC8BA,cAD9BA,UAC8BA,eA0ExCA,QACDA,C;;;EAaDC,MACEA,UAAMA,mCAA8CA,MACtDA,C;;;EAiEAC,MACEA,UAAMA,mCAA8CA,MACtDA,C;;;EAGAC,MACEA;SACEA;AAEcA,OAAMA;AACtBA,gBACEA;AAEFA,QACFA,C;;;EAmHgBC;aA22CZA;GHn+Ec/V;GGo3EKgW;;AAmHvBD,mBpC/vEO7L;GoCouEH8L;IH58EchW,YjCwOXkK;AoCwuEP8L,MpCxuEO9L;GoCyuEH8L;AAAJA,WpBzsEeC;IoBquENF;GACLA;AAAJA,WpCtwEO7L;GoC0wEH6L;AAAJA,WpC1wEO7L;AoCg5BS6L;sC;EAMHG;UAAsBA,SAANA;AAAhBA;;a;GAGgBC;aAqKXA;AApKwBA;AADbA;ATvoC/BA,GSuoC+BA,4B;GA+IpBC,GAAYA,aAASA,C;GAErBC,aACMA;AACfA,WAAkBA,QAKpBA;AAJMA,gBACFA,OAAOA,WAAuBA,UAGlCA;AADEA,QACFA,C;GAEQC,GACUA,UAATA;AAAPA,wBAA6BA,KAC/BA,C;GASWC,aAASA;mBAAYA,C;GAErBC,aAAYA;mBAAeA,C;EA2NlCC,0BAkBcA,mBAOEA,MAMJA,MAk1BSA;AA10BhBA,iBH1iDWzW;GGqjDOyW;AACXA,kBHtjDIA;KGihDdA;AAsCGA,oBACWA;AAiBkCA;AAX1CA;AAWVA,OAAYA,kBAHMA,GAIpBA,C;GA2iBSC,UAAcA,mBA70BAA;AA60BgBA,2BAAHA;AAAbA,QAA8BA,C;GA+P5CC,GAAgBA,mBAAaA,C;GAI7BC,GAAYA,mBAAcA,C;GAE1BC,GAAeA,mBAAiBA,C;CAqGlCC,IAAcA,gBAAKA,C;CA0BZC,MACZA;AADcA,mBAahBA;AAZEA,SAA4BA,QAY9BA;AAXeA,YACOA,IAAhBA,aACsBA,IAzIHA,mBA0IDA,IA9uCDA,aA+uCjBA,aAAcA,QACdA,aAAcA,QACAA,IAAdA,iBAzIeA;;AA0IGA,sBA5tCMA;AA6tCTA,mBAzIGA;;AA0IGA,sBA9tCGA;AA+tCNA,mBADNA,UADNA,UADGA,UADJA;KADAA;KADAA;KADIA;KADIA;KADNA;KAQ0BA;AATrCA,QAWFA,C;;;;;EAzlBEC,gBACEA;MAAaA;CACbA;AAtnCUA,QAAgBA,MAA6BA;;aHzzBvChX,cjBmSlBrC;AoBshBYqZ,QAAgBA,MAA6BA;OA4nCzDA,C;;;EAEwBC,MACtBA;+BACEA;KAGAA,mBACEA,GADFA,OACEA,OADFA,OAIHA,C;;;GAqrCKC,gCACCA;eAOUA;GADAA;AACAA;GACDA;AAChBA,SACeA,gBACwBA;AAIZA,SACCA;AAixC9BC,GAjyCSD,0BAcKA,YACyBA,eAfrCA,QACFA,C;CAqXOE,cAC0CA;AAA7CA,WAACA,sBAA0DA,C;;EAiO/DC,gBACIA;AAAMA;AAANA,QAAkDA,C;;;EAMtDC,QACEA;OAA0BA,YAA1BA,QACaA,uBAGfA,C;;;EAQAC,QACEA;AAAaA,wBAAyBA,gBAAtCA,wBAGFA,C;;;GA0NSC,GAAgBA,eAAcA,C;GAE9BC,GAAWA,qBAAkBA,SAAiBA,EAAUA,C;GACxDC,GAAYA,kBAAcA,EAAcA,C;GACxCC,GAAeA,kBAAiBA,EAAKA,OAAMA,C;GAc3CC,GAAcA,WAnBDA,UAKEA,QAAiBA,EAAKA,OAcEA,C;GAQrCC,GACeA,UAAjBA;AAAPA,mBAAOA,cACTA,C;EAEOC,mBACDA;AAAJA,QAAqBA,QAMvBA;AA9BoBA;AAAmBA,wBAyBxBA,YAKfA;AA7BwCA,6BAyBxBA,aAIhBA;AA/BuCA,wBA4BxBA,YAGfA;AA5B0CA,+BA0BxBA,eAElBA;AADEA,OAAOA,cACTA,C;GAIWC,GACLA,UADkBA,SAAaA;AAAdA,qBACjBA,YACEA,C;GACGC,GACUA,UAAjBA;qBAAiBA,SAA2BA,MAAgBA,C;GACxDC,GACNA;AAAIA,WAASA,OAAWA,KAAMA,WAAeA,MAAgBA,SAI/DA;GA5CoBA;AAAmBA,4BAyCxBA,SAGfA;AA3CwCA,6BAyCxBA,UAEhBA;AADEA,QACFA,C;GAEWC,GAAQA,wBAAeA,OAAYA,GAAYA,C;GAC/CC,GACLA,UADeA,SAAcA;AAAfA,qBACdA,YACEA,C;GACGC,GAC0BA,UAAhCA,SAAiBA;AAAlBA,UAAuBA,uBAAiDA,C;GAyCpDC,GTziIxBA,OSy8HqBA,QAAcA,GAiGlBA,QAAOA,GAExBA;AADEA,gBAA+CA,KAAiBA,gBAClEA,C;EAwBIC,IAecA,sDAKLA,SACEA,WAAeA,aAOdA,QAAeA;GAQlBA;AAAJA,OACEA,eAA2BA;QHnmIlBtY;GG6mITsY;WAAeA,IAAYA;AACtBA,kBH9mIIA;KGykIdA;AAsCGA,oBACIA;AAKIA;GAQJA;AACEA,KADoBA;AAIjCA,OAAYA,mBACdA,C;EA4PQC,IAAoCA,UAAxBA;iCAAmBA,KAAaA,C;CAEtCC,MAAEA,mBAGhBA;AAFEA,YAA4BA,QAE9BA;AADEA,OAAaA,cAAUA,KAAQA,MACjCA,C;CAaOC,IAAcA,aAAIA,C;;;AEh0IqBC;EAAPA,IAAOA,mBAAqBA,C;;;EAC9BA,IAInCA,WACEA,OAAOA,UmB7VXA,wBnBiWCA;AADCA,OAAOA,YACRA,C;;;CmB9VMC,IAELA,oDADiBA,2BAEnBA,C;;EC3IGC,uBA6ELA,C;CAnDSC,IAAcA;sBACHA;;OACAA;;OACGA;;OACLA;;OACCA;;OACFA;;OACIA;;OACIA;;OACLA;;OACDA;;QACDA;;QACDA;;QACAA;;QACEA;;QACEA;;QACHA;;QACEA;;QACLA;;QACEA;;QACWA;;QACAA;;QACTA;;QACMA;;QAvBFA,eAwBhBA,C;;EnB/CFC,iCAMLA,C;;EAakBC,IACdA;AACSA,INoXSA,YMpXhBA,kBA6DJA;ANqESA;AM9H4DA;UAElDA,MAAjBA,WAYmBA,6BAZnBA;AACYA;AN2HLA,GMvHgBA;ANuHhBA,GMtHyBA;AAE9BA,uBAGEA,MAAqBA;KAChBA,KACDA,eACAA,WACFA,MAAqBA;KACZA,gBACPA,YACFA,MAAqBA,KAK3BA,SAAgBA;AjCoKdA;AiCrIFA,YjC2UFC,WiC3UwBD,iBjCqIpBA,WiCpIJA,C;;EAtDIE,IACEA,YAAeA,aAAOA,MACxBA,C;;;EAoBcC,iBAIKA,EAjDiBA,IAiDCA,EAjDaA;AAkDlDA,SACEA,QAuBHA;GAnBgBA;GAAqBA;GAAhBA,IAAqBA;AACzCA,SACEA,QAiBHA;AAbqBA,UAAgBA;AACpCA,SACEA,QAWHA;GAPqBA,IAAyBA;AAC7CA,SACEA,QAKHA;AADCA,QAAcA,EAAKA,SAAgBA,EAAKA,OACzCA,C;;;EAEqBA,IAAWA,QAAMA,EAAIA,C;;;GAgErCC,cAAkBA,aAELA;;;AACDA;OADCA;AAEGA;OAFHA;AAGOA;QAHPA;AAIDA;QAJCA;AAKUA;QALVA;AAMUA;QANVA;AAOCA;OAGCA;;;AACAA;OADAA;AAEGA;OAFHA;AAGAA;QAHAA;AAIFA;QAJEA;AAKAA;OAGDA;;;AACAA;QADAA;AAEFA;OAGEA;;;AACFA;QADEA;AAEEA;QAFFA;AAGDA;QAHCA;AAIJA;QAJIA;AAKMA;QA9BVA,eA+BbA,C;;;EC/KkBC,eFsErBA;AEpEFA,WAAkBA,QAUnBA;AANUA,OFkIFA;AEhILA,mBAIHA,MAFGA,QAEHA,C;;;EAQCC,GReAC;UQZED;;MACAA;;MACAA;sDACFA,C;;AAMEE;EADQA,IACRA,iBAiCDA,C;EAlCSC,IACRA;mBADQA,cACRA;4BAAkBD,SFsClBA,cErCEA;AACAA;;;Ga8GFE;Ab3GcF;YC8EgBA,KHAzBA,wBE9ESA;ODvBoBA,WckIlCE;A/C2QFC;WAtMID,gBiCtMyBF,ajCsMzBE;ANsrGFF;AwCj2GgBA,OAAaA,MF4B7BA,mBE3BwBA,MAAeA;YAErBA;ItC8pBA5a,asC5pBO4a,YAAMA;YFyF1BA,CAlELA,wBErB+BA;AACzBA;WAMFA;WACFA,QAAeA;GAEbA;WACFA,QAAeA;GAEbA;WACFA,QAAeA;OAhCTC;AACRA,wBADQA,C;;;EAqDCG;UFoDJA,MAlELA;AAwFKA;;CAxFLA;AAkEKA,CAlELA;AAkEKA,cE/CSA;AF+CTA,cE9CSA;AANLA;;a;GAUAC;UF0CJA,MAlELA;AAkEKA,CAlELA;AEwBSA;;a;EAIAC;UFsCJA,MAlELA;AAkEKA,CAlELA;AE4BSA;;a;EAWNC,IACUA;;AFgDRA;AtC6uGLA;AsC7uGKA,CAxFLA,qCGF6BA,MAAnBA,KD+CRA;AFqBGA,GAlELA;AAkEKA,CAlELA;AAkEKA;AAsBAA;;AAtBAA,CAlELA;AAkEKA;cEAWA;AAEhBA;AAIoBA,SFxEpBA,sCEyEkBA,GAAJA,SAAmBA;AAC/BA,WACEA,MASNA;AAPYA;MACWA;AACnBA;AACAA;AACAA;QAGJA,C;EAaKC,IF/BEA,wBAlELA;AEoGAA,WACEA,MAqCJA;;AFxEOA,GAlELA;AAkEKA,CAlELA;AAkEKA;GAlELA;;AAkEKA;GAlELA;AAkEKA,CAlELA;gBEmHsBA;AFjDjBA;IEoDDA,G7B3JctvB,O6B4JoBsvB,OADlCA,YlCgLsBA,SAwB5B7T,eAxB4B6T,SAwB5B7T,SAxB2D6T,KAAVA,KAAoBA,GAwBrE7T,mBAW0B6T,MkClNtBA,WlCkNaA;WAASA;AgCvQnBA,yBAlELA;AAkEKA,CAlELA;;AEiIsBA,2FAEfA,GAAyBA;AFjE3BA,GAlELA;AAwFKA,sBFysFcA;;AE/tFdA;iBEwEPA,C;EAEKC,GAAqBA;CF5IxBA;AAwFKA;AEoDmBA,QAEgBA,C;EAUrCC,QAEHA;AAAkBA,CAAlBA;GACAA;;AACAA;AACAA;GtCwekBA;AsCtelBA,UACEA;AACAA,MAkBJA,CAfEA,iDACEA,OAAuBA,QADzBA;AAMAA,YADiCA,CAbjCA,aAcAA;AACEA,OFzGGA,gBE2GLA;CA6J8BA;AAlP1BA,UF3CCC,iBE4CHD;CFzFFC;AAwFKA,0CEwD8CD;AFpIvCE;AEoIaF,qBAmC3BA,C;EA3BKG,6B;EA8BAC,QAEHA;IAAIA,WACFA,MAgBJA;IPyHoBA,aOrIhBA,QAAsBA;AACtBA,MAWJA,CARoBA;GACcA;;GACPA;AAAzBA,OACgBA;CAGhBA;AACAA,WACFA,C;EAnBKC,6B;EAAAC,4B;EAAAC,6B;EAsBAC,IACHA;CA6H8BA;GA5H1BA;AAAJA;CAEEA,QAEFA,MACFA,C;EAEKC;AF7HEA,2BG1FwBA,IAAnBA,KD0NRA;AFhIGA,0BG1FwBA,IAAnBA,KDiORA;AFvIGA,2BG1FwBA,IAAnBA,KDwORA;AF9IGA,6BG1FwBA,IAAnBA,KD+ORA,gBA0FJA,C;;EA1RIC,IAIYA,QFjDdA,YEiDmDA,UFjDnDA,0BA6CKA;IEMCA,WAEHA,C;;;EAmKDC,IACEA,cAAaA,EFzNjBA,UE0NGA,C;;;EAKDA,IACEA,cAAYA,GACbA,C;;;EAKDA,IACEA,cAAaA,EFvOjBA,OEwOGA,C;;;EAKDA,IACEA;AAAUA,SF9OdA,iBE+OMA,MAsFHA;AAjFWA,QFpPdA,gBA6CKA;GEyMMA;;AAALA,WFpLDA,GEqLOA;AAAJA,WFrLHA,IAlELA,wBEyPmCA;AAE3BA,MA0ELA,MAtEiBA,SAAoBA;AACXA,OAASA,sBACzBA,GAAyBA;AF/LjCA,IAlELA,wBFiyFmBA;AI9hFXA,MAkELA,KA9DiBA;;GAAmBA;GACLA;AAEpBA,QF1QdA,qBE2QUA;AAAJA,WACEA;MAEAA,YAEaA,QFhRrBA,uBEiRUA;AAAJA,UAyDwBA;MAtDtBA,YAEaA,QFtRrBA,gBEuRMA,MAAYA;SAERA,WACFA;AACAA,MAAaA,EF3RrBA,QE6RMA,MAwCHA,CArCKA;AAAJA,KF9NCA,CE+NCA,GFjSNA;GEsSSA;AAALA,cACiBA;AFrOhBA,CAlELA;GE2SUA;AAAJA,SACEA;KACKA,SACLA,iBAAoBA,MF9S5BA;;AEiTiCA,QFjTjCA;2BA6CKA,uBE6QCA,cAAgBA,EF1TtBA;CE2TMA,UAAqBA,IAAgBA,GAAiBA,WAC7CA;AAAJA;AAIgBA;AAJhBA,YAILA;CACAA,SFpRDA,kBEwRFA,C;;;EAsCHC,IF9TKA,kBEgUJA,C;;;EAKDA,cACMA,EAAMA;AAAVA,YFjTGA,IAlELA,wBEoX6BA;AFvUxBA,mBE0UJA,C;;AA+C4CC;EAA3CA,IAAWA,0CAAgCA,qBAAmBA,C;;;EEnenCC,cAC7BA;WJ8HKA,CAlELA;MI3DAA;WJ6HKA,CAlELA,2BI1DDA,C;;AAqDCC;EADqDA,IACrDA,iBAeDA,C;EAhBsDC,IACrDA;mBADqDA,cACrDA;4BAAkBD,SJKlBA,cAkEKA,MAlELA;;;AAkEKA,CIlEHA;AACAA;MAGoBA;YDyCQA,KHAzBA,wBIzCiBA;;AJ8DjBA,MAlELA;;AIQAA,MAAaA;AJ0DRA,CIzDLA;OAfqDC;AACrDA,wBADqDA,C;;;ECzDvDC,aACMA,SACFA;IL6DFA,UAwFKA;;IAxFLA,uDAwFKA;;IAxFLA,mDKrDFA,C;;;EAIE3B,IACEA,WACDA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;c5CmCQ4B,IACTA,0BADSA,A;cC2sCmBC,IAC1BA,IAAeA;0CADWA,A;cAKAC,IAC1BA,IAAeA;0CADWA,A;cAKAC,IAC1BA,IAAeA,WADWA,A;cAKAC,IAC1BA,IAuNaA;8DAQRA,GAhOqBA,A;cAKAC,IAC1BA,IAAeA,aADWA,A;cAKAC,IAC1BA,IA4NaA;kEAQRA,GArOqBA,A;cAKAC,IAC1BA,IAAeA,WADWA,A;cAKAC,IAC1BA,IA+OaA,wDAORA,GAvPqBA,A;cAKAC,IAC1BA,IAAeA,aADWA,A;cAKAC,IAC1BA,IAmPaA,4DAORA,GA3PqBA,A;cmB/xCRC,IAClBA,MADkBA,A;cUkGCC,IAAkBA,UAAlBA,A;cA4BVC,IAAWA,WAKvBA,IALYA,A;cAMAC,IAAmBA,WAK/BA,IALYA,A;cCgYUC,IbuXnBA,KAASA,KavX+CA,kYAArCA,A;cdgSHC,IAAmBA,iCAAnBA,A;cA2FFC,sC;cmBxWVC,InBhgB8BA,MmBggBDA,IAA7BA,A;cC86GYC,IAAiBA,MAAjBA,A;cIx9HTC,IAAYA,WAYxBA,IAZYA,A", + "sources": ["org-dartlang-sdk:///lib/_internal/js_runtime/lib/interceptors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_array.dart","org-dartlang-sdk:///lib/core/comparable.dart","org-dartlang-sdk:///lib/internal/cast.dart","org-dartlang-sdk:///lib/internal/errors.dart","org-dartlang-sdk:///lib/internal/internal.dart","org-dartlang-sdk:///lib/core/errors.dart","org-dartlang-sdk:///lib/internal/iterable.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/constant_map.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_names.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/rti.dart","org-dartlang-sdk:///lib/core/exceptions.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/records.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/regexp_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/string_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_typed_data.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/recipe_syntax.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/async_patch.dart","org-dartlang-sdk:///lib/async/future_impl.dart","org-dartlang-sdk:///lib/async/zone.dart","org-dartlang-sdk:///lib/async/async_error.dart","org-dartlang-sdk:///lib/async/schedule_microtask.dart","org-dartlang-sdk:///lib/async/stream.dart","org-dartlang-sdk:///lib/async/stream_impl.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/collection_patch.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart","org-dartlang-sdk:///lib/collection/iterable.dart","org-dartlang-sdk:///lib/collection/maps.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/convert_patch.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/convert_utf_patch.dart","org-dartlang-sdk:///lib/convert/base64.dart","org-dartlang-sdk:///lib/convert/utf.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_string.dart","org-dartlang-sdk:///lib/core/iterable.dart","org-dartlang-sdk:///lib/core/object.dart","org-dartlang-sdk:///lib/core/uri.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_allow_interop_patch.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_util_patch.dart","../src/search.dart","../../web/search.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_patch.dart","../../web/sidebars.dart","../../web/theme.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_primitives.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/late_helper.dart","org-dartlang-sdk:///lib/js_interop/js_interop.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart","../../web/docs.dart","org-dartlang-sdk:///lib/collection/list.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart","org-dartlang-sdk:///lib/collection/set.dart","org-dartlang-sdk:///lib/convert/html_escape.dart","org-dartlang-sdk:///lib/convert/json.dart","org-dartlang-sdk:///lib/core/enum.dart","org-dartlang-sdk:///lib/core/null.dart","org-dartlang-sdk:///lib/core/stacktrace.dart","org-dartlang-sdk:///lib/js_util/js_util.dart","../src/model/kind.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/internal_patch.dart","org-dartlang-sdk:///lib/async/future.dart","../../../.pub-cache/hosted/pub.dev/web-1.1.1/lib/src/dom/html.dart","org-dartlang-sdk:///lib/js_interop_unsafe/js_interop_unsafe.dart","../../web/highlight.dart","org-dartlang-sdk:///lib/core/list.dart","org-dartlang-sdk:///lib/core/print.dart"], + "names": ["makeDispatchRecord","getNativeInterceptor","lookupInterceptorByConstructor","JS_INTEROP_INTERCEPTOR_TAG","cacheInterceptorOnConstructor","JSArray.fixed","JSArray.growable","JSArray.markGrowable","JSArray.markFixed","JSArray._compareAny","CastIterable","LateError.fieldADI","hexDigitValue","SystemHash.combine","SystemHash.finish","checkNotNullable","isToStringVisiting","IterableElementError.noElement","ConstantMap._throwUnmodifiable","unminifyOrTag","isJsIndexable","S","Primitives.objectHashCode","Primitives.parseInt","Primitives.objectTypeName","instanceTypeName","rtiToString","Primitives.safeToString","Primitives.stringSafeToString","Primitives.stringFromNativeUint8List","Primitives.stringFromCharCode","Primitives.extractStackTrace","Primitives.trySetStackTrace","diagnoseIndexError","diagnoseRangeError","argumentErrorValue","wrapException","initializeExceptionWrapper","toStringWrapper","throwExpression","throwUnsupportedOperation","_diagnoseUnsupportedOperation","throwConcurrentModificationError","TypeErrorDecoder.extractPattern","TypeErrorDecoder.provokeCallErrorOn","TypeErrorDecoder.provokePropertyErrorOn","JsNoSuchMethodError","unwrapException","saveStackTrace","_unwrapNonDartException","getTraceFromException","objectHashCode","fillLiteralMap","_invokeClosure","Exception","convertDartClosureToJS","convertDartClosureToJSUncached","Closure.fromTearOff","Closure._computeSignatureFunction","Closure.cspForwardCall","Closure.forwardCallTo","Closure.cspForwardInterceptedCall","Closure.forwardInterceptedCallTo","closureFromTearOff","BoundClosure.evalRecipe","evalInInstance","BoundClosure.receiverOf","BoundClosure.interceptorOf","BoundClosure._computeFieldNamed","getIsolateAffinityTag","lookupAndCacheInterceptor","setDispatchProperty","patchInstance","lookupInterceptor","patchProto","patchInteriorProto","makeLeafDispatchRecord","makeDefaultDispatchRecord","initNativeDispatch","initNativeDispatchContinue","initHooks","applyHooksTransformer","createRecordTypePredicate","JSSyntaxRegExp.makeNative","stringContainsUnchecked","stringContainsStringUnchecked","quoteStringForRegExp","_stringIdentity","stringReplaceAllFuncUnchecked","_AllMatchesIterable.iterator","NativeInt8List._create1","_ensureNativeList","NativeUint8List","_checkValidIndex","_checkValidRange","Rti._getFutureFromFutureOr","Rti._getFutureOrArgument","Rti._isUnionOfFunctionType","Rti._getKind","Rti._getCanonicalRecipe","findType","_substitute","Rti._getInterfaceName","Rti._getBindingBase","Rti._getRecordPartialShapeTag","Rti._getReturnType","Rti._getGenericFunctionBase","Rti._getGenericFunctionParameterIndex","_substituteArray","_substituteNamed","_substituteFunctionParameters","_FunctionParameters.allocate","_setArrayType","closureFunctionType","instanceOrFunctionType","instanceType","_arrayInstanceType","_instanceType","_instanceTypeFromConstructor","_instanceTypeFromConstructorMiss","getTypeFromTypesTable","getRuntimeTypeOfDartObject","_structuralTypeOf","getRtiForRecord","_instanceFunctionType","createRuntimeType","_createAndCacheRuntimeType","_Type","evaluateRtiForRecord","typeLiteral","_installSpecializedIsTest","_specializedIsTest","_recordSpecializedIsTest","_simpleSpecializedIsTest","_installSpecializedAsCheck","_generalIsTestImplementation","_generalNullableIsTestImplementation","Rti._getQuestionArgument","_isTestViaProperty","_isListTestViaProperty","_isJSObject","_isJSObjectStandalone","_generalAsCheckImplementation","_generalNullableAsCheckImplementation","_errorForAsCheck","_Error.compose","_TypeError.forType","_isFutureOr","_isObject","_asObject","_isTop","_asTop","_isNever","_isBool","_asBool","_asBoolQ","_asDouble","_asDoubleQ","_isInt","_asInt","_asIntQ","_isNum","_asNum","_asNumQ","_isString","_asString","_asStringQ","_asJSObject","_asJSObjectQ","_rtiArrayToString","_recordRtiToString","_functionRtiToString","_rtiToString","_unminifyOrTag","_Universe.findRule","_Universe._findRule","_Universe.findErasedType","_Universe.addRules","_Universe.addErasedTypes","_Universe.eval","_Universe.evalInEnvironment","_Universe.bind","_Universe._installTypeTests","_Universe._lookupTerminalRti","Rti.allocate","_Universe._createTerminalRti","_Universe._installRti","_Universe._lookupQuestionRti","_Universe._createQuestionRti","_Universe._lookupFutureOrRti","_Universe._createFutureOrRti","_Universe._lookupGenericFunctionParameterRti","_Universe._createGenericFunctionParameterRti","_Universe._canonicalRecipeJoin","_Universe._canonicalRecipeJoinNamed","_Universe._lookupInterfaceRti","_Universe._canonicalRecipeOfInterface","_Universe._createInterfaceRti","_Universe._lookupBindingRti","_Universe._createBindingRti","_Universe._lookupRecordRti","_Universe._createRecordRti","_Universe._lookupFunctionRti","_Universe._canonicalRecipeOfFunction","_Universe._canonicalRecipeOfFunctionParameters","_Universe._createFunctionRti","_Universe._lookupGenericFunctionRti","_Universe._createGenericFunctionRti","_Parser.create","_Parser.parse","_Parser.toGenericFunctionParameter","_Parser.pushStackFrame","_Parser.collectArray","_Parser.handleOptionalGroup","_Parser.collectNamed","_Parser.handleNamedGroup","_Parser.handleStartRecord","_Parser.handleDigit","_Parser.handleIdentifier","_Universe.evalTypeVariable","_Parser.handleTypeArguments","_Parser.handleArguments","_Parser.handleExtendedOperations","_Parser.toType","_Parser.toTypes","_Parser.toTypesNamed","_Parser.indexToType","isSubtype","_isSubtype","_isFunctionSubtype","_isInterfaceSubtype","_Utils.newArrayOrEmpty","_areArgumentsSubtypes","_isRecordSubtype","isNullable","isTopType","_Utils.objectAssign","_AsyncRun._initializeScheduleImmediate","_AsyncRun._scheduleImmediateJsOverride","_AsyncRun._scheduleImmediateWithSetImmediate","_AsyncRun._scheduleImmediateWithTimer","_TimerImpl","_makeAsyncAwaitCompleter","_AsyncAwaitCompleter._future","_asyncStartSync","_asyncAwait","_asyncReturn","_asyncRethrow","_awaitOnObject","_wrapJsFunctionForAsync","AsyncError.defaultStackTrace","_interceptError","_interceptUserError","_Future._chainCoreFuture","_Future._asyncCompleteError","_Future._propagateToListeners","_registerErrorHandler","_microtaskLoop","_startMicrotaskLoop","_scheduleAsyncCallback","_schedulePriorityAsyncCallback","StreamIterator","_rootHandleError","_rootRun","_rootRunUnary","_rootRunBinary","_rootScheduleMicrotask","LinkedHashMap._literal","LinkedHashMap._empty","IterableExtensions.firstOrNull","JSArray.iterator","MapBase.mapToString","_parseJson","_convertJsonToDartLazy","_JsonMap._processed","_Utf8Decoder._makeNativeUint8List","_Utf8Decoder._convertInterceptedUint8List","_Utf8Decoder._useTextDecoder","Base64Codec._checkPadding","_Utf8Decoder.errorDescription","int.parse","Error._throw","List.filled","List.from","List._of","String.fromCharCodes","String._stringFromUint8List","RegExp","StringBuffer._writeAll","_Uri._uriEncode","JSSyntaxRegExp.hasMatch","StringBuffer.writeCharCode","_Uri._makeQueryFromParameters","StackTrace.current","Error.safeToString","Error.throwWithStackTrace","AssertionError","ArgumentError","ArgumentError.value","RangeError.value","RangeError.range","RangeError.checkValidRange","RangeError.checkNotNegative","IndexError.withLength","UnsupportedError","UnimplementedError","StateError","ConcurrentModificationError","FormatException","Iterable.iterableToShortString","Iterable.iterableToFullString","_iterablePartsToStrings","Object.hash","Uri.parse","_Uri.notSimple","Uri.tryParse","Uri.splitQueryString","Uri._parseIPv4Address","Uri._validateIPvAddress","Uri._validateIPvFutureAddress","Uri.parseIPv6Address","_Uri._internal","_Uri._defaultPort","_Uri._fail","_Uri._makePort","_Uri._makeHost","_Uri._checkZoneID","_Uri._normalizeZoneID","StringBuffer.write","_Uri._normalizeRegName","_Uri._makeScheme","_Uri._canonicalizeScheme","_Uri._makeUserInfo","_Uri._makePath","_Uri._normalizePath","_Uri._makeQuery","_Uri._makeQueryFromParametersDefault","_Uri._makeFragment","_Uri._normalizeEscape","_Uri._escapeChar","_Uri._normalizeOrSubstring","_Uri._normalize","_Uri._mayContainDotSegments","_Uri._removeDotSegments","JSArray.isNotEmpty","_Uri._normalizeRelativePath","_Uri._escapeScheme","_Uri._hexCharPairToByte","_Uri._uriDecode","JSString.codeUnits","_Uri._isAlphabeticCharacter","UriData._parse","_scan","_functionToJS1","_callDartFunctionFast1","promiseToFuture","_Completer.future","Completer","IndexItem._#fromMap#tearOff","IndexItem.fromMap","init","_Search","_createSuggestion","HTMLDivElement|constructor#","HTMLSpanElement|constructor#","JSString.isNotEmpty","HTMLQuoteElement|constructor#blockquote","HTMLTextAreaElement|constructor#","_decodeHtml","_createContainer","HTMLParagraphElement|constructor#","HTMLAnchorElement|constructor#","_mapToContainer","_highlight","JSString.replaceAllMapped","_initializeToggles","_initializeContents","_loadSidebar","_updateLinks","printString","throwLateFieldADI","throwUnnamedLateFieldADI","JSAnyUtilityExtension.instanceOfString","JSObjectUnsafeUtilExtension.[]","main","Interceptor.hashCode","Interceptor.==","Interceptor.toString","Interceptor.runtimeType","JSBool.toString","JSBool.hashCode","JSBool.runtimeType","JSNull.==","JSNull.toString","JSNull.hashCode","LegacyJavaScriptObject.toString","LegacyJavaScriptObject.hashCode","JavaScriptFunction.toString","JavaScriptBigInt.toString","JavaScriptBigInt.hashCode","JavaScriptSymbol.toString","JavaScriptSymbol.hashCode","List.castFrom","JSArray.cast","JSArray.clear","JSArray.join","JSArray.fold","JSArray.fold[function-entry$2]","JSArray.elementAt","JSArray.sublist","JSArray.last","JSArray.sort","JSArray._replaceSomeNullsWithUndefined","JSArray.toString","JSArray.hashCode","JSArray.length","JSArray.[]","JSArraySafeToStringHook.tryFormat","ArrayIterator.current","ArrayIterator.moveNext","JSNumber.compareTo","JSNumber.isNegative","JSNumber.toString","JSNumber.hashCode","JSNumber.%","JSNumber._tdivFast","JSNumber._tdivSlow","JSNumber._shrOtherPositive","JSNumber._shrReceiverPositive","JSNumber._shrBothPositive","JSNumber.runtimeType","JSInt.runtimeType","JSNumNotInt.runtimeType","JSString.replaceRange","JSString.startsWith","JSString.startsWith[function-entry$1]","JSString.substring","JSString.substring[function-entry$1]","JSString.*","JSString.indexOf","JSString.indexOf[function-entry$1]","JSString.contains","JSString.compareTo","JSString.toString","JSString.hashCode","JSString.runtimeType","JSString.length","_CastIterableBase.iterator","_CastIterableBase.length","_CastIterableBase.elementAt","_CastIterableBase.toString","CastIterator.moveNext","CastIterator.current","_CastListBase.[]","CastList.cast","LateError.toString","CodeUnits.[]","CodeUnits.length","ListIterable.iterator","ListIterator.current","ListIterator.moveNext","MappedListIterable.length","MappedListIterable.elementAt","ConstantMap.toString","ConstantMap.[]=","ConstantStringMap.length","ConstantStringMap._keys","ConstantStringMap.containsKey","ConstantStringMap.[]","ConstantStringMap.forEach","_KeysOrValuesOrElementsIterator.current","_KeysOrValuesOrElementsIterator.moveNext","ConstantStringSet.length","ConstantStringSet.iterator","ConstantStringSet._keys","ConstantStringSet.contains","TypeErrorDecoder.matchTypeError","NullError.toString","JsNoSuchMethodError.toString","UnknownJsTypeError.toString","NullThrownFromJavaScriptException.toString","_StackTrace.toString","Closure.toString","StaticClosure.toString","BoundClosure.==","BoundClosure.hashCode","BoundClosure.toString","RuntimeError.toString","JsLinkedHashMap.keys","JsLinkedHashMap.length","JsLinkedHashMap.containsKey","JsLinkedHashMap._containsTableEntry","JsLinkedHashMap.[]","JsLinkedHashMap.internalGet","JsLinkedHashMap._getBucket","JsLinkedHashMap.[]=","JsLinkedHashMap.internalSet","JsLinkedHashMap.clear","JsLinkedHashMap.forEach","JsLinkedHashMap._addHashTableEntry","JsLinkedHashMap._modified","JsLinkedHashMap._newLinkedCell","JsLinkedHashMap.internalComputeHashCode","JsLinkedHashMap.internalFindBucketIndex","JsLinkedHashMap.toString","JsLinkedHashMap._newHashTable","LinkedHashMapKeysIterable.length","LinkedHashMapKeysIterable.iterator","LinkedHashMapKeyIterator.current","LinkedHashMapKeyIterator.moveNext","LinkedHashMapValuesIterable.length","LinkedHashMapValuesIterable.iterator","LinkedHashMapValueIterator.current","LinkedHashMapValueIterator.moveNext","initHooks.","_Record.toString","_Record._toString","StringBuffer._writeString","_Record._fieldKeys","_Record._computeFieldKeys","JSArray.allocateGrowable","_Record2._getFieldValues","_Record2.==","_Record._sameShape","_Record2.hashCode","JSSyntaxRegExp.toString","JSSyntaxRegExp._nativeGlobalVersion","JSSyntaxRegExp._execGlobal","_MatchImplementation.end","_MatchImplementation.[]","_AllMatchesIterator.current","_AllMatchesIterator.moveNext","JSSyntaxRegExp.isUnicode","NativeByteBuffer.runtimeType","NativeByteData.runtimeType","NativeTypedArray.length","NativeTypedArrayOfDouble.[]","NativeFloat32List.runtimeType","NativeFloat64List.runtimeType","NativeInt16List.runtimeType","NativeInt16List.[]","NativeInt32List.runtimeType","NativeInt32List.[]","NativeInt8List.runtimeType","NativeInt8List.[]","NativeUint16List.runtimeType","NativeUint16List.[]","NativeUint32List.runtimeType","NativeUint32List.[]","NativeUint8ClampedList.runtimeType","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.runtimeType","NativeUint8List.length","NativeUint8List.[]","Rti._eval","Rti._bind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_Future._completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_Completer.completeError","_Completer.completeError[function-entry$1]","_AsyncCompleter.complete","_FutureListener.matchesErrorTest","_FutureListener.handleError","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._completeWithValue","_Future._completeWithResultOf","_Future._completeErrorObject","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteErrorObject","_Future._addListener.","_Future._prependListeners.","_Future._chainCoreFuture.","_Future._asyncCompleteWithValue.","_Future._asyncCompleteErrorObject.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_Future._newFutureWithSameType","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","_rootHandleError.","_RootZone.runGuarded","_RootZone.bindCallbackGuarded","_RootZone.run","_RootZone.run[function-entry$1]","_RootZone.runUnary","_RootZone.runUnary[function-entry$2]","_RootZone.runBinary","_RootZone.runBinary[function-entry$3]","_RootZone.registerBinaryCallback","_RootZone.registerBinaryCallback[function-entry$1]","_RootZone.bindCallbackGuarded.","ListBase.iterator","ListBase.elementAt","ListBase.cast","ListBase.toString","MapBase.forEach","MapBase.length","MapBase.toString","MapBase.mapToString.","_UnmodifiableMapMixin.[]=","MapView.[]","MapView.[]=","MapView.length","MapView.toString","SetBase.toString","SetBase.elementAt","_JsonMap.[]","_JsonMap.length","_JsonMap.keys","_JsonMap.[]=","_JsonMap.containsKey","_JsonMap.forEach","_JsonMap._computeKeys","_JsonMap._upgrade","_JsonMap._process","_JsonMapKeyIterable.length","_JsonMapKeyIterable.elementAt","_JsonMapKeyIterable.iterator","_Utf8Decoder._decoder.","_Utf8Decoder._decoderNonfatal.","Base64Codec.normalize","HtmlEscapeMode.toString","HtmlEscape.convert","HtmlEscape._convert","JsonCodec.decode","JsonCodec.decoder","Utf8Encoder.convert","NativeUint8List.sublist","_Utf8Encoder._writeReplacementCharacter","_Utf8Encoder._writeSurrogate","_Utf8Encoder._fillBuffer","Utf8Decoder.convert","_Utf8Decoder._convertGeneral","_Utf8Decoder._decodeRecursive","_Utf8Decoder.decodeGeneral","_Uri._makeQueryFromParameters.","_Enum.toString","Error.stackTrace","AssertionError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","OutOfMemoryError.toString","OutOfMemoryError.stackTrace","StackOverflowError.toString","StackOverflowError.stackTrace","_Exception.toString","FormatException.toString","Iterable.cast","Iterable.length","Iterable.elementAt","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.==","Object.toString","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","Uri.splitQueryString.","Uri._parseIPv4Address.error","Uri.parseIPv6Address.error","Uri.parseIPv6Address.parseHex","_Uri._text","_Uri._initializeText","_Uri._writeAuthority","_Uri.hashCode","_Uri.queryParameters","_Uri.userInfo","_Uri.host","_Uri.port","_Uri.query","_Uri.fragment","_Uri.replace","_Uri.isAbsolute","_Uri.hasAuthority","_Uri.hasQuery","_Uri.hasFragment","_Uri.toString","_Uri.==","_Uri._makeQueryFromParametersDefault.writeParameter","_Uri._makeQueryFromParametersDefault.","UriData.uri","UriData._computeUri","UriData.toString","_SimpleUri.hasAuthority","_SimpleUri.hasPort","_SimpleUri.hasQuery","_SimpleUri.hasFragment","_SimpleUri.isAbsolute","_SimpleUri.scheme","_SimpleUri._computeScheme","_SimpleUri.userInfo","_SimpleUri.host","_SimpleUri.port","_SimpleUri.path","_SimpleUri.query","_SimpleUri.fragment","_SimpleUri.queryParameters","_SimpleUri.replace","_SimpleUri.hashCode","_SimpleUri.==","_SimpleUri.toString","promiseToFuture.","NullRejectionException.toString","Kind._enumToString","Kind.toString","_MatchPosition._enumToString","Index.find","ListIterable.toList","JSArray.map","Index.find.score","Index.find.","IndexItem._scope","_htmlBase.","init.disableSearch","print","init.","init_closure","Index.fromJson","ListBase.map","_Search.listBox","_Search.moreResults","_Search.searchResults","_Search.initialize","_Search.showSearchResultPage","HTMLElement|constructor#section","HTMLHeadingElement|constructor#h2","JsLinkedHashMap.isNotEmpty","_Search.hideSuggestions","_Search.updateSuggestions","JsLinkedHashMap.values","_Search.showSuggestions","_Search.showEnterMessage","_Search.updateSuggestions[function-entry$2]","_Search.handleSearch","_Search.handleSearch[function-entry$1$isSearchPage]","_Search.handleSearch[function-entry$1]","_Search.handleSearch[function-entry$1$forceUpdate]","_Search.clearSearch","_Search.setEventListeners","_Search.initialize.","ElementExtension.acceptsInput","_Search.setEventListeners.","_createSuggestion.","_highlight.","_initializeToggles.","_loadSidebar.","_loadSidebar_closure","init.switchThemes","DART_CLOSURE_PROPERTY_NAME","_safeToStringHooks","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","_Utf8Decoder._reusableBuffer","_Utf8Decoder._decoder","_Utf8Decoder._decoderNonfatal","_Base64Decoder._inverseAlphabet","_Uri._needsNoEncoding","_Uri._useURLSearchParams","_hashSeed","_htmlBase","","$intercepted$$eq$Iu","$intercepted$__$asx","$intercepted$cast10$ax","$intercepted$compareTo1$ns","$intercepted$contains1$asx","$intercepted$elementAt1$ax","$intercepted$get$hashCode$IJavaScriptBigIntJavaScriptSymbolLegacyJavaScriptObjectabnsu","$intercepted$get$iterator$ax","$intercepted$get$length$asx","$intercepted$get$runtimeType$Ibdinsux","$intercepted$toString0$IJavaScriptBigIntJavaScriptFunctionJavaScriptSymbolLegacyJavaScriptObjectabnsux","ArrayIterator","AsyncError","Base64Codec","Base64Encoder","BoundClosure","ByteBuffer","ByteData","CastIterator","CastList","Closure","Closure0Args","Closure2Args","CodeUnits","Codec","ConstantMap","ConstantSet","ConstantStringMap","ConstantStringSet","Converter","EfficientLengthIterable","EnclosedBy","Encoding","Error","ExceptionAndStackTrace","FixedLengthListMixin","Float32List","Float64List","Function","Future","HtmlEscape","HtmlEscapeMode","Index","IndexError","IndexItem","Index_find_closure","Index_find_score","Int16List","Int32List","Int8List","Interceptor","Iterable","IterableExtensions|get#firstOrNull","JSAnyUtilityExtension|instanceOfString","JSArray","JSArraySafeToStringHook","JSBool","JSInt","JSNull","JSNumNotInt","JSNumber","JSObject","JSString","JSSyntaxRegExp","JSUnmodifiableArray","JS_CONST","JavaScriptBigInt","JavaScriptFunction","JavaScriptIndexingBehavior","JavaScriptObject","JavaScriptSymbol","JsLinkedHashMap","JsonCodec","JsonDecoder","Kind","LateError","LegacyJavaScriptObject","LinkedHashMapCell","LinkedHashMapKeyIterator","LinkedHashMapKeysIterable","LinkedHashMapValueIterator","LinkedHashMapValuesIterable","List","ListBase","ListIterable","ListIterator","Map","MapBase","MapBase_mapToString_closure","MapView","MappedListIterable","Match","NativeArrayBuffer","NativeByteBuffer","NativeByteData","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeTypedData","NativeUint16List","NativeUint32List","NativeUint8ClampedList","Null","NullError","NullRejectionException","NullThrownFromJavaScriptException","Object","OutOfMemoryError","PlainJavaScriptObject","RangeError","Record","RegExpMatch","Rti","RuntimeError","SafeToStringHook","SentinelValue","SetBase","StackOverflowError","StackTrace","StaticClosure","String","StringBuffer","TearOffClosure","TrustedGetRuntimeType","TypeError","TypeErrorDecoder","Uint16List","Uint32List","Uint8ClampedList","Uint8List","UnknownJavaScriptObject","UnknownJsTypeError","UnmodifiableListBase","UnmodifiableListMixin","UnmodifiableMapView","Uri","UriData","Uri__parseIPv4Address_error","Uri_parseIPv6Address_error","Uri_parseIPv6Address_parseHex","Uri_splitQueryString_closure","Utf8Codec","Utf8Decoder","Utf8Encoder","_#fromMap#tearOff","_AllMatchesIterator","_AsyncAwaitCompleter","_AsyncCallbackEntry","_AsyncCompleter","_AsyncRun__initializeScheduleImmediate_closure","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_CastIterableBase","_CastListBase","_Completer","_DataUri","_EfficientLengthCastIterable","_Enum","_Error","_Exception","_FunctionParameters","_Future","_FutureListener","_Future__addListener_closure","_Future__asyncCompleteErrorObject_closure","_Future__asyncCompleteWithValue_closure","_Future__chainCoreFuture_closure","_Future__prependListeners_closure","_Future__propagateToListeners_handleError","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_JS_INTEROP_INTERCEPTOR_TAG","_JsonMap","_JsonMapKeyIterable","_KeysOrValuesOrElementsIterator","_MatchImplementation","_MatchPosition","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_Record","_Record2","_Record_2_item_matchPosition","_RootZone","_RootZone_bindCallbackGuarded_closure","_Search_initialize_closure","_Search_setEventListeners_closure","_SimpleUri","_StackTrace","_StreamIterator","_StringStackTrace","_TimerImpl_internalCallback","_TypeError","_UnmodifiableMapMixin","_UnmodifiableMapView&MapView&_UnmodifiableMapMixin","_Uri","_Uri__makeQueryFromParametersDefault_closure","_Uri__makeQueryFromParametersDefault_writeParameter","_Uri__makeQueryFromParameters_closure","_Utf8Decoder","_Utf8Decoder__decoderNonfatal_closure","_Utf8Decoder__decoder_closure","_Utf8Encoder","_Zone","__CastListBase&_CastIterableBase&ListMixin","_awaitOnObject_closure","_canonicalRecipeJoin","_canonicalRecipeJoinNamed","_canonicalizeScheme","_chainCoreFuture","_checkPadding","_checkZoneID","_compareAny","_computeFieldNamed","_computeSignatureFunction","_computedFieldKeys","_containerMap","_convertInterceptedUint8List","_create1","_createFutureOrRti","_createGenericFunctionRti","_createQuestionRti","_createSuggestion_closure","_current","_decoder","_decoderNonfatal","_defaultPort","_empty","_escapeChar","_escapeScheme","_fail","_getCanonicalRecipe","_getFutureFromFutureOr","_hexCharPairToByte","_highlight_closure","_htmlBase_closure","_identityHashCodeProperty","_initializeScheduleImmediate","_initializeToggles_closure","_installTypeTests","_interceptorFieldNameCache","_interceptors_JSArray__compareAny$closure","_internal","_inverseAlphabet","_isAlphabeticCharacter","_isInCallbackLoop","_isUnionOfFunctionType","_lastCallback","_lastPriorityCallback","_literal","_lookupBindingRti","_lookupFunctionRti","_lookupFutureOrRti","_lookupGenericFunctionParameterRti","_lookupGenericFunctionRti","_lookupInterfaceRti","_lookupQuestionRti","_lookupRecordRti","_lookupTerminalRti","_makeFragment","_makeHost","_makeNativeUint8List","_makePath","_makePort","_makeQuery","_makeQueryFromParameters","_makeQueryFromParametersDefault","_makeScheme","_makeUserInfo","_mayContainDotSegments","_needsNoEncoding","_nextCallback","_normalize","_normalizeEscape","_normalizeOrSubstring","_normalizePath","_normalizeRegName","_normalizeRelativePath","_normalizeZoneID","_of","_parse","_parseIPv4Address","_propagateToListeners","_receiverFieldNameCache","_removeDotSegments","_reusableBuffer","_rootHandleError_closure","_scheduleImmediateClosure","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_stringFromUint8List","_suggestionLength","_suggestionLimit","_throw","_throwUnmodifiable","_uriDecode","_uriEncode","_useTextDecoder","_useURLSearchParams","_validateIPvAddress","_validateIPvFutureAddress","_wrapJsFunctionForAsync_closure","_writeAll","addErasedTypes","addRules","alternateTagFunction","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","async___startMicrotaskLoop$closure","bind","bool","checkNotNegative","checkValidRange","collectArray","combine","compose","create","cspForwardCall","cspForwardInterceptedCall","current","defaultStackTrace","dispatchRecordsForInstanceTags","double","errorDescription","eval","evalInEnvironment","evalRecipe","extractPattern","extractStackTrace","fieldADI","filled","findErasedType","findRule","finish","fixed","forType","forwardCallTo","forwardInterceptedCallTo","from","fromCharCodes","fromTearOff","getInterceptor$","getInterceptor$asx","getInterceptor$ax","getInterceptor$ns","getTagFunction","growable","handleArguments","handleDigit","handleExtendedOperations","handleIdentifier","handleTypeArguments","hash","indexToType","initHooks_closure","initNativeDispatchFlag","init_disableSearch","init_switchThemes","int","interceptorOf","interceptorsForUncacheableTags","iterableToFullString","iterableToShortString","makeNative","mapToString","markFixed","newArrayOrEmpty","noElement","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","nullLiteralPropertyPattern","nullPropertyPattern","num","objectAssign","objectTypeName","parse","parseIPv6Address","parseInt","promiseToFuture_closure","prototypeForTagFunction","provokeCallErrorOn","provokePropertyErrorOn","range","receiverOf","safeToString","search_IndexItem___fromMap_tearOff$closure","splitQueryString","stringFromCharCode","stringFromNativeUint8List","throwWithStackTrace","toStringVisiting","toType","toTypes","toTypesNamed","tryParse","trySetStackTrace","undefinedCallPattern","undefinedLiteralCallPattern","undefinedLiteralPropertyPattern","undefinedPropertyPattern","value","withLength","$eq","$index","$indexSet","$mod","$mul","bindCallbackGuarded","call","cast","clear","clearSearch","compareTo","complete","completeError","contains","containsKey","convert","dart:_interceptors#_replaceSomeNullsWithUndefined","dart:_interceptors#_shrBothPositive","dart:_interceptors#_shrOtherPositive","dart:_interceptors#_shrReceiverPositive","dart:_interceptors#_tdivFast","dart:_interceptors#_tdivSlow","dart:_internal#_source","dart:_js_helper#_addHashTableEntry","dart:_js_helper#_computeFieldKeys","dart:_js_helper#_execGlobal","dart:_js_helper#_fieldKeys","dart:_js_helper#_getFieldValues","dart:_js_helper#_keys","dart:_js_helper#_modified","dart:_js_helper#_nativeGlobalVersion","dart:_js_helper#_newHashTable","dart:_js_helper#_newLinkedCell","dart:_js_helper#_toString","dart:_rti#_bind","dart:_rti#_eval","dart:async#_addListener","dart:async#_asyncComplete","dart:async#_asyncCompleteErrorObject","dart:async#_asyncCompleteWithValue","dart:async#_chainFuture","dart:async#_cloneResult","dart:async#_completeErrorObject","dart:async#_completeWithResultOf","dart:async#_completeWithValue","dart:async#_prependListeners","dart:async#_removeListeners","dart:async#_reverseListeners","dart:async#_setErrorObject","dart:async#_thenAwait","dart:convert#_computeKeys","dart:convert#_convert","dart:convert#_convertGeneral","dart:convert#_decodeRecursive","dart:convert#_fillBuffer","dart:convert#_process","dart:convert#_upgrade","dart:convert#_writeReplacementCharacter","dart:convert#_writeSurrogate","dart:core#_computeScheme","dart:core#_enumToString","dart:core#_errorExplanation","dart:core#_errorName","dart:core#_text","decode","decodeGeneral","decoder","elementAt","end","find","fold","forEach","fragment","handleError","handleSearch","hasAuthority","hasFragment","hasPort","hasQuery","hashCode","hideSuggestions","host","indexOf","initialize","internalComputeHashCode","internalFindBucketIndex","internalGet","invalidValue","isAbsolute","isNegative","iterator","join","keys","last","length","listBox","matchTypeError","matchesErrorTest","moreResults","moveNext","normalize","package:dartdoc/src/search.dart#_scope","path","port","query","queryParameters","registerBinaryCallback","replace","replaceRange","run","runBinary","runGuarded","runUnary","runtimeType","scheme","searchResults","setEventListeners","showSearchResultPage","sort","stackTrace","startsWith","sublist","substring","then","toString","tryFormat","updateSuggestions","uri","userInfo","_Universe._canonicalRecipeOfQuestion","_Universe._canonicalRecipeOfFutureOr","_Universe._canonicalRecipeOfBinding","_Universe._canonicalRecipeOfGenericFunction","isBottomType","Error._stringToSafeString","_Utf8Encoder.withBufferSize","_Utf8Encoder._createBuffer","-","ElementExtension|get#acceptsInput","JSObjectUnsafeUtilExtension|[]","JSObjectUnsafeUtilExtension|getProperty","JSPromiseToFuture|get#toDart","_","_asCheck","_asyncCompleteError","_callMethodUnchecked0","_callMethodUnchecked1","_callMethodUnchecked2","_canonicalRecipeOfBinding","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_canonicalRecipeOfFutureOr","_canonicalRecipeOfGenericFunction","_canonicalRecipeOfInterface","_canonicalRecipeOfQuestion","_canonicalRecipeOfRecord","_chainSource","_cloneResult","_combineSurrogatePair","_completeError","_completeErrorObject","_computeIdentityHashCodeProperty","_computeUri","_containsTableEntry","_createBindingRti","_createBuffer","_createFunctionRti","_createGenericFunctionParameterRti","_createInterfaceRti","_createLength","_createRecordRti","_createTerminalRti","_createTimer","_equalFields","_error","_errorTest","_findRule","_future","_getBindCache","_getBindingArguments","_getBindingBase","_getBucket","_getCachedRuntimeType","_getEvalCache","_getFunctionParameters","_getFutureOrArgument","_getGenericFunctionBase","_getGenericFunctionBounds","_getGenericFunctionParameterIndex","_getInterfaceName","_getInterfaceTypeArguments","_getIsSubtypeCache","_getKind","_getNamed","_getOptionalPositional","_getPrimary","_getProperty","_getQuestionArgument","_getRecordFields","_getRecordPartialShapeTag","_getRequiredPositional","_getReturnType","_getRti","_getRuntimeTypeOfArrayAsRti","_getSpecializedTestResource","_getTableBucket","_getTableCell","_hasError","_hasProperty","_hasTimer","_initializeText","_installRti","_isChained","_isCheck","_isClosure","_isComplete","_isDartObject","_isDotAll","_isFile","_isGeneralDelimiter","_isHttp","_isHttps","_isLeadSurrogate","_isMultiLine","_isPackage","_isRegNameChar","_isSchemeCharacter","_isTrailSurrogate","_isUnicode","_isUnreservedChar","_isUpgraded","_isZoneIDChar","_keys","_keysFromIndex","_lookupAnyRti","_lookupDynamicRti","_lookupErasedRti","_lookupFutureRti","_lookupNeverRti","_lookupVoidRti","_mayAddListener","_mayComplete","_microtaskEntryCallback","_name","_newFutureWithSameType","_newJavaScriptObject","_objectToString","_onError","_onValue","_parseRecipe","_processed","_recipeJoin","_removeListeners","_rtiBind","_rtiEval","_sameShape","_scheduleImmediate","_setAsCheckFunction","_setBindCache","_setCachedRuntimeType","_setCanonicalRecipe","_setChained","_setErrorObject","_setEvalCache","_setIsTestFunction","_setKind","_setNamed","_setOptionalPositional","_setPrecomputed1","_setPrimary","_setPropertyUnchecked","_setRequiredPositional","_setRest","_setSpecializedTestResource","_setValue","_shapeTag","_specializedAsCheck","_startsWithData","_stringToSafeString","_target","_trySetStackTrace","_upgradedMap","_whenCompleteAction","_writeAuthority","_writeOne","_writeString","_zone","allocate","allocateGrowable","arrayAt","arrayConcat","arrayLength","arraySplice","asBool","asBoolOrNull","asInt","asRti","asRtiOrNull","asString","as_Type","castFrom","charCodeAt","checkGrowable","checkMutable","checkString","codeUnits","collectNamed","compare","constructorNameFallback","convertSingle","decodeQueryComponent","defineProperty","dispatchRecordExtension","dispatchRecordIndexability","dispatchRecordInterceptor","dispatchRecordProto","encode","encodeQueryComponent","environment","erasedTypes","evalCache","evalTypeVariable","fromCharCode","fromJson","fromList","fromMap","fromMessage","future","getDispatchProperty","getIndex","getLength","getProperty","getRuntimeTypeOfInterceptorNotArray","group","handleNamedGroup","handleOptionalGroup","handleStartRecord","handleUncaughtError","handleValue","handleWhenComplete","handlesComplete","handlesValue","hasErrorCallback","hasErrorTest","hasMatch","hasScheme","hash2","hash3","hash4","identityHashCode","interceptorFieldName","internalSet","isArray","isDigit","isEmpty","isNaN","isNotEmpty","isUnicode","jsHasOwnProperty","jsonDecode","jsonEncodeNative","listToString","lookupSupertype","lookupTypeVariable","map","mapGet","mapSet","markFixedList","markGrowable","notSimple","objectKeys","objectToHumanReadableString","of","parseHexByte","pop","position","printToConsole","propertyGet","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","push","pushStackFrame","receiverFieldName","recipe","removeSelectedElement","replaceAllMapped","scheduleMicrotask","setToString","sharedEmptyArray","shouldChain","showEnterMessage","showSuggestions","splitMapJoin","stack","start","stringConcatUnchecked","stringIndexOf","stringIndexOfStringUnchecked","stringReplaceRangeUnchecked","stringSafeToString","stringSplit","suggestionElements","suggestionsInfo","thenAwait","toGenericFunctionParameter","toList","toLowerCase","toUpperCase","tryStringifyException","typeRules","typed","universe","unmangleGlobalNameIfPreservedAnyways","unmodifiable","values","withBufferSize","write","writeAll","writeCharCode","zone"], + "mappings": "A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqGAA,UA6BEA,uBAQFA,C;EASAC,qBAjESA;AAoEPA,eACMA,WACFA;GAtEGA,yBA2EPA,eAhB6BA;AAkB3BA,UAAoBA,QAnBaA,EA0ErCA;AAtDIA,UAAmBA,QAsDvBA;AArDsBA;AAClBA,SACEA,QAvB+BA,EA0ErCA;IAxEmCA,OA8B7BA,UAAMA,+BAA4CA,IAD3BA,aAOTA;WAEdA;QAuCGC;WCo7FAC;GD96FDF,IA7CNA,WAAyBA,QAkC3BA;AA9BgBA;AACdA,WAAyBA,QA6B3BA;AAvBEA,wBAIEA,QAHcA,EAsBlBA;AAjBcA;AACZA,WAEEA,QAIcA,EAUlBA;wBAPIA,QAHcA,EAUlBA;AALEA,4BAUOG;WCo7FAD;ACxkGPC,kCF8IOH;AAFLA,QAEKA,EACTA,CADEA,QAAOA,EACTA,C;EG9LUI,MAWNA,qBACEA,UAAiBA;AAEnBA,OAAOA,KAAqBA,eAC9BA,C;EAmCQC,MAGNA,OACEA,UAAMA;AAERA,OAsCEA,IANiCC,yBA/BrCD,C;EAiCQE,MACkCA;AC5BQC;AD4B9CD,QAAoEA,C;EA0hB7DC,MACTA,gBACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEvkBQC,QACKA,YACTA,OAUJA,yCAPAA;AADEA,OANFA,yCAOAA,C;EC5DAC,6EAC4EA,C;ECmG1EC,IAKEA;AACJA,QAAgBA,QAIlBA;AAHgBA;AACdA,iBAAgCA,WAElCA;AADEA,QACFA,C;EAuDaC,MACFA;AACAA;AACPA,cACFA,C;EAEWC,IACFA;AACAA;AACPA,kCACFA,C;EA8oBAC,QAIAA,QACFA,C;EAsRKC,IACHA;OAAoBA,GAAiBA,YAArCA,QC7fAC,QD6foBD,GACIA,IAAsBA,QAGhDA;AADEA,QACFA,C;EExDoBC,GAAeA,6BAAwBA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECpgC5CC,GACXA,UAAMA,uCACRA,C;ETmDKC,8BUjFEA;AVmFPA,WAAuBA,QAGzBA;AAF+BA,mBAE/BA,C;EA6BKC,MACHA;eDK0CA;ACHxCA,WAAoBA,QAGxBA,CADEA,OAAcA,QAChBA,C;CAEOC,IACLA;sBAAqBA,QAsBvBA;AArBEA,uBACEA,SAEEA,UAkBNA,MAhBSA,UACLA,YAeJA;KAdSA,UACLA,aAaJA;KAZSA,WACLA,YAWJA;AATeA;AAQbA,QACFA,C;EA0JaC,aACSA;WAWhBA;GATUA;AACZA;OAIAA,QACFA,C;EAKYC,+EAGIA;AAIdA,WAIEA,QA0DJA;GAxDyBA;AACvBA,YACEA,WAEEA,OAAOA,cAoDbA;AAhDaA,IAFLA,UAEFA,qBAgDNA;AA9CIA,QA8CJA,CAxCEA,aACEA,UAAiBA;AAEnBA,mBAEEA,OAAOA,cAmCXA;AA/BEA;GAoBsBA;OACWA,YAA/BA,QACsBA,0BAElBA,QAORA,CADEA,OAAOA,aACTA,C;EAiEcC,IACRA;AWm5C0BC,iBXn5CFD,GAK1BA,WW65G2BE,aXz3G/BF;AAjCoBA;AAGPA,QAFgBA,SACAA,cCtNtBA,GAGLA;ADsOEA,wBAAwCA,QAY5CA;GAXsBA;AAClBA,4BACwBA;AACtBA,4CAEEA,QAMRA,EADEA,OW22C8BC,IA+gEDC,aXz3G/BF,C;EAecG,IACZA;AAA8CA,wCAC5CA,OAAOA,OAqBXA;AAnBEA,sBACEA,OAgnFGC,iBA9lFPD;AAdWA,qBAAPA,aAcJA;AAXWA,qBAAPA,eAWJA;AARgBA;AAEdA,iBACkCA,GAALA;AAC3BA,WAAwBA,QAI5BA,CADEA,sBA9BcA,WA+BhBA,C;EA0FcE,QAMZA;AACSA,uBAD8CA,QACrDA,wCAeJA;AAZEA,sBACkBA;AAOdA;mDAGJA,QACFA,C;CAGcC,IACZA;SACEA,YACEA,OAAOA,sBAmBbA;AAbIA,eACaA;AAGXA,OAAOA,qBADcA,qCAU3BA,EADEA,UAAiBA,2BACnBA,C;EAyiBmBC,WACHA;AACdA,WAAqBA,WAEvBA;AADEA,OAAOA,OACTA,C;EAEYC,MACNA;IAAUA,uBAEFA;AACVA;;AAEmCA,eAEvCA,C;EAuCIC,MACJA;YAAmBA,OOnkCnBA,oBPklCFA;AAdyBA;AAIvBA,aACEA,OAAkBA,aAStBA;AADEA,OAAkBA,SACpBA,C;EAKMC,QAIJA,OACEA,OAAkBA,uBAYtBA;AAVEA,WAIEA,YACEA,OAAkBA,qBAKxBA;AADEA,OOvmCAA,wBPwmCFA,C;EAOcC,IACZA,OOhnCAA,uBPinCFA,C;CAkCAC,IAEEA,OAAOA,MADSA,YAElBA,C;CAOAC,MACEA;WO1tCIA;;;AP8tCJA,+BAKEA;eAoBKC;AAPPD,QACFA,C;EAGAC,GAGEA,gBAAOA,eACTA,C;EAOMC,MAEJA,MAAyBA,cADbA,cAEdA,C;EAYMC,QAKMA;WAAIA;;AAEEA;AAChBA,KAAgBA,cAClBA,C;EAGMC,QAKGA;AAGPA,sBA8CkBA;2IA3CFA;GACIA;AACNA;AACZA,QAIgBA;AACNA,QAGEA,uDAMEA,UAEPA;AAMHA;;AAFWA;AASjBA,aAEcA;KACPA,cAEOA;AADFA;AAQZA,OO15BAA,wCP25BFA,C;EAuBAC,IACEA,UAAMA,QACRA,C;CAyKSC,IAULA;AAIUA,OAJAA;AASYA;AAKtBA,WAA2BA;AAKXA;AACIA;AACTA;AACEA;AACEA;AAkBfA,OApIFA,mRAuHmBA,4EAqBnBA,C;EAMcC,IAmDZA,OAReA;gEAQRA,GACTA,C;EAkCcC,IASZA,OAPeA,gEAORA,GACTA,C;EA8CAC,8BACqCA;AADrCA,4BAEuCA,UAFvCA,AAE6EA,C;EAgDxEC,IAGLA,WACEA,OA9BFA,WA4CFA;AAVWA,qBAAPA,eAA6BA,GAUjCA;AANEA,uBAA6CA,QAM/CA;AAJEA,wBACEA,OAAOA,QAAmBA,eAG9BA;AADEA,OAAOA,OACTA,C;EAKOC,MACKA,gBACeA;AAKzBA,QACFA,C;EAEOC,IACLA;qBACEA,QA0GJA;GAtGgBA;gDAMCA;AAKKA;AACMA,4BAKtBA,mBAEIA,OAAOA,OAELA,KAAsBA,8BAiFlCA;mBA7EgDA;AAAtCA,OAAOA,OA9HfA,WA2MFA,EAxEEA,2BAE8BA;AACMA;AACFA;AACOA;AACNA;AACOA;AACJA;AACOA;AACNA;AACOA;AAC/BA;AAAbA,WACEA,OAAOA,OAAmBA,UA2DhCA;KA1DwBA;AAAbA,YAMEA;AAAPA,cAA0BA,UAoDhCA,MAnDwBA,iBACPA,cACAA,cACAA,cACAA,cACAA,cACAA,cACAA,aACXA,OAAOA,OAhKXA,WA2MFA,CArCIA,OAAOA,OAzITA,kCA8KFA,CA/BEA,4BCzgEOA,oDD2gEHA,OOn4CEA,UPg6CRA;yDAMSA;AAxBLA,OAAOA,OOp2DTA,wCPk2DcA,mCAoBhBA,CAdEA,gEAKEA,gDACEA,OOx5CEA,UPg6CRA;AADEA,QACFA,C;EAkBWC,IACTA;qBACEA,QAAiBA,EAiBrBA;AAfEA,WAAuBA,OAoBvBA,WALFA;GAduBA;AACrBA,WAAmBA,QAarBA;AAKEA;AAVAA;AAIAA,QACFA,C;EAwBIC,IAEFA,WAAoBA,OAAcA,MAMpCA;AALEA,sBACEA,OAAkBA,OAItBA;AADEA,OAAcA,MAChBA,C;EAsBAC,mBA+CSA;AA1CPA,iBACoCA;AACEA;AACpCA,OAkCKA,UAhCPA,QACFA,C;EAuCAC,cAQEA,iBAEIA,OAAOA,MAWbA;OATMA,OAAOA,OASbA;OAPMA,OAAOA,SAObA;OALMA,OAAOA,WAKbA;OAHMA,OAAOA,aAGbA,CADEA,UYprEAC,gEZqrEFD,C;EAIAE,aAEiBA;AACfA,OAAkCA,QAIpCA;AAHaA;;AAEXA,QACFA,C;EAEAC,MAOUA;AACRA,oBAEYA;AADVA;UAGUA;AADVA;UAGUA;AADVA;UAGUA;AADVA;UAGUA;AAVZA;QAYIA,OAAJA,WACEA,OAAOA,SA2BXA;AAZEA,uEAAOA,UAYTA,C;EA4BSC,iCAaeA,QAOJA,QAMKA,QAMIA,SAMEA,QAOLA,QAMFA,OAUNA,OACKA,QACAA,SAMIA;EAKtBA;AA6BKA,kBA2eEA,kCAteFA,cA0gBRA;eApgB0CA;AAmBDA,IAbjCA,+CAEAA;;;;;AAoBFA;AAAJA,KACeA;;AAwBOA,KAbEA;;AAgBxBA,eAAgCA,QAAhCA,QACiBA;AAGfA,0BAESA;AASHA;AACAA,SAbYA;GAMKA;AAGvBA,YACEA,KACSA;OASXA;OAc+BA;OASQA;AAczCA,QACFA,C;EAEOC,QAKLA,sBAEEA,QAqBJA;AAnBEA,uBAEEA,KAEEA;AAGFA,yDAAOA,QAYXA,CADEA,6CACFA,C;EAEOC;AAqBLA,sBAEIA,4DAAOA,KA8EbA;OAnEMA,8DAAOA,KAmEbA;OAxDMA,kEAAOA,KAwDbA;OA7CMA,sEAAOA,KA6CbA;OAlCMA,0EAAOA,KAkCbA;OAvBMA,8EAAOA,KAuBbA;QAXMA,0EAAOA,KAWbA,E;EAIOC,UAMLA,KACEA,OAAOA,WAiCXA;AA7BIA,OAAOA,MAHGA,cAgCdA,C;EAEOC;AAULA,sBAIIA,UA6YNA;OA3YMA,qEAAOA,OAsFbA;OA1EMA,wEAAOA,OA0EbA;OA9DMA,4EAAOA,OA8DbA;OAlDMA,gFAAOA,OAkDbA;OAtCMA,oFAAOA,OAsCbA;OA1BMA,wFAAOA,OA0BbA;QAdMA;;2BAAOA,OAcbA,E;EAEOC,QAKEA;IA0JLA,UAA+BA;IAJ/BA,UAA4BA;GApJlBA;AAIHA;AAAPA,QA+BJA,C;EAyBFC,IACEA,OAAeA,OACjBA,C;EAwESC,MACLA,OW59EeC,oBAkDDD,MX06EoBA,MACpCA,C;EAIOE,IAAoCA,QAAQA,EAASA,C;EAIrDC,IAAuCA,QAAQA,EAAYA,C;EAYpDC,IA/CdA,iDAkDIA;;AE11FKA;OF41FmBA,YAA1BA,YACaA;YAETA,QAINA,CADEA,UAAMA,wCACRA,C;EAgLKC,IAELA,OAAOA,kBACTA,C;ECz/FAC,IAE6BA,iBAAdA,aAIYA,GApIlBA;AAqIPA,YAvFAC;AAuFoBD,QFlBeE,EEqFrCF,IAlEgCA,GAtIvBA;AAuIPA,WAAyBA,QAiE3BA;qBAxMSG;AA4IPH,YACuCA,GAApBA;AACjBA,eAGuBA,GAjJlBA;AAkJHA,YApGJC;AAoGwBD,QF/BWE,EEqFrCF,IArDgCA,GAnJvBA;AAoJHA,WAAyBA,QAoD/BA;qBAxMSG;KA0JPH,WAQEA,WAsCJA;GAnCgBA;GAEHA;AAEXA,YACWA;CACGA;AA7HdC;AA8HED,QFzDiCE,EEqFrCF,CAzBEA,aACcA;AACZA,QAuBJA,CApBEA,YACyBA;AAvIzBC,sBAkKoBD;AA3BlBA,QFlEiCI,EEqFrCJ,CAhBEA,WACEA,OAAOA,SAeXA;AAZEA,WAEEA,UAAMA;yBAMiBA;AAtJzBC,sBAkKoBD;AAZlBA,QFjFiCI,EEqFrCJ,MAFIA,OAAOA,SAEXA,C;EAYAK,MACcA;AAvKZJ,sDAwKaI;AAEbA,QACFA,C;EAEAC,IAGEA,OAAOA,uBACTA,C;EAEAC,eACoBA;AAGTA,wBAAPA,cAIJA;KAFIA,OAAOA,mBAEXA,C;EAoBKC,YACSA,IAAwBA,MAGtCA;;AADEA,MACFA,C;EAGKC,GACHA;AAAiCA;AACAA;AAEjCA;;AAMeA;AAEfA,+BACgBA;AACJA;AACVA,WAAyBA,QAAzBA,QACYA;AACyBA,GAAvBA;AACZA,YAEeA,UADUA;AAEvBA,YA3ONR;iBAuPAQ,WAAyBA,QAAzBA,QACYA;gBACNA,YAvSCA;;;;;YAgTTA,C;EAmCKC,GAESA,mBAAcA;AAqBlBA,QACNA,GALMA,MAAsBA,GAFtBA,MADsBA,GAAtBA,MAAsBA,GADtBA,MAAsBA,GADtBA,MAAsBA,GAHtBA,KANmCA,CAGzCA,IACAA;AAwBFA,2DACqBA;AACnBA,wBAGmCA;AAA/BA,oBACFA,WAAoBA,QAApBA,QACoBA;AAClBA,wBAmBSA,cAZFA;GACOA;GACEA;AAELA;AACMA;AAEGA,gBAE5BA,C;EAEAC,MAEEA,OADeA,OAEjBA,C;EYnJQC,aAGeA,gBAKJA;AAEjBA,WAGEA,WAsBJA;AAnBEA,SACEA,QAkBJA;AANWA,QAFWA,QAElBA,sBAMJA;AADEA,OAAOA,IACTA,C;ECnOSC,4HAeQA;AAiBbA,uBAA+CA,QAKjDA;AADEA,UAAMA,+BADgBA,sBAExBA,C;ECAGC,QAjHIC;AAmHLD,WAOJA,C;EAyCAE,4BAGMA,QACFA,OAAOA,uCAGXA;AADEA,QACFA,C;EA2FOC,IAAkCA,QAAMA,C;EAExCC,UDmBLC;KCKAD,WDH2BA;WAASA;GArEgCA;GAAhEA;AEkUaA,QDzPFA,KAAWA,eCyPTA,IDxPFA;QDtEHA,QE8TKA,QDrPJA,KAAWA;AACxBA,6BACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEu8BME;EAnrBDC,IACsBA,QAM3BA,C;EA2qBwBD,IAClBA,uBAA6CA,C;EAgMzCE,IAA+BA,OAuCUA,iBAvCyBA,C;EAuyBvEC,QACHA,mBACEA,UAAMA,UAEVA,C;EASIC,QACFA;AAAgCA,gBAGoBA;KAHpBA;AAAhCA,KAIEA,UAAMA;AAGRA,QACFA,C;;;;;;;;;;;;;;;;;;;;EN9mEaC,MAi7EPA,OAk0CkCA;AA5uHpCA,gBAVIA,gBAqvHyBC,MA1uH/BD,C;EAyEYE,WA6pHmBC;AA3pH7BD,gBACEA,OAAOA,MA8pHoBA,GA3pH/BA;AADEA,qBACFA,C;EAgJcE,IAGZA,QAsgHmCA,GArgHrCA,C;EAkJEC,IASFA,OAAiBA,yBACnBA,C;EA8EIC,6DAyxG6BH;AAvxG/BG,8CAMIA,SAsINA;WA+oGiCA;AAlxGDA;AAM1BA,SAAuDA,SA6H7DA;AA5HMA,OAAiBA,aA4HvBA;WA+oGiCA;AAxwGDA;AAM1BA,SAAuDA,SAmH7DA;AAlHMA,OAAiBA,aAkHvBA;WAheWA;AAiXmCA;AAMxCA,SAIEA,SAqGRA;AAnGMA,OAAiBA,UAgvGgBC,KA7oGvCD;WA+oGiCE;AA3uGLF;IA1XjBA;AA4XsBA;AAM3BA,gBAEEA,SAkFRA;AAhFMA,OAAiBA,YAgFvBA;YA7f6CG;IAiDlCH;AAoYmBA;AAMxBA,SAAmDA,SAkEzDA;AAjEMA,OAAiBA,YAiEvBA;YA+oGiCI;AA7sGCJ;IA1XvBA;AAkYDA;AAMJA,gBAKEA,SA2CRA;AAzCMA,OAAiBA,YAyCvBA;YA9aWA;KAomHgCA;AAvtGbA;IAgrGGK;AAzqGLL;AACtBA,gBAEEA,SAuBRA;AArBMA,OAAiBA,eAqBvBA;YA2oGiCM;AAtpG3BN,QAAmBA,SAWzBA;IAwrGkDA;AA7rG5CA,WAAsBA,SAK5BA;AAJMA,QAINA;QAFMA,UAAMA,yDAEZA,C;EAEQO,UAQkBA,eA4qGiBA;AA3qGzCA,yBAooG+BA;AAloGRA;AACrBA,SACYA;OAIdA,YACFA,C;EAEQC,UASkBA,mBAupGiBA;AAtpGzCA,0BAwpGgDA;;GAzCjBA;AA3mGRA;AACrBA,SACYA;AAEZA,oBAWFA,YACFA,C;EAEoBC,UASkBA,SAjXhCA,sBAUAA,KAgXgCA,iBA5VhCA,KAmWmBA;AAMvBA,uBAGEA,QAaJA;AA5ZMC;CAUSD;CAUAA;CAiBAA;AAsXbA,QACFA,C;CAkBQE;AAINA,QACFA,C;EAKKC,WAEaA;AAChBA,YACEA,sBACEA,OAAOA,OAabA;AAJMA,OAggG2BA,MA5/FjCA,CADEA,WACFA,C;EAOIC,MACFA;AAAQA,4BA7CRA,KAkDeA;AACXA,WAAiBA,QAIvBA,CADEA,OAAOA,OACTA,C;EAKIC,IAUOA,iBA3ETA,GA2EEA,aASJA;AAu/FoCA,oBA5/FhCA,OAAOA,OAKXA;AADEA,OAAOA,KADWA,QAEpBA,C;EAIIC,WAiBQA;AAIVA,WAAiBA,QAUnBA;iCALIA,QAKJA;AADEA,QACFA,C;CAKIC,IAEuCA,OAD/BA;AACVA,wBACFA,C;EAOIC,WACgBA,gBACNA;AACZA,WAAmBA,QAErBA;AADEA,OAAOA,SACTA,C;EAGIC,0BAzIFA,mDA6JQA,iBAMUA,qBAEdA;;AAIJA,QACFA,C;EASIC,uBAu5F8CA;AAp5FhDA,uBAjgBiBA;AAghBVC;AAZLD,QAGJA,CADEA,QACFA,C;EAOKC,IAEHA,YADUA,OAEZA,C;EAyDIC,IACFA;AErjCaC,qBFqjCSD,aE3jCJC,IAMwBA,OF8jC5CD;AA1FyBA,gBA/KvBE;AAkQAF,WAAyBA,QAO3BA;AANaA,YAETA,OA8xFiCA,OA9xFLA,EAIhCA;AA6zFoCA,oBA/zFNA,OAxDlBA,OA0DZA;AADEA,OAAOA,OACTA,C;EAIKG,IAuCHC,OAx9BID;AAk7BJA,gBAh7BME,gBAi7BRF,C;EAQIG,qBAEoBA;AACtBA,SAAiBA,UAenBA;AAjqBmBA,sBAqpBfA,MAAkBA;AAOpBA,gBAppBiBA,wBAqpBeA,MAAkBA;AAGlDA,OAhqBiBA,wBAiqBnBA,C;CAGKC,IACHA,OAAOA,KAxnBUA,0BAynBnBA,C;EAuDKC,IAGCA;AACSA,CA9mCPA;AAgnCNA,OAtmCSA,MAumCXA,C;EAKQC,IACNA;WAA2BA,WAiD7BA;AA/CMA,WAAoBA,WA+C1BA;GA0nFiCjC;AArqF/BiC,SACEA,WA0CJA;AAvCEA,SACEA,WAsCJA;AAnCEA,SACEA,WAkCJA;AA/BqBA;AACnBA,WAAwBA,QA8B1BA;AA5BEA,aAwpFqC7B;AAjpF/B6B,IA59BGA,iBA5FHA;AA+jCFA,WACEA,WAaRA;WAVQA,WAURA;AARMA,WAQNA,OAJSA,WA8BmBA,QAkmFW3B,IAzlH5B4B;AA09BPD,qBAGJA,CADEA,WACFA,C;EAEQE,QAwnFyBnC,mBAnnF3BmC,WAcNA;oBAVMA,WAUNA;WAPMA,WAONA;WAJMA,WAINA,CADEA,WACFA,C;EAgBQC;AAWFA;;KAIOA;;;;;;;;;;;;AAvtCFA,CATHA;AAutCNA,aACFA,C;EA0CKC,IAGCA;AACJA,WAAoBA,OAAOA,OAG7BA;AADEA,OAAOA,oBADSA,YAElBA,C;EAQKC,IACHA,WAAoBA,QAMtBA;AADEA,OAzwCSA,IA4xHsBC,OAlhFjCD,C;EAGKE,IAGCA;AACJA,WAAoBA,OAAOA,OAY7BA;GAhtCeA;AA8sCKA,iBAriBlBA,GAkiBEA,YAKJA;AADEA,kBACFA,C;EAIKC,IAGCA;AACJA,WAAoBA,OAAOA,OAoB7BA;AAdEA,sBAAgDA,QAclDA;AAwgFoCA,oBAphFNA,QAY9BA;GA5uCeA;AA0uCKA,iBAjkBlBA,GA8jBEA,YAKJA;AADEA,kBACFA,C;EAMKC,IAGCA;AACJA,WAAoBA,QAwBtBA;AAvBEA,wCA9kBAA,GAulBIA,WAhwCSA,GA8wCfA;AAZIA,QAYJA,CAVEA,wBAOEA,QAGJA;AADEA,QACFA,C;EAMKC,IAEHA,uBAEkBA,iBA/mBlBA,GA+mBIA,eAWNA;AATIA,QASJA,CAPEA,wBAIEA,QAGJA;AADEA,QACFA,C;EAKQC,IAGFA;AACJA,YAEMA,WACFA,QAMNA,MAl4CWA,UA+3CPA,QAGJA;AADEA,UAAMA,UAANA,YACFA,C;EAKQC,IAGFA;AA14CKA,mBA44CPA,QAGJA;AADEA,UAAMA,UAANA,YACFA,C;EAEWC,MAETA,OAuCAA,uBAxCwBA,OA2XQA,aAzXlCA,C;EAwBgBC,MAIZA,OAHiCA,mBAgWHA,IA+gEDvH,kDAz2E/BuH,C;CASQC,MACNA,OAHFA,uBAGuCA,UACvCA,C;EAaGC,IACCA;AACJA,OA78CSA,CA4xHsBnD,SA90EVmD,uBA98CZA,IA+8CXA,C;EAIKC,IACHA,cACFA,C;EAKQC,IACNA,WAAoBA,QAEtBA;AADEA,UAAiBA,gBAAjBA,YACFA,C;EAIKC,IACHA,QACFA,C;EAIQC,IACNA,QACFA,C;EAIKC,IACHA,QACFA,C;EAIKC,IACHA,oBACFA,C;EAOKC,IACHA,UAAoBA,QAGtBA;AAFEA,UAAqBA,QAEvBA;AADEA,UAAiBA,cAAjBA,YACFA,C;EAKMC,IACJA,UAAoBA,QAItBA;AAHEA,UAAqBA,QAGvBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,eAAjBA,YACFA,C;EAKOC,IACLA,sBAAoBA,QAEtBA;AADEA,UAAiBA,gBAAjBA,YACFA,C;EAKQC,IACNA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,iBAAjBA,YACFA,C;EAIKC,IACHA,4CAEFA,C;EAKIC,6CACkBA,QAEtBA;AADEA,UAAiBA,aAAjBA,YACFA,C;EAKKC,6CACiBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cAAjBA,YACFA,C;EAIKC,IACHA,yBACFA,C;EAKIC,IACFA,sBAAoBA,QAEtBA;AADEA,UAAiBA,aAAjBA,YACFA,C;EAKKC,IACHA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cAAjBA,YACFA,C;EAIKC,IACHA,yBACFA,C;EAKOC,IACLA,sBAAuBA,QAEzBA;AADEA,UAAiBA,gBAAjBA,YACFA,C;EAKQC,IACNA,sBAAuBA,QAGzBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,iBAAjBA,YACFA,C;EAKSC,IACHA,WAA+BA,QAErCA;AADEA,UAAiBA,kBAAjBA,YACFA,C;EAKUC,IACRA,WAAoBA,QAGtBA;AAFMA,WAA+BA,QAErCA;AADEA,UAAiBA,mBAAjBA,YACFA,C;EAEOC,MACEA;AACPA,qBA6sEyCA,QA7sEzCA,WAGMA,UAmqEyBA;AAhqE/BA,QACFA,C;EAEOC,yBA2pEgClE,MAzlH5BkE;AAs8CTA,UAEEA,UAAaA,aAmBjBA;GAuqE2CA;AAkBrCA;GAlBqCA;AAlrEzCA,mCACEA;AAEAA,SAAqBA;AAChBA,QAuoEwBA;AAtoE7BA,gBAooEmCA,IAjoEnCA,IAEFA,aACFA,C;EAEOC,WAKEA;AAGPA,iBA6pEyCA;AA3pEvCA,YAC2BA;UAEWA;IAEVA;AAC5BA,gBACEA;yBAKFA,qBAEwBA,GAA8BA;IAsmEzBA;GAJAzE;AAhmE3ByE,wCAEoBA,yBAItBA,YA3B0BA;IAnhDelE;IAqElCkE;GAsILA;GAw+GqCA;GA99GrCA;GA89GqCA;GA18GrCA;GA08GqCA;AApnEjBA;AAIxBA,8BAGMA,UAskEyBA;AA/jE/BA,QACEA;AAEAA,yBAGMA,UAyjEuBA;AAnjE7BA,OAGFA,QACEA;AAEAA,2BACEA;IAqiE6BA,MAniE3BA;AAGEA,QAuiEuBA,eAFMA,IA7hEnCA,OAGFA,eAEuCA;aAOvCA,wBACFA,C;CAKOC,yBAygE0B1E;AAtgE/B0E,SAA4BA,cAgE9BA;AA/DEA,SAA6BA,eA+D/BA;AA9DEA,SAA0BA,YA8D5BA;AA7DEA,SAA2BA,aA6D7BA;AA5DEA,SAAyBA,WA4D3BA;AA1DEA,aAogE+BnC;AAlgElBmC;GA8/DkB1E;AAx/D7B0E,sCAkDJA,CA/CEA,SAEEA,kBAAmBA,KAu/DU5E,SA18DjC4E;AA1CEA,UAESA,QAg/D4BtE;AAt+DnBsE,GAvoDTA;AAyoDPA,QAHcA,iCA+BlBA,CAzBEA,UACEA,OAAOA,SAwBXA;AArBEA,UACEA,OAAOA,cAoBXA;AAjBEA,UAGEA,OAAOA,MAw9DsBlE,MA7jHtBkE,GAmnDXA;AAPEA,cA3rD2CjE;AA8rDzCiE,QAAOA,EAFqBA,YAMhCA,CADEA,SACFA,C;EAEOC,8BD35DEA;AC65DPA,WAAuBA,QAEzBA;AADEA,mBACFA,C;EAkLiBC,aAXXC,GASAD;KAIFA,uBAbEC,GASAD;AAOFA,QACFA,C;EAEWE,uBAhBPA,OAkBUA;AACZA,WACEA,OAAOA,YAcXA;KAbSA,uBAiwDsBA;AAliDtBA;AA5NsBA;AAC3BA;AAGgBA;AAYTC;AAVPD,QAIJA,MAFIA,QAEJA,C;EAKYC,MACRA,aA3CAA,MA2C+CA,C;EAoCvCC,MACRA,OAAOA,MA7EPA,MA6EiDA,C;EAa1CC,QA0wDPA,SA32DAA;AAoGFA,WAAmBA,QAIrBA;AAkEoBA,OADGA;AAqsDrBA;AAvwDAA,QACFA,C;EAEWC,mBAn3DkCA;AAy3D3CA,WACUA,GAx3DNA;AAknHFA;AAtvDFA,WAAmBA,QAIrBA;AAiDoBA,OADGA;AAqsDrBA;AAtvDAA,QACFA,C;EAEWC,qBAh3DkCA;AAk3D3CA,WACUA,GAj3DNA;GAkhH+BlF;AA4EjCkF;AAxuDFA,WAAmBA,QAUrBA;AAHYA,YAmpDmBnF,QAjmHtBmF;AAkrHPA;AAluDAA,QACFA,C;EAiCWC,OAvrELA;CAIAA;AA2rEJA,QACFA,C;EAmGWC,QAilDPA,WA32DAA;AA6RFA,WAAmBA,QAErBA;AApzEIC;CAgIEC;CAkLAA;AAwgEGF;AAykDPG,CA92DEA;AA8RFH,QACFA,C;EASWI,QAmkDPA,SA5EiCxF,WA/xDjCwF;AAgTFA,WAAmBA,QAMrBA;AAFIA;AA0jDFD,CA92DEA;AAiTFC,QAKFA,C;EAEWC,UAMTA;SA+9C6B1F;;AA79CvB0F,mCAESA,SAELA,eA69CmB5F;AAj+C3B4F,KAKEA,QAUNA;KATWA,SACLA,UAQNA,CAp2EIJ;CAgIEI;CA4CAA;AAurEGA,CAjjEHA;AAijEJA,gBACFA,C;EAEWC,QA0hDPA,SA5EiC1F,WA/xDjC0F;AAyVFA,WAAmBA,QAMrBA;AAFIA;AAihDFH,CA92DEA;AA0VFG,QAKFA,C;EAEWC,UAMTA;SA9vE+CA;AAgwEzCA,oBACFA,QAYNA;KAXWA,SACLA,OAoHFA,eA1GJA;yBARMA,UAQNA,CA34EIN;CAgIEM;CA4CAA;AA8tEGA,CAxlEHA;AAwlEJA,gBACFA,C;EAEWC,MAm/CPA,sBA32DAA;AA4XFA,WAAmBA,QAMrBA;AAv5EIP;CAgIEQ;CA4CAA;CAsIAA;AAgnEGD;AAi+CPL,CA92DEA;AA6XFK,QAKFA,C;EAccE,iBAw7C2BA;AAr7CvCA,sCA84C6BA,GAFM9F;AAt4CnC8F,QACFA,C;EAEcC,qBA46C2BA;AAx6CvCA,qCA06C8CA;GAhDfA;UAOFA,KAFM/F,IAp3CnC+F,QACFA,C;EAiBWC,QAKFA;IAs4CgCC,UAl5CnCD;AAq7CFA,GA32DAA;AAqcFA,WAAmBA,QAMrBA;AAh+EIX;CAgIEa;CA4CAA;CAeAA;IAkqHmCA,WA5xHnCA,IA8xH0CA;CA7iH1CA;AA+rEGF;AAk5CPT,CA92DEA;AAscFS,QAKFA,C;EAuCWG,QACLA;IA0yCyBpG,WAIAK;AAsD3B+F,GA3pHKA,kBAg0EyCA;AAATA,IAhBrCA,GAmzCiCnG;AA4EjCmG,GA32DAA;AA+fFA,WAAmBA,QAMrBA;AA1hFId;CAgIEe;CA4CAA;CAeAA;CAuHAA;AAqvEGD;AA41CPZ,CA92DEA;AAggBFY,QAKFA,C;EA6BWE,QALPA,oCA80CAA,CA32DAA;AA0iBFA,WAAmBA,QAMrBA;AArkFIhB;CAgIEiB;CA4CAA;CAeAA;CAuHAA;AAgyEGD;AAizCPd,CA92DEA;AA2iBFc,QAKFA,C;EAqEWE,QA5BPC,iBAl0EUA,OAyEVC,MAw+GqCA,WA99GrCA,MA89GqCA,WA18GrCA,MA08GqCA;AA5uCvCD,QAIIA;AAEAA,qBAKJA,QAIIA;AAEAA,qBApa6CA;AAkqD/CD,GA32DAA;AA6nBFA,WAAmBA,QAMrBA;AAxpFIlB;CAgIEqB;CA4CAA;CAeAA;CAuHAA;AAm3EGH;AA8tCPhB,CA92DEA;AA8nBFgB,QAKFA,C;EA0BWI,UAJTA,SAsoCmC3G,wBA4EjC2G,CA32DAA;AAsqBFA,WAAmBA,QAYrBA;AARIA;AAosCFpB,CA92DEA;AAuqBFoB,QAWFA,C;EAEWC,YAOTA;SA6oCuCA;AA1oCNA;AAC/BA,wBAkmC2BA;IAJA7G,eA1lCvB6G,KAGJA,QACwBA;AAMEA;AAMxBA,OAAOA,iBAcbA,EAtvFIvB;CAgIEuB;CA4CAA;CAeAA;AA0jFGA,CAn8EHA;AAm8EJA,gBACFA,C;EA6HcC,UAMZA,gCAeFA,C;EAqBWC,yBAhB6BA,MACDA;OAmBnBA,YAAlBA,MAXwCA;AAatCA,gBACMA;KACCA,uDACDA;KACCA,UACDA;KAEJA;AACAA,kBAEIA;QArBRA;AAyBQA;QAzBRA;AA6BQA;QA7BRA,OAkCUA,MA/C8BA,IACCA,GAeNA;AAiC3BA;QApCRA,OAuaiBA,MApbuBA,GAu6BXC;AA/2BrBD;QA3CRA,OAxoBOA,MA2nBiCA;AA4DhCA;QA/CRA,OAhoBOA,MAmnBiCA;AAgEhCA;SAnDRA,OAxnBOA,MA2mBiCA;AAoEhCA;QAvDRE,QATqCA;KA88BEA;AA14B/BF;QAGAA;AACAA;QAGAA;AACAA;WAhFgCA;AAaxCA,OAyEoBA,OAERA,QAvF6BA,GAeNA,UAPIA;AAmF/BA;WA5FgCA;AAaxCA,OAqFoBA,OAERA,QAnG6BA,GAeNA,UAPIA;AA+F/BA;QA3FRA;AAAAE,QATqCA;KA88BEA;AAr2B/BF;QAGAA;AACAA;QApGRE,QATqCA;KA88BEA;AA71B/BF;QAy2BNG,YA19BmCA;AAmWrCC,MAvWwCD,IACCA;AAs6BZA;AA15B7BC;;AA4GQJ;SA5GRE,QATqCA;KA88BEA;AAr1B/BF;SAi2BNK,YA19BmCA;AA0WrCC,MA9WwCD,IACCA;AAs6BZA;AA15B7BC;;AAoHQN;QAy2BNO;AA79BFA,OA09BEA;AA19BFA;AAAAL,QATqCA;KA88BEA;AA7nBhCF;AAhNCA;QAGAA,0BAxH2BA;AA6HnCA,OAAOA,MA7IiCA,IACCA,KA6I3CA,C;EAOWQ,UACLA;OACcA,QAAlBA,SA5IwCA;AA8ItCA,mBAAyBA;AACXA,cA7IhBA;AAgJAA,QACFA,C;EAEWC,YAOLA;OACcA,QAAlBA,SA7JwCA;AA+JtCA,WACEA,KAAeA;AACHA,UAC0BA,0DOljGKA;KPijG/BA;AACPA,MAGLA,OAuzBFA;AAnzBFA,SApLwCA;GACCA;IAs6BZxH,UAIAK;AAvoDRmH,UAqoDcpH,GAtejCqH;AA5pCFD,WACEA,uBAA4BA;AAquB9BA,OAnuBiBA,kBAmuBjBA;AAmLAA,QACFA,C;EAEYE,MAEMA,SArMwBA,iBAgBLA;AAuLnCA,sBA1LAA,OA4LwBA;KAEXA,UA1M4BA;QAs6BZ1H,YA15B7B0H,OAmMkBA,YAvMqBA;AA8MjCA;QA1MNA,OA6M4BA;AACtBA,OAGRA,C;EAOYC,MArNyBA,aAhBKA;AA0PxCA,sBAEEA,iBA5OiCA;AA+O7BA;OA/O6BA;AAmP7BA;QAtPNA;AA0PMA,WA1PNA;AAgQ6BA;AA7PMA;AAgQnCA,iBAhQmCA;cA7yBgBA;;AAkjC9BA,UApRoBA;AA5hFvC9G;CAUS8G;CAUAA;CAiBAA;AAmgFXA,OAqRgBA;AAEZA,MAoBNA;OA3SEA,OAgSgBA,OA4nBmBA;AAtnB/BA,MAKNA;QAFMA,UAAMA,qCAA8CA,SAE1DA,C;EAgCYC,MAxUyBA;AA0UnCA,UA7UAA,OApnBOA,MAumBiCA;AA4VtCA,MAOJA,CALEA,UAjVAA,OA5mBOA,MA+lBiCA;AAgWtCA,MAGJA,CADEA,UAAMA,sCAA+CA,QACvDA,C;EAEeV,MAynBXA,gBA19BmCA;AAmWrCA,MAvWwCA,IACCA;AAs6BZA;AA9jB7BA,QACFA,C;EAWWW,QACTA,sBAEEA,OAAiBA,UArpCgCA,KA+pCrDA;KALSA,uBACUA,CAAiCA;AAAhDA,kBAIJA,MAFIA,QAEJA,C;EAEYC,iBA8kB6BA;AA5kBvCA,gBAEaA,eA4kBiCA,IAzkBhDA,C;EAEYC,iBAqkB6BA;AAlkBvCA,iBAEaA,eAkkBiCA,IA/jBhDA,C;EAEWC,mBAghBoBhI;AA9gB7BgI,UACEA,SAAgBA,QAihBW3H,EA3f/B2H;GA1mGSA;GA4oHgCA;AArjBrCA,QACEA,QA6gByBA,KA3f/BA;AAfIA;GA0gB2B3H;GAJAL,QAlgB3BgI,SAAgBA,QAWpBA;AATEA,SACEA,UAAMA;GA5mGDA;OAspHgCA,QAriBrCA,QA8f2BA,KA3f/BA;AADEA,UAAMA,4BAAsCA,QAC9CA,C;EAsCGC,iBA7wGKA;WAAoBA,GAApBA;AA4tHgCA;AA5cxCA,YACWA;AA8hBTA,WA3hBFA,QACFA,C;CAiBKC,YAEHA;SAA8BA,QAwJhCA;AArJMA,WAAcA,QAqJpBA;GA8RiClI;AAhb/BkI,SAA0BA,QAkJ5BA;AA/IMA,WAAcA,QA+IpBA;IA8RiClI,OA1aVkI,QA4IvBA;AAzI0BA;AACxBA,KAGMA,UAuayBA,EAJAzH,WAnamByH,QAqIpDA;GA8RiClI;;mBA1Z7BkI,SACEA,OAAOA,WA6ZoBpI,KAlSjCoI;AAzHIA,4BAyHJA,aApHIA,SACEA,OAAOA,OAqZoBpI,SAlSjCoI;AAjHIA,YAiHJA,CA7GEA,UACOA,WA8YwBpI,UA7Y3BoI,QA2GNA;AAzGIA,OAAOA,MAEDA,gBAuGVA,CA/FEA,SACEA,OAAQA,gBACJA,OA+XyB3F,SAlSjC2F;AApFEA,UACMA,cAqXyBpI,MApX3BoI,QAkFNA;AAhFIA,OAAOA,UAIDA,YA4EVA,CAtEEA,SACEA,OAAQA,gBACJA,WAsWyB3F,KAlSjC2F;AA9DEA,KAAsBA,QA8DxBA;AA3DiCA;yBAE7BA,QAyDJA;AArDMA;cAAqDA,QAqD3DA;AAhDEA,sBAC2BA,QA+C7BA;AA9CIA,UAAsCA,QA8C1CA;GA3xGWA;;GAomHgCA;gBAjXfA,QAwC5BA;AAwVMA;;AA3XFA,oBAqU6BA;;AAlUtBA,qBACAA,eACHA,QA8BRA,CA1BIA,OAAOA,QA4TsB1H,WAlSjC0H,CAlBEA,sBAC2BA,QAiB7BA;AAhBIA,KAA+BA,QAgBnCA;AAfIA,OAAOA,eAeXA,CAXEA,UACEA,SAAgCA,QAUpCA;AATIA,OAAOA,eASXA,CALEA,aACEA,OAAOA,eAIXA;AADEA,QACFA,C;EAEKC,iBAUCA;AAECA,aAoR0B5H,eAnR7B4H,QA0FJA;IA94GWA;;GAsILA;;GAw+GqCA;;AA5SzCA,OAA2DA,QA4E7DA;AA1EMA;GAprGAA;;GA89GqCA;;AAhSzCA,WAEEA,QA8DJA;AA3DEA,oBA6RgDA;AA1RzCA,YAiPwBA,aAhP3BA,QAuDNA,CAnDEA,oBAqRgDA;AAhRzCA,YAuOwBA,eAtO3BA,QA6CNA,CAzCEA,oBA2QgDA;AAtQzCA,YA6NwBA,aA5N3BA,QAmCNA,IA1uGMA;;GA08GqCA;;AAzPzCA,0BAgNqCA;KA9MnCA,KACEA,QAA4BA,QAsBlCA;IAuLuCA;AA3MjCA;AACAA,SAAyCA,QAmB/CA;IAkLmCA;AAnM7BA,UACEA,MAAiBA,QAgBzBA;AAfQA,YAiP0CA;AA9O5CA,UAAiCA,QAYvCA;GAkOkDA;AA3OvCA,YAkMsBA,eAlM0BA,QAS3DA;AARMA,YAGJA,UAuLiCA,MAtLwBA,QAI3DA;AAHIA,KAEFA,QACFA,C;EAEKC,6BAqLkChI;KA3KrCgI,WAhnDIvD,GASAuD;AAonDFA,WAAkBA,QAmCtBA;AAlCIA,uBA6JmCA;AA3JjCA,YAxUAA;AA4UFA,WAAqBA,QA4BzBA;GAoK2CA;AALnCA,iCA1uD+CC;AAkjDnDD,gBAE+BA,eAkJIA;AA9InCA,OAAOA,iBA/9GAA,KAk/GXA,CADEA,OAAOA,QAj/GEA,gBAk/GXA,C;EAEKE,uBAkKsCA;AAjJzCA,gBA+BSA,WA2EsBA,cA1EzBA,QAKRA;AADEA,QACFA,C;EAEKC,qBAxhHMA,YAkoHgCA;gBA7FnBA,QAaxBA;IAuCuCjI,SAjDnBiI,QAUpBA;AAREA,gBAGOA,WA8CwBA,cA7C3BA,QAINA;AADEA,QACFA,C;EAEKC,WAmC4BxI;uBAhC3BwI,YACKA,SACuBA,eAkCD1I;AArC/B0I,QAIFA,C;EAGKC,WA0B4BzI;AAxB/ByI,0CAKFA,C;EA2CcC,MAFRA,4BAqBqCA;AAfvCA,oBA1BmCA;AAoC/BL,UANNK,C;EAKeL,IAA+BA,sCAzuDOA,IA2uDLA,C;;;;;;;;;;;EQr3HhCM,GACdA;AAESA,OADLA,yBACFA,aA0CJA;OAxCMA,6BACAA,iBAAiCA;AAEzBA;AACCA;;AASIA,0BAGbA,KATcA,gBAWhBA;AAEAA,OAAOA,eAoBXA,MAJWA,OADEA,oBACTA,aAIJA;AADEA,OAAOA,MACTA,C;EAEYC,IAKVA,uBAGEA,KAPcA,eASlBA,C;EAEYC,IAKVA,kBAGEA,KAPcA,eASlBA,C;EAEYC,IAWHA,SATTA,C;EA4BAC;;QAiBAA,C;EA2FWC,IACXA,OAjCAA,SCuIAC,SAAyBA,GAAzBA,aDvIAD,aAkCFA,C;EAUQE,MAINA;CACUA;AACVA,QA1BwBA,EA2B1BA,C;EASQC,MACNA,SACFA,C;EAQQC,MACNA,OACFA,C;EAOQC,MAENA,KACEA,QACAA,QAEJA,C;EASKC,MACgDA,wBAG1BA;oBAWvBA;;oBAEAA;KCwBFA,WAAyBA;CAsJvBA;CACAA;AD1KAA,aAEJA,C;EAIkBC;;OACAA;AAwBhBA,OAAYA,CEqTeA,MFrTgBA,YAG7CA,C;EGrVoBC,IAChBA;AAAUA,aACeA;AACvBA,WAAwBA,QAG5BA,CADEA,QAAkBA,EACpBA,C;EFdUC,UACMA,MACIA,GAAYA,WAKlCA;AAH2BA,WAG3BA,C;EAwBWC,UCgnBkBA,MD9mBNA,GACDA;AAGpBA,WAGYA,aACWA;AACnBA,YDnCSA,QCoCiBA;;KDrCpBA,YACGA;AC6CbA,OEnDAA,YFoDFA,C;EAkkBcC;QA/QYA,kBAsHfA;CA4JLA,KAEFA,UAOeA;AAmKfA,KEzyBFC,Qf6LAD;Aa2cIA,MA6BJA,IA3B2BA;GAClBA;AACPA,kBAGsCA;CA7RtCA,IAA0BA;CAC1BA;AA8REA;AACAA,MAmBJA,CAhBWA,UACGA,SACeA;KErpBZC;Kf6LDD;AasddA,MAM+BA;AAC7BA,KAAoBA;AACpBA;AACAA,MAOJA;ACypCEA,gBD5pCOA,GAAwBA,cAGjCA,C;EAkJYE;KAIVA,KAAaA;GA9cQA;AAAOA;AAAeA;AAidzCA,YACEA,oBAnWGA;AC6zCPA,MDv9BmBA,IACAA,IAGfA,MA0KNA,EArKoBA;GACyBA;AACzCA,0BACWA;AACTA,MAAsBA;CACtBA;GACwBA,MAGGA;GAAOA;CAQ/BA;CACDA;AAKkCA,SArrBhBA;AAqrBGA,6BAvCpBA;AAuCLA,SAvrBeA,EAAOA;AAyrBPA,SAAWA;AAARA,eAAHA;AAAbA,MCq7BJA,MDj7BmBA,IACAA;AAEbA,MAqIRA,IAjI0BA;AAApBA;KA4FIA;GA3xBmBA;AA8wBvBA,cAxE+BA,gBAyE7BA;KACKA,MACLA,aA9BsBA,cA+BpBA,UAGFA,aAzBcA,cA0BZA;AAKJA;GAIIA;wBACAA;cAzsBuCA,OAAsBA,iBAwsB9BA;AAAnCA,SAKmBA,EAASA;KAxmBTA,eA+MIA;CAC3BA;AACOA;CAtEPA,IACYA,OAAkCA;CAC9CA,IAA4BA;CAgelBA;AACAA,cAEAA;AAKJA,MAeRA,KAXqBA,EAASA;GA1aDA;CAC3BA;AACOA;GA0aAA;GACcA;AADnBA,QAhgBFA;CACAA,WAKAA,IAAwBA;CACxBA,MAggBEA;IAEJA,C;EAkEOC,MACUA,YACfA,OAAOA,OAaXA;AATmBA,YACfA,QAQJA;AANEA,UAAoBA,sBAMtBA,C;EG9iCKC,GACHA;OAAiBA,IAAjBA,WAAuDA;GAEpCA;;AAEjBA;AACAA,CA+EMA,QA7EVA,C;EAEKC;IAKDA;;IAIIA,UJpBJA,OAAyBA,GIqBMA,QAGnCA,C;EAMKC,IAnDHA,qBAsDoCA;AACpCA;KAEOA,IJpCLA,OAAyBA,GIqCMA,mBAGlBA,IAGjBA,C;EAQKC,iBACCA;AAAJA,YACEA;MACwBA;AACxBA,MAiBJA,CA7FEA;GAgF4CA;AAC5CA,aACQA;oBAG0BA;CAC1BA;MACeA;AAErBA,kBAIJA,C;EC0hFUC,ICznDSA;AD4nDbA,OC7nDJA,UD6nD8BA,C;EHhqC3BC,MACHA,KAA+BA,cAGjCA,C;EAEEC,mBACmBA;AAAnBA,SAAoCA,OAAOA,MAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAEEC,qBAOmBA;AAAnBA,SAAoCA,OAAOA,OAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAEEC,uBAQmBA;AAAnBA,SAAoCA,OAAOA,SAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAqCKC,cAMYA,QAGPA;IAKRA,OACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AKxjCWC;EADDA,QACNA,cCvfFA,wCDwfAA,C;EAMQC,MACNA,OC/fFA,uCDggBAA,C;EEhgBOC,I1BmsBqBA,kBA6J5BC,WAEuBA,QAFvBA;A0B91BMD,U1Bm2BoBA,GAATA;A0Bn2BUA,gB1Bm2BDA,S0Bj2B1BA,CADEA,WACFA,C;ECkEcE,IAEZA;AAAIA,WACFA,aAwBJA;AboZAA;IaxaMA;AACFA;;CAEKA;AACLA,MAAUA;iBAYVA,cbub0CA;Aapb5CA,6BACFA,C;;;;;;;;;;;EC9GFC,MACEA;IAIWA,yBADXA;AAOQA,MAAgBA;AAAtBA,aAIOA;AAAPA,QAIJA,C;EA8CAC,IAEEA;WAAoBA,WAsBtBA;AAnBEA,sBACEA,QAkBJA;qBAdIA,OA8BFA,WAiMiCC,oBAjNnCD;AAVEA,WAAoBA,QAApBA,IAO8BA,WADjBA;AAGbA,QACFA,C;ECImBE,QAKLA;WAIJA;Kd81CyCvL;Ac11CrCuL,kBADVA,SACUA;AACRA,eAASA;OAOXA,QACFA,C;EAKeC,UAMoBA,eAAmBA;AACpDA,WAAqBA,WAevBA;AAbWA,eAD0BA,QACjCA,gBAaJA;AAVEA,OAAOA,OAELA,gBAQJA,C;EAEeC,MAIbA;IACSA;AAAPA,QAGJA,WADEA,WACFA,C;EC2BYC,cAQNA,mBACFA,UAAMA;AAORA,WACEA,UAAMA;AAMRA,OACEA,UAAMA,gEAMVA,C;ECmScC,IACZA,kBAEIA,8BAgBNA;QAdMA,iCAcNA;QAZMA,0BAYNA;QAVMA,yBAUNA;QARMA,4BAQNA;QANMA,yBAMNA;QAJMA,uCAINA;QAFMA,QAENA,E;;;;;;;;;;;;;;;;;;;;;;;;EjBpTWC,MAaSA;AAPlBA,WAAmBA,QAGrBA;AADEA,UAAMA,iBACRA,C;EA4CaC,MACHA,QAAkCA;AACTA;AACjCA,OACFA,C;EAoCQC,UAEAA,oBACAA;AACNA,kBAEEA,WAA2BA,QAA3BA;AAMFA,QACFA,C;EAQQC,QACYA;OAClBA,qDACEA,QADFA;;AAIAA,QACFA,C;EAYQC,MAIYA;AAClBA,qBACEA,OADFA;AAGAA,QACFA,C;EAwCQC,QAKKA;;AACXA,YACkBA;AAChBA,OACEA,UAAiBA;AAEnBA,SACEA,QAcNA,CAHWA;AAAPA,QAGJA,C;EAqBcC,eAKQA;AACpBA,QAAkBA,QAGpBA;AADEA,OAAkBA,0BACpBA,C;EAiCQC,MAMFA,OFheNA,WAO0BA,sBE+dzBA,C;EAyDaC,QACgBA;AACvBA,UAAqBA,QAa5BA;IkBnLoBA,gBlBsLgCA,OAbVA;MAC7BA,YAYuCA,OAVZA;KAC7BA,OASyCA,UAPVA,QAGxCA,QACFA,C;EAgJcC,UAMZA;QAAwBA,IAASA;AFvkB1BA,GAAyBA,gBdorCtBC;AgB7mBVD,KACEA,QAqBJA;AiB1rBeA;OjB4qBaA,iBAA1BA,YACaA;AACSA,oCA/SJE;8BAsTDF,YACAA,OAGjBA,6BACFA,C;EAGcG,IAGZA;AAAKA,WACHA,OAAOA,OAqDXA;AAhDiBA;AACfA,MAAwBA;AAwBPA;GAUMA;SACLA,YACNA;AAUZA,OANUA,yDAOZA,C;EAYsBC,GAAWA,YAAsBA,YAAsBA,C;ETvvB/DC,IACgBA,wCAC1BA,OAAOA,OAMXA;AAJEA,sBACEA,OPijGG1Q,iBO9iGP0Q;AADEA,OSiMkBA,OThMpBA,C;EA8BaC,MACXA;AACAA;AACAA,SACFA,C;EAYAC,sBAA8BA,C;CAuD9BC,iCAEqBA,C;EAcrBC,gCAEoBA,C;EAwDpBC,4DAG6DA,C;CAe7DC,uDAQgEA,C;EAuFrDC,QAUTA,YAEEA,UAAiBA;AAEnBA,YACEA,YAEEA,UAAiBA;AAEnBA,QAGJA,CADEA,QACFA,C;EAWWC,MACTA,OACEA,UAAiBA;AAEnBA,QACFA,C;EAsEAC,wDAMqEA,C;EA8FrEC,sBAAqCA,C;EAcrCC,sBAAkCA,C;EAyBlCC,sBAAwBA,C;EAaxBC,sBAAkDA,C;CKljB5CC,6BAA8DA,C;EuBgxBtDC,QAKZA;AAAIA,YACFA,oBAEEA,aAgBNA;AAdIA,gBAcJA,CAZ+BA;AAC7BA;IAEEA,kBAGAA,CALFA,UnBvTYA;AmB8TZA,6BAIFA,C;EAYcC,QAKZA;AAAIA,WACFA,gBAYJA;AnBjXAA;AmBwWEA;IAEEA;AnBzVUA,CAAZA,SAAsBA,mBmB4VpBA,CALFA;GnBzU4CA;AmBiV5CA,6BACFA,C;EAwCGC,MAwB6BA;AAGhCA;AACOA,UAAeA,MAkFxBA;AAjFwBA;AACpBA;IACeA,UACfA,IAQGA,WACHA,QAAoCA,MAqExCA;AApEqBA;AACGA,eAEKA,SACzBA;AACKA,WACHA,SACEA,OAAYA;AACZA,MA4DRA,CA1DyBA;AACCA;IACKA,eAEHA,SACtBA;KAGOA,MAAPA,SAEgBA,SACdA;AACAA,UAQEA;AAEYA,UAAmBA,UAC7BA,IAEFA;AACAA,MAgCVA,EA7B4BA;AACHA;IACMA,SAA2BA,iBAOtCA,WAEhBA;AAfgBA;AAqBlBA,sBAAqCA;AACzBA,UAAmBA;AAC7BA,YAEEA;AAzBcA,SA4BlBA,WACEA;AAEFA;AACAA,SACFA,C;EC72BaC,UAsBTA;IAWqBA,QAVaA;AAAkBA;AAAlDA,O9BRKA,KADAA,KADAA,K8BUuDA,aAyShEA,KA/RuBA,QANTA;AACAA;AACAA;AAHVA,O9BHKA,KADAA,KADAA,KADAA,K8BUHA,gBAkSNA,CA7RcA;AACAA;AACAA;AACAA;A9BNLA,OADAA,KADAA,KADAA,KADAA,K8BWHA;AALFA,QA8RJA,C;ECgWWC,WAsELA;KAAQA;AAGDA;AAAXA,UA27HWA,8BACJA,sBACAA,uBACAA,wBACAA;AA77HLA,SAGEA,OAAeA,iBAD0BA,yBACLA,KA6P1CA;KA5PWA,UACLA,OAAeA,KAAOA,qBAAwCA,KA2PpEA,CAnPgBA;;AAOUA;;;;;;;;AAOZA;GAMIA;AAChBA,SAEUA;GAaMA;GACAA;GACAA;GACCA;GACGA;AAMpBA,OAOcA;AAHdA,OAYuCA;KARhCA,QAEOA;AAMdA,OAoBaA;GAXGA;;AAEhBA,MAzE+CA;AA6E7CA,aAKWA;AA/FMA;AA+FVA,kBAIIA,qBACWA,QACbA,sBACGA;KAzFiCA;KAlB/CA;AAwGSA,OAUKA,sCAEJA;KApHVA;AAgHSA,MAeLA,aAEMA,wBAEFA,UAKOA,qBACUA;AAqzHyBA,SAxzHpBA;AA2zHCA,IArzHFA;AACnBA;AAIcA;AAAdA;AACAA;KAEUA;;AAzHfA;;SA0HUA,UAEDA;AAAWA;AAAfA,MACQA,qBACNA,IACAA,IACAA,UAGOA,sBACAA;AACPA;AACAA;AACAA;AACAA;AACcA;AAAdA;AACAA;KAEUA;MAtCGA,cAyCRA,wBAKLA,mCACEA;AAAWA;AAAfA,MACQA;AACNA;AACAA;AACAA;AACAA,WAGIA,kBACAA;AACJA;AACAA;AACAA;AACaA;AAAbA;AACAA;AACAA;KAEUA;MAvBUA,eA2BSA,gCAK/BA,oCACEA;AAAWA;AAAfA,MACQA;AACNA;AACAA;AACAA;AACAA,WAGIA,kBACAA;AACJA;AACAA;AACAA;AACaA;AAAbA;AACAA;AACAA;KAEUA;MAvBoCA,kBA8BxDA,oBAC6BA,SACnBA;AACNA;AACAA;AACAA;AACAA;AACAA;AACAA,MAEFA,OAwrGJA,0BAhqGAA,CA8lBEA,WAEEA,QACWA;KACJA,UACLA;AAvrBqDA;AA6rBzDA,SACsBA;AAEPA;AAENA;AACHA;AAAJA,QrBthDgBC,QqBwhDGD;AAEVA,gBADFA,KAAMA,sCAUbA;AAhtBuDA,KA0sB3CA;AAUJA;AA5oBVA,OAkpBYA,wBAFCA,mBApoBfA,C;EAmBYE,IAEVA;IACSA;AAAPA,QAIJA,UALEA,0BAGEA,WAEJA;KALEA,QAKFA,C;EA2K2BC,IAIZA;AAAbA,cAAOA,sBAAsBA,UAAIA,cAcnCA,C;EAWiBC,QACLA,0HpB0FqCjO;AoBnF/CiO,yBACaA;AACXA,WACEA,YAEEA,iCAGFA,SACEA;AAEaA,OAAMA;AACrBA,SACEA;AAEKA;;AACKA;KAIhBA,SACEA;AAGaA,OAAMA;AACrBA,SACEA;;AAIFA,QACFA,C;EAmBYC,QAEVA;SAAkBA,UAAMA;AACRA,0BAEFA;AACZA,WAAmBA;AACnBA,QAKJA,CAFEA;AACAA,QACFA,C;EAQwBC,QAMtBA;AAGAA,gBACEA,QACyBA;AAAhBA;AAEPA,aAAsBA;AAETA;AACbA,iBAAwDA;AACxDA,WAEEA,WACEA,OzB95CJA,cyBm8CNA;AAjBMA;AAdEA,MAEFA,OzBt6CAA,qCyBm8CNA,CA1BIA,WACEA,OzB16CAA,cyBm8CNA;AAnBIA,OzBh7CEA,+CyBm8CNA,CAjBEA,SACEA,OzBn7CEA,uEyBm8CNA;KAZEA,KAEMA,mBADOA,0BAEHA;AAANA,OAAoBA;AACpBA,WAQNA,CANIA,OzB77CEA,kDyBm8CNA,E;EAiDiBC,SAULA,uDAKEA;IAWHA,UAAYA;AACHA;AAMlBA,gCACaA;AACXA,WACEA,UAEEA;AACIA,wBACFA;AAIAA,IAAJA,UAEEA,KACEA;AAGFA;AADeA,UAIfA,OAAUA;AAEAA,WACPA,UAPYA,SAWXA,YAAaA;AACTA;AACeA;AAC7BA,aACEA;AAEFA,MACEA,MACEA,OAAUA;KAEOA;AACjBA,SAAUA,QAAeA;AACzBA,SAAUA,QAAeA,UAG7BA,UACYA,UACRA,0EAEaA,YACfA;ApB7K6CpO;OoBgLVoO,sBAArCA,YACcA;AACZA,UAEEA;;AAGEA,UAGaA;;AAEfA,MAGJA,QACFA,C;EAsEAC,8CAQCA,C;EAgKUC,IACTA,cAAsBA,SAGxBA;AAFEA,eAAuBA,UAEzBA;AADEA,QACFA,C;EAcaC,QACXA,UAAMA,WACRA,C;EAoVYC,MAEkBA,wBAAsBA,WAEpDA;AADEA,QACFA,C;EAYeC,UAEbA;AACAA,SAAkBA,QA4CpBA;AAzCMA,yBACkBA;AAAhBA,wBACFA;AAIkBA;AATGA;AASnBA,0BACMA;AACRA,QAC2CA;AAGhCA,SAHUA,+BAMgCA,IAArCA;AACFA;AAGhBA,aHxnEKA,wBG8oETA,CAhBIA,gBACMA,yBAoBIA;AAELA;AAnBDA,QAC2CA;AAGhCA,SAHUA,oCAjCFA;AAsCfA;AACJA,UAAWA,kBAKnBA,CADEA,OAAOA,WACTA,C;EAIWC,QACGA;AAEZA,oBACFA,C;EAYcC,UrB3yDdA;AqB0zDEA,uBACaA;AACXA,WACwBA;AAClBA;AAAJA,SACEA;AACAA,oBrBh0DRA;AqBm0DqBA;AAGfA,KACgBA;KACTA,WACLA;CrBvyDNC;AqB0yDID;;AApBgBA,UAtBEA,qCA8ClBA,+BrBh1DNA;AqBm1DQA,QACeA;SAKjBA,SAvDiDA;AA0DjDA,6BACaA;AACXA,sBACiBA;AACAA,KAGJA;YrBn2DrBA;AAOEA;;AqB+1DcA;;AACVA;KAIJA,WAAoBA,OAAOA,YAM7BA;AALEA,QACiBA;UrB90D2BA;AqBi1D5CA,6BACFA,C;EAWcE;AAOZA,8BACaA;AACXA,WAEwBA;AAClBA;AAAJA,SACEA;AACAA,oBrB14DRA;AqB64DqBA;AACfA,MHrwEGA;;AGgwEQA;AAQXA,KACgBA;KACTA,YACSA;AACCA,KrBn3DrBD;AqBs3DIC;;AAvBgBA,UAbEA,oCAwClBA,+BrB55DNA;AqB+5DQA,QACeA;SAKjBA,SAsXEA,qCApXFA;KAlBiBA;AAqBjBA,6BACaA;AACXA,sBACiBA;AACAA,KAGJA;AACfA,MHzyEGA;YlBuXTA;AAOEA;;AqB86DcA;;AACVA;KAIJA,WAAoBA,OAAOA,YAO7BA;AANEA,QACiBA;AACfA,MHpzEKA;UlBsZqCA;AqBi6D5CA,6BACFA,C;EAKcC,QACZA;SAAkBA,QAkBpBA;AAhBOA,SADqBA,iBAExBA;AAGFA,sBACuBA;AAwUAA,uCAtUnBA;AAEFA,gBACsBA,KAGfA;AAETA,OAAOA,OH/0EAA,kBGg1ETA,C;EAKcC,IACZA,cAAsBA,YAKxBA;AAJEA,cAAsBA,YAIxBA;AAHEA,eAAuBA,aAGzBA;AAFEA,iBAAyBA,eAE3BA;AADEA,QACFA,C;EAEcC,QAEZA,OAAOA,oBACTA,C;EAEcC,cAQPA;AAGLA,WAC4BA,eAuB9BA;KAhBaA;IH7nEOA,aGuoEhBA,KAAYA,SAMhBA,MALoCA,oBACvBA;AAGXA,OADSA,WAEXA,C;EAOcC,eHppEMA;AGupEbA,0BACAA,cACHA,OAAOA,aAGXA;AADEA,OAAOA,OACTA,C;EAEeC,UAMbA,YACEA,WACEA,UAAMA;AAERA,OAAOA,qBAUXA,CAFEA,WAA6BA,WAE/BA;AADEA,OAAOA,OACTA,C;EAUcC,IrB7jEdA;CqBikEMA;AAYJA,MAAwBA,SAVLA;GrBpiEyBA;AqBwjE5CA,6BACFA,C;EAEeC,QAEbA,OAAOA,qBAOTA,C;EAaeC,QAEbA;OAAwBA,QACtBA,SAuBJA;AArBmBA;AACCA;AACIA;AACCA;AACvBA,YACEA,SAgBJA;AAd8BA;AAqxBtBA,oCAhxBJA,OrB5tEgBA,iCqBquEpBA;AAPEA,gBAEEA,OAAOA,eHp/EFA,aGy/ETA;AADEA,WACFA,C;EAEcC,IAEFA;AACVA,WpB7sC+CvP;;AoBitC9BuP;AACAA,6BAKfA,UAGEA,YAESA;AAXkCA,SAOpCA;AATaA,SAMXA;AAHDA,IpBltCmCvP;AoBiuC7CuP,wBACeA;;AAEUA;AACAA;AACvBA,MAIJA,OAAcA,cAChBA,C;EAMcC,cAQLA;AAAPA,eAQIA,cACNA,C;EAWeC;AAYbA,2BACaA;AACQA,kCACjBA;KAAKA;AAILA,WACgBA;AAEdA,YACEA;AACAA,SAGFA,WACgBA;KALLA,SAUNA,aACSA;KA0CdA,yCAvCAA;;SAIAA,sBAEMA;AAAJA,QACaA;AACXA,sBAGiBA;AADAA,MAKPA,sBrBnwEtBA;AAOEA;AqB+vEcA,CrBpuEdb;AqBsuEIa;KAIJA,WACEA,QAMJA;AAJEA,QACeA;UrBjvE6BA;AqBmvE5CA,6BACFA,C;EAuDYC,IACNA,gBAAsBA,QAG5BA;AADEA,OADYA,mBAEdA,C;EAOcC,IACZA;AAAKA,YAA8BA,QAsBrCA;AApBwBA;AAECA,sBAAvBA;AAEEA,iBnChqEgBC,amCkqEZD;InClqEYA,YmCoqEVA,WAGUA,UACLA;AAAJA,MAGLA,WAGJA,KAAiBA;AACjBA,OAAOA,aACTA,C;EAacE,MAEZA;AAAKA,YAEHA,SADyBA,SA2B7BA;AAvBwBA;AAECA,sBAAvBA;AAEEA,aACgCA,GnCzsEhBA;AmCysEdA,KACEA;KAGAA,kBAEOA;AAAJA,MAGLA,cnCltEcA;AmCqtECA,mBAA0BA,GHhhF3BA;KGsgFEA;AAUpBA,KACEA,UAKJA;AAH4BA,uBAAcA;AACxCA,MAA8BA,WAAcA;AAC5CA,OAAOA,aACTA,C;EAGcC,eACHA;AAAeA,cAAuBA,iBAC7CA,iBACaA;AACXA,UACEA,OAAUA,mBAA0BA,YAQ5CA;AAN0BA,oCAClBA,MAINA,QACFA,C;EAmZWC,MACLA;AACJA,qBACiBA;AACfA,gBACmBA;KAGjBA;AACAA,iBACmBA;KAEjBA,UAAMA,mCAIZA,QACFA,C;EAYcC,YAWPA;AACLA,qBADcA;MAEGA;AAFHA;AAIaA,UAAZA,UACOA;AAFpBA,MJv0GsCA;AI20GpCA,MANyBA,IAU7BA,KAEWA,IADLA,OACFA,mBAyBNA;K/Bz0GAC,W+BkzGcD;KAGGA;OAOQA,YANrBA,SACiBA;AACfA,SACEA,UAAMA;AAERA,WACEA,SACEA,UAAMA;AAERA,OAAUA;AACVA,UACKA,UACLA;KAEAA,WAINA,OJt2GOA,CADKA,QIw2GdA,C;EAEYE,IACNA;AACJA,oBACFA,C;EA2jBeC,QASOA;OAIJA,wBAAhBA,SACSA;AACPA,kBAAwCA;AACxCA,WACEA;AAEEA,SAEFA,UAAMA,aAGVA,YAGEA,UAAMA;KAERA,SAEEA,UACAA;AAEAA,kBACSA;AACPA,WACEA,gBACKA,kBACLA,MAGJA,QACEA;KAG4BA;AAGvBA,2CACHA,UAAMA;AAERA,OAGJA;AAGgCA;KAFRA,eAEfA;KAKSA;AAOhBA,WACSA,iBAGXA,OAhlBFA,eAilBAA,C;EAyOEC,YAeFA;iBACaA;AACXA,QAAiCA;2hNACDA;AACxBA;WAGVA,QACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EC/qImBC,IACjBA;wBACEA,UAAMA;mEAEOA;AAYWA;AAC1BA,QACFA,C;EAsNAC,QACEA,QAAiBA,OAAOA,OAE1BA;AADEA,OAAOA,MACTA,C;ECsMUC,MnBnNRC,eAAyBA,GAAzBA,eAjQIC;AmBgfJF,OAzBgBA,KAAuBA,eAQzBA,KAAuBA;AAkBrCA,QACFA,C;;;;;;EChdUG;AAEFA,mBAC6BA,QAAnBA;AAgEhBC,WA9D0BD,KAAZA,gBACKA,GAAmBA,KAAZA,gBACAA,KAAZA,qBAWEA;AAPNA;AACSA;AACmBA,OAApBA;WAAgCA;AACxCA;AACyBA,GAThBA,EASJA,MAAOA;AACwBA,OAAxBA;WAH4BA;AAb1CA,OAxBRC,oBAyCUD,gBAjBFA,C;;;;;;;;;;;;;;;;;;;;ECxGLE,GF2HIA,aAlELA,yCAkEKA,CAlELA,0CAkEKA,CAlELA;AG2E8BA,KHTzBA,CAlELA,cE1CYA,0BAETA,GAAKA,SAXQA,2BA2CpBA,C;EAyCEC,IAJ0DA,oBACbA;AAG7CA,kBAAgCA,QFjC9BA,kCEiCFA,AAA2DA,C;EA0SjDC,MFzQHC,2BAlELA,kCE6UkCD;WAAQA;AFjPrCA;AA1BAA,CAlELA;AAkEKE,GAlELA;AAkEKF,CAlELA;AEkVcA,kBACDA,OAAcA,SP9PpBA;AKnBFA;GEoRwBA;AACVA;AAArBA,MFrROE,GAlELA;AAkEKF,CAlELA;AE0VuBA,yBAA4BA;AFxR9CA,oBE4RwBA;aPjBXG,aK3QbC,GAlELA;AAkEKJ,CAlELA;AAkEKK,GAlELA;;AA4FKL,wBA5FLM;AEmWgBN;AFjSXA,iBA0BAA,+BE+QHA,KAFFA;AF7QKA,2BEyRHA,KALFA;AAQFA,SAG0BA;AAAyBA;GAC5BA;AF1ThBC,GAlELA;AAkEKM,CAlELA;AAkEKC,GAlELA;;AAkEKD,CAlELA;AAkEKE,GAlELA;AA4FKF;;AA1BAA;;AEuTLP,UAQFA,QACFA,C;EAGKU,eFrYDA;IL6UkBA,YO4DlBA,MAUJA;AAPkBA;AAChBA,WF3UOA;;AE+ULA,CALcA,aAOlBA,C;EAcOC,MAAyCA,OPxarCC,OOyaLD,WACAA,gBACDA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEreAE,GJmIIA,aAlELA,kDAkEKA,CAlELA,qDAkEKA,CAlELA,mDIzDAA,KAH6BA;WJwJxBA;wCIjJTA,C;EAEKC,wBJmDDA;AIjDFA,WACEA,MAiCJA;AJiFSA;AI9GPA,WAGEA,MA0BJA;AAtBEA,eJuGOA;AIrGLA,WACEA,MAmBNA;AALeA,SAVAA;AJgGNA,GAlELA;AI1BFA,WACEA,MAUJA;AALEA,OJsFOA,sCAlELA;AIhBFA,OJkFOA,sCAlELA,kDIfJA,C;EAEKC,qBT0ViBA,qBSpVlBA,MAmBJA;AD+DkCA,KHTzBA,GAlELA,wBIJgDA,GAAKA,kBAgBzDA,C;EAIKC,MACMA;AAATA,MJiDOA,GAlELA;;AIoBAA,WACEA,MAcNA;AAZqBA;AACSA,mCJxB1BA;AI8BFA,WJ9BEA,QI8BFA,KJoCOA;AInCLA,WACEA,UAGNA,C;;;;;EC5GKlB,sBLyEDA;AKvEFA,WACEA,MA+BJA;ALyGSA,GAlELA;WKlE0CA;AAE3BA;AL4JVA,2BKzIHA,KAHFA;ALkHKA,GAlELA;AK1CFA,WACEA,gBAEJA,C;;;;ECzBKmB,IACHA,iCAEEA;AACAA,MAoBJA,+DAdIA;AACAA,MAaJA,CATEA,6BACEA;AACAA,MAOJA,CADEA,0CACFA,C;EClBKC,IACHA,UAAgBA,QAAhBA,YACFA,C;EAgBKC,GACHA,UAAgBA,SAAhBA,YACFA,C;EC8dOC,MACHA;Ib5GkBA,Ya4GWA,QAQ/BA;AAPgBA;;OAEdA,4BC1fEC,ED0fFD;AACmCA;AACjCA,WAAyBA,QAG7BA,CADEA,oBAA8BA,QAChCA,C;EEzgBGE,GNGHA;AACAA;AMFOA;SVsELxB;WA6CKA;AUjHDwB,MACRA,C;;;;AlD+UiCC;CAFjBC,MAAoBA,YAAsBA,C;EAEhDD,IAAYA,cAA+BA,C;CAE5CE,IAAcA,sBCwKLA,WDxKiDA,C;EAoBxDC,IACLA,OYwtBGA,KADGA,WZvtByDA,C;AAQ9CC;CAAdA,IAAcA,gBAAgCA,C;EAU7CC,IAAYA,sBAAwCA,C;EAGnDC,IAAeA,gBAAmCA,C;;;;CAWpCC,MAAEA,cAAcA,C;CAGhCC,IAAcA,YAAMA,C;EAEnBC,IAAYA,QAACA,C;;;;AAmDAC;EALbC,IAAYA,QAACA,C;CAKdD,IAAcA,gBAA+BA,C;;;;CAyB7CE,IACiCA,OAApBA;AAClBA,WAAyBA,OAAaA,UAExCA;AADEA,iCAAkCA,OACpCA,C;AAiBqBC;EAHbC,IAAYA,QAACA,C;CAGdD,IAAcA,gBAA+BA,C;AAqB/BE;EAHbC,IAAYA,QAACA,C;CAGdD,IAAcA,gBAA+BA,C;AK9VpDE;CFPQC,MAAaA,iBAAKA,QEO1BD,2BFP8CC,C;CAoIzCC,IAvIHA;UA0IFA,C;EAqBOC,MACWA,cAAYA;AAC5BA,WAAyBA,QAAzBA,IACmBA;AAEnBA,OAAOA,SACTA,C;EAgCEC,mBAEkBA;AAClBA,qBAIUA,UADMA;IAELA,YAAkBA,UAAMA,SAEnCA,QACFA,C;EAXEC,kC;CAiEAC,MACAA,QAAWA,GACbA,C;EAEQC,eAGmBA;AAAzBA,OACEA,UAAiBA;AAMjBA,YACEA,UAAiBA;AAGrBA,SAAkBA,OAAUA,eAE9BA;AADEA,OA1UEA,IANiClZ,aAgV5BkZ,QACTA,C;EAYMC,WACAA;AAAJA,OAAgBA,QAAWA,KAE7BA;AADEA,UAA2BA,OAC7BA,C;EAuHKC,MACHA;AA5aAA;GA6aYA;AACZA,OAAaA,MAiEfA;WAhEcA;AACZA,aACgBA;GACAA;AACVA;OAMJA,MAsDJA,CA9DmBA;aAgDRA,QACPA,WAAoBA,QAApBA,QACoBA,wBAKhBA,IAINA,OAA0BA;AAE1BA,OAAoBA,YACtBA,C;EAUKC,eAEKA;KAIRA,kBACoBA,wBAGVA;AAANA,SAAkBA,MAGxBA,C;CA2DOC,IAAcA,OgDlLJA,ehDkL+BA,C;EAchC/I,IAAYA,OA6J5BA,WAEuBA,QA/JKA,QA6J5BA,UA7JkDA,C;EAE1CgJ,IAAYA,OAAWA,OAAoBA,C;EAE3CC,IAAUA,eAAiCA,C;CAwCxCC,oBAGmBA,SAASA,UAAMA;AAC3CA,QAAOA,GACTA,C;;;;EA+DQC,IACNA;qBAAuBA,WAczBA;;AAVEA,aACSA;KACFA,aACEA;;AF5VKA;AEiWdA,UAAgBA,QAElBA;AADEA,4BAAsCA,WACxCA,C;;;EAmCMC,GAAoBA,UAATA;uBAASA,SAAIA,C;CAEzBC,mBACUA,MAAUA;IAKnBA,OACFA,UAAMA;GAGJA;AAAJA,UACEA;AACAA,QAKJA,EAHEA,IAAWA;CACXA;AACAA,QACFA,C;;EiDh4BIC,MACFA;AACAA,OACEA,QAmBJA;KAlBSA,OACLA,QAiBJA;KAhBSA,UACLA,UACuBA;AACjBA,mBAA2BA,QAarCA;AAZUA,eAAYA,QAYtBA;AAXMA,QAWNA,CATIA,QASJA,MARSA,AAYSA,aAXdA,AAWcA,YAVZA,QAMNA;AAJIA,QAIJA,MAFIA,QAEJA,C;GAESC,IAAcA,sBAAuCA,C;CAoNvDC,IACLA,gBACEA,YAIJA;KAFIA,UAEJA,C;EAEQC,IACFA;AAGJA,SAAsBA,kBA6BxBA;AAxBiBA;AACEA;AAIJA;AAWGA;AAOhBA,6EACFA,C;EAwBkBC,MAChBA;AAGAA,SAAiBA,QAOnBA;AANEA,OAAgBA,QAMlBA;AAFIA,UAEJA,C;EAeIC,MAEFA,sBAEMA,YACRA,C;EAEIC,MACEA;AACJA,iCAEEA,UAiBJA;AAfEA,QAGEA,WACEA,OAAOA,aAWbA,MATSA,UAELA,OAAOA,YAOXA;AAHEA,UAAMA,yCAC+BA,YAAWA,iBAElDA,C;EA4BIC,MACFA;OACMA;;AAKAA,WANNA,QAOFA,C;EAEIC,MACFA,OAAeA,UAAMA;AACrBA,OAAOA,YACTA,C;EAEIC,MACFA,mBASFA,C;EAiDSC,IAAeA,gBAAkCA,C;;AAsNlCC;EAAfA,IAAeA,gBAAkCA,C;;;AAWlCC;EAAfA,IAAeA,gBAAqCA,C;;;CjB/lBtDC,UAGcA,gBAAiCA;AAEpDA,OnBwSWA,mBACAA,cmBxSbA,C;CA8BKC,QACHA;WAC8BA,QAC5BA,UAAiBA,SAAqBA;KAIdA;AAGRA,MADDA,QAAQA,QAI3BA;AAHIA,2BAGJA,C;CAbKC,2B;CAgBEC,QAGLA,OAAOA,cADUA,UAAiCA,SAEpDA,C;CAJOC,8B;EA2KSC,MACdA;QAAgBA,QAelBA;WAdyBA,YAAaA,QActCA;AAbEA,aAEEA,WAAYA;AAIdA,kBACEA,aAA6BA;AACrBA;AACRA,SAAgBA;AAChBA,KAEFA,QACFA,C;CAkBIC,QACFA;WAE8BA,QAC5BA,UAAiBA,SAAqBA;AnBrWnCA;AmBwWHA,QAWJA,C;EAlBIC,2B;CA0CCC,MAKHA,OAAOA,WACTA,C;EAMIC,MACFA;SAEMA;;AADNA,QAKFA,C;CAGOC,IAAcA,QAAIA,C;EAMjBC,IAGFA;OACgBA,gBAApBA,SAC8BA;AACrBA;AACAA,QAEFA;AACAA;AACPA,kCACFA,C;EAGSC,IAAeA,gBAAqCA,C;EAErDC,IAAUA,eAA4BA,C;;;A9BrY9CC;EAnDgBA,IAAYA,gBAA2BA,KAARA,WAAnBA,UAmD5BA,aAnDgEA,C;EAuBxDC,IAAUA,OAAQA,KAARA,UAAcA,C;CAO9BC,MAAwBA,OAAyBA,iBAAzBA,kBAA6BA,C;CAgBhDC,IAAcA,sBAAkBA,C;AAMpBC;CAAdA,GAAcA,iBAAkBA,C;EAC/BC,GAAWA,OAAgBA,gBAARA,IAARA,QAAoBA,C;;;;AAqCMC;CAAhCA,MAAiBA,eAAeA,QAAfA,eAAmBA,C;;;AA4E/CC;CAEQA,MAAaA,mBAAeA,GAFpCA,oCAE4CA,C;;;CC1IrCC,IAELA,sCADcA,EAIhBA,C;ACiD0BC;EADlBC,IAAUA,aAAQA,OAAMA,C;CACnBD,MAAaA,2BAAqBA,C;;;;EEpD/BE,IAAYA;OAqT5BA,WAEuBA,QAvTKA,OAqT5BA,aArTiDA,C;;EA0T3CC,GAAoBA,UAATA;uBAASA,SAAIA,C;CAIzBC,GACoBA,gBAAVA,eAAUA;IACnBA,OACFA,UAAMA;GAEJA;AAAJA,UACEA;AACAA,QAKJA,CAHaA,CAAXA;AAEAA,QACFA,C;AAmE0BC;EAAlBA,IAAUA,mBAAcA,C;CAC9BC,MAAwBA,iBAAGA,eAAyBA,C;;;;;;ACzYzBC;CAAtBA,IAAcA,iBAAyBA,C;CAMhCC,QACZA,MACFA,C;;;EA6DQC,IAAUA,aAAQA,OAAMA,C;GAEpBC,aACCA;AACXA,YAuDKA,kBAtDmBA;aAGxBA,QACFA,C;CAWKC,IAEHA,mBAAwBA,QAE1BA;AADEA,OTq1FKA,ISr1FmBA,oBAC1BA,C;CAEYC,MACLA,cAAkBA,WAGzBA;AADEA,WAAsBA,EAAfA,KADoBA,EAAfA,IAEdA,C;CAEKC,MACUA,2BACEA;OACUA,YAAzBA,QAGEA,MAFQA,KACEA,IAGdA,C;;EAsDMC,GAAoBA,UAATA;uBAASA,SAAIA,C;CAEzBC,iBACCA;OAAUA,KACZA;AACAA,QAKJA,EAHEA,IAA6BA,EAAlBA;CACXA;AACAA,QACFA,C;;;EA8GQC,IAAUA,aAA4BA,C;EAkB9BC,oBAbHA;AACXA,YAjKKC,eAkKmBD;UAGjBA;AAQmBA,OA5I5BA,YAAsEA,QAAtEA,iBA4IqEA,C;CAEhEE,MAEHA,mBAAwBA,QAE1BA;AADEA,OT+nFKA,IS/nFmBA,oBAC1BA,C;;;CT6wCAC,iCAIIA,IAHUA;AAMZA,WAAmBA,WAmBrBA;AAlBeA;GACTA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;GAGIA;AAAJA;AAIAA,QACFA,C;;CA8NOC,IACLA,gDACFA,C;;CAYOC,+DACDA;AAAJA,WAAqBA,6BAA4BA,EAMnDA;GALMA;AAAJA,WACEA,kBAA0DA,MAI9DA;AAFEA,6BACoDA,MACtDA,C;;CAQOC,cAAcA;QkCv+CDA,+BlCu+CgDA,C;;CAQ7DC,IAILA,8BAH8CA,kDAIhDA,C;;;CA2MOC,gBACDA;AAAJA,WAAoBA,QAQtBA;MAL+BA;iCAEnBA;AAEVA,WAAOA,eACTA,C;;;CA4vBOC,IAOcA,UALDA,6BAGZA;AAENA,+CACFA,C;;;;;;;;;CAqBOC,cACUA;AAMfA,WAAkBA,wCAEpBA;AADEA,kBAAmBA,WACrBA,C;;CA6BcC,MAAEA,mBAKhBA;AAJEA,YAA4BA,QAI9BA;AAIyBC,wBAPKD,QAG9BA;AAFEA,WARoBA,4BASMA,MAAiBA,EAC7CA,C;EAGQC,IAENA,gBADsCA,IACDA,SAfjBA,eAgBtBA,C;CAGOC,IAGLA,sBAzBkBA,iCAt5EJA,SAg7EgCA,QAChDA,C;;CA0KOC,IAAcA,2BAAgBA,EAAQA,C;A2B5wF7CC;EA5SQC,IAAUA,aAAOA,C;EAITD,GAAQA,+BAwSxBA,WAxS0DA,C;CAMrDE,cAEaA;AACdA,WAAqBA,QASzBA;AARIA,QA8OKC,SAtOTD,C;CAmBYE,MACVA;6BACgBA;AACdA,WAAqBA,QAWzBA;GAqMSA;aA9MyCA;AAA9CA,QASJA,MARSA,iDACMA;AACXA,WAAkBA,QAMtBA;GAqMSA;AAvMEA,aAFuCA;AAA9CA,QAIJA,MAFIA,iBAEJA,C;EAEGC,kBACUA;AACXA,WAAkBA,WAMpBA;AA0KaA,GAqBJC;AAnMKD;AACZA,OAAeA,WAGjBA;AADEA,QADyBA,GAClBA,EACTA,C;CAEcE,QACZA;0BACgBA;AAEdA,cADqBA,GAAqBA,mBAErCA,8CACMA;AAEXA,cADkBA,GAAeA,sBAQxBA;AACXA,WAAiCA,GAAfA;AACPA;GA4KJC;AA1KPD,WAC2BA;KAGbA;AACZA,SAC2BA,GACpBA;KAGLA,OADyBA,YAhB/BA,C;CAyDKE,IACHA;IAAIA,OACFA,IAAWA,IAAQA,IAAQA,IAASA;CACpCA;AACAA,OAEJA,C;CAEKC,oBACuBA,MACNA;KACpBA,UAGEA,MAFQA,IACEA;QAEWA,GACnBA,UAAMA;GAEIA,GAEhBA,C;EAEKC,eA8FIA;AA5FPA,WAC6BA;MAEtBA,IAETA,C;EAWKC,OAKHA,OAAkBA,eACpBA,C;EAGkBC,MA6GlBA;IA3GMA,UACFA,IAASA;MAITA,IAFyBA,EAAKA;AAKhCA;AACAA,QACFA,C;EAiCIC,IACFA,OAA4BA,iBAC9BA,C;EAOIC,MACFA;WAAoBA,QAOtBA;GANeA;AACbA,gBAEWA,QADgBA,GAChBA,MAAuBA,QAGpCA;AADEA,QACFA,C;CAEOC,IAAcA,OAAQA,UAAiBA,C;EAwB9CC,GAIcA;;;AAMZA,QACFA,C;;;EAkBQC,IAAUA,aAAKA,EAAOA,C;EAGdC,IA2BhBA,UA1BqCA;AAAnCA,mBAA8CA,IA2B/BA,GA1BjBA,C;;EA6BMC,GAAWA,aAAaA,C;CAEzBC,mBACmBA;IAAlBA,MAAuBA,GACzBA,UAAMA;GAEGA;AACXA,aACEA;AACAA,QAMJA,OAJIA,IAAWA;CACXA,IAAaA;AACbA,QAEJA,E;;EAQQC,IAAUA,aAAKA,EAAOA,C;EAGdC,IAuBhBA,UAtBuCA;AAArCA,mBAAgDA,IAuBjCA,GAtBjBA,C;;EAyBMC,GAAWA,aAAaA,C;CAEzBC,mBACmBA;IAAlBA,MAAuBA,GACzBA,UAAMA;GAEGA;AACXA,aACEA;AACAA,QAMJA,OAJIA,IAAWA;CACXA,IAAaA;AACbA,QAEJA,E;A1B9BwBC;EAAPA,IAAOA,WAA0BA,KAAUA,C;;AAExDA;EADmBA,MACnBA,WAA6BA,OAAsBA,C;;AAEnDA;EADsBA,IACtBA,WAAeA,KAAqBA,C;;AY7XnBC;CAAdA,IAAcA,kBAAgBA,C;EAE9BC,IACQA,4BACEA;OAMUA,iBAAzBA,gBbioBOC;Ga/nBQD;AACbA,sBb8nBKC;Ga1nBSD;AAEQA,gBG0eTA,OhB8IRC;AajnBPD,6BACFA,C;EAIaE,eA5DQA;MA8DZA,GAAmBA,YAAoBA,CAAvCA;MACAA;YAAiCA;CADjCA,SACPA,QACFA,C;EAEaC,GAaIA,gBAZCA,uBAaKA,mBACLA,4BAKEA,qBACDA,YXqBfC,IANiCjgB;AWZRggB;AAC3BA,WACuBA;GAEPA;AACdA,cAAuBA,IAAgBA;MAARA,KG0SpBA;;AHvSbA,QACFA,C;;EAsCcE,GAAqBA,WAACA,OAAIA,GAAGA,C;CAY7BC,MAAEA,mBAEhBA;AADEA,8BAtJmBC,YA4IZD,YAAYA,KAAMA,YAAYA,GAWvCA,C;EAGQE,IAAYA,OAAOA,SA1JNA,QA0JsBA,OAAIA,OAAGA,C;;CCpI3CC,IACHA,oBAASA,WAAoCA,EAAxBA,MAAsCA,C;GAkB3DC,iBACEA;AAAJA,WAAiCA,QASnCA;AAR+BA,GAwBoBA;AAxBjDA,QAAOA,SACLA,IAuBqBA,0BAEFA,UACDA,YAnBtBA,C;EAqHaC,MACKA;;AAECA;AACjBA,WAAmBA,WAErBA;AADEA,OAmCFA,WAlCAA,C;;GA4CQC,aAF4DA;AAGhEA,QAHAA,WAIQA,OAKEA,C;CAMGC,MAAiBA,WAFiBA,EAAvBA,GAEkBA,C;;;;EAsD9BC,GAAoBA,UAATA;yBAAuBA,C;CAU7CC,6BACUA;AACbA,WAAoBA,QAyBtBA;GAxBMA;GAAqBA;AAAzBA,YACuBA;;AACrBA,aACEA;AACsBA;IAtFwCA,EAAhEA,YAiFyBA;IApOkBC,EAAxBA,aA+OXD;;AAAeA,QACEA;AAAjBA,uBACkBA;AAlBTA,uBAqBbA,eAEFA;AACAA,QAMNA,GAFEA,IADAA;AAEAA,QACFA,C;;EGnSSE,IAAeA,WAAUA,C;;;;EAikBzBC,IAAeA,WAAQA,C;;;EAiUxBC,IAAUA,eAAgCA,C;;;CA+BlCC,MACdA,UAAmCA;AACnCA,QAAOA,GACTA,C;;;;;EAqESC,IAAeA,WAAWA,C;;;EAgD1BC,IAAeA,WAAWA,C;;;EAgD1BC,IAAeA,WAASA,C;CAEpBC,MACXA,UAAmCA;AACnCA,QAAOA,GACTA,C;;;EAgDSC,IAAeA,WAASA,C;CAEpBC,MACXA,UAAmCA;AACnCA,QAAOA,GACTA,C;;;EAgDSC,IAAeA,WAAQA,C;CAEnBC,MACXA,UAAmCA;AACnCA,QAAOA,GACTA,C;;;EAmDSC,IAAeA,WAAUA,C;CAErBC,MACXA,UAAmCA;AACnCA,QAAOA,GACTA,C;;;EAgDSC,IAAeA,WAAUA,C;CAErBC,MACXA,UAAmCA;AACnCA,QAAOA,GACTA,C;;;EAiDSC,IAAeA,WAAgBA,C;EAEhCC,IAAUA,eAAgCA,C;CAErCC,MACXA,UAAmCA;AACnCA,QAAOA,GACTA,C;;;EAkESC,IAAeA,WAASA,C;EAEzBC,IAAUA,eAAgCA,C;CAErCC,MACXA,UAAmCA;AACnCA,QAAOA,GACTA,C;;;;;;AN/+BiBC;CAxXbA,IAEFA,kCACFA,C;CAKIC,IAA8BA,OAwXjBA,2BAxX0DA,C;;AA0vD3CC;CAztBzBA,IAAcA,eAwuFUnhB,QAxuFOmhB,C;;CAkY/BC,IAAcA,aAAQA,C;;;EQh+CzBC,oBACUA;CACRA;AACCA,MACHA,C;;;EASOC,IAELA;;MAMEA;MAEAA;8CAIHA,C;;;EASHC,GACEA,WACFA,C;;;EAUAC,GACEA,WACFA,C;;;EAuCFjU,aAqEOA,kBA7DOA,gBAGRA,KATmBA;KAarBA,UAAMA,kCAEVA,C;;EAfIkU,GAGEA,WACFA,C;;;EAwECC,IAEHA;WAAgCA;KAC3BA,GACHA;QAGAA;mBAFeA,KAEfA;KAEAA,QAEJA,C;EAEKC,gBAGDA;OADEA,GC4fJA,KEvtBFC;KFyyBED,KEzyBFvT,aHgOAuT,C;AA0EIE;EAD+CA,IAC/CA,qBAAgDA,C;;;EAE3BA,MAKvBA,YnB4lDFA,cmB3lDCA,C;;;EA2C0CC,MACzCA,IAAkBA,OACnBA,C;;AG5UsBC;CAAhBA,IAAcA,eAAEA,GAAMA,C;;;;EF8CxBC,gBACEA;KAqSmBA,WArSEA,UAAMA;AAqBhCA,KApBqBA,UACvBA,C;EAHKC,2B;;EAgBAC,cACEA;KAqRmBA,WArREA,UAAMA;AAChCA,OACFA,C;;EA8HKC,IAEIA,QArCiBA,WAoCLA,QAErBA;AADEA,WAzCiBA,EAAOA,UAgBiBA,IAyBkBA,GAC7DA,C;EAEYC,gBAEeA,aAaVA,SA3DEA,EAAOA;AAkDNA,YACPA,YAGIA;KAGJA;IAQFA;AAAPA,QAiBJA,UAhBIA,SAFFA,kBA9DwBA,UAmEpBA,UAAMA;AAORA,UAAMA,uGAZRA,QAkBFA,C;;EAyHUC,mBC4RiBA;QD1REA,IAEbA,wBACAA,SACVA,UAAoBA,4BAStBA,WAIYA;AAxDhBA;;AA4DEA,QAzPFA;AA0PEA,QACFA,C;EAzBUC,+B;EA+BAC,QApEVA,eAAyBA,GAAzBA;AAsEEA,QA3PFA;AA4PEA,QACFA,C;EAkFKC,QAEHA,OAAwBA;IACxBA,IACFA,C;CAKKC,QAGHA,IACYA,UAAkCA;IAC9CA,IAA4BA,EAC9BA,C;EAEKC,kBAlJDA;AAoJFA,UACWA,IAAgBA;CACzBA,UAEAA,iBAjCKA;KArHgBA,YA4JjBA;AACAA,MAURA,CARMA,OCmzCJA,gBD/yCEA,GAAwBA,eAI5BA,C;EAEKC,IACHA;;WAAuBA,MA+BzBA;GA3MIA;AA6KFA,YACuCA;CACrCA;AACAA,eAEiCA;AAC/BA,2BAEgBA;CAETA,WAGTA,iBAnEKA;KArHgBA,YA8LjBA;AACAA,MAURA,CARMA,OAGUA,CAAZA;AC8wCFA,gBD7wCEA,GAAwBA,eAI5BA,C;CAEiBC,aAIYA;AAEpBA,IADPA;AACAA,gBACFA,C;CAEiBC,IACEA;AAEjBA,mCACkCA;CACxBA,KAIVA,QACFA,C;EAkHKC,IAG0BA;CAxN7BA;CACAA;AAyNAA,SACFA,C;EAEKC,IAEHA;KAzVqBA,eAyVIA,MAA6BA;AAA9BA,eAAHA;AAArBA,KACEA,MAKJA;AAH+BA;AAC7BA;AACAA,SACFA,C;EAEKC,IAG0BA;AAC7BA;AACAA,YACFA,C;EAOKC,0BAaOA,MACRA;AACAA,MAGJA,CADEA,UACFA,C;EAqCKC;AC4iCHA,mBD1iCAA,GAAwBA,iBAG1BA,C;EAMKC,IAIDA;AACAA,MAIJA,C;EAMKC;ACkhCHA,mBD9gCAA,GAAwBA,iBAG1BA,C;;;EApS4BC,GACtBA,SAAsBA,OAAMA,GAC7BA,C;;;EAgCuBC,GACtBA,SAAsBA,SAAMA,GAC7BA,C;;;EA+G4BC,GAC7BA,WAAiBA,OAAQA,MAC1BA,C;;;EAgHuBC,GACtBA,cAAmBA,GACpBA,C;;;EA0BuBC,GACtBA,cAAqBA,GACtBA,C;;;EAoEGC,GAMMA;SAEeA;AA7nBlBA,GAtFUC,EAAOA,OAqBcA,aA6rBhCD;AAEEA;IACIA,OAAsBA,EApa3BA,EAoayCA;CACtCA,MAAuBA,EAra1BA,QAuaqCA;AAAGA;WEj4BlBA;;AAF/BA,CFm4BYA;KAEFA;AACAA,MA2BJA,wBArjBmBA,iBACFA;CA6hBXA,IA9aHA;CA+aGA,MAGFA,MAmBJA,2BAbyBA;AAhkB/BE,WAkqB4BF;AAhGlBA,KACEA,cAGSA;;CAIXA;CACAA,MAEJA,C;;;EAVMG,IACEA,cAAmCA,GACpCA,C;;;EACQA,MACPA,UE35BdA,aF45BaA,C;;;EAOPC,GACEA;;GACyBA;AAttBxBA,CAstBCA,IA1vBSC,EAAOA,OASmBA,OAivBSD,aAD9CA;AAEEA;AACkCA;AAAGA;WEr6BhBA;;AAF/BA,CFu6BUA;CACAA,MAEJA,C;;;EAEAE,GACEA;SAC0BA,EAldzBA;;AAmdKA,eACAA,EAzvBYC,UA0vBSD,CAAvBA,IAAuBA;CACvBA,gBALJA;AAOEA;KACcA,EAzdfA;IAyd6BA;CAC1BA;SAEkCA;AAAGA;WEt7BlBA;;AAF/BA,CFw7BYA;KAEFA,MAEJA,C;;;;;;EC4hByBE,GACvBA,SAAoBA,OAAOA,GAClCA,C;;;EA0PIC,IACHA;QACgBA,MAAgBA,IAC5BA;AACAA,MAMNA,CAJIA,gCALFA;AAMEA;AA8DFA,UA3DFA,C;EAwCgBC,IACdA,OAAOA,gBACTA,C;EA2BEC,IACgDA,IAA7BA,MAAUA,GAAYA,aAE3CA;AADEA,OAAOA,sBACTA,C;EAHEC,0B;EAMAC,MACgDA,IAA7BA,MAAUA,GAAYA,cAE3CA;AADEA,OAAOA,wBACTA,C;EAHEC;wB;EAKAC,QACgDA,IAA7BA,MAAUA,GAAYA,gBAE3CA;AADEA,OAAOA,0BACTA,C;EAHEC;4B;EAS4BC,IAEzBA,QAACA,C;EAFwBC;wB;AAhDfC;EAANA,GAAMA,qBAAgBA,GAAEA,C;;Abr7CjCC;E0CxTgBA,IAAYA,kB1C0TLA,W0C1TKA,Q1CwT5BA,a0CxTiDA,C;CAE/CC,MAAwBA,OAAIA,WAAOA,C;CA2Q7BC,MAAaA,O9CpIrBxN,U8CoI0BwN,Q9CpI1BxN,6B8CoI8CwN,C;CA2OvCC,IAAcA,OAWJA,eAXsBA,C;;;;CrBhgBlCC,MACHA;AAAcA,kBAAdA,UACwBA,mBADxBA;AACkBA;AAAhBA,eAAsBA,UAE1BA,C;EAoEQC,IAAUA;OAAKA,OAAMA,C;CAItBC,IAAcA,iBAAiBA,C;;;EAaxBC;KACHA,OACHA;CAEFA;MACAA;AbsaWA;CA2BfvS;AA3BeuS;ManaZA,C;;;CA+ISC,QACZA,UAAMA,uCACRA,C;AAyD+BC;CAAnBA,MAAmBA,oBAASA,C;CAC1BC,QACZA,eACFA,C;EAmBQC,IAAeA,UAALA;cAAWA,C;CAGtBC,IAAcA,kBAAeA,C;;;AuBxDnBC;CAzKVA,IAAcA,yBAAiBA,C;CAgJpCC,MACWA;;AACSA;AAEpBA,QAAOA,QACLA,SAAoBA,OAAgBA,MASxCA,CARIA,IAEFA,UAAiBA,yBAMnBA,C;;;;CtB3JSC,kBAwHeA;AAvHtBA,WACEA,OAAOA,IA6HFA,SArHTA;KAPSA,sBACLA,WAMJA;KAHyCA,GAiLEA;AAhLvCA,yCAEJA,E;EAEQC,IAAUA,WA4GMA,aAOfA,EH3NSA,GGwGoCA,QAAeA,OAAMA,C;EAKtDC,UAuGGA,UHwFxBjJ,UGjFSiJ;AA7GUA,kBH1GKA,OAwSxBjJ,WG5LAiJ,CADEA,OAkLFA,cAjLAA,C;CAOSC,QACPA;IA4FsBA,SA3FpBA,CAkGKA;KAjGIA,cACOA;;GAEDA;AACfA,wCAIAA,OAAUA,QAEdA,C;CAkBKC,IACqBA,OA6DFA,SA7DLA,WAoEVA,OAjETA;AADEA,OAqH8CA,yCArH1BA,KACtBA,C;CA6BKC,MACHA;AAAwBA,IA4BFA,SA5BLA,QAmCVA,SAbTA;AArBsBA;AACpBA,WAAyBA,QAAzBA,QACeA;GAIYA,EAqFcA;AApFvCA,0BACUA,QAAoCA,EAmFPA;CAlFxBA,QAIfA;QAIqBA,GACnBA,UAAMA,SAGZA,C;CAgBaC,aAEEA;AACbA,WACiBA,MAARA,O5B5J0BA,gB4B4JsBA;AAEzDA,QACFA,C;EAEqBC,GACnBA;IApBsBA,SAoBLA,QAbVA,EAuCTA;AAtBgCA;AACVA;AACpBA,WAAyBA,YAAzBA,QACeA;AACbA,QAAkBA,UAMpBA,SACEA;KAEAA;CAKFA,IAAYA;AAGZA,QAFAA,IAGFA,C;EAEAC,IACEA;AAS8CA,6CAT5BA,MAAiBA,WAGrCA;AAFeA,WAAoCA,EAcRA;AAbzCA,WAAoBA,OACtBA,C;AA2B0BC;EAAlBA,IAAUA,mBAAcA,C;CAEzBC,MAESA,UADPA;AAAPA,QAlFsBA,gBAmFHA,OACbA,KAAQA,GAChBA,C;EAKqBC,cACZA;IA3FeA,UA4FRA;AAAKA,eACbA;A5B6iBRpX,aAEuBA,QA/JKoX,QA6J5BpX,W4B/iBEoX,QAGFA,C;;ECrKwBC,GACtBA;IACSA;AAAPA,QAGHA,WADCA,WACDA,C;;;EAC+BC,GAC9BA;IACSA;AAAPA,QAGHA,WADCA,WACDA,C;;;EClGMC,WACLA;AAAiBA,gBAAmCA;AAMfA;AAIrCA,4CAE+BA;AAAlBA;AAGXA,WACMA;AAAJA,U1BqBOA,OAAcA;AACdA,OAAcA;AACRA;A0BlBXA,UAdaA;mBAsBRA;AAATA,oBACcA;AACZA,8EACkBA;AAChBA,SAA0BA;AAeRA,SAdbA,WAELA,wBhB2ZUA,EAAUA;WgBtbPA;AA6BoBA;IAGjCA;AAEAA,UAA4BA,SAKVA,IAHpBA,uBhB+YNA;AAOEA;AgBpZgBA;AhBkTElW;;;AgB/SZkW,UAGJA,UAAMA,iCAERA,YACeA;;GhBuYWA;AgBtYxBA,QAIEA;KAUgCA;AAChCA,SAEEA,UAAMA;KAERA,MhCqgBGhI;CgBnHP7L,KgBhZM6T,KAGGA,GhB0YmCA;AgB1Y1CA,6CA0BJA,CAvBeA;AACbA,QACEA;KAUgBA;AAChBA,SAEEA,UAAMA;AAERA,OAEWA,kCAGbA,SACFA,C;;;;;;CqB9BOC,IAAcA,eAAKA,C;;CA0DnBC,IACKA,mBAAuBA;AACjCA,kBACFA,C;EAMQC,QACQA;AACdA,gCACWA,aAISA;AACdA;QAEmCA;AACnCA;QAEmCA;AACnCA;QAEmCA;AACnCA;QAEmCA;AACnCA;QAEoCA;AACpCA;QAEAA,OAAJA,uBrCmRJA;AqCjRMA,OAA4BA;;AAEpBA,OAGZA,WAAoBA,WAGtBA;AAFEA,QAA8BA;UrC0ScA;AqCzS5CA,6BACFA,C;;EC3DQC,MAuayBA,aAlaHA,UAkaqBA;AAla5BA,QAEvBA,C;GAsBgBC,GACQA,QAAaA,EAErCA,C;;;;CrBrJUC,IAESA,yBADSA;AAG1BA,SAAiBA,OhBu3C8B/iB,iBgBv2CjD+iB;AAb4CA;AhBo3CK/iB;AgB50CjD+iB;AAvCoBA,mBAShBA;AAEFA,OhB+2CEC,eAXWD,aADFA,QgBn2C+BA,OAC5CA,C;;EAkCKE,iBACHA,MAAQA;AAARA;;GACQA;;CACAA;QACVA,C;EAWKC,MACHA;sBA0NQA;GApNNA;GAAQA;;AAARA;;GACQA;;GACAA;;CACAA;;AACRA,QAMJA,MAHIA;AACAA,QAEJA,E;EASIC,QACFA;AAAqCA,4CAGnCA;OA6BIA,mBADgCA,YAzBtCA,SACiBA;AAEfA,cACMA;AAAJA,QAAoCA;CAC5BA;AAARA;YAiLHA;AAhLQA,kBACDA,OAAmCA;AAGLA;AAChBA,UADCA,0BAGdA,kBACDA,OAAmCA;AAEvCA,YAGAA,eACMA;;AAAJA,QAAwCA;CAChCA;AAARA;;CACQA;sBAGJA;AAAJA,UAAwCA;GAChCA;AAARA;;GACQA;;CACAA;gBAIdA,QACFA,C;AFnNAC;CEoUOA,IACHA,oBAAaA,IFjURA,eEiU6DA,C;;EFzT/DC,UAMgBA,kCAA2CA;AAChEA,SAAkBA,QA8DpBA;AA1DEA,4BAE2BA;AA4BvBA;AAtBYA,SAENA;AAMRA;AAuC0CA;AA/C5BA,IAmBhBA,eAEIA;AADeA;AAMjBA,YACEA,MAAqBA,QAuB3BA;AAbUA,yBACFA,QAYRA,EAPkBA;GACCA;AAAjBA,cACmBA;CACjBA;AACAA,UAAMA,WAAkDA,KAE1DA,QACFA,C;EAEOC,UAGLA;aACmBA;AACLA;AAEAA,KADKA,UAASA,QAK9BA;AAHIA,sBAGJA,CADEA,OAAOA,aACTA,C;EE0cOC,UjBnCPA,oCiBsCcA,MACDA,0BAGAA;iBAeDA,GAbVA,UAEEA,6QACuBA;AAMEA;4LAFCA;AACxBA,UjB/IchX;;AiBiJZgX,SAAcA;AACdA,WACKA,cACLA,KACEA,0BjBrJUhX;;AiB0JNgX;QjB1JMhX;OiBgKNgX;AACAA;QjBjKMhX;CA6HlBA;AiB0CYgX,YAIJA;CACAA;AACAA,QA2CVA,CAzEmBA,IAiCbA,SAAcA;AACDA;GAANA,IAIIA;GAANA;AACPA,UAEEA,qBAQIA;MAPWA;GAANA;AACPA,WACYA;;AACVA,MAJGA,IAQPA,UACEA,iBjBjMYhX,OiBkMWgX;YAGHA;OAEtBA,SAAoBA;aAIxBA,WAEEA,MjB7MgBhX;aiBgNdgX;CACAA;AACAA,QAMNA,EAHEA;CACAA;GjB5F4CA;AiB6F5CA,6BACFA,C;;EjBgH0BC,MACtBA;sBACEA,IAAsBA;KACjBA,WACLA,IAAsBA;KAQtBA,oBAI6BA,GAJ7BA;AACEA,sBACEA;KACKA,WACLA;KAGMA,QAIbA,C;;AuCxqBkBC;CAAdA,IAAcA,gBAAeA,C;AvCsKKC;EAAzBA,GAAcA,iBAAkCA,C;;CTzJzDC,cACDA;AAAJA,WACEA,2BAAkCA,OAGtCA;AADEA,wBACFA,C;;;GAoFWC,GAAcA,+BAAoBA,YAAwBA,C;GAC1DC,GAAqBA,QAAEA,C;CAE3BC,IAKaA,cAJEA,8BAEGA;AAKFA,KAFhBA,GAAWA,QAKlBA;AADEA,sBAD0BA,KAAaA,QAEzCA,C;;;GAWSC,GAAgBA,WAAMA,EAAYA,C;GAsKhCC,GAAcA,kBAAYA,C;GAC1BC,eAGSA,SACFA;AAChBA;KAKOA;KAEAA;;AAQPA,QACFA,C;;GAkBQC,GAAgBA,WAAMA,EAAYA,C;GAgF/BC,GAAcA,kBAAYA,C;GAC1BC,UAjFmBA,KAqF1BA,oCAMJA;UAJMA;AAAJA,SACEA,8BAGJA;AADEA,sCACFA,C;;;CAsCOC,IAAcA,oCAAyBA,EAAQA,C;;CAc/CC,IAELA,iCADmBA,EAIrBA,C;;CAoBOC,IAAcA,wBAAaA,EAAQA,C;;CAcnCC,cACDA;AAAJA,WACEA,iDAIJA;AAFEA,mDACaA,WACfA,C;;CAOOC,IAAcA,qBAAeA,C;EAEpBC,GAAcA,WAAIA,C;;;CAO3BC,IAAcA,sBAAgBA,C;EAErBC,GAAcA,WAAIA,C;;;CKpnB3BC,IAGLA,wBAFuBA,EAGzBA,C;;CAmDOC,oCAEkBA,0DAIJA,SACGA;AACtBA,uBACqBA,qBAAkCA;KANnDA;AAMFA,KAIIA;AAAJA,gBACaA,WACAA;AAEXA,eAgENA,CA3DIA,8BACaA;AACXA,WACEA,aACEA;AAEUA;AAzBdA,UA2BOA,WACLA;AACYA;AA7BNA,MAsEDA;GAhCYA;AACrBA,iBACaA;AACXA,mBAKWA;AAHTA,OA3CiBA;AAmDrBA,WAvCuCA;AA2CrCA,WACQA;SAEDA,WACGA;;AA3DSA,UA+DTA;AACFA,OApD6BA,cAwDAA;AAAPA;AApEXA,KAsErBA,WAFeA,oBAEyBA,gBADCA,cAS7CA,MAFIA,8CAEJA,C;AuB6ByBC;CAAbA,MAAaA,sCAAwBA,C;EAsVzCC,IAGiBA;AACvBA,QAAOA,OACLA;AAEFA,QACFA,C;CA+QEC,MACWA;;AACSA;AAEpBA,QAAOA,QACLA,SAAoBA,OAAgBA,MASxCA,CARIA,IAEFA,UAAiBA,yBAMnBA,C;CAgBOC,IAAcA,yBAAqCA,C;AnBnwBhCC;EAAlBA,IAAYA,oCAAcA,C;CwC9C3BC,IAAcA,YAAMA,C;AxC6BIC;CAHjBC,MAAoBA,eAAsBA,C;EAGhDD,IAAYA,iBAA+BA,C;CAG5CE,IAAcA,sBhBwcLA,cgBxciDA,C;EAQxDC,IAAeA,iBAAgCA,C;;;CyChBjDC,IAAcA,QAAWA,C;;;EzCyexBC,IAAUA,aAAUA,OAAMA,C;CA4B3BC,cAAuCA;AAAzBA,6BAAmCA,C;;EqB+yBrBC,MACnBA;AACZA,WACEA,UACEA,MA1EMA,UAGOA,YAuE+BA,gBAEzCA,UACKA;AACEA;MAC4BA;AAAxCA,MA/EQA,UAGOA,cAHPA,UAGOA,eA+EjBA,QACDA,C;;;EAaDC,MACEA,UAAMA,mCAA8CA,MACtDA,C;;;EA+LAC,MACEA,UAAMA,mCAA8CA,MACtDA,C;;;EAGAC,MACEA;SACEA;AAEcA,OAAMA;AACtBA,gBACEA;AAEFA,QACFA,C;;;EAsHgBC;aAujDZA;GHn2Fc/U;GG+uFKgV;;AAwHvBD,mBrCnlFOvL;GqCwjFHwL;IH50FchV,YlCoRXwJ;AqC4jFPwL,MrC5jFOxL;GqC6jFHwL;AAAJA,WrB3sFeC;IqBuuFNF;GACLA;AAAJA,WrC1lFOvL;GqC8lFHuL;AAAJA,WrC9lFOvL;GqCwhCSuL,mC;EAMHG;UAAsBA,SAANA;AAAhBA;;a;GAGgBC;aAgMXA;AA/LwBA;AADbA;ARr0C/BA,GQq0C+BA,4B;GA0KpBC,GAAYA,aAASA,C;GAErBC,aACMA;AACfA,WAAkBA,QAKpBA;AAJMA,kBAAyBA,eAC3BA,OAAOA,WAAuBA,UAGlCA;AADEA,QACFA,C;EAEQC,GACUA,UAATA;AAAPA,wBAA6BA,KAC/BA,C;GASWC,aAASA;mBAAYA,C;GAErBC,aAAYA;mBAAeA,C;EAmPlCC,0BAmBcA,mBAOEA,MAMJA,MAq+BSA;AA79BhBA,iBHlxDWzV;GGmyDOyV;AACXA,kBHpyDIA;KGyvDdA;AA4CGA,oBACWA;AAiBkCA;AAX1CA;AAWVA,OAAYA,kBAHMA,GAIpBA,C;GAsmBSC,UAAcA,mBAv6BAA;AAu6BgBA,2BAAHA;AAAbA,QAA8BA,C;GAiV5CC,GAAgBA,mBAAaA,C;GAI7BC,GAAYA,mBAAcA,C;GAE1BC,GAAeA,mBAAiBA,C;CA0GlCC,IAAcA,gBAAKA,C;CA0BZC,MACZA;AADcA,mBAahBA;AAZEA,SAA4BA,QAY9BA;;AAXeA,YACOA,IAAhBA,aACsBA,IA9IHA,mBA+IDA,IA/5CDA,aAg6CjBA,aAAcA,QACdA,YAAcA,OACAA,IAAdA,iBA9IeA;;AA+IGA,sBA74CMA;AA84CTA,mBA9IGA;;AA+IGA;AACHA,iBAVtBA,QAWFA,C;;;;;EApsBEC,gBACEA;MAAaA;CACbA;AAt2CUA,YAAuCA;;aH91BjChW,clBiKlBrC;AqB6rBYqY,YAAuCA;OA42CnDA,C;;;EAEwBC,MACtBA;+BACEA;KAGAA,oBACEA,GADFA,OACEA,OADFA,OAIHA,C;;;GAqlCKC,gCACCA;eAOUA;GADAA;AACAA;GACDA;AAChBA,SACeA;AAWbA,SAG0BA;AA0mC9BC,GAloCSD,0BAkBKA,2BAlBZA,QACFA,C;CAwYOE,cAC0CA;AAA7CA,WAACA,sBAA0DA,C;;GA2PtDC,GAAgBA,eAAcA,C;GAE9BC,GAAWA,qBAAkBA,SAAiBA,EAAUA,C;GACxDC,GAAYA,kBAAcA,EAAcA,C;GACxCC,GAAeA,kBAAiBA,EAAKA,OAAMA,C;GAc3CC,GAAcA,WAnBDA,UAKEA,QAAiBA,EAAKA,OAcEA,C;GAQrCC,GACeA,UAAjBA;AAAPA,mBAAOA,cACTA,C;EAEOC,mBACDA;AAAJA,QAAqBA,QAMvBA;AA9BoBA;AAAmBA,wBAyBxBA,YAKfA;AA7BwCA,6BAyBxBA,aAIhBA;AA/BuCA,wBA4BxBA,YAGfA;AA5B0CA,+BA0BxBA,eAElBA;AADEA,OAAOA,cACTA,C;GAIWC,GACLA,UADkBA,SAAaA;AAAdA,qBACjBA,YACEA,C;GACGC,GACUA,UAAjBA;qBAAiBA,SAA2BA,MAAgBA,C;EACxDC,GACNA;AAAIA,WAASA,OAAWA,KAAMA,WAAeA,MAAgBA,SAI/DA;GA5CoBA;AAAmBA,4BAyCxBA,SAGfA;AA3CwCA,6BAyCxBA,UAEhBA;AADEA,QACFA,C;GAEWC,GAAQA,wBAAeA,OAAYA,GAAYA,C;GAC/CC,GACLA,UADeA,SAAcA;AAAfA,qBACdA,YACEA,C;GACGC,GAC0BA,UAAhCA,SAAiBA;AAAlBA,UAAuBA,uBAAiDA,C;GA2CpDC,GRriIxBA,OQm8HqBA,QAAcA,GAmGlBA,QAAOA,GAExBA;AADEA,gBAA+CA,KAAiBA,gBAClEA,C;EAiCIC,IAgBcA,sDAKLA,SACEA,WAAeA,aAOdA,QAAeA;GAQlBA;AAAJA,OACEA,eAA2BA;QH/lIlBnX;GG+mITmX;WAAeA,IAAYA;AACtBA,kBHhnIIA;KGqkIdA;AA4CGA,oBACIA;AAKIA;GAYJA;AACEA,KADoBA;AAIjCA,OAAYA,mBACdA,C;EA2QQC,IAAoCA,UAAxBA;iCAAmBA,KAAaA,C;CAEtCC,MAAEA,mBAGhBA;AAFEA,YAA4BA,QAE9BA;AADEA,OAAaA,cAAUA,KAAQA,MACjCA,C;CAcOC,IAAcA,aAAIA,C;;;AEzwIhBC;EAN8BA,IAMrCA,WAAOA,QACRA,C;;;EACoCA,IASnCA,WACEA,OAAOA,UmB3bXA,wBnBgcCA;AADCA,OAAOA,YACRA,C;;;CmB7bMC,IAELA,oDADiBA,2BAEnBA,C;;EC9IGC,wB;CA0BIC,IAAcA;sBACHA;;OACAA;;OACGA;;OACLA;;OACCA;;OACFA;;OACIA;;OACIA;;OACLA;;OACDA;;QACDA;;QACDA;;QACAA;;QACEA;;QACEA;;QACHA;;QACEA;;QACLA;;QACEA;;QACWA;;QACAA;;QACTA;;QACMA;;QAvBFA,eAwBhBA,C;;EnB7CFC,kC;;EAmBaC,IACdA;AACSA,INgYSA,YMhYhBA,kBA6DJA;AN2ESA;AMpI4DA;UAElDA,MAAjBA,WAYmBA,6BAZnBA;AACYA;ANiILA,GM7HgBA;AN6HhBA,GM5HyBA;AAE9BA,uBAGEA,MAAqBA;KAChBA,KACDA,eACAA,WACFA,MAAqBA;KACZA,eACPA,WACFA,MAAqBA,KAK3BA,SAAgBA;;AxBgTEC,OR2EpBC,WgC5VwBF,chCqIpBA;AgCrIFA,QACFA,C;;EAtDIG,IACEA,YAAeA,aAAOA,MACxBA,C;;;EAoBcC,iBAIKA,EAjDiBA,IAiDCA,EAjDaA;AAkDlDA,SACEA,QAuBHA;GAnBgBA;GAAqBA;GAAhBA,IAAqBA;AACzCA,SACEA,QAiBHA;AAbqBA,UAAgBA;AACpCA,SACEA,QAWHA;GAPqBA,IAAyBA;AAC7CA,SACEA,QAKHA;AADCA,QAAcA,EAAKA,SAAgBA,EAAKA,OACzCA,C;;;EAEqBA,IAAWA,QAAMA,EAAIA,C;;;GAgErCC,GAEaA;WAFKA,aAELA;OACDA;OACIA;OACIA;QACRA;QACWA;QACAA;QACTA;OAGCA;;;AACAA;OADAA;AAEGA;OAFHA;AAGAA;QAHAA;AAIFA;QAJEA;AAKAA;OAGDA;;;AACAA;QADAA;AAEFA;OAGEA;;;AACFA;QADEA;AAEEA;QAFFA;AAGDA;QAHCA;AAIJA;QAJIA;AAKMA;QA9BVA,eA+BbA,C;;;EC/KkBC,cFuErBA;AErEFA,WAAkBA,QAUnBA;AANUA,OFmIFA;AEjILA,mBAIHA,MAFGA,QAEHA,C;;;EAQCC,GmByBAC;UnBtBED;;MACAA;;MACAA;sDACFA,C;;AAMEE;EADQA,IACRA,iBA8BDA,C;EA/BSC,IACRA;mBADQA,cACRA;4BAAkBD,SFuClBA,cEtCEA;AACAA;;;GamHAE;AbhHYF;YC6GgBA,KH9BzBA,wBE/ESA;ODvBoBA,WcuIhCE;A9CuRJC;AQ3EoBX,kBwBlVSQ,UhCsMzBE;;;AiC3KcF,OAAaA,MF6B7BA,0BE5BwBA,MAAeA;YAEAA,OAAxBA;gBAAqCA;YF4F/CA,CAlELA,wBExB6BA;AACzBA;UAKAA;WACFA,QAAeA;GAEbA;WACFA,QAAeA;GAEbA;WACFA,QAAeA;OA7BTC;AACRA,wBADQA,C;;;EAkDCG;UFwDJ3Y,KAlELA;AA4FK2Y;;CA5FLA;AAkEKA,CAlELA;AAkEKA,cEnDSA;AFmDTA,cElDSA;AANLA;;a;GAUAC;UF8CJ5Y,KAlELA;AAkEK4Y,CAlELA;AEoBSA;;a;GAIAC;UF0CJ7Y,KAlELA;AAkEK6Y,CAlELA;AEwBSA;;a;EAWNC,IACUA;;AFwDRA;;CA5FLA,qCEmDIA,KAVFA;AFyBG9Y,GAlELA;AAkEK8Y,CAlELA;AAkEKA;AA0BAA;;AA1BAA,CAlELA;AAkEKA;cEFWA;AAEhBA;AAIoBA,SFtEpBA,sCEuEkBA,GAAJA,SAAmBA;AAC/BA,WACEA,MASNA;AAPYA;MACWA;AACnBA;AACAA;AACAA;QAGJA,C;EAaKC,IF7BEA,mBAlELA;AEkGAA,WACEA,MAqCJA;;AFtEOC,GAlELA;AAkEKD,CAlELA;AAkEKA;AAAAE,GAlELA;;AAkEKF;AAAA/Y,GAlELA;AAkEK+Y,CAlELA;gBEiHsBA;AF/CjBA;IEkDDA,Gd1JcG,OAgYpB9P,gBctOM2P,QdgN4CA,IchN5CA,GduOW3P,IctOb2P,OFnDGA,eZ4RUA;KY5RV/Y,GAlELA;AAkEK+Y,CAlELA;;AE+HsBA,kGAEfA,GAAyBA;AF/D3BvY,GAlELA;AA4FKuY,sBFglGcA;;AE1mGdA;iBEsEPA,C;EAEKI,GAAqBA;CF1IxBA;AA4FKA;AE8CmBA,QAEgBA,C;EAUrCC,QAEHA;AAAkBA,CAAlBA;GACAA;;AACAA;AACAA;;GvC6ekBA;AuC3elBA,UACEA;AACAA,MAkBJA,CAfEA,iDACEA,OAAuBA,QADzBA;AAMAA,adsJFC,UcpKED,Id3LwBA,Kc2LxBA,KdoKFC,ectJED,OFtGKA,cEsGLA;CAGAA;CA6J8BA;AF3RzBE,sBE0CHF;CFvFFE;AA4FKA,0CEkD8CF;AFvHpBG;AEuHNH,qBAmC3BA,C;EA3BKI,6B;EA8BAC,QAEHA;IAAIA,WACFA,MAgBJA;IPsIoBA,aOlJhBA,QAAsBA;AACtBA,MAWJA,CARoBA;GACcA;;GACPA;AAAzBA,OACgBA;CAGhBA;AACAA,WACFA,C;EAnBKC,6B;EAAAC,4B;EAAAC,6B;EAsBAC,IACHA;CA6H8BA;GA5H1BA;AAAJA;CAEEA,QAEFA,MACFA,C;EAEKC,IACUA;AFxHRA,2BE4HDA,KAFFA;AF1HGA,0BEmIDA,KAFFA;AFjIGA,2BE0IDA,KAFFA;AFxIGA,6BEuODA,KAxFFA,eA0FJA,C;;EA5RIC,IACEA;AAAUA,SF1CdA,UE2CMA,MAQHA;KFnDHA;AEobEA,sBP/VKC,CKrFPA,0BA6CKD;IEICA,WAEHA,C;;;EAmKDE,IACEA,cAAaA,EFvNjBA,UEwNGA,C;;;EAKDA,IACEA,cAAYA,GACbA,C;;;EAKDA,IACEA,cAAaA,EFrOjBA,OEsOGA,C;;;EAKDA,IACEA;AAAUA,SF5OdA,iBE6OMA,MAsFHA;AAjFWA,QFlPdA,gBA6CKA;GEuMMA;;AAALA,WFlLDA,GEmLOA;AAAJA,WFnLHA,GAlELA,wBEuPmCA;AAE3BA,MA0ELA,MAtEiBA,SAAoBA;AACXA,OAASA,6BACzBA,GAAyBA;AF7LjCA,GAlELA,wBF4qGmBA;AI36FXA,MAkELA,KA9DiBA;;GAAmBA;GACLA;AAEpBA,QFxQdA,qBEyQUA;AAAJA,WACEA;MAEAA,YAEaA,QF9QrBA,uBE+QUA;AAAJA,UAyDwBA;MAtDtBA,YAEaA,QFpRrBA,gBEqRMA,MAAYA;SAERA,WACFA;AACAA,MAAaA,EFzRrBA,QE2RMA,MAwCHA,CArCKA;AAAJA,KF5NCA,CE6NCA,GF/RNA;GEoSSA;AAALA,cACiBA;AFnOhBA,CAlELA;GEySUA;AAAJA,SACEA;KACKA,UACLA;aF5SRA;AE+SiCA,QF/SjCA;2BA6CKA,uBE2QCA,cAAgBA,EFxTtBA;CEyTMA,UAAqBA,IAAgBA,GAAiBA,WAC7CA;AAAJA;AAIgBA;AAJhBA,YAILA;CACAA,SFlRDA,kBEsRFA,C;;;EAsCHC,IF5TKA,kBE8TJA,C;;;EAKDA,cACMA,EAAMA;AAAVA,YF/SGA,GAlELA,wBEkX6BA;AFrUxBA,mBEwUJA,C;;AA8C4CC;EAA3CA,IAAWA,0CAAgCA,qBAAmBA,C;;;EE/dnCC,cAC7BA;WJ6HKA,CAlELA;MI1DAA;WJ4HKA,CAlELA,2BIzDDA,C;;AAsDCC;EADqDA,IACrDA,iBAcDA,C;EAfsDC,IACrDA;mBADqDA,cACrDA;4BAAkBD,SJGlBA,cAkEK7Z,KAlELA;;;AAkEK6Z,CIhEHA;AACAA;MAGoBA;YDqEQA,KH9BzBA,wBIvCiBA;;AJ4DjBra,KAlELA;;AISAqa,MAAaA;AJyDRA,CIxDLA;OAdqDC;AACrDA,wBADqDA,C;;;EC5DvDC,cAEIA;AADFA,MLiIKA,CAlELA;AAkEKA,CAlELA;AA4FKA,CA5FLA,uDAkEKA,CAlELA;AAkEKA,CAlELA;AA4FKA,CA5FLA,mDKpDFA,C;;;EAIEhC,IAEEA,WLgHGA,IKjHuBA,EL+C5BA,kCK7CCA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;c7CyCQiC,IAA6BA,0BAA7BA,A;cCmqCgBC,IAAqBA,KEtZ1CA,0BFsZqBA,A;cAySGC,IAAsBA,IAClDA;0CAD4BA,A;cAMAC,IAAoBA,IAChDA;0CAD4BA,A;cAMAC,IAAkBA,IAC9CA,WAD4BA,A;cAMAC,IAAyBA,IAmPtCA;8DAQRA,GA3PqBA,A;cAMAC,IAAuBA,IACnDA,aAD4BA,A;cAMAC,IAA8BA,IAsP3CA;kEAQRA,GA9PqBA,A;cAMAC,IAAsBA,IAClDA,WAD4BA,A;cAMAC,IAA6BA,IAuQ1CA,wDAORA,GA9QqBA,A;cAMAC,IAA2BA,IACvDA,aAD4BA,A;cAMAC,IAC1BA,IAwQaA,4DAORA,GAhRqBA,A;cmB3iDRC,IAClBA,MADkBA,A;cY6GCC,IAAkBA,UAAlBA,A;cAsCVC,IAAWA,WAKvBA,IALYA,A;cAMAC,IAAmBA,WAK/BA,IALYA,A;cCkZUC,IfgoBnBA,KAASA,KehoB+CA,kYAArCA,A;chB4IHC,IAAmBA,iCAAnBA,A;cAgGFC,sC;coBrOVC,IpBniB8BA,MoBmiBDA,IAA7BA,A;cK5kBGC,IAAYA,WAYxBA,IAZYA,A", "x_org_dartlang_dart2js": { "minified_names": { - "global": "A,1019,B,1189,C,187,D,904,E,126,F,837,G,1243,H,953,I,917,J,140,K,315,L,845,M,857,N,907,O,914,P,920,Q,1248,R,964,S,1182,T,836,U,1091,V,100,W,144,X,1197,Y,253,Z,844,a,42,a0,877,a1,903,a2,912,a3,1196,a4,957,a5,961,a6,1170,a7,974,a8,993,a9,1252,aA,1080,aB,1124,aC,284,aD,117,aE,88,aF,60,aG,124,aH,45,aI,846,aJ,853,aK,863,aL,864,aM,868,aN,872,aO,873,aP,892,aQ,894,aR,896,aS,902,aT,905,aU,906,aV,911,aW,922,aX,934,aY,935,aZ,936,a_,836,aa,110,ab,371,ac,53,ad,52,ae,13,af,858,ag,865,ah,898,ai,19,aj,924,ak,969,al,125,am,134,an,1198,ao,55,ap,1251,aq,849,ar,850,as,836,at,1245,au,918,av,923,aw,933,ax,970,ay,972,az,1004,b,1214,b0,99,b1,943,b2,950,b3,1168,b4,956,b5,324,b6,961,b7,988,b8,994,b9,998,bA,856,bB,861,bC,862,bD,325,bE,866,bF,881,bG,888,bH,891,bI,895,bJ,51,bK,536,bL,1235,bM,926,bN,927,bO,928,bP,929,bQ,930,bR,931,bS,932,bT,937,bU,938,bV,940,bW,947,bX,948,bY,56,bZ,954,b_,939,ba,1136,bb,1020,bc,1021,bd,1022,be,1023,bf,1024,bg,1033,bh,1037,bi,1051,bj,1107,bk,1111,bl,1180,bm,1039,bn,1040,bo,1127,bp,1049,bq,1062,br,1099,bs,1100,bt,109,bu,252,bv,392,bw,835,bx,314,by,836,bz,268,c,867,c0,971,c1,973,c2,322,c3,975,c4,1236,c5,986,c6,987,c7,995,c8,996,c9,997,cA,883,cB,883,cC,884,cD,893,cE,899,cF,900,cG,533,cH,908,cI,909,cJ,913,cK,921,cL,925,cM,941,cN,944,cO,945,cP,949,cQ,1234,cR,955,cS,958,cT,962,cU,965,cV,1241,cW,976,cX,977,cY,978,cZ,979,c_,323,ca,1000,cb,1002,cc,1016,cd,1017,ce,1018,cf,1025,cg,1026,ch,1032,ci,1034,cj,1035,ck,1179,cl,1038,cm,146,cn,17,co,47,cp,836,cq,851,cr,852,cs,859,ct,860,cu,869,cv,870,cw,326,cx,878,cy,879,cz,880,d,959,d0,981,d1,982,d2,983,d3,985,d4,989,d5,990,d6,991,d7,992,d8,999,d9,1001,dA,137,dB,1041,dC,1042,dD,1043,dE,1044,dF,1045,dG,1046,dH,1047,dI,1224,dJ,1048,dK,1050,dL,1050,dM,289,dN,1069,dO,1069,dP,1070,dQ,1071,dR,1072,dS,1086,dT,1087,dU,1090,dV,813,dW,1140,dX,1146,dY,1154,dZ,1176,d_,980,da,1005,db,1006,dc,1007,dd,1008,de,1009,df,1009,dg,1009,dh,1010,di,1011,dj,1012,dk,1013,dl,1014,dm,1015,dn,1061,dp,1027,dq,1028,dr,1029,ds,378,dt,1030,du,1031,dv,1031,dw,1031,dx,1031,dy,259,dz,1036,e,916,e0,14,e1,1210,e2,1210,e3,1210,e4,788,e5,788,e6,1212,e7,1213,e8,1236,e9,1216,eA,1097,eB,280,eC,131,eD,1147,eE,68,eF,39,eG,1,eH,1211,eI,18,eJ,0,eK,815,eL,1141,eM,1259,eN,1175,eO,1056,eP,1059,eQ,1092,eR,1137,eS,1244,eT,1190,eU,1261,eV,1225,eW,1217,eX,1158,eY,1223,eZ,1219,e_,1199,ea,83,eb,372,ec,1239,ed,1239,ee,833,ef,843,eg,1222,eh,901,ei,836,ej,1077,ek,1220,el,952,em,1083,en,1187,eo,836,ep,1102,eq,1106,er,1108,es,1094,et,1078,eu,1117,ev,1126,ew,1150,ex,384,ey,127,ez,164,f,915,f0,1184,f1,1260,f2,1088,f3,1238,f4,1245,f5,1167,f6,836,f7,1084,f8,1098,f9,836,fA,1152,fB,1233,fC,250,fD,172,fE,174,fF,180,fG,263,fH,265,fI,264,fJ,262,fK,136,fL,154,fM,185,fN,247,fO,171,fP,163,fQ,388,fR,260,fS,281,fT,183,fU,368,fV,276,fW,94,fX,389,fY,267,fZ,1159,f_,1101,fa,1155,fb,1193,fc,1242,fd,836,fe,1134,ff,1237,fg,1247,fh,1171,fi,1055,fj,1169,fk,1172,fl,1206,fm,1236,fn,1253,fo,1103,fp,1104,fq,1109,fr,1110,fs,1165,ft,1076,fu,1079,fv,1096,fw,1122,fx,1125,fy,1131,fz,1151,h,121,h0,122,h1,1201,h2,43,h3,23,h4,56,h5,82,h6,1240,h7,46,h8,22,h9,1226,hA,1060,hB,1173,hC,1174,hD,1191,hE,1195,hF,1149,hG,1148,hH,1250,hI,874,hJ,875,hK,984,hL,885,hM,886,hN,887,hO,1218,hP,1188,hQ,1202,hR,1221,hS,1058,hT,1133,hU,1192,hV,836,hW,1064,hX,836,hY,1208,hZ,1081,h_,1164,ha,1227,hb,1228,hc,1229,hd,1230,he,1231,hf,1255,hg,1256,hh,1257,hi,1258,hj,1095,hk,1123,hl,1153,hm,1074,hn,1075,ho,1139,hp,834,hq,838,hr,839,hs,840,ht,841,hu,842,hv,847,hw,848,hx,1181,hy,1215,hz,836,i,24,i0,1160,i1,1183,i2,1249,i3,1259,i4,1082,i5,1145,i6,966,i7,967,i8,968,i9,1135,iA,1057,iB,1085,iC,1112,iD,1113,iE,1115,iF,1116,iG,1118,iH,1119,iI,1120,iJ,1121,iK,1128,iL,1129,iM,1130,iN,1138,iO,1063,iP,1114,iQ,1178,iR,160,iS,182,iT,162,iU,266,iV,370,iW,101,iX,369,iY,379,iZ,367,i_,1132,ia,1089,ib,1142,ic,1143,id,1144,ie,1054,ig,1203,ih,1204,ii,1205,ij,1207,ik,1209,il,1254,im,836,io,1194,ip,1052,iq,1065,ir,1066,is,1067,it,1068,iu,1105,iv,1156,iw,1157,ix,1185,iy,1186,iz,1053,j,963,j0,152,j1,147,j2,153,j3,148,j4,387,j5,386,j6,145,j7,141,j8,128,j9,1093,jA,1162,jB,1163,jC,1166,jD,61,jE,89,jF,40,jG,138,jH,57,jI,1200,jJ,76,jK,130,jL,129,jM,377,jN,377,jO,87,jP,85,jQ,86,jR,123,jS,142,jT,244,jU,77,jV,393,jW,84,jX,1232,jY,390,jZ,93,j_,98,ja,58,jb,158,jc,248,jd,151,je,175,jf,159,jg,251,jh,179,ji,150,jj,161,jk,329,jl,383,jm,274,jn,288,jo,184,jp,273,jq,283,jr,282,js,277,jt,275,ju,119,jv,118,jw,188,jx,54,jy,41,jz,1161,k,871,k0,1246,k1,91,k2,95,k3,391,k4,44,k5,854,k6,855,k7,815,k8,876,k9,951,kA,178,kB,177,kC,181,kD,833,kE,835,kF,834,kG,75,k_,278,ka,836,kb,1226,kc,1227,kd,1228,ke,1229,kf,1230,kg,1231,kh,1255,ki,1256,kj,1257,kk,1258,kl,1141,km,1095,kn,1123,ko,1153,kp,1074,kq,1075,kr,1139,ks,165,kt,167,ku,166,kv,168,kw,170,kx,169,ky,173,kz,176,l,946,m,910,n,889,o,890,p,897,q,245,r,1073,t,1177,u,942,v,1003,w,882,x,919,y,960,z,836", - "instance": "A,1301,B,1360,C,1341,D,1366,E,1335,F,1263,G,1365,H,1279,I,1280,J,1382,K,1396,L,1310,M,1318,N,1289,O,1362,P,1389,R,1393,S,1309,T,1314,U,1285,V,1331,W,1272,X,1273,Y,1352,Z,1363,a0,1266,a1,1388,a2,1303,a3,1311,a4,1321,a5,1329,a6,1330,a7,1298,a8,1299,a9,1312,aA,1328,aB,1294,aC,1296,aD,1374,aE,1315,aF,1284,aG,1317,aH,1300,aI,1269,aJ,1270,aK,1274,aL,1275,aM,1277,aN,1338,aO,1342,aP,1344,aQ,1345,aR,1346,aS,1347,aT,1348,aU,1352,aV,1354,aW,1355,aX,1358,aY,1361,aZ,1369,a_,1376,aa,1313,ab,1325,ac,1268,ad,1276,ae,1277,af,1278,ag,1344,ah,1350,ai,1351,aj,1353,ak,1357,al,1359,am,1378,an,1379,ao,1381,ap,1386,aq,1397,ar,1397,au,1290,av,1304,aw,1305,az,1308,b0,1375,b1,1380,b2,1399,b3,1400,b4,1401,b5,1402,b6,1262,b7,1271,b8,1271,b9,1267,bA,1332,bB,1333,bC,1334,bD,1336,bE,1337,bF,1339,bG,1340,bH,1340,bI,1343,bJ,1344,bK,1344,bL,1356,bM,1367,bN,1368,bO,1371,bP,1373,bQ,1377,bR,1380,bS,1383,bT,1383,bU,1384,bV,1384,bW,1385,bX,1386,bY,1399,bZ,1271,b_,1372,ba,1390,bb,1391,bc,1392,bd,1395,be,1398,bf,836,bg,1282,bh,1306,bi,1307,bj,1291,bk,1327,bl,1319,bm,1320,bn,1292,bo,1293,bp,1322,bq,1295,br,1297,bs,1323,bt,1283,bu,1316,bv,1286,bw,1287,bx,1288,by,1324,bz,1326,gB,1360,gG,1365,gN,1289,gO,1362,gP,1389,gR,1393,gV,1331,gZ,1363,ga1,1388,ga5,1329,ga6,1330,gaD,1374,gaO,1342,gaQ,1345,gaR,1346,gaS,1347,gaT,1348,gaX,1358,gaZ,1369,ga_,1376,gai,1351,gak,1357,gal,1359,gam,1378,gan,1379,gb0,1375,gb3,1400,gb4,1401,gb5,1402,gbC,1334,gbD,1336,gbF,1339,gbN,1368,gbO,1371,gbQ,1377,gbZ,1271,gbq,1295,gbr,1297,gl,1364,gn,1349,gp,1281,gt,1387,h,1398,i,1302,j,1396,k,1264,l,1364,m,1370,n,1349,p,1281,q,1265,sl,1364,t,1387,u,1394,v,1394" + "global": "A,935,B,992,C,877,D,172,E,1203,F,1154,G,809,H,297,I,821,J,893,K,926,L,129,M,308,N,828,O,896,P,938,Q,1146,R,117,S,815,T,808,U,820,V,848,W,876,X,885,Y,1208,Z,932,a,1177,a0,967,a1,1056,a2,116,a3,1033,a4,353,a5,48,a6,10,a7,829,a8,871,a9,880,aA,50,aB,115,aC,234,aD,40,aE,816,aF,824,aG,834,aH,835,aI,836,aJ,837,aK,843,aL,844,aM,866,aN,867,aO,869,aP,875,aQ,878,aR,879,aS,889,aT,890,aU,898,aV,910,aW,911,aX,912,aY,915,aZ,917,a_,1133,aa,888,ab,899,ac,1212,ad,93,ae,101,af,125,ag,1160,ah,235,ai,1211,aj,47,ak,819,al,808,am,894,an,902,ao,909,ap,930,aq,944,ar,946,as,948,at,977,au,1099,av,1047,aw,1088,ax,108,ay,81,az,55,b,36,b0,928,b1,931,b2,306,b3,304,b4,962,b5,968,b6,971,b7,993,b8,994,b9,995,bA,864,bB,865,bC,868,bD,46,bE,884,bF,887,bG,903,bH,904,bI,905,bJ,906,bK,907,bL,908,bM,913,bN,914,bO,92,bP,921,bQ,922,bR,51,bS,1195,bT,1131,bU,927,bV,305,bW,945,bX,947,bY,949,bZ,1196,b_,923,ba,996,bb,997,bc,1005,bd,1009,be,1023,bf,1072,bg,1075,bh,1144,bi,1011,bj,1012,bk,1091,bl,1021,bm,1064,bn,1065,bo,1129,bp,100,bq,807,br,296,bs,808,bt,827,bu,832,bv,833,bw,307,bx,838,by,852,bz,859,c,839,c0,961,c1,969,c2,970,c3,973,c4,975,c5,988,c6,989,c7,990,c8,991,c9,998,cA,886,cB,897,cC,900,cD,918,cE,919,cF,929,cG,933,cH,936,cI,939,cJ,1201,cK,808,cL,950,cM,951,cN,952,cO,953,cP,954,cQ,955,cR,956,cS,957,cT,959,cU,963,cV,964,cW,965,cX,966,cY,972,cZ,974,c_,960,ca,999,cb,1004,cc,1006,cd,1007,ce,1010,cf,266,cg,1161,ch,381,ci,817,cj,822,ck,823,cl,830,cm,831,cn,840,co,841,cp,1205,cq,849,cr,850,cs,851,ct,854,cu,854,cv,855,cw,872,cx,873,cy,881,cz,882,d,934,d0,979,d1,980,d2,981,d3,982,d4,983,d5,984,d6,985,d7,986,d8,986,d9,987,dA,1039,dB,1039,dC,1051,dD,1052,dE,1055,dF,785,dG,1103,dH,1109,dI,1119,dJ,1140,dK,12,dL,1173,dM,1173,dN,1173,dO,755,dP,755,dQ,1175,dR,1176,dS,1196,dT,1179,dU,76,dV,355,dW,1199,dX,1199,dY,42,dZ,806,d_,978,da,1032,db,1000,dc,1001,dd,361,de,1002,df,1003,dg,1003,dh,1003,di,1003,dj,241,dk,1008,dl,127,dm,1143,dn,1013,dp,1014,dq,1015,dr,1016,ds,1017,dt,1018,du,1019,dv,1185,dw,1020,dx,1022,dy,1022,dz,273,e,892,e0,1222,e1,1180,e2,874,e3,808,e4,1044,e5,1183,e6,1130,e7,925,e8,1049,e9,1152,eA,39,eB,787,eC,1104,eD,814,eE,1221,eF,1027,eG,1030,eH,1057,eI,1100,eJ,1204,eK,1155,eL,1182,eM,1148,eN,1066,eO,1096,eP,1149,eQ,1053,eR,1198,eS,1205,eT,1216,eU,808,eV,1063,eW,808,eX,1120,eY,1158,eZ,1202,e_,1139,ea,1026,eb,808,ec,1067,ed,1071,ee,1059,ef,1045,eg,1081,eh,1090,ei,1113,ej,159,ek,160,el,165,em,373,en,118,eo,153,ep,1062,eq,262,er,122,es,1110,et,15,eu,63,ev,1162,ew,1,ex,1174,ey,16,ez,0,f,891,f0,1097,f1,1197,f2,1207,f3,1134,f4,1132,f5,1135,f6,1169,f7,1196,f8,1213,f9,1068,fA,152,fB,377,fC,242,fD,263,fE,169,fF,352,fG,259,fH,87,fI,378,fJ,249,fK,1123,fL,1127,fM,113,fN,33,fO,1164,fP,1193,fQ,51,fR,75,fS,1200,fT,19,fU,1187,fV,1188,fW,1189,fX,1190,fY,1191,fZ,1192,f_,808,fa,1069,fb,1073,fc,1074,fd,1128,fe,1043,ff,1046,fg,1061,fh,1086,fi,1089,fj,1095,fk,1114,fl,1115,fm,1194,fn,232,fo,167,fp,168,fq,166,fr,245,fs,247,ft,246,fu,244,fv,144,fw,171,fx,229,fy,158,fz,141,h,937,h0,1218,h1,1219,h2,1220,h3,1060,h4,1087,h5,1116,h6,1041,h7,1042,h8,1102,h9,788,hA,1153,hB,1165,hC,1184,hD,1029,hE,1157,hF,1035,hG,808,hH,1171,hI,1147,hJ,1209,hK,1221,hL,1048,hM,1138,hN,1108,hO,940,hP,941,hQ,942,hR,943,hS,1098,hT,1117,hU,1118,hV,1215,hW,1054,hX,1105,hY,1106,hZ,1107,h_,1217,ha,810,hb,811,hc,812,hd,813,he,818,hf,1145,hg,1178,hh,808,hi,1031,hj,1136,hk,1137,hl,1156,hm,1159,hn,1112,ho,1111,hp,1210,hq,845,hr,846,hs,958,ht,856,hu,857,hv,858,hw,1186,hx,861,hy,1181,hz,862,i,21,i0,1167,i1,1168,i2,1170,i3,1172,i4,1214,i5,808,i6,1024,i7,1036,i8,1037,i9,1038,iA,155,iB,156,iC,157,iD,162,iE,163,iF,149,iG,151,iH,248,iI,354,iJ,94,iK,362,iL,41,iM,91,iN,142,iO,135,iP,143,iQ,136,iR,376,iS,375,iT,134,iU,130,iV,119,iW,251,iX,252,iY,1058,iZ,53,i_,1166,ia,1070,ib,1121,ic,1122,id,1150,ie,1151,ig,1025,ih,1028,ii,1050,ij,1076,ik,1077,il,1079,im,1080,io,1082,ip,1083,iq,1084,ir,1085,is,1092,it,1093,iu,1094,iv,1101,iw,1034,ix,1078,iy,1142,iz,154,j,920,j0,230,j1,140,j2,139,j3,161,j4,148,j5,233,j6,164,j7,138,j8,150,j9,311,jA,121,jB,120,jC,360,jD,360,jE,80,jF,78,jG,79,jH,114,jI,20,jJ,227,jK,70,jL,384,jM,77,jN,379,jO,86,jP,1206,jQ,84,jR,88,jS,380,jT,38,jU,825,jV,826,jW,787,jX,847,jY,901,jZ,924,j_,147,ja,372,jb,257,jc,272,jd,170,je,256,jf,265,jg,264,jh,260,ji,133,jj,131,jk,258,jl,110,jm,109,jn,173,jo,49,jp,35,jq,1124,jr,1125,js,1126,jt,56,ju,82,jv,34,jw,128,jx,52,jy,1163,jz,69,k,112,k0,1187,k1,1188,k2,1189,k3,1190,k4,1191,k5,1192,k6,1217,k7,1218,k8,1219,k9,1220,k_,808,ka,1104,kb,1060,kc,1087,kd,1116,ke,1041,kf,1042,kg,1102,kh,806,ki,807,kj,788,l,842,m,870,n,883,o,863,p,1040,q,1141,r,860,t,916,u,228,v,37,w,976,x,853,y,808,z,895", + "instance": "A,1225,B,1319,C,1257,D,1290,E,1223,F,1294,G,1238,H,1318,I,1331,J,1342,K,1345,L,1273,M,1245,N,1236,O,1237,P,1315,R,1264,S,1269,T,1270,U,1286,V,1230,W,1231,X,1305,Y,1316,Z,1326,a0,1337,a1,1259,a2,1261,a3,1265,a4,1276,a5,1284,a6,1285,a7,1254,a8,1255,a9,1241,aA,1268,aB,1324,aC,1240,aD,1272,aE,1256,aF,1232,aG,1233,aH,1235,aI,1292,aJ,1295,aK,1297,aL,1298,aM,1299,aN,1300,aO,1301,aP,1305,aQ,1307,aR,1308,aS,1311,aT,1314,aU,1321,aV,1325,aW,1329,aX,1346,aY,1349,aZ,1350,a_,1226,aa,1280,ab,1234,ac,1235,ad,1297,ae,1303,af,1304,ag,1306,ah,1310,ai,1312,aj,1327,ak,1328,al,1330,am,1335,an,1346,ao,1338,ap,1246,aq,1260,ar,1263,au,1267,av,1283,aw,1250,az,1252,b0,1229,b1,1229,b2,1227,b3,1339,b4,1340,b5,1341,b6,1344,b7,1347,b8,808,b9,1262,bA,1297,bB,1297,bC,1309,bD,1320,bE,1323,bF,1329,bG,1332,bH,1332,bI,1333,bJ,1333,bK,1334,bL,1335,bM,1348,bN,1349,bO,1229,b_,1351,ba,1266,bb,1247,bc,1282,bd,1274,be,1275,bf,1248,bg,1249,bh,1277,bi,1251,bj,1253,bk,1278,bl,1239,bm,1271,bn,1242,bo,1243,bp,1244,bq,1279,br,1281,bs,1228,bt,1287,bu,1288,bv,1289,bw,1291,bx,1293,by,1293,bz,1296,gH,1318,gJ,1342,gM,1245,gP,1315,gU,1286,gY,1316,gZ,1326,ga0,1337,ga5,1284,ga6,1285,gaB,1324,gaJ,1295,gaL,1298,gaM,1299,gaN,1300,gaO,1301,gaS,1311,gaU,1321,gaV,1325,gaZ,1350,gaf,1304,gah,1310,gai,1312,gaj,1327,gak,1328,gao,1338,gbO,1229,gb_,1351,gbi,1251,gbj,1253,gbv,1289,gbw,1291,gl,1317,gn,1138,gp,1302,gq,1336,gv,1313,h,1347,i,1345,j,1258,k,1224,l,1317,m,1322,n,1138,p,1302,q,1336,sl,1317,t,1343,u,1343,v,1313" }, - "frames": "4zHA6He8jDyB;oCAKAAyB;eAKCbG;kBACeDE;gEAIlBAE;KAGOFO;iGAaA5iDAA8CgBCeANKyEuC,A,I;qMATrCxEAAmB0BDeAVWyEoC,A,AAUvCi+CkC,A;8QG9HSmEIAsCwB4CyB,A;2FArBxB5CIAqBwB4CyB,A;8GAohBbnHuB;u7EEnkBLruByC;QAEFokByC;sXEsSFpkB2C;QAEFokB2C;eAuqBwBpkBsB;0xBNl7Bb01BuB;uEA6BL/GG;oQAuJqBrJqC;6gBA8JlB4LiB;cAAAAa;yCAuBQ5CS;gJAYV4CiB;6FAqBL0DAARF1CiB,A;+FAkBWaW;4dAyV4BtBO;qCAYjB3jDAArrBxBkyBU,A;oEA4tByCyxBY;ulBAmGCIAW77BzBJO,A;qGX28ByBIAW38BzBJO,A;8SXm/BZKO;8JAAAAO;wCAmBqB9QG;0JAuCOzGoB;2KAgCnBAwB;gBASAAuB;8DAyCAvaqC;wfAyQZAmR;iZA4MAAW;qfA0DyBAW;0WAkCJAW;eAOpBAkC;6BAIiB0boD;OAChB1bU;0DAOCs1BI;cAIgBt1BwC;2JASjBAU;0EAiCmBAW;sCAGtBAc;4JAsEK6vBQ;oCAEDFK;AACEAK;wKAyDR3vBAY34D8BAgE,A;keZ4iE1BAkC;cAEAA0D;y4CAyPEA4D;6sBAqF6BmxBuC;AACHwCmC;yEA4HtBzjDAUx+DTCMA3B4Bu8Cc,A,M;qDVyhElB1sBiD;kKAuJXAY;4ECriFOozBI;YACcziDAAsE3BDAFlJA+9CyB,kF,A;QE4E2B99CAAuEpBi+CE,A;OAtEWwEI;uBAKKxiDAAzCJwgDkB,AAAZgCI,A;6CA+CMAI;YACkBziDAAyD/BDAFlJA+9CyB,kF,A;QEyF+B99CAA0DxBi+CE,A;OAzDWwEI;uBAGKxiDAApDJwgDkB,AAAZgCS,A;4EA0EEziDAA+BTDAFlJA+9CyB,kF,A;QEmHS99CAAgCFi+CE,A;sDAvBE/9CAA2BTHAFvJA+9CsB,A,0BEuJA/9CkF,A;QA3BSGAA4BF+9CE,A;+DAfoCuDqB;UAElCthDAAYTHAFvJA+9CsB,A,0BEuJA/9CkF,A;QAZSGAAaF+9CE,A;gEAMPl+CAF9JA+9CyB,6B;yJE0K2C0DoB;gLAsCjCfmB;0KAaF1gDAF7NR+9CyB,mG;2DE2O2B2E4D;wTA+EXhiDc;ygBcpRPIAA9FFkjDqB,A;2IA4OP9TADjBI5gBgD,A;WCiBJ6b0B;AAC+DyYa;AAA7DwBQ;oBACAAI;iBACmB1WQ;AAErB0WQ;64CE80BuChQiB;wiBPv7Bd6HG;gBAIjB3BW;AADuC7DAAgK/BuFQ,A;WAtJOtDO;AAFAuDG;gBAGf3BiB;AAD0CjFAAgKlC2GM,A;gBApFCpGAAzBsBmGG,A;oCA2BECG;uCA2JzBEG;sBAgJMlBmB;kEAyEPpFAA/YwBmGG,A;mEAwZbCG;sEAMAAG;sEAMAAG;sEAMWtGG;uDAMkBDAA7WvCyGK,A;aAgXGlHAApWHgHG,A;uBAsWQjHG;6EAQHoBAApWIJO,A;AAqWJGG;sEAMIGAAlVT2FG,A;uBAqViC5GG;6EAU5BGQ;AACDqGQ;uBAGDtGAAzVH0GG,A;gFAgWIxGAAtVJuGG,A;sBA0VULO;uIAeNEkB;yBAGDII;mFAaCJkB;0BAImBFO;AACEAS;AACtBMM;sFAcK5FsB;AAIANK;iBAGQDK;8CAMiB2FAAxRRltBc,A;AAyRrBksBM;AAEAHM;AAEADK;sHAwCF4BM;yDAaZ7EK;sEAuBFEG;cAIOwIoB;mSAkFkB1ImD;uBAKvB6De;uDAeYUI;uBAEN36CQAvZUi6CoB,A;mEAgee14CAGz5BtBg0CqB,A;aHy5BsBh0CAGz5BtBg0CW,A;CH05BK/zCgBAlFlB40CiB,A;uCAsFcgFO;GAEL0DoB;OAAwBtJO;wBAOM9zCO;AAA9ByyCG;gBAA8BzyCAAKrCo3CY,A;SAS0BqEW;AADVtgB0B;iBAGXtPAAmCTAAAAAAAACMurBG,A,A,W;SAlC6BmBoB;AAE/Bv4CG;AADOyyCG;gBACPzyCAAfAo3CY,A;sDAuBWp7CQAhiBoBu8Cc,A;mCAwiBtBn4CQAhiBSm4CgB,A;mBAmiBfv8CMA3iB4Bu8CkB,A;oBAgjBVj6CMA1hBHi6CoB,A;gEA0lBlBh4CAAoiF6B8uC+B,A;6BAjiFzB8DG;qEAcYqFAAr/BYxEAAuKhBuFQ,A,A;AA+0BQpGAAl7BemGG,A;0KA87BnBtGAA33BJyGG,A;IA43BMxGiB;AAYdgFU;sEAUCz3CQA8BmBkzCAA15BZ+FI,A,AA25BMhGI,A;+DArBXgBC;AADPgDK;0CAsCAl3CAAg8E6B8uC0B,A;mEAr7EtBaC;AADPgHK;+BAKW/DAAnhCwBmGG,A;kEAwhCCtFAAr7BxBuFK,A;eAs7B4B3GAA56B5B2G2B,A;gHAu7BChBc;gDAeN9DI;AADOjBAA18BF+FO,A;mDAo9BFxFG;iBAKVaG;6GAsBOwIoB;YACGrJG;iBAKVaG;uFA0BWHU;+DAYAAU;uCAWTvC0B;qJAuCc/PuB;mBAiBTsSc;AADS+DAAzwChBrFAAoEmCmGQ,A,AApEPtFAAuKhBuFK,A,A;QAmmCQ3GAAzlCR2GS,A;MA2lCmBhBiB;AAD3B9DI;kiDA2NmB0EQ;qBAEDIO;sCAYA7FAAv1CV+FM,A;AAw1CKhGG;qCAMG0FQ;AACFuHkB;AACEvHU;gEAOGIO;gBAELEI;0GAaMNQ;oLAgBFIO;AACjBh5CAAo+DwB8uCAAK/B/nCAAGa6rCAA58GwBmGG,A,A,wCAy8GhBn2CAAgBdq6Ca,A,K,A;2DAh/DY5JAAv3CCNO,A;AAw3CeXM;AAEbgBM;AACcwFW;AAEd9FM;AACc8FW;AACN/FM;AACP+FQ;0DASCIQ;2DAUEAQ;oEAYbFM;yBAIIEe;AAEJEI;kGA6BAtGAApjDwBmGG,A;wIA6jDdtFAA19CTuFK,A;cAy+Ca/FAAp+Cb+FG,A;cAs+CSpGAA9kDcmGG,A;uEAulDV1GAA1+Cb2GS,A;mBA++CIvGAAzhDJyGI,A;GAkiDMxGG;4HAgBOJAAz/Cb0GM,A;AA0/CGzGG;eAODCAAv/CIOG,A;gDA+/CFiOuB;yDAoLPpPAAHKiPG,S;uBAKPjPAALOiPG,I;oCAWDtGO;+DAKOxBI;AACPtDgB;oGAiBOoLM;wBA4BAtGM;aAWHyDS;AADPxDe;oBAGFnEyB;AACH4HW;gCAMS9LG;cAGV8Ea;AAEa+GW;oBAET3HuB;AACH4HW;kCAKSnMG;cAGV8EgB;AAEuBhcAApuDfseI,A;AAquDK8EW;gCAGXpLAA95D6BmGS,A;AA+5DdhHQ;AAKhBkMW;mBAqCHtHS;AACAOQ;qBAuFe8GW;AADPxDW;oBAGsBlJAAIpBkHAAz3DPltBsB,A,AA03DH6rBM,AACALM,W;AANG9CAApFAiKC,AAAOzDa,A;qBAiGKwDS;AAFNzNAA/CK3VAAz0DJseW,A,A;AAy3DFsBW;oCAGLxGAAnGAiKC,AAAOzDa,A;0CA0GO5HAAzjEgBmGG,A;oEAikEvBPAAn5DPltBsB,A;AAo5DH6rBM;AACAIK;CACATM;4BAQekHS;AAFN3NAAzEKzVAA30DJseW,A,A;AAq5DFsBW;oCAGLxGAA/HAiKC,AAAOzDa,A;4CAsIO5HAArlEgBmGG,A;0DA0lEZ1GAA7+DX2GS,A;2FAm/DavFAA7/DbuFG,A;IA8/DiBpGAAjmEMmGc,A;AAmmEd1GAAt/DT2GI,A;gCA6/DARAA57DPltBsB,A;AA67DH6rBM;AACAIK;CACATM;4BAQekHS;AAFN9NAAhHKtVAA70DJseW,A,A;AA87DFsBW;oCAGLxGAAxKAiKC,AAAOzDa,A;wCA+KO5HG;0DAMV8CgB;qCAKG8CAA39DPltBsB,A;AA49DH6rBM;AACAIK;CACATM;0BAOekHsB;AADPxDW;oBAIRtJAAKUsHAA7+DPltBsB,A,AA8+DH6rBO,AACAIM,AACATM,W;AATG9CAAtMAiKC,AAAOzDa,A;8BAqNM5BQ;sCAEIIG;AACCpeAAj/DXseI,A;kCA0/DMNQ;qCAGmBFO;AACZIwB;AAIPEK;AACKpeAAngEXseI,A;uCAuhED9IAAVOwIU,mB;AAYDoFG;AADPxDW;oBAIOrJAAKLqHAAziEPltBsB,A,AA0iEH6rBM,AACAIM,AACAES,AACgBmBW,AAEdtBI,AAA6BoBK,AAE/B5BM,W;AAdG9CAAlQAiKC,AAAOzDa,A;yCAsSN5HAArvE6BmGY,A;AAsvErB/GAAvqEFgHG,A;AAyqEDLG;AAAgB5GkB;QAEhBhCGAjBLnVAAnjEMseuB,A,A;AAskEK8EG;AADPxDW;oBAIOzJAAKLyHAAtlEPltBsB,A,AAulEH6rBO,AACAIM,AACAEM,AACAXM,W;AAVG9CAA/SAiKC,AAAOzDa,A;qBAyUDlKoC;AAEM0NC;AADPxDW;oBAIRnJAAKUmHAApnEPltBsB,A,AAqnEH6rBO,AACAIM,AACAEM,AACAXM,W;AAVG9CAA7UAiKC,AAAOzDa,A;qBAoYDxKAAtCPCiB,AADYrVO,AACZqVAAKkBmDM,AACcwFW,AAEd9FM,AACc8FW,AACN/FM,AACP+FsB,oF,AAZvBrCY,A;AAyCiByHG;AADPxDW;oBAIRvJAAKUuHAA/qEPltBsB,A,AAgrEH6rBO,AACAIM,AACAEM,AACAXM,W;AAVG9CAAxYAiKC,AAAOzDa,A;uBAgaDrKSAPHvVAAlrEIsewB,A,A;AA2rEK8EC;AADPxDW;sCAGLxGAApaAiKC,AAAOzDa,A;sDA8aQ5BQ;kCAICIQ;AACXpGAAl4EyBmGe,A;uEAm5EvBPAAruEPltBsB,A;AAsuEH6rBO;AACAIM;AACAEK;CACAXM;4FAqKoBoIM;AACJSU;kBAGTtGkB;4LAcH0FW;cAIAAW;cAIAAO;MACWgCI;AAAkBzGG;AAAqBiEU;cAIlDQO;AACIwBM;AAA2BQG;AAA3BRAAkWSxHU,A;cA9VbgGO;AAAsBtJM;AAAiBsLW;cAIvChCO;AAAsBvJM;AAAkBuLW;eAIxChCO;AAAsBnJM;AAAemLW;cAIrC/BAAgFRDQ,AAAYPS,AACe5FQ,A;iEArEXmIG;AACRhCO;eAIkBzEG;AAAqBiEU;AAC/BxRK;iBAIAgUG;AACRhCO;eAIkBzEG;AAAqBiEU;AAC/BxRK;iBAIAgUG;AACRhCO;eAIkBzEG;AAAqBiEU;AAC/BxRK;cAIRgSW;AACACAAqCRDQ,AAAYPS,AACe5FQ,A;sCA9BnBoGAA6BRDQ,AAAYPS,AACe5FQ,A;cA1BnB6CAA2KStbAAoCE0YY,AAAmB2FI,MACtBuCI,AAAkBzGM,AACPvBY,A,AArC3BgGU,AACAAW,A;eAzKQCAAqBRDQ,AAAYPS,AACe5FQ,A;eAlBnB4CAAyKS9BAAqCEbY,AAAmB2FI,MACjBuCI,AAAkBzGM,AACZvBY,A,AAtC3BgGU,AACAAW,A;cAvKYrDAA4KKqEmB,AAGjBhBO,AAAmBzQkB,AACnByQW,AACACAApKADQ,AAAYPS,AACe5FQ,A,M;wCANhB2FU;aACGwCI;AAAkBzGK;sDAWrBjBkB;uCAIX0FU;uEAQW1FkB;0FAIyCyDoB;kBAM7BxOmB;SAKbySM;AAAkBzGO;AADZGAAhzBD7HAA76DsBmGW,A,AA+6DjB/GAAh2DNgHG,A,UAm2DavGAA/2DbyGG,A,AAk3DY0EI,+C;AAsyBxBmBO;AAEctEkB;AAGdsEU;4BAMqBgCiB;AAEZxCQ;sBAGTQO;4BAE4BzEc;AAChB1HAA9uFuBmGY,A;AAgvF/BgGO;YAGmChSK;cAInCgSO;+BA+BKRwB;AAnBYwCa;uCAwBIxCc;aAIbAc;cAIRQkB;WAIJAU;oBAKKRU;iBAGIAwB;AAC0BemB;AACbAK;UACchFM;AACmB9BAA3iFlBltBc,A;AA4iFfksBM;AAEAHM;AAEADK;AACpB2HO;2BASAAO;OAGyB7FY;kFAgCnBqFc;UAERQO;AAAsBpJM;AAAgBoLY;iBAItChCO;AAAsBxJM;AAAcwLY;0EAOnBlIgB;AAAmB2FI;MACtBuCI;AAAkBzGM;AACPvBY;4DAiBKuGK;8FASZ1GQ;+BAEAFI;sBAOAEQ;gCAGAFI;wBAOL9FAAj6FsBmGG,A;4BAm6FR/GAAp1FfgHE,A;IAq1FYjHM;AACP6GQ;gBAEDIK;SAIEhHAA51FNgHM,A;AA61FDpGAA56FwBmGQ,A;wFAm7FbrGU;AACPkGQ;QAEDIK;qEAwDDrG8B;AACGqLW;YAEThJ8B;AACFiJW;0GA8DLnP0B;sBAEY8DAAljGuBmGG,A;wCAyjGnCvyCAA4ZEosCG,A;0CAtZeoGE;AADHxGAAx7FFuGc,A;YA67FAnGAAnkGuBmGsB,A;iCA2kGR1GAA99Ff2GQ,A;0EAu+FM3GAAv+FN2GY,A;wBA2+FMvFAAr/FNuFY,A;qCA6/FIvFAA7/FJuFY,A;qEAghGI3GAAtgGJ2Ga,A;2FAkhGQ/FAAvhGR+FY,A;yBAkiGa3GAA7hGb2GS,A;+FAyiGiB/FAA9iGjB+FQ,A;+IAskGIzGM;AACAAM;AACGqGgB;AACAAQ;SAGkBDwB;AACAAwB;oBAGjBKO;AACAAI;kEAOkB1GAApkG1B0GM,A;AAqkGN1GAArkGM0GQ,A;sQAgmGM3FAA1mGN2FQ,A;AA2mGM3FAA3mGN2FU,A;aAgnGsB5GO;AACAAM;AAGdgBM;AAEAAM;AACewFW;AACAAQ;yBAMf9FM;AAEAAM;AACe8FW;AACAAQ;wCAKAFI;YACbMgB;6BAOaNI;YACbMkB;6BASbNM;YACaMgB;YAMOnGM;AACAAM;AACP+FW;AACAAQ;0BAIFMS;0BAGEAI;2BAIEJM;qCAMcJM;sBAENAM;YACbMkB;+BAQRFM;0DASIrGAAvvGHyGM,A;AAwvGGzGAAxvGHyGQ,A;WAswGOtHAAnhDLiPG,I;2CAshDC3HI;YAIMyEI;uBAEH/EQ;AACWlVoBAsLAsUa,AAAjBsHK,A;+BApLWpGK;wBAITxGQ;gBAOFAW;AACAAQ;8BAWIkGQ;2BAUAIO;AACAAU;6CAwCA9FM;AACAAM;AACA0FgB;AACAAQ;aAEFzFAA30GF+FM,A;AA40GE/FAA50GF+FG,A;oCAg1GMFO;AACAAU;mCASPpGAAn7GwBmG0B,A;sCAu7GItFAAp1G3BuFK,A;eAq1G+B3GAA30G/B2GS,A;0DAu1GiBlK+B;uBAQlB8DAA58GwBmGG,A;qDA+/G1BqF4B;AACExFQ;oBAEEMI;4CAOgBlBa;AAAjBsHI;grBS9oHR/NS;4BA2BRjmBU;wBAwGOASApCSumBAAAAvmByB,A,a;uCAmDCyvBE;uMA2DEzvBoB;AAAAqsBW;8HAiCPxQM;mLC0PI8MiB;AACIzDO;uHAsBJyDkB;AACIzDI;kGAoBXhoCgB;uFAuIkBorCqB;gCAGYnCG;AACxBkKM;sHA+BcIG;2CACDxDK;0CAIboDM;mDA4EIGG;wLAkBTyDwB;wBAMgBnLe;AACFoCsB;AACZ/FyB;gDAcI+FwB;iBAEVmBiB;AAGAXmB;uQG/1BQNU;iBAUqBprBqB;qCAKrBorBU;sFAoBkBprBiB;6IAuD3B9iBW;iBCi5EG8iBqB;OAAAAU;0mDEngE+BAsC;kBAQ9BAqC;6CCjbMAkB;iFAoBNkjBG;6aCrCAljBWAwBQgrBAAAANoB,A,A;wGCXuC1qBAZo+BjB8lBoB,A;6zCD92BxBuPgB;wTAiQN7CO;mFAoB8B5HAAL9BgIIdhYwB4CuB,A,A;4ScsgB7Bx1BiC;iDA+DYyxBgB;AAED1EO;0BAGFAO;oBAGEAU;kCAsBO3IW;+FAgHawMmBFltBc1CK,A;cEytBnCYkB;oEAKRkHAAtLgB3GwC,A;qWT5kBX7CASyLSoIAhB4NX1CiB,A,A;QOnZAvHO;6zB2B4vBCoLmB;8EAqBc/1Ba;qBAGpB+1B6B;qBAMK7SG;2sBCrqBa4Ne;+DAGACoB;wDAIAC2B;wHCsrBFzEkH;ysBAAAAS;YAAAAI;2eAsOTvsB0B;CAIG6yBiF;KAAAAsEA0dAwCO,iG;KA1dAxCyD;OAAAA4C;sNAyNC7yBAnBtPwB8lBkB,A;siCmB6XnB9lBAnB7XmB8lB4B,A;kmBmBu8BvBqPmB;0CAOItnBiC;gMAoCP7NiD;+GAeIAc;2GASX81BApBp8CJ9IO,A;+BoBw8CajD0B;+BAGI/pBc;wJAHJ+pBa;2BAqBG/pBc;AAAJ81BoB;2FAYL5SG;0LA4BQljBc;qBAEgBm1B2B;kEAS3BWApBhhDJ9IO,A;+BoBohDaxD2B;+BAGIxpBc;wDAQJkpByB;iLAYkBiM8B;AACfn1Bc;AAAJ81BoB;uFAUiBX4B;AAGtBjSG;gNAeAuG0B;uFAQyB0LkB;wRAoCrB1Da;sFAeAAY;6PA+BEzxBwB;wCAuBNkjBG;yNAiCH2G0C;OAIYwFiC;uCAIA+Fa;kEAYFp1BAnBpzCuB8lB4B,A;oHmBo0CvB9lBAnBp0CuB8lBsB,A;8dmBu4CDoD0B;wMAkBpBlpBc;AAAJ81Ba;oBAAAACpBn1DZ9IY,A;+DoBg2DO9JG;gOAwEQ2OAlC32DOJa,A;YkC62DLAY;mOAsCDA8B;kEAYLAQ;sBAA4CAiB;0mBAuZhDzSK;mDAtBgCmPAH3pFdnuBW,A;oRGirFlBgfS;2nBAg1BQoFe;qLA+PwCpkBAnBxgGlB8lBwB,A;6+GoB9hCvBqHqB;gHC0aEntBAqBwsBSAAvCjoCvBAAA9B0ByvBAAAAzvBiC,A,A,yB,A;iOmBuHtBwvBqCAIoBpLW,8P;OAJpBoLAAUWpLoB,gB;ySCjHMGc;AAATwLyC;AACUxLC;AAATwL0C;AAEJxLC;AAATwL2C;AAYC5LK;AADAIC;AADLwLc;0EA2E0D+EoB;AACbCY;2BAGPhFO;AAAOAS;AAASAW;WAyS1BxL8B;AAATwLkC;mBACfvL8B;AACUDC;AAAVwLgC;AAE6BxLG;AAATwLgC;AACVxLC;AAAVwLsC;kCAE8BoFiB;AACvB5QoB;mBAIuBAG;AAATwLgC;AACTxLC;AAAVwL0C;mCADOxLoB;gBAOoCsNAP7BzBJa,A;AO8BYlNG;AAATwLsC;AACXxLC;AAAVwLuC;AACsBtsCAAyEV8gCG,AAATwLkD,A;AAzEHvLwB;AAAsB/gCAA2EvBssCQ,A;sBAzEQxLuB;AAGFC+B;AAIPNS;cAGOM2B;AAOPNS;4CAKAxgCAA6BO6gCG,AAATwL+B,AACcxLC,AAAVwL+B,AACqBxLG,AAATwL2D,AAEAxLC,AAAVwLoC,AACqBxLG,AAATwL6B,AACVvL6C,AADFDiB,AAHFAiB,A;sCAnBsCwLe;AAErB0BY;gCAMblNsB;AAESAiB;gCAkB2BuPAPlbrCMO,A;2gBSnDsB7Pc;AAATwLkD;AACMxLC;AAATwLqD;AACaxLC;AAATwLmD;AAKrB7LW;2BAEcMyC;AACDA6B;8BAIFuLS;AAASAM;kBAKSxLyC;iCAQHAmC;gCASCAG;AAATwLiD;yBAKiBxLqC;AACRAC;AAATwL0D;OAGiBxLqC;AACPAC;AAATwLkD;0BASkB0BqB;OAIItNK;AAApCII;AAAPwLgB;yDAuBSoFI;AAAApF+B;AAEKxLyB;2CAQQwLY;WACyBAQ;KAChCxLY;iICpGGwLS;AAASAM;kBAMNxLG;AAATwL6C;2BAcNvL4B;AAIFNW;eAGoBKG;AAApBwLO;AAAOAoC;oWEX0BXmE;yBAkBAA8D;oBEjC5B/rCc;iBAECAAaLV0sCiB,AAAWzLiB,A;gJ7D+TqByOW;+CAqB5B/CgB;8hBGtLsBlCA2D8FuB9tBiB,A;+B3D9FvB8tBA2D8FuB9tB2B,A;+B3D5F/CguBiB;8CA4GAAoB;2MAuBAA6B;saAiJO4EIArUwB4Ca,A;0KA6c/BvHqB;oVAsJ4BmEe;gBAaFpyBoB;QAAAAW;kJAkD1BiuBuC;gc+C1uBW2Da;AACHAY;4gChB2DD+CiC;mfA6PEDiB;6b7B5VqB10BS;eAAAAe;OAAAAa;8XAoKPAiB;4BAAAAoC;uPEpIGAmB;OAAAAa;+PA2UAAS;mBAAAAe;OAAAAa;85BE9PjBgqBkB;oEAkBFgII;yMR6FiC4DqB;oEAmBpClEO;mKAYAJO;yFAKMtxBe;sBAEe41BS;6BAGlB51Be;usBA80CqByxB+B;gvBA85BChFa;AAAeAe;8CAOQAe;8BAOlChCiC;AACAsIS;kLW59EX/yBkB;uDAAAAU;SAIqB8gBgB;YAAAAAAJrB9gB0B,A;2EAWEwlBAA+PiB6CS,A;oFAhOEAiB;4FAKAAI;gGAUf1BGAgLNyBa,A;2OA/JLiJwCAQWjJI,sF;yLA0EaCI;oFA2BDroB+B;wfAwHlBAU;sBAAAAAA0BTAAAAAAO,A,A;6dE9UI81BAGgnBF9IAA2BuBwHQ,A,A;0BHvoBnBsBAG4mBJ9IAA2BuBwHc,A,A;oBHjoBnBsBO;AAIJAAGkmBA9IAA2BuBwHO,A,A;iDHtnBRlIU;oTAiCHqJAGubLpDM,A;iBHvbKoDa;0GAoDgBxKAAvIImBO,AAAmBAK,A;AAuIFpGgC;yBAInBoGQ;+HC7FjBhDG;qBAAAA0B;AAAgCMU;AAAYZW;sFAmFlDhpBW;oCAgDOs0BG;QAAAAW;4BAQkBrEK;iNAuElBqEkB;AAIIvCAA5GEnIe,A;4EA+GVD0B;mrCJ3JHx5CiB;iBAAAAAAoZ0Bu8CqB,A;eA9YDn4CMAsZZm4CqB,A;4aSjahBlEkB;waAsKAxoBc;gMCxQQwqBW;iEAQZnFS;2EAgBYmFW;qFA4HPmGW;oBACE1DY;AAA6B7GI;8CAazB6GK;kGAQLwDU;qTAsIkB5UW;kGAoBA7buC;QACPijBwD;wDASOjjB+B;QACPg1ByD;4GAoGbzKG;6CAQiBrFQ;AACL4DY;sBAQd5rCgB;gFAQEqtCG;kGAiBiBrFQ;AACL4DY;iCAQd5rCgB;iSAkJFmvCW;mCAQAZmB;iGA8DAvuCmB;kGAwBAAmB;8jBAwEyBqzCGAnmBlBtDS,AAAUJa,A;gCAqmBwB1GE;2BACDAQ;mDAOc2CiB;AAC3BRmB;IACqBnCI;+LAkBjBmKC;IAAAAAA5qBxBrDS,AAA+BnCO,A;gIAqrBC3ES;iBAElBuKAA7rBd7FU,A;0DAksBsB1Ea;6QCotB3BkKU;oe2B1gDwBrwBkB;sBAAAAW;QAAAAa;6CA6QF8tBAalDuB9tBU,A;QbkDvB8tBAalDuB9tB6B,A;sFb6R5BoyBe;oTrBlaf0DmB;AACAAAX2hBJ9IU,A;AW1hBI8Ie;qUCIAhMG;sBACK8CS;gDAIMlFI;8DAMCoCa;AAAc8CE;AAAa5LG;8BAMvC8IU;AAAiChJAjBtG9B9gBU,A;AiBsGiB4sBG;iBAAa9LOjBtG9B9gBU,A;QiBuGAAc;+BASH8pBS;CACF8CiB;oGA8BE9CS;WAAoB8CO;QAEjBrEyC;sCA+BHuBS;QAAoB8CS;6CAOVlFI;oCAEqBAM;4FAiClB8NgB;kDAMb1LS;QAAoB8CE;wJA6BnBrE6C;+BAC+BbK;8FA4BrBoCgB;yCASAAU;gCAEclJA1BkZH5gBsB,QAAAAY,A;0d4BpnBbgzBqE;wNAqBmBhSqB;oEAQdhhBc;AAAJ81Ba;mBAAAEAdghBM3GoB,A;8FchgBSrOQ;+FASvB8UAdkfN9IAA2BuBwHQ,K,A;QczgBkBtRG;kmBsBsE1BljBc;+FAQRkjBG;yDCnCqBtHa;UAAAAI;gJtB/GJ5bAd4+Ba8lBiB,A;Ocz+BV+PAAwCbnQAAG4B1lBAd87BL8lBoB,A,A,c;iCc79BtB/CAdw/BR3Ue,qB;iKcr8BMgXiC;6UAqCAiEU;yTA6IXrpBkB;4BAAAuuBe;0fA6P0BvuBoC;0lBAatBg2BAfyDc3GgB,A;iFehDR2GAfgDQ3GgB,A;ce3CR2GAf2CQ3GgB,A;kBepCR2GAfoCQ3GkB,A;AenCR2GAfmCQ3GC,AAApBrCY,A;yMePQgJAfOY3GO,A;6FeKhB2GAfLgB3GsB,A;oCecbnMG;8Ff8EMtsBAAntBMk5BI,A;AAmtBfgGAAjGJ9IM,A;AAkGI8IAAlGJ9IU,A;ipCT9KwBvMK;+KSiQNzgB+C;iEAKd81BAAxFJ9IO,A;0HAuGoBp2BAAztBDk5B2C,A;mwDAwBWiDc;sToBgvCpBvEsB;uEAKFAwB;AACAAyB;ueAoNgB/FMA22CboJAHj+EWJ2B,A,AGq+ElB5Ra,mBAGFiWApBluEF9IAA2BuBwHY,A,A,AoBwsErB1HOA/BY+EAH18EQJY,A,AG48EpBqEApBtsEF9IAA2BuBwHU,A,A,MoB6qEJsBApBxsEnB9IAA2BuBwHQ,A,A,coBgrErBsB4B,A,oBA4BAAApBvuEF9IAA2BuBwHa,A,A,coBgtErBsBApB3uEF9IAA2BuBwHU,A,A,A;qLoB+1ByC1SG;qCAA9D9hBG;mVAwac6fG;iBAEIgSAH1iDEJmC,A;qBGojDyBAiB;uHA+jBV/RG;oPAwYjCGmB;IACAwDa;+DAIArDa;sBACA8BK;mBACAhCa;sBADAgCK;iPAnlBeiN2C;AACU8CAH/6DPJc,A;AGg7DlBqEApB1qDJ9IS,A;AoB2qDqB+BQ;AAHFAoB;wNAssCExJ0FAgBdvlBG,A;0BAhBculB2B;4fA41BAsLU;AAAc/QiB;mGAc/BqJgC;aACAC6B;cACAHwB;aACAM+B;4OAaAJ+B;UACAC6B;uMAoDGppBO;AADFggBW;2MAgEe6RAHlmIEJgC,A;wCG4mIkBAiB;oZEvhIlCzxBwB;27BC5cOyxBY;mBAID0DkB;oIAQWAG;iBACSAG;mKAgDdDM;YAAXzCArCoOAzyBW,A;iBqCpOWk1BW;yGA3BGjRI;EAAAAG;wtBCpDV8LS;AAASAM;2BAKbxLiD;AAEKAmC;iEAaZznBAsBTAq2B2D,A;kYtBoBkBpDc;gCAMETADxBH2CG,A;gBCuBwB9NK;AAAPGwB;QACdgLWDxBH2CmB,AACJQAS0JuBzyBkC,A,AT1Jbk1BgB,aAAAAa,A;AC2BDXO;aAAAxEO;AAAOAY;8CAIf8BAtC+pBQJa,A;2BsC5pBAlNC;AAAhBwLO;AAAOAiB;kOAmCexLM;AAATwL+B;AACjBvLiC;AACAAyC;AACAuLsB;AACUxLC;AAAVwL0B;AACAxLc;SACAAc;4EAI8BAM;AAATwL+B;AACXxLC;AAAVwLuC;yEAGgCxLM;AAATwL+B;AACbxLC;AAAVwLoC;gFAYWvLgD;AAEb+PO;AAAS/PC;AAATuLqC;AAUI7LW;eAImBKG;AAATwL+B;AAAyCxLC;AAAVwL6B;AAEzCxLiB;AACACqC;AACAAqC;AACUDC;AAAVwL2B;AAGAxLiB;AACAAc;yBAMAwLO;AAAOAS;AAASAsB;uGA0BSxLwB;AAATwLiD;mCASPxLG;AAATwLmC;AAA6CxLC;AAAVwLiC;AADnCxLiB;AAISAG;AAATwL2D;AADAxLiB;AAISAG;AAATwL+B;AACcxLC;AAAVwLiD;2BAFJxLqB;GAMcsNA7B1JIJO,A;mB6B2JpB7QSlC+KwB5gBe,SAAAAS,aAAAAmB,A;AkC/KxB6bM;WAAAAuB;AACc0IsB;AAGWAG;AAATwL+B;AACFxLC;AAAVwL6I;qHAQgBxLG;AAATwL6B;AACPvLsB;AAAqBtB4C;AAEfqBiB;AACEAiB;yBAKZwLsB;AACAvLwC;0GAiBciNQ;gJAYAlNgB;MAIhBsPM;AAEAMUAzFkB7PiB,UAEZyLuB,AACAvL0C,A;AAuFN0PIAlCqCHuD,qB;yFA4CAtCa;kOAiBrCoCS;kEASarP2B;AAITNS;iBAGSM0B;AAITNS;iBAGSM2B;AAITNS;iBAGSM6B;AA0FTNS;kDApRU6LY;UAAcAS;AAASAiB;AACzBzLmB;AACOAI;2DAsKWyLU;iGAcAAO;gFAOhBAiB;eAMAAgB;AACFzLsB;oBAEoCCG;2CAEtBAI;AAAhBwLO;AAAOAiB;0FASOxLI;AAAhBwLO;AAAOAiB;AAAgB7MQ;+CAQjB6MqB;6CAMOAuB;aAEb8DY;oBAIa9DgB;8CAKaAQ;qBAQvBxLC;GADAwLkC;qBAMcxLC;AAAVwL+B;oEAMqBAsB;AAEHAW;QACQA2B;AAEcAc;AACpCzLuB;gBAMgByLQ;gGAUzBzLkB;gCAwCFAkB;2DAQYCI;AAAhBwLO;AAAOAiB;UACDzLmB;wJEjbYCC;AAAVwLkC;cACcxLC;AAAVwL2B;6LAsDEAc;AACcxLM;AAATwL6J;AAINxLC;4CAIgCJK;AAAPGwB;YACTCM;AAATwL6C;YAITxLC;8HCvELwLU;AACIvLqC;AACNAqC;AACcAI;AAApBuLO;AAAOAgD;AAEKvLsC;AACNAsC;AACcAI;AAApBuLO;AAAOA4C;6hZ3CswCQsD0G;CAAAAG;6DAUAC8G;CAAAAG;2DAUACuD;CAAAAG;6DAUAC2D;CAAAAG;kJ8B5xBgCjEU;igBKmB/B0BM;" + "frames": "izHAoJe+gDyB;oCAKAAyB;eAKCbG;kBACeDE;gEAIlBAE;KAGOFO;iGAaA7/CAA8CgBCeANKkEuC,A,I;qMATrCjEAAmB0BDeAVWkEoC,A,AAUvCy7CkC,A;6QGrJSyDIAsCwB4CyB,A;oCAwhBbzGW;mvEEpkBTltByC;QAEF6iByC;sYI0+BwB7iBQ;oqBR98Bb6zBI;uEAmCLrGG;oQAyLTxJqC;sfAwJS/0CAW0fRCiB,A;cX1fQDAW0fRCAAo5B6Cq9Ca,A,A;0CXv3C1BYS;gJAYbl+CAWudNCIAo5B6Cq9Ca,A,A;uGXt1CzCyGAARFzCiB,A;0JAyBWWW;8lBAyuBoBrXoB;2KAoCnBAwB;gBASAAuB;4DA8CA7ZqC;mvBAuHdAwC;oTAsPEAmR;iZAkNAAW;sfA4DyBAW;0WAkCJAW;eAQ1BAkC;6BAKuB4aoD;OAChB5aU;0DAOCyzBI;cAIgBzzBwC;2JAUjBAU;0EA8BmBAW;sCAGtBAc;4JAsEKyuBQ;oCAEDDK;AACEAK;wKA+DRxuBAY3rE8BAgE,A;keZ+3E1BAkC;cAKAA0D;y4CAyTEA4D;6sBA+F6B6vBuC;AACHkCmC;yEAwIzBtgDAW16ENo4CoB,M;qDXg8EU7pBiD;yCACK8wBW;+KCtzFTUI;YACcx/CAAsE3BDAFzIAu7C2G,A,A;QEmE2Bt7CAAuEpBy7CE,A;OAtEW+DI;yCAKKv/CAAzChBu/CI,A;6CA+CMAI;YACkBx/CAAyD/BDAFzIAu7C2G,A,A;QEgF+Bt7CAA0DxBy7CE,A;OAzDW+DI;yCAGKv/CAApDhBu/CS,A;4EA0EEx/CAA+BTDAFzIAu7C2G,A,A;QE0GSt7CAAgCFy7CE,A;sDAvBEv7CAA2BTHAF9IAu7CsB,A,4G;QEmHSp7CAA4BFu7CE,A;8FAbEv7CAAYTHAF9IAu7CsB,A,4G;QEkISp7CAAaFu7CE,A;gEAMP17CAFrJAu7CsD,A;0hBEwNQv7CAFxNRu7C4H,A;2DEsO2BkE4D;wTAqFX/+Cc;8fcxRPIAAnGFigDqB,A;2IA+QPrTADdIzfgD,A;WCcJ0U0B;AAC+Diea;AAA7DsBQ;oBACAAI;iBACmB9VQ;AAErB8VQ;o7CEyoCuCzPiB;kiBN7yChBoEO;AAFA4DG;gBAGf7BgB;AAD0CnFAA6JlC+GM,A;gBA/ECxGAAxBsBuGG,A;6BA0BECG;uCAsJzBEG;2GA4OD1GAA5ZwBuGG,A;mEAqabCG;sEAUAAG;sEAUW1GG;uDAe3BDAAtYM6GK,A;YA0YGtHAA9XHoHG,A;uBAgYQrHG;6EAiBHoBAAvYIJO,A;AAwYJGG;sEAUIGAA9XT+FG,A;uBAqYiChHG;6EAqB5BGQ;AACDwGQ;uBAODzGAAxZH8GG,A;gFAqaI5GAA3ZJ2GG,A;sBA+ZUNO;uIAmBNEkB;yBAGDKI;mFAiBCLkB;0BAImBFO;AACEAS;AACtBOM;sFAyB0BhGsB;AASANK;iBASbDK;8CAYiB8FAAhZR9rBc,A;AAiZrB8qBM;AAIAJM;AAIADK;sHA4CF8BM;yDAaZlFK;sEAuBFEG;cAIOwIoB;oSAmFkB1ImD;6FAyBX2EI;uBAENp4C4B;mEAyEyBuBAEl+BtBsxCqB,A;aFk+BsBtxCAEl+BtBsxCW,A;CFm+BKrxCgBAlFlBiyCiB,A;uCAsFcqFO;GAELqDoB;OAAwBrJO;wBAOMpxCAAI5B0qBO,A;AAJFqlBG;gBAA8B/vCAAI5B0qBAAkCbAAAAAAAACMkqBgB,A,A,A,A;sDAzBSLsB;mCASFDwB;mBAGNCwB;oBAKkBj2C0B;qBA6DrB22CW;OACOnDM;sEAWIrBAA7gCwBuGG,A;0GA+hCnB1GAA79BJ6GG,A;IA89BM5GiB;AAWdmFU;2EAYCp1CQA2BmB0wCAA1/BZmGI,A,AA2/BMpGI,A;8CArBPNAA9jCwBuGmB,A;gIAmmC1BnBgV;AAEFrIC;AADPkHK;sIAiEO5CI;AADOhBAAlkCFmGO,A;mDA4kCF5FG;iBAKVYG;8GAsBOwIoB;YACGpJG;iBAKVYG;+GAkBEAG;WAOYZG;oGAwBZYG;2HA0BSHU;6DAaWAmB;2DAQRiHuB;OADsBn/Ca;qCA6BPAIA8VmBq9CkD,A;iBAhVhC8BuB;qCAgBTjHC;AAAa5BAAlwCR+GS,A;uBAmwCRnFI;q4CAwKmB8EQ;qBAGDKO;sCAYAjGAAz8CVmGM,A;AA08CKpGG;qCAMG6FQ;AACF+GkB;AACE/GU;gEAOGKO;gBAELEI;yGAgBMPQ;8JAgBFKO;AACjBpwCAAukEM4pCAA3pHwBuGG,A,A;sFA6lDlB9FAAj/CCNO,A;AAk/CeXM;AACQgBM;AAGP2FW;AACOjGM;AAGPiGW;AACNlGM;AACPkGQ;oDAWVKQ;oDAaEAQ;4DAaFHM;uBAKEGe;AAIFEI;kGAsBA1GAA5qDwBuGG,A;gIAqrDVlGAAnlDbmGG,A;cAqlDSxGAAvrDcuGG,A;uEAgsDV9GAAzlDb+GS,A;mBA8lDI3GAAnoDJ6GI,A;GA4oDM5GG;4HAgBOJAAxmDb8GM,A;AAymDG7GG;eAUDCAAzmDIOG,A;mEAinDF2NI;yDAsLP9OAAHK2OG,S;uBAKP3OAALO2OG,I;oCAWD5FO;+DAKOxBI;AACP3DgB;oGAiBO+KM;wBAqCA5FM;aAeH8CS;AADP7Ce;oBAGFvE0B;AACHqHW;gCASSvLG;cAGVgFa;AAEasGW;oBAETpHuB;AACHqHW;kCAKS5LG;cAGVgFgB;AAEuBjbAAx2DfydI,A;AAy2DKmEW;gCAGX7KAA5hE6BuGQ,A;AA6hEdpHQ;AAKhB2LW;oBAyCH7GS;AACAOQ;qBAuGeqGW;AADP7CW;oBAGsBrJAAIpBoHAAjhEP9rBsB,A,AAkhEHwqBM,AACALM,Y;AANGjDAApGA2JC,AAAO9Ca,A;qBAqHK6CS;AAFNnNAA7DKzUAAv9DJydW,A,A;AAqhEFsBW;oCAGL7GAAvHA2JC,AAAO9Ca,A;0CAqIOhIAAttEgBuGQ,A;2DA2tEZ9GAApnEX+GI,A;uCA0nEATAAzjEP9rBsB,A;AA0jEHwqBM;AACAIK;CACATM;6BAWeyGS;AAFNtNAApGKtUAAz9DJydW,A,A;AA8jEFsBW;oCAGL7GAAhKA2JC,AAAO9Ca,A;wCA8KOhIG;kDAIV6Ce;qCAKGkDAAhmEP9rBsB,A;AAimEHwqBM;AACAIK;CACATM;2BAOeyGsB;AADP7CW;oBAMVzJAASYwHAAxnEP9rBsB,A,AAynEHwqBO,AACAIM,AACATM,Y;AAfGjDAAnMA2JC,AAAO9Ca,A;8BAwNM7BQ;sCAEIKG;AACCvdAA5nEXydI,A;kCAqoEMPQ;qCAGmBFO;AACZIwB;AAIPGK;AACKvdAA9oEXydI,A;uCAyqEDjJAAjBO0IU,mB;AAmBD0EG;AADP7CW;oBAMVxJAAUYuHAAlsEP9rBsB,A,AAmsEHwqBM,AACAIM,AACAGS,AACgBmBW,AAEdvBI,AAA6BqBK,AAE/B7BM,Y;AArBGjDAA5QA2JC,AAAO9Ca,A;yCA2TNhIAA54E6BuGW,A;AA64ErBnHAA/zEFoHG,A;AAg0EUNG;AAChB/GkB;QAIK/BGApBPnUAA/sEQyduB,A,A;AAquEKmEG;AADP7CW;oBAMV5JAAUY2HAA5vEP9rBsB,A,AA6vEHwqBM,AACAIM,AACAGM,AACAZM,Y;AAjBGjDAAtUA2JC,AAAO9Ca,A;qBA6WDrKoC;AAEMkNC;AADP7CW;oBAMVtJAAUYqHAAvyEP9rBsB,A,AAwyEHwqBO,AACAIM,AACAGM,AACAZM,Y;AAjBGjDAAjXA2JC,AAAO9Ca,A;qBAgcD3KAArDbCiB,AADIrUO,AACJqUAAM6CkDM,AAGP2FW,AACOjGM,AAGPiGW,AACNlGM,AACPkGsB,oF,AAjBtBxCY,A;AAyDgBkHG;AADP7CW;oBAMV1JAAUYyHAA13EP9rBsB,A,AA23EHwqBO,AACAIM,AACAGM,AACAZM,Y;AAjBGjDAApcA2JC,AAAO9Ca,A;uBAyeDxKSAZTvUAA93EUydwB,A,A;AA44EKmEC;AADP7CW;sCAGL7GAA7eA2JC,AAAO9Ca,A;sDAkgBQ7BQ;kCAICKQ;AACXxGAAxlFyBuGe,A;uEAknFvBRAA18EP9rBsB,A;AA28EHwqBO;AACAIM;AACAGK;CACAZM;6FA0KoB6HM;AACJUU;kBAGT9FkB;4LAcHiFW;cAIAAW;cAIAAO;MAES+BI;AAAkB/FG;AAAqBwDU;cAKhDQO;AAEEwBM;AAA2BOG;AAA3BPAAgYD/GU,A;cA3XDuFO;AAAsBlJM;AAAiBiLW;cAIvC/BO;AAAsBnJM;AAAkBkLW;eAIxC/BO;AAAsB/IM;AAAe8KW;cAIrC9BAA0ERDQ,AAAYPS,AACepFQ,A;iEA/DX0HG;AACR/BO;eAIchEG;AAAqBwDU;AAC/BlRK;iBAMIyTG;AACR/BO;eAIchEG;AAAqBwDU;AAC/BlRK;cAMJ0RW;AACACAAqCRDQ,AAAYPS,AACepFQ,A;sCA9BnB4FAA6BRDQ,AAAYPS,AACepFQ,A;cA1BnB4CAAmMS1aAA2CE+XY,AAAmBmFI,MACtBsCI,AAAkB/FM,AACPvBY,A,AA5C3BuFU,AACAAW,A;eAjMQCAAqBRDQ,AAAYPS,AACepFQ,A;eAlBnB2CAAiMS5BAA4CEdY,AAAmBmFI,MACjBsCI,AAAkB/FM,AACZvBY,A,AA7C3BuFU,AACAAW,A;cA/LY9CAAwMK8DmB,AAMjBhBO,AAAmBpQkB,AACnBoQW,AACACAAnMADQ,AAAYPS,AACepFQ,A,M;wCANhBmFU;aACGuCI;AAAkB/FK;sDAWrBjBkB;uCAIXiFU;uEAaWjFkB;0FAIyCoDoB;kBAM7BvOmB;SAKjBmSM;AACA/FO;AAFQGAAz5BCjIAA3iEsBuGU,A,AA6iEjBnHAA/9DNoHG,A,UAk+Da3GAA9+Db6GG,A,AAi/DYiEI,+C;AA+4BxBmBO;AAEY7DkB;AAOZ6DU;4BAMqB+BiB;AAEZvCQ;sBAGTQO;4BAE4BhEc;AAChB9HAAz9FuBuGY,A;AA29F/BuFO;YAMI1RK;cAMJ0RO;+BA+BKRa;AAnBYuC2B;uCAwBIvCU;aAIbAU;cAIRQU;WAIJAU;YAKKRU;iBAGIAwB;AAC0BgBmB;AACbAK;UACcxEM;AACmB/BAAhzFlB9rBc,A;AAizFf8qBM;AAIAJM;AAIADK;AACpBoHO;2BAWAAO;OAIWpFY;kFA0CL4Ec;UAERQO;AAAsBhJM;AAAgB+KY;iBAItC/BO;AAAsBpJM;AAAcmLY;0EAOnBzHgB;AAAmBmFI;MACtBsCI;AAAkB/FM;AACPvBY;4DAmBb+FK;8FAUMnGQ;+BAEAFI;sBAOAEQ;gCAGAFI;wBAOLjGAArqGsBuGG,A;2BAuqGRnHAAzlGfoHE,A;IA0lGYrHM;AACPgHQ;gBAEDKK;SAIEpHAAjmGNoHM,A;AAkmGDxGAAhrGwBuGQ,A;wFAurGbzGU;AACPqGQ;QAEDKK;qEA0CDzG8B;AACGuGW;mCAGXwEW;2FA2BO9KAAnwGuBuGG,A;0CA0wGnClKAAyZ0B2DAAnqHSuGO,A,A;iCAgxGlBCE;AADH5GAA/oGF2GW,A;YAopGAvGAApxGuBuG4B,A;2BA2xGM9GAAprG7B+GK,A;iEA4rGoB/GAA5rGpB+GS,A;mCAmsGgB/GAAnsGhB+GU,A;8EAktGenGAAvtGfmGS,A;yBAiuGwB/GAA5tGxB+GM,A;kFA2uGwBnGAAhvGxBmGK,A;+IAwwGI7GM;AACAAM;AACGwGgB;AACAAQ;SAGkBDwB;AACAAwB;oBAGjBMO;AACAAI;4DAShB9GAAxwGQ8GM,A;AA0wGR9GAA1wGQ8GK,A;0PA4yGM/FAAtzGN+FQ,A;AAuzGM/FAAvzGN+FO,A;aA4zGsBhHO;AACAAM;AAEQgBM;AAGAAM;AAGP2FW;AACAAQ;yBAKOjGM;AAGAAM;AAGPiGW;AACAAQ;wCAOAFI;YACbOa;6BAOaPI;YACbOe;6BAUfPM;YAEeOa;YAMOvGM;AACAAM;AACPkGW;AACAAQ;0BAIFOS;0BAGEAI;2BAGILM;qCAKcJM;sBAERAM;YACbOe;+BAMVHM;wDAaMxGAAt8GH6GM,A;AAu8GG7GAAv8GH6GQ,A;WAq9GO1HAAnnDL2OG,I;2CAsnDCjHI;YAIMgEI;uBAEHvEQ;AACWzUiCA0LjB4aK,A;+BAxLW5FK;wBAIT5GK;gBAaFAW;AACAAK;4BAgBIqGQ;2BAUAKO;AACAAO;2CA8CAlGM;AACAAM;AACA6FgB;AACAAQ;aAEF5FAA3iHFmGM,A;AA4iHEnGAA5iHFmGG,A;oCAgjHMFO;AACAAO;iCASPxGAAlpHwBuG+B,A;oCAspHQ9GAA/iH/B+GI,A;wBAojHDxGAA3pHwBuGG,A;qDA8sH1B2E4B;AACE/EQ;oBAEEOI;yDAUD4FI;krBQ7yHR1NS;4BA6BR3kBU;wBA6GOASApCSglBAAAAhlByB,A,a;uCAqDCsuBE;uMA+DEtuBoB;AAAAirBW;8HAkCPvWM;6IC1TIAM;0DAYV6WQ;2BAMJAsB;OAEgB1IY;4CAqkBFsEkB;AACIxDI;wBAGhBZKAyKwB/iBQ,A;AAxKR6Z8D;+CAehBuQiB;2DAhBArHAAyKwB/iBU,A;AAxKR6ZK;+CAiCXsYgB;uFA2JkBrLqB;gCAGYjCG;AACxBmKM;sHAiCcIG;2CACDvDK;0CAIbmDM;mDAuFIGG;uLAkBTmDwB;wBAMgBhLe;AACFqCsB;AACZ/FyB;mDAcI+FwB;iBAEVsBiB;AAGAZmB;4LGl9BJpBQ;mEAcYcU;iBAUiB/pBqB;qCAMjB+pBU;sFAoBc/pBiB;yFC4iFxBAqB;OAAAAU;6hDEtmEmCAwC;kBAQ9BAuC;SE9fayfkB1BksBMzfgC,A;U0BjsBe0UM;gBAAAAS;sDC0E5B1UkB;sFAoBN2hBG;icClCA3hBWAwBQypBAAAALoB,A,A;wGCITppBAdszC+BwkBoB,A;6zCDrsCxBjLgB;8oBAgRTvZiC;kDAkEUiwBgB;AAEDtEO;0BAGFAO;oBAGEAU;uFA0JoB4DmBFvkBcxCK,A;cE8kBnCYkB;qEAIRwGAAzMgBlGwC,A;qYTtdX5CASwMS2HAhBiPXzCiB,A,A;QOvbAlHO;4zB4BuxBC6KmB;8EAwBcl0Ba;qBAGpBk0B6B;qBAMKvSG;2sBC/rBa8Ne;+DAGACoB;wDAQAC2B;qICwsBFvE+H;ksBAAAAS;YAAAAI;gzBAyOTprB0B;CAYGgxBqF;UAAAAuEA6nBAzXQ,kF;KA7nBAyXyD;OAAAA2C;yUAmPChxBApB+CwBwkBkB,A;snBoB8CtBxkBc;kBAQJAqC;mBAIAAc;QAMFA+C;iBAGAAuE;+FAUAAkD;6xBAyISAApBtNmBwkB4B,A;0oBoBq2BX+OwB;0CAUR3lBiC;gMAyCP5NiD;+GAeIAc;2GASXi0BArBp0DJrIO,A;mBqBw0DatDqC;+BAGItoBc;4CAHJsoBI;uIAqBGtoBc;AAAJi0BoB;2FAYLtSG;gMA4BQ3hBc;qBAEgBuzB2B;wDAS3BUArBh5DJrIO,A;mBqBo5Da5DoC;+BAGIhoBc;4CAQJ0nBqC;wKAYkB6L8B;AACfvzBc;AAAJi0BoB;uFAUiBV4B;AAGtB5RG;kMAeAsGuC;uFAQyBsLkB;sRAgDrBtDa;sFAeAAY;4PA0CEjwBwB;wCAuBN2hBG;yNAsCHyGoC;OAIY6FiC;uCAIAuFa;mEAYFxzBApBtvCuBwkB4B,A;oHoBswCvBxkBApBtwCuBwkBsB,A;4coBw1CDkDyC;mLAkBpB1nBc;AAAJi0Ba;CAAAAArB9vEZrIyB,A;+DqB2wEOjKG;6NA2EQwOAnC/pEOFa,A;YmCiqELAY;mOAsCDA8B;kEAYLAQ;sBAA4CAiB;ylBAsfhDlSK;mDAtBgCiPAHtiGdhtBW,A;kRG4jGlB+dS;2nBA2oBQ8Ee;qkQE5/GC7iBAsBunBKAAzC5kCnBAAApBsBsuBAAAAtuBiC,A,A,yB,A;iOoBsDlBouBqCAIoBvLW,8P;OAJpBuLAAUWvLoB,gB;ySCjHMIa;AAATyLyC;AACUzLC;AAATyL0C;AAEJzLC;AAATyL2C;AAYC9LK;AADAKC;AADLyLc;0EAwE0DwEoB;AACbCY;0BAGPzEO;AAAOAS;AAASAkB;WA2SnCvqCAqBggDa8+B2B,AAATyLkC,A;mBrB//CnBxL8B;AACUDC;AAAVyLgC;AAEoBtqCAqBy5DS6+BG,AAATyLgC,A;ArBx5DVzLC;AAAVyLsC;kCAE8B6EiB;AACvBtQoB;mBAIc7+BAqBi5DQ6+BG,AAATyLgC,A;ArBh5DRzLC;AAAVyL0C;mCADOzLoB;gBAOoCkNAPhBzBFa,A;AOiBoB3rCAqBm2CC2+BG,AAATyLsC,A;ArBl2CpBzLC;AAAVyLuC;AACsBlqCAAwEpBDAqBs+K6B0+BG,AAATyLkD,A,A;ArB9iLtBxLwB;AAAsB1+BAAwEqBkqCQ,A;sBAtEpCzLiB;AAGFC+B;kBAOAA2B;gDAYPz+BAA4BwDNAqBs7C5B8+BG,AAATyL+B,A,ArBr7CXzLC,AAAVyL+B,AACYhqCAqB4uCwBu+BG,AAATyL2D,A,ArB1uCfzLC,AAAVyLoC,AACY/pCAqBw8CmBs+BG,AAATyL6B,A,ArBv8CpBxL6C,AADFDiB,AAHFAiB,A;sCAlB0CyLe;AAErBuBY;gCAMbhNsB;AAESAiB;gCAiB2BiPAPhbrCOO,A;2gBSjDsBxPa;AAATyLkD;AACMzLC;AAATyLqD;AACazLC;AAATyLmD;+BAOPxLyC;AACDA6B;6BAIFwLS;AAASAM;kBAKSzLyC;iCASHAmC;gCASCAG;AAATyLiD;yBAKiBzLqC;AACRAC;AAATyL0D;OAGiBzLqC;AACPAC;AAATyLkD;0BASkBuBqB;OAIIrNK;AAApCKG;AAAPyLwB;kFAuB6CzLG;AAAXyLiD;AAAiCAO;+DAU7CAY;WACyBAQ;KAChCzLY;gICvGGyLS;AAASAM;kBAMdzLG;AAATyLoD;wBAgBQxL2B;qBAQYDG;AAApByLO;AAAOAoC;obGmeWuBY;iEAIQvNAgBpeSCE,A;qEdhC9B3+Bc;gBAECAAeLV0qCiB,AAAW1LiB,A;gJjEwVqBkOW;gBAqB5BvCgB;oiBG1MsBhCA+D2FuB3sBiB,A;+B/D3FvB2sBA+D2FuB3sB2B,A;Q/D0C/C6sB8C;saAiJOkEIA1UwB4Ca,A;+FAkd/B7G8B;yUAqJ4B0De;gBAcFxwBmB;QAAAAU;4SA4HFkxB8B;uciDzzBbhBa;AACHAY;y/BjBiED6CiC;mfAmQEDiB;8Y9BxWiB9yBmB;8CAAAAa;oVAwKPAiB;4BAAAAoC;uPIxIOAmB;OAAAAa;wjBC+EjBwoBkB;oEAkBF6HI;0YAiNsD9HmBAXpDCe,kB;OAWiBxoBqC;6CAKnBqwBI;6oBTmiDqBJ+B;+uBAmiCC3Ea;AAAeAe;8CAOQAe;8BAOlCpCiC;AACAgIS;iE2Bz4FIlxBmB;wDAAAAW;iDAUbkkBAA+PiB2CS,A;oFAhOEAiB;4FAKAAI;gGAUfzBGAgLNwBa,A;2OA/JLkJwCAQWlJI,sF;yLA0EaCI;oFA2BD7mB+B;kYAwHlBAU;0BAAAAG;oNAyDAAU;0BAAAAG;iddnWLi0BAGkfFrIAA2BuBgHQ,A,A;0BHzgBnBqBAG8eJrIAA2BuBgHc,A,A;oBHngBnBqBO;AAIJAAGoeArIAA2BuBgHO,A,A;iDHxfR1HU;kNA6BYaAXHpBgFIAqBwB4CkB,A,A;6FWVnBG4B;kHAoDgBhKAA/IIoBO,AAAmBAK,A;AA+IFtGgC;yBAInBsGQ;+HC7G5BpDG;qBAAAA0B;AAEAKU;AACAXY;sFA6HKxnBW;oCA8CJ2yBG;QAAAAW;4BAY6B/DK;mNAwElB+Dc;SAIIvCAAlHEjIe,A;4EAqHVDuB;glCHtNH2BiB;qDAMyBD2B;qBAiiCb16CkB;mBAAAAAAytB+Bq9CQ,A;0WQ7tD9CvFkB;oTA6FFlDKC2fmB9jBmB,A;ADzfnB+iBKC2kBwB/iBa,A;6FD5fgBAc;yKC3O9BgpBW;4CACZjFK;qFAeYiFW;qFAiIPsGW;oBACEzDY;AAA6B/GI;8CAgBzB+GK;kGAULuDU;gRAyIkB1aW;kGAqBJ1UuC;QACP0hBwD;wDASO1hB+B;QACPozByD;4GAuGTrKG;6CAQiBpFQ;AACL2DY;sBAQd6KgB;gFAQEpJG;kGAiBiBpFQ;AACL2DY;iCAQd6KgB;qKA+IFlHW;sCAMWnEe;oMA8EXqLmB;sEA4BAAmB;+VA8EyBjDGA7nBlBrDS,AAAUJa,A;iCA+nBwB5GE;uBACDAQ;mBAEP7kBiB;yDAKqBsnBiB;AAC3BRmB;IACqBjCI;0CAWrBsEAAiGzBiLW,U;oJA3F4Cp0Ba;mEAUfivBC;IAAAAAAttBxBpDS,AAA+BtCO,A;oDAwtBPvpBoB;0FAOQ6kBS;iBAElBwKAAxuBd/FU,A;0DA6uBsBzEO;gDAGI7kBiB;iQCoyB/BgvBU;oe6BlsDwBhvBkB;sBAAAAW;QAAAAa;6CA6QF2sBAehDuB3sBU,A;QfgDvB2sBAehDuB3sB6B,A;ef2R5BwwBe;oTrBlafyDU;AACAAAbqaJrIiB,A;AapaIqIe;yPuBGe7BkB;6NtBIf/JG;sBACKmDS;gDAIMrFI;8DAMCkCa;AAAcmDE;AAAa3LG;8BAMvCwIU;AAAiC1IAH1Gf3fU,A;AG0GEwrBG;kBAAa7LOH1Gf3fW,A;QG2GfAc;+BASHqoBS;CACFmDiB;oGA8BEnDS;WAAoBmDO;QAEjBzEyC;sCA+BHsBS;QAAoBmDS;6CAOVrFI;oCAEqBAM;4FAiClBwNgB;kDAMbtLS;QAAoBmDE;wJA6BnBzE6C;+BAC+BZK;8FAgCrBkCgB;yCASAAU;gCAEc5IA5BgZHzfqB,QAAAAW,A;0d8BznBboxBqE;wNAqBmBvRqB;oEAQd7fc;AAAJi0Ba;mBAAAEAhB0ZMlGoB,A;8FgBrYPpOQ;+FAUPoUAhBsXNrIAA2BuBgHQ,K,A;QgB7YkBjRG;kmBqByF1B3hBc;+FAQR2hBG;yDCrDqB7Ga;UAAAAI;0IrBtHJ9aAhBg1CawkBiB,A;OgB70CVwPAAyCf5PAAG8BpkBAhBiyCLwkBoB,A,A,c;iCgBj0CtBhDAhBq2CRrTe,qB;qLgBjzCM0ViC;6XAqCAgEU;mVA6IX7nBkB;4BAAAotBe;0fAwO0BptBoC;0lBAatBm0BAjBzCclGgB,A;iFiBkDRkGAjBlDQlGgB,A;ciBuDRkGAjBvDQlGgB,A;kBiB8DRkGAjB9DQlGU,A;AiB+DRkGAjB/DZvIc,A;yMiB2FQuIAjB3FYlGO,A;6FiBuGhBkGAjBvGgBlGsB,A;oCiBgHbtMG;+oC1BhIiBrCK;64DS1dM4Rc;mRqBgzCpB7DsB;uEAKFAwB;AACAAyB;ueAqVgBpGMAujDbkJAHj2FWFwB,A,AGq2FlBvRa,mBAGFuVArBpuFFrIAA2BuBgHY,A,A,AqB0sFrBlHOA/BYyEAH10FQFY,A,AG40FpBgEArBxsFFrIAA2BuBgHU,A,A,MqB+qFJqBArB1sFnBrIAA2BuBgHQ,A,A,cqBkrFrBqB4B,A,oBA4BAAArBzuFFrIAA2BuBgHa,A,A,cqBktFrBqBArB7uFFrIAA2BuBgHa,A,A,A;oKqBqpCyCrSG;qCAA9DvgBG;mWA4dc0eG;iBAEIyRAHlxDEFmC,A;qBGkyDyBAiB;uHA0nBV1RG;2PA+djCGmB;IACAqDa;6DAIAlDa;sBACA0BK;mBACA5Ba;0KA/rBeiPyC;AACUuCAHpsEPFc,A;AGqsElBgEArBjkEJrIS,A;AqBkkEqBgCY;AAHFAc;yNAsmCE3J0FAwBdjkBG,A;0BAxBcikB2B;qOAupBAuLU;AAAc7QiB;mGAc/BgJgC;aACAC6B;cACAHwB;aACAM+B;2OAaAJ+B;UACAC6B;uMAsDG5nBO;AADF6eW;0MA0EesRAH9lIEFgC,A;wCG8mIkBAiB;oZEt8HpCjwBwB;27BC3iBSiwBY;mBAIDsDkB;oIAQWAG;iBACSAG;uKAgDdDAhCqIhBnCO,A;AgCrIKRAtCyOA3wBW,A;csCzOWszBY;iHA3BG9QI;EAAAAG;2rBCpDVkMS;AAASAM;2BAKbzLiD;AAEKAmC;iEAaZxmBAyBTA80B2D,A;kYzBoBkB7Cc;gCAMERADxBHoCG,A;gBCuBwB1NK;AAAPIwB;QACdkLWDxBHoCmB,AACJKAU0JuB3wBuB,A,AV1JbszBAhCsMrBnCkB,A,UgCtMqBmCgC,A;aC2BD5EO;AAAOAmB;+EAKTzLC;AAAhByLO;AAAOAiB;iOAkCQvqCAqBk0DW8+BK,AAATyL+B,A;ArBj0DnBxLiC;AACAAyC;AACAwLsB;AACUzLC;AAAVyL0B;AACAzLc;SACAAc;6EAIqB9+BAqBwzDO8+BK,AAATyL+B,A;ArBvzDTzLC;AAAVyLuC;0EAGuBvqCAqBozDK8+BK,AAATyL+B,A;ArBnzDTzLC;AAAVyLoC;gFAYWxLsD;AAEJAC;AAATwLqC;mBAgBcvqCAqBqxDgB8+BG,AAATyL+B,A;ArBrxDqBzLC;AAAVyL6B;AAE5BzLiB;AACACqC;AACAAqC;AACUDC;AAAVyL2B;AAGAzLiB;AACAAc;yBAMAyLO;AAAOAS;AAASAsB;uGA0BSzLmB;AAATyLiD;mCASJvxBAqBwFmB8lBG,AAATyLmC,A;ArBxFWzLC;AAAVyLiC;AADvBzLiB;AAImB7lBAqB2/Cc6lBG,AAATyL2D,A;ArB5/CxBzLiB;AAIA9+BAqB6tD0B8+BG,AAATyL+B,A;ArB5tDHzLC;AAAVyLiD;2BAFJzLqB;GAMckNAdzJIFO,A;Ac0JpBxQAd+MKzfgB,A;Qc/MLyfI;GAAAAAd+MKzfI,A;Oc9MSijBe;AADdvOS;AAIgBvwBAqBmtDY8+BG,AAATyL+B,A;ArBltDLzLC;AAAVyL6I;4HAQO/pCAqBiuDoBs+BG,AAATyL6B,A;ArBhuDlBxLsB;AAAqBvB4C;AAEfsBiB;AACEAiB;yBAKZyLsB;AACAxLwC;+GAiBc+MQ;2GAUiB8DAdxMT/zBU,A;IcwMS+zBK;KAAAAAdxMT/zBe,A;Oc0MRijBc;eAIhBgPM;AAEAOAAzFkBxPsB,UAEZ0LuB,AACAxL0C,A;AAuFNqPIAlCqC1HuD,qB;yFA4CAoFa;kOAiBrCgCS;4DASa/O2B;qBAOAA0B;qBAOAA2B;qBAOAA6B;6DA/LCwLU;YAIUAS;AAASAe;AACejMsBAqYT8QC,AAAA7E0B,A;AApY3B1LmB;AACOAI;2DAsKW0LU;iGAcAAO;gFAOhBAiB;eAMAAgB;AACF1LsB;oBAEoCCG;2CAEtBAG;AAAhByLO;AAAOAiB;iGASOzLG;AAAhByLO;AAAOAiB;AAAgB/MQ;+CAQjB+MqB;6CAMOAuB;aAEbuDY;oBAIavDgB;8CAKaAQ;qBAQvBzLC;GADAyLkC;qBAMczLC;AAAVyL+B;oEAMqBAsB;AAEHAW;QACQA2B;AAEcAc;AACpC1LuB;gBAMgB0LQ;gGAUzB1LkB;gCAwCFAkB;2DAQYCG;AAAhByLO;AAAOAiB;UACD1LmB;wJE9aYCC;AAAVyLkC;cACczLC;AAAVyL2B;2LAuDEAc;AACI/pCAmBq2DWs+BK,AAATyL6J,A;AnBj2DPzLC;4CAIgCLK;AAAPIwB;YACnB7+BAmBq0DO8+BK,AAATyL6C,A;YnBl0DNzLC;8HCxESAC;AAAVyLiC;AACUzLC;AAAVyL6B;AAEQxLC;AAApBwLO;AAAOAgD;AAEezLC;AAAVyLgC;AACUzLC;AAAVyL8B;AAEQxLC;AAApBwLO;AAAOA4C;4CAOyCzLI;EAAVyLkC;m/Y5C8sCO1uB0B;2NA4T/CyxB0G;CAAAAG;6DAYAC8G;CAAAAG;2DAYACuD;CAAAAG;6DAYiBC2D;CAAAAG;kJgCjgCgCzDU;igBIO/ByBM;" } } diff --git a/doc/api/static-assets/github.css b/doc/api/static-assets/github.css index 791932b8..acd5468e 100644 --- a/doc/api/static-assets/github.css +++ b/doc/api/static-assets/github.css @@ -1,99 +1,118 @@ -/* - -github.com style (c) Vasily Polovnyov - -*/ - -.hljs { +pre code.hljs { display: block; overflow-x: auto; - padding: 0.5em; - color: #333; - background: #f8f8f8; + padding: 1em } - -.hljs-comment, -.hljs-quote { - color: #998; - font-style: italic; +code.hljs { + padding: 3px 5px } +/*! + Theme: GitHub + Description: Light theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + Outdated base version: https://github.com/primer/github-syntax-light + Current colors taken from GitHub's CSS +*/ +.hljs { + color: #24292e; + background: #ffffff +} +.hljs-doctag, .hljs-keyword, -.hljs-selector-tag, -.hljs-subst { - color: #333; - font-weight: bold; +.hljs-meta .hljs-keyword, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-variable.language_ { + /* prettylights-syntax-keyword */ + color: #d73a49 } - -.hljs-number, +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-title.function_ { + /* prettylights-syntax-entity */ + color: #6f42c1 +} +.hljs-attr, +.hljs-attribute, .hljs-literal, +.hljs-meta, +.hljs-number, +.hljs-operator, .hljs-variable, -.hljs-template-variable, -.hljs-tag .hljs-attr { - color: #008080; +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-id { + /* prettylights-syntax-constant */ + color: #005cc5 } - +.hljs-regexp, .hljs-string, -.hljs-doctag { - color: #d14; -} - -.hljs-title, -.hljs-section, -.hljs-selector-id { - color: #900; - font-weight: bold; +.hljs-meta .hljs-string { + /* prettylights-syntax-string */ + color: #032f62 } - -.hljs-subst { - font-weight: normal; +.hljs-built_in, +.hljs-symbol { + /* prettylights-syntax-variable */ + color: #e36209 } - -.hljs-type, -.hljs-class .hljs-title { - color: #458; - font-weight: bold; +.hljs-comment, +.hljs-code, +.hljs-formula { + /* prettylights-syntax-comment */ + color: #6a737d } - -.hljs-tag, .hljs-name, -.hljs-attribute { - color: #000080; - font-weight: normal; +.hljs-quote, +.hljs-selector-tag, +.hljs-selector-pseudo { + /* prettylights-syntax-entity-tag */ + color: #22863a } - -.hljs-regexp, -.hljs-link { - color: #009926; +.hljs-subst { + /* prettylights-syntax-storage-modifier-import */ + color: #24292e } - -.hljs-symbol, -.hljs-bullet { - color: #990073; +.hljs-section { + /* prettylights-syntax-markup-heading */ + color: #005cc5; + font-weight: bold } - -.hljs-built_in, -.hljs-builtin-name { - color: #0086b3; +.hljs-bullet { + /* prettylights-syntax-markup-list */ + color: #735c0f } - -.hljs-meta { - color: #999; - font-weight: bold; +.hljs-emphasis { + /* prettylights-syntax-markup-italic */ + color: #24292e; + font-style: italic } - -.hljs-deletion { - background: #fdd; +.hljs-strong { + /* prettylights-syntax-markup-bold */ + color: #24292e; + font-weight: bold } - .hljs-addition { - background: #dfd; + /* prettylights-syntax-markup-inserted */ + color: #22863a; + background-color: #f0fff4 } - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; +.hljs-deletion { + /* prettylights-syntax-markup-deleted */ + color: #b31d28; + background-color: #ffeef0 +} +.hljs-char.escape_, +.hljs-link, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + } diff --git a/doc/api/static-assets/highlight.pack.js b/doc/api/static-assets/highlight.pack.js index 3cf5abcf..b10e80a0 100644 --- a/doc/api/static-assets/highlight.pack.js +++ b/doc/api/static-assets/highlight.pack.js @@ -1,633 +1,638 @@ /*! - Highlight.js v11.8.0 (git: d27be507cb) - (c) 2006-2023 Ivan Sagalaev and other contributors + Highlight.js v11.11.1 (git: 08cb242e7d) + (c) 2006-2025 Josh Goebel and other contributors License: BSD-3-Clause */ -var hljs=function(){"use strict";function e(n){ -return n instanceof Map?n.clear=n.delete=n.set=()=>{ -throw Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=()=>{ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ throw Error("set is read-only") -}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach((t=>{ -const a=n[t],i=typeof a;"object"!==i&&"function"!==i||Object.isFrozen(a)||e(a) -})),n}class n{constructor(e){ +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ +const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i) +})),t}class t{constructor(e){ void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} -ignoreMatch(){this.isMatchIgnored=!0}}function t(e){ +ignoreMatch(){this.isMatchIgnored=!0}}function n(e){ return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") -}function a(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n] -;return n.forEach((e=>{for(const n in e)t[n]=e[n]})),t}const i=e=>!!e.scope -;class s{constructor(e,n){ -this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){ -this.buffer+=t(e)}openNode(e){if(!i(e))return;const n=((e,{prefix:n})=>{ +}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope +;class r{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{ if(e.startsWith("language:"))return e.replace("language:","language-") -;if(e.includes(".")){const t=e.split(".") -;return[`${n}${t.shift()}`,...t.map(((e,n)=>`${e}${"_".repeat(n+1)}`))].join(" ") -}return`${n}${e}`})(e.scope,{prefix:this.classPrefix});this.span(n)} -closeNode(e){i(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ -this.buffer+=``}}const r=(e={})=>{const n={children:[]} -;return Object.assign(n,e),n};class o{constructor(){ -this.rootNode=r(),this.stack=[this.rootNode]}get top(){ +;if(e.includes(".")){const n=e.split(".") +;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ") +}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)} +closeNode(e){s(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ +this.buffer+=``}}const o=(e={})=>{const t={children:[]} +;return Object.assign(t,e),t};class a{constructor(){ +this.rootNode=o(),this.stack=[this.rootNode]}get top(){ return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ -this.top.children.push(e)}openNode(e){const n=r({scope:e}) -;this.add(n),this.stack.push(n)}closeNode(){ +this.top.children.push(e)}openNode(e){const t=o({scope:e}) +;this.add(t),this.stack.push(t)}closeNode(){ if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} -walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){ -return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n), -n.children.forEach((n=>this._walk(e,n))),e.closeNode(n)),e}static _collapse(e){ +walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ "string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ -o._collapse(e)})))}}class l extends o{constructor(e){super(),this.options=e} +a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e} addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){ -this.closeNode()}__addSublanguage(e,n){const t=e.root -;n&&(t.scope="language:"+n),this.add(t)}toHTML(){ -return new s(this,this.options).value()}finalize(){ -return this.closeAllNodes(),!0}}function c(e){ -return e?"string"==typeof e?e:e.source:null}function d(e){return b("(?=",e,")")} -function g(e){return b("(?:",e,")*")}function u(e){return b("(?:",e,")?")} -function b(...e){return e.map((e=>c(e))).join("")}function m(...e){const n=(e=>{ -const n=e[e.length-1] -;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} -})(e);return"("+(n.capture?"":"?:")+e.map((e=>c(e))).join("|")+")"} +this.closeNode()}__addSublanguage(e,t){const n=e.root +;t&&(n.scope="language:"+t),this.add(n)}toHTML(){ +return new r(this,this.options).value()}finalize(){ +return this.closeAllNodes(),!0}}function l(e){ +return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")} +function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")} +function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{ +const t=e[e.length-1] +;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} +})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"} function p(e){return RegExp(e.toString()+"|").exec("").length-1} -const h=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ -;function f(e,{joinWith:n}){let t=0;return e.map((e=>{t+=1;const n=t -;let a=c(e),i="";for(;a.length>0;){const e=h.exec(a);if(!e){i+=a;break} -i+=a.substring(0,e.index), -a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+(Number(e[1])+n):(i+=e[0], -"("===e[0]&&t++)}return i})).map((e=>`(${e})`)).join(n)} -const _="[a-zA-Z]\\w*",E="[a-zA-Z_]\\w*",N="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",w="\\b(0b[01]+)",v={ -begin:"\\\\[\\s\\S]",relevance:0},k={scope:"string",begin:"'",end:"'", -illegal:"\\n",contains:[v]},x={scope:"string",begin:'"',end:'"',illegal:"\\n", -contains:[v]},O=(e,n,t={})=>{const i=a({scope:"comment",begin:e,end:n, -contains:[]},t);i.contains.push({scope:"doctag", +const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n +;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break} +s+=i.substring(0,e.index), +i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0], +"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)} +const E="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",y="\\b\\d+(\\.\\d+)?",_="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",w="\\b(0b[01]+)",O={ +begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'", +illegal:"\\n",contains:[O]},k={scope:"string",begin:'"',end:'"',illegal:"\\n", +contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t, +contains:[]},n);s.contains.push({scope:"doctag", begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) -;const s=m("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) -;return i.contains.push({begin:b(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i -},S=O("//","$"),A=O("/\\*","\\*/"),M=O("#","$");var C=Object.freeze({ -__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:_,UNDERSCORE_IDENT_RE:E, -NUMBER_RE:N,C_NUMBER_RE:y,BINARY_NUMBER_RE:w, -RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", -SHEBANG:(e={})=>{const n=/^#![ ]*\// -;return e.binary&&(e.begin=b(n,/.*\b/,e.binary,/\b.*/)),a({scope:"meta",begin:n, -end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)}, -BACKSLASH_ESCAPE:v,APOS_STRING_MODE:k,QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:{ +;const r=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) +;return s.contains.push({begin:h(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s +},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var j=Object.freeze({ +__proto__:null,APOS_STRING_MODE:v,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ +scope:"number",begin:w,relevance:0},BINARY_NUMBER_RE:w,COMMENT:N, +C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number", +begin:_,relevance:0},C_NUMBER_RE:_,END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E, +MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0}, +NUMBER_MODE:{scope:"number",begin:y,relevance:0},NUMBER_RE:y, +PHRASAL_WORDS_MODE:{ begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ -},COMMENT:O,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:A,HASH_COMMENT_MODE:M, -NUMBER_MODE:{scope:"number",begin:N,relevance:0},C_NUMBER_MODE:{scope:"number", -begin:y,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:w,relevance:0}, -REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//, -end:/\/[gimuy]*/,illegal:/\n/,contains:[v,{begin:/\[/,end:/\]/,relevance:0, -contains:[v]}]}]},TITLE_MODE:{scope:"title",begin:_,relevance:0}, -UNDERSCORE_TITLE_MODE:{scope:"title",begin:E,relevance:0},METHOD_GUARD:{ -begin:"\\.\\s*"+E,relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ -"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{ -n.data._beginMatch!==e[1]&&n.ignoreMatch()}})});function T(e,n){ -"."===e.input[e.index-1]&&n.ignoreMatch()}function R(e,n){ -void 0!==e.className&&(e.scope=e.className,delete e.className)}function D(e,n){ -n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", -e.__beforeBegin=T,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, -void 0===e.relevance&&(e.relevance=0))}function I(e,n){ -Array.isArray(e.illegal)&&(e.illegal=m(...e.illegal))}function B(e,n){ +},QUOTE_STRING_MODE:k,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/, +end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t, +end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)}, +TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, +UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function A(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){ +void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=A,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function L(e,t){ +Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){ if(e.match){ if(e.begin||e.end)throw Error("begin & end are not supported with match") -;e.begin=e.match,delete e.match}}function L(e,n){ -void 0===e.relevance&&(e.relevance=1)}const $=(e,n)=>{if(!e.beforeMatch)return +;e.begin=e.match,delete e.match}}function P(e,t){ +void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return ;if(e.starts)throw Error("beforeMatch cannot be used with starts") -;const t=Object.assign({},e);Object.keys(e).forEach((n=>{delete e[n] -})),e.keywords=t.keywords,e.begin=b(t.beforeMatch,d(t.begin)),e.starts={ -relevance:0,contains:[Object.assign(t,{endsParent:!0})] -},e.relevance=0,delete t.beforeMatch -},F=["of","and","for","in","not","or","if","then","parent","list","value"],z="keyword" -;function U(e,n,t=z){const a=Object.create(null) -;return"string"==typeof e?i(t,e.split(" ")):Array.isArray(e)?i(t,e):Object.keys(e).forEach((t=>{ -Object.assign(a,U(e[t],n,t))})),a;function i(e,t){ -n&&(t=t.map((e=>e.toLowerCase()))),t.forEach((n=>{const t=n.split("|") -;a[t[0]]=[e,j(t[0],t[1])]}))}}function j(e,n){ -return n?Number(n):(e=>F.includes(e.toLowerCase()))(e)?0:1}const P={},K=e=>{ -console.error(e)},H=(e,...n)=>{console.log("WARN: "+e,...n)},Z=(e,n)=>{ -P[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),P[`${e}/${n}`]=!0) -},G=Error();function q(e,n,{key:t}){let a=0;const i=e[t],s={},r={} -;for(let e=1;e<=n.length;e++)r[e+a]=i[e],s[e+a]=!0,a+=p(n[e-1]) -;e[t]=r,e[t]._emit=s,e[t]._multi=!0}function W(e){(e=>{ +;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t] +})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ +relevance:0,contains:[Object.assign(n,{endsParent:!0})] +},e.relevance=0,delete n.beforeMatch +},H=["of","and","for","in","not","or","if","then","parent","list","value"] +;function C(e,t,n="keyword"){const i=Object.create(null) +;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ +Object.assign(i,C(e[n],t,n))})),i;function s(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;i[n[0]]=[e,$(n[0],n[1])]}))}}function $(e,t){ +return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const U={},z=e=>{ +console.error(e)},W=(e,...t)=>{console.log("WARN: "+e,...t)},X=(e,t)=>{ +U[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),U[`${e}/${t}`]=!0) +},G=Error();function K(e,t,{key:n}){let i=0;const s=e[n],r={},o={} +;for(let e=1;e<=t.length;e++)o[e+i]=s[e],r[e+i]=!0,i+=p(t[e-1]) +;e[n]=o,e[n]._emit=r,e[n]._multi=!0}function F(e){(e=>{ e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ _wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope }),(e=>{if(Array.isArray(e.begin)){ -if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), +if(e.skip||e.excludeBegin||e.returnBegin)throw z("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), G -;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"), -G;q(e,e.begin,{key:"beginScope"}),e.begin=f(e.begin,{joinWith:""})}})(e),(e=>{ +;if("object"!=typeof e.beginScope||null===e.beginScope)throw z("beginScope must be object"), +G;K(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{ if(Array.isArray(e.end)){ -if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"), +if(e.skip||e.excludeEnd||e.returnEnd)throw z("skip, excludeEnd, returnEnd not compatible with endScope: {}"), G -;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"), -G;q(e,e.end,{key:"endScope"}),e.end=f(e.end,{joinWith:""})}})(e)}function X(e){ -function n(n,t){ -return RegExp(c(n),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(t?"g":"")) -}class t{constructor(){ +;if("object"!=typeof e.endScope||null===e.endScope)throw z("endScope must be object"), +G;K(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function Z(e){ +function t(t,n){ +return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":"")) +}class n{constructor(){ this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} -addRule(e,n){ -n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]), +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) -;const e=this.regexes.map((e=>e[1]));this.matcherRe=n(f(e,{joinWith:"|" +;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|" }),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex -;const n=this.matcherRe.exec(e);if(!n)return null -;const t=n.findIndex(((e,n)=>n>0&&void 0!==e)),a=this.matchIndexes[t] -;return n.splice(0,t),Object.assign(n,a)}}class i{constructor(){ +;const t=this.matcherRe.exec(e);if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){ this.rules=[],this.multiRegexes=[], this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ -if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t -;return this.rules.slice(e).forEach((([e,t])=>n.addRule(e,t))), -n.compile(),this.multiRegexes[e]=n,n}resumingScanAtSamePosition(){ -return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){ -this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){ -const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex -;let t=n.exec(e) -;if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{ -const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)} -return t&&(this.regexIndex+=t.position+1, -this.regexIndex===this.count&&this.considerAll()),t}} +if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} if(e.compilerExtensions||(e.compilerExtensions=[]), e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") -;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,r){const o=s -;if(s.isCompiled)return o -;[R,B,W,$].forEach((e=>e(s,r))),e.compilerExtensions.forEach((e=>e(s,r))), -s.__beforeBegin=null,[D,I,L].forEach((e=>e(s,r))),s.isCompiled=!0;let l=null -;return"object"==typeof s.keywords&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords), -l=s.keywords.$pattern, -delete s.keywords.$pattern),l=l||/\w+/,s.keywords&&(s.keywords=U(s.keywords,e.case_insensitive)), -o.keywordPatternRe=n(l,!0), -r&&(s.begin||(s.begin=/\B|\b/),o.beginRe=n(o.begin),s.end||s.endsWithParent||(s.end=/\B|\b/), -s.end&&(o.endRe=n(o.end)), -o.terminatorEnd=c(o.end)||"",s.endsWithParent&&r.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+r.terminatorEnd)), -s.illegal&&(o.illegalRe=n(s.illegal)), -s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((n=>a(e,{ -variants:null},n)))),e.cachedVariants?e.cachedVariants:Q(e)?a(e,{ -starts:e.starts?a(e.starts):null -}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) -})),s.starts&&t(s.starts,r),o.matcher=(e=>{const n=new i -;return e.contains.forEach((e=>n.addRule(e.begin,{rule:e,type:"begin" -}))),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:"end" -}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n})(o),o}(e)}function Q(e){ -return!!e&&(e.endsWithParent||Q(e.starts))}class V extends Error{ -constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}} -const J=t,Y=a,ee=Symbol("nomatch"),ne=t=>{ -const a=Object.create(null),i=Object.create(null),s=[];let r=!0 -;const o="Could not find the language '{}', did you forget to load/include a language module?",c={ +;return e.classNameAliases=i(e.classNameAliases||{}),function n(r,o){const a=r +;if(r.isCompiled)return a +;[I,B,F,D].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))), +r.__beforeBegin=null,[T,L,P].forEach((e=>e(r,o))),r.isCompiled=!0;let c=null +;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords), +c=r.keywords.$pattern, +delete r.keywords.$pattern),c=c||/\w+/,r.keywords&&(r.keywords=C(r.keywords,e.case_insensitive)), +a.keywordPatternRe=t(c,!0), +o&&(r.begin||(r.begin=/\B|\b/),a.beginRe=t(a.begin),r.end||r.endsWithParent||(r.end=/\B|\b/), +r.end&&(a.endRe=t(a.end)), +a.terminatorEnd=l(a.end)||"",r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)), +r.illegal&&(a.illegalRe=t(r.illegal)), +r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:V(e)?i(e,{ +starts:e.starts?i(e.starts):null +}):Object.isFrozen(e)?i(e):e))("self"===e?r:e)))),r.contains.forEach((e=>{n(e,a) +})),r.starts&&n(r.starts,o),a.matcher=(e=>{const t=new s +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function V(e){ +return!!e&&(e.endsWithParent||V(e.starts))}class q extends Error{ +constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}} +const J=n,Y=i,Q=Symbol("nomatch"),ee=n=>{ +const i=Object.create(null),s=Object.create(null),r=[];let o=!0 +;const a="Could not find the language '{}', did you forget to load/include a language module?",l={ disableAutodetect:!0,name:"Plain text",contains:[]};let p={ ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", -cssSelector:"pre code",languages:null,__emitter:l};function h(e){ -return p.noHighlightRe.test(e)}function f(e,n,t){let a="",i="" -;"object"==typeof n?(a=e, -t=n.ignoreIllegals,i=n.language):(Z("10.7.0","highlight(lang, code, ...args) has been deprecated."), -Z("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), -i=e,a=n),void 0===t&&(t=!0);const s={code:a,language:i};O("before:highlight",s) -;const r=s.result?s.result:_(s.language,s.code,t) -;return r.code=s.code,O("after:highlight",r),r}function _(e,t,i,s){ -const l=Object.create(null);function c(){if(!O.keywords)return void A.addText(M) -;let e=0;O.keywordPatternRe.lastIndex=0;let n=O.keywordPatternRe.exec(M),t="" -;for(;n;){t+=M.substring(e,n.index) -;const i=w.case_insensitive?n[0].toLowerCase():n[0],s=(a=i,O.keywords[a]);if(s){ -const[e,a]=s -;if(A.addText(t),t="",l[i]=(l[i]||0)+1,l[i]<=7&&(C+=a),e.startsWith("_"))t+=n[0];else{ -const t=w.classNameAliases[e]||e;g(n[0],t)}}else t+=n[0] -;e=O.keywordPatternRe.lastIndex,n=O.keywordPatternRe.exec(M)}var a -;t+=M.substring(e),A.addText(t)}function d(){null!=O.subLanguage?(()=>{ -if(""===M)return;let e=null;if("string"==typeof O.subLanguage){ -if(!a[O.subLanguage])return void A.addText(M) -;e=_(O.subLanguage,M,!0,S[O.subLanguage]),S[O.subLanguage]=e._top -}else e=E(M,O.subLanguage.length?O.subLanguage:null) -;O.relevance>0&&(C+=e.relevance),A.__addSublanguage(e._emitter,e.language) -})():c(),M=""}function g(e,n){ -""!==e&&(A.startScope(n),A.addText(e),A.endScope())}function u(e,n){let t=1 -;const a=n.length-1;for(;t<=a;){if(!e._emit[t]){t++;continue} -const a=w.classNameAliases[e[t]]||e[t],i=n[t];a?g(i,a):(M=i,c(),M=""),t++}} -function b(e,n){ -return e.scope&&"string"==typeof e.scope&&A.openNode(w.classNameAliases[e.scope]||e.scope), -e.beginScope&&(e.beginScope._wrap?(g(M,w.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), -M=""):e.beginScope._multi&&(u(e.beginScope,n),M="")),O=Object.create(e,{parent:{ -value:O}}),O}function m(e,t,a){let i=((e,n)=>{const t=e&&e.exec(n) -;return t&&0===t.index})(e.endRe,a);if(i){if(e["on:end"]){const a=new n(e) -;e["on:end"](t,a),a.isMatchIgnored&&(i=!1)}if(i){ +cssSelector:"pre code",languages:null,__emitter:c};function b(e){ +return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s="" +;"object"==typeof t?(i=e, +n=t.ignoreIllegals,s=t.language):(X("10.7.0","highlight(lang, code, ...args) has been deprecated."), +X("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), +s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};N("before:highlight",r) +;const o=r.result?r.result:E(r.language,r.code,n) +;return o.code=r.code,N("after:highlight",o),o}function E(e,n,s,r){ +const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R) +;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n="" +;for(;t;){n+=R.substring(e,t.index) +;const s=w.case_insensitive?t[0].toLowerCase():t[0],r=(i=s,N.keywords[i]);if(r){ +const[e,i]=r +;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(j+=i),e.startsWith("_"))n+=t[0];else{ +const n=w.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0] +;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i +;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{ +if(""===R)return;let e=null;if("string"==typeof N.subLanguage){ +if(!i[N.subLanguage])return void M.addText(R) +;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top +}else e=x(R,N.subLanguage.length?N.subLanguage:null) +;N.relevance>0&&(j+=e.relevance),M.__addSublanguage(e._emitter,e.language) +})():l(),R=""}function u(e,t){ +""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1 +;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue} +const i=w.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}} +function h(e,t){ +return e.scope&&"string"==typeof e.scope&&M.openNode(w.classNameAliases[e.scope]||e.scope), +e.beginScope&&(e.beginScope._wrap?(u(R,w.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), +R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{ +value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t) +;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e) +;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){ for(;e.endsParent&&e.parent;)e=e.parent;return e}} -if(e.endsWithParent)return m(e.parent,t,a)}function h(e){ -return 0===O.matcher.regexIndex?(M+=e[0],1):(D=!0,0)}function f(e){ -const n=e[0],a=t.substring(e.index),i=m(O,e,a);if(!i)return ee;const s=O -;O.endScope&&O.endScope._wrap?(d(), -g(n,O.endScope._wrap)):O.endScope&&O.endScope._multi?(d(), -u(O.endScope,e)):s.skip?M+=n:(s.returnEnd||s.excludeEnd||(M+=n), -d(),s.excludeEnd&&(M=n));do{ -O.scope&&A.closeNode(),O.skip||O.subLanguage||(C+=O.relevance),O=O.parent -}while(O!==i.parent);return i.starts&&b(i.starts,e),s.returnEnd?0:n.length} -let N={};function y(a,s){const o=s&&s[0];if(M+=a,null==o)return d(),0 -;if("begin"===N.type&&"end"===s.type&&N.index===s.index&&""===o){ -if(M+=t.slice(s.index,s.index+1),!r){const n=Error(`0 width match regex (${e})`) -;throw n.languageName=e,n.badRule=N.rule,n}return 1} -if(N=s,"begin"===s.type)return(e=>{ -const t=e[0],a=e.rule,i=new n(a),s=[a.__beforeBegin,a["on:begin"]] -;for(const n of s)if(n&&(n(e,i),i.isMatchIgnored))return h(t) -;return a.skip?M+=t:(a.excludeBegin&&(M+=t), -d(),a.returnBegin||a.excludeBegin||(M=t)),b(a,e),a.returnBegin?0:t.length})(s) -;if("illegal"===s.type&&!i){ -const e=Error('Illegal lexeme "'+o+'" for mode "'+(O.scope||"")+'"') -;throw e.mode=O,e}if("end"===s.type){const e=f(s);if(e!==ee)return e} -if("illegal"===s.type&&""===o)return 1 -;if(R>1e5&&R>3*s.index)throw Error("potential infinite loop, way more iterations than matches") -;return M+=o,o.length}const w=v(e) -;if(!w)throw K(o.replace("{}",e)),Error('Unknown language: "'+e+'"') -;const k=X(w);let x="",O=s||k;const S={},A=new p.__emitter(p);(()=>{const e=[] -;for(let n=O;n!==w;n=n.parent)n.scope&&e.unshift(n.scope) -;e.forEach((e=>A.openNode(e)))})();let M="",C=0,T=0,R=0,D=!1;try{ -if(w.__emitTokens)w.__emitTokens(t,A);else{for(O.matcher.considerAll();;){ -R++,D?D=!1:O.matcher.considerAll(),O.matcher.lastIndex=T -;const e=O.matcher.exec(t);if(!e)break;const n=y(t.substring(T,e.index),e) -;T=e.index+n}y(t.substring(T))}return A.finalize(),x=A.toHTML(),{language:e, -value:x,relevance:C,illegal:!1,_emitter:A,_top:O}}catch(n){ -if(n.message&&n.message.includes("Illegal"))return{language:e,value:J(t), -illegal:!0,relevance:0,_illegalBy:{message:n.message,index:T, -context:t.slice(T-100,T+100),mode:n.mode,resultSoFar:x},_emitter:A};if(r)return{ -language:e,value:J(t),illegal:!1,relevance:0,errorRaised:n,_emitter:A,_top:O} -;throw n}}function E(e,n){n=n||p.languages||Object.keys(a);const t=(e=>{ -const n={value:J(e),illegal:!1,relevance:0,_top:c,_emitter:new p.__emitter(p)} -;return n._emitter.addText(e),n})(e),i=n.filter(v).filter(x).map((n=>_(n,e,!1))) -;i.unshift(t);const s=i.sort(((e,n)=>{ -if(e.relevance!==n.relevance)return n.relevance-e.relevance -;if(e.language&&n.language){if(v(e.language).supersetOf===n.language)return 1 -;if(v(n.language).supersetOf===e.language)return-1}return 0})),[r,o]=s,l=r -;return l.secondBest=o,l}function N(e){let n=null;const t=(e=>{ -let n=e.className+" ";n+=e.parentNode?e.parentNode.className:"" -;const t=p.languageDetectRe.exec(n);if(t){const n=v(t[1]) -;return n||(H(o.replace("{}",t[1])), -H("Falling back to no-highlight mode for this block.",e)),n?t[1]:"no-highlight"} -return n.split(/\s+/).find((e=>h(e)||v(e)))})(e);if(h(t))return -;if(O("before:highlightElement",{el:e,language:t +if(e.endsWithParent)return f(e.parent,n,i)}function b(e){ +return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){ +const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return Q;const r=N +;N.endScope&&N.endScope._wrap?(g(), +u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), +d(N.endScope,e)):r.skip?R+=t:(r.returnEnd||r.excludeEnd||(R+=t), +g(),r.excludeEnd&&(R=t));do{ +N.scope&&M.closeNode(),N.skip||N.subLanguage||(j+=N.relevance),N=N.parent +}while(N!==s.parent);return s.starts&&h(s.starts,e),r.returnEnd?0:t.length} +let y={};function _(i,r){const a=r&&r[0];if(R+=i,null==a)return g(),0 +;if("begin"===y.type&&"end"===r.type&&y.index===r.index&&""===a){ +if(R+=n.slice(r.index,r.index+1),!o){const t=Error(`0 width match regex (${e})`) +;throw t.languageName=e,t.badRule=y.rule,t}return 1} +if(y=r,"begin"===r.type)return(e=>{ +const n=e[0],i=e.rule,s=new t(i),r=[i.__beforeBegin,i["on:begin"]] +;for(const t of r)if(t&&(t(e,s),s.isMatchIgnored))return b(n) +;return i.skip?R+=n:(i.excludeBegin&&(R+=n), +g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(r) +;if("illegal"===r.type&&!s){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"")+'"') +;throw e.mode=N,e}if("end"===r.type){const e=m(r);if(e!==Q)return e} +if("illegal"===r.type&&""===a)return R+="\n",1 +;if(I>1e5&&I>3*r.index)throw Error("potential infinite loop, way more iterations than matches") +;return R+=a,a.length}const w=O(e) +;if(!w)throw z(a.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const v=Z(w);let k="",N=r||v;const S={},M=new p.__emitter(p);(()=>{const e=[] +;for(let t=N;t!==w;t=t.parent)t.scope&&e.unshift(t.scope) +;e.forEach((e=>M.openNode(e)))})();let R="",j=0,A=0,I=0,T=!1;try{ +if(w.__emitTokens)w.__emitTokens(n,M);else{for(N.matcher.considerAll();;){ +I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=A +;const e=N.matcher.exec(n);if(!e)break;const t=_(n.substring(A,e.index),e) +;A=e.index+t}_(n.substring(A))}return M.finalize(),k=M.toHTML(),{language:e, +value:k,relevance:j,illegal:!1,_emitter:M,_top:N}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{language:e,value:J(n), +illegal:!0,relevance:0,_illegalBy:{message:t.message,index:A, +context:n.slice(A-100,A+100),mode:t.mode,resultSoFar:k},_emitter:M};if(o)return{ +language:e,value:J(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} +;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{ +const t={value:J(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} +;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(k).map((t=>E(t,e,!1))) +;s.unshift(n);const r=s.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1 +;if(O(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=r,c=o +;return c.secondBest=a,c}function y(e){let t=null;const n=(e=>{ +let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"" +;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1]) +;return t||(W(a.replace("{}",n[1])), +W("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"} +return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return +;if(N("before:highlightElement",{el:e,language:n }),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e) ;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), console.warn("The element with unescaped HTML:"), -console.warn(e)),p.throwUnescapedHTML))throw new V("One of your code blocks includes unescaped HTML.",e.innerHTML) -;n=e;const a=n.textContent,s=t?f(a,{language:t,ignoreIllegals:!0}):E(a) -;e.innerHTML=s.value,e.dataset.highlighted="yes",((e,n,t)=>{const a=n&&i[n]||t -;e.classList.add("hljs"),e.classList.add("language-"+a) -})(e,t,s.language),e.result={language:s.language,re:s.relevance, -relevance:s.relevance},s.secondBest&&(e.secondBest={ -language:s.secondBest.language,relevance:s.secondBest.relevance -}),O("after:highlightElement",{el:e,result:s,text:a})}let y=!1;function w(){ -"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(N):y=!0 -}function v(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]} -function k(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ -i[e.toLowerCase()]=n}))}function x(e){const n=v(e) -;return n&&!n.disableAutodetect}function O(e,n){const t=e;s.forEach((e=>{ -e[t]&&e[t](n)}))} -"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ -y&&w()}),!1),Object.assign(t,{highlight:f,highlightAuto:E,highlightAll:w, -highlightElement:N, -highlightBlock:e=>(Z("10.7.0","highlightBlock will be removed entirely in v12.0"), -Z("10.7.0","Please use highlightElement now."),N(e)),configure:e=>{p=Y(p,e)}, +console.warn(e)),p.throwUnescapedHTML))throw new q("One of your code blocks includes unescaped HTML.",e.innerHTML) +;t=e;const i=t.textContent,r=n?m(i,{language:n,ignoreIllegals:!0}):x(i) +;e.innerHTML=r.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n +;e.classList.add("hljs"),e.classList.add("language-"+i) +})(e,n,r.language),e.result={language:r.language,re:r.relevance, +relevance:r.relevance},r.secondBest&&(e.secondBest={ +language:r.secondBest.language,relevance:r.secondBest.relevance +}),N("after:highlightElement",{el:e,result:r,text:i})}let _=!1;function w(){ +if("loading"===document.readyState)return _||window.addEventListener("DOMContentLoaded",(()=>{ +w()}),!1),void(_=!0);document.querySelectorAll(p.cssSelector).forEach(y)} +function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]} +function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ +s[e.toLowerCase()]=t}))}function k(e){const t=O(e) +;return t&&!t.disableAutodetect}function N(e,t){const n=e;r.forEach((e=>{ +e[n]&&e[n](t)}))}Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:w, +highlightElement:y, +highlightBlock:e=>(X("10.7.0","highlightBlock will be removed entirely in v12.0"), +X("10.7.0","Please use highlightElement now."),y(e)),configure:e=>{p=Y(p,e)}, initHighlighting:()=>{ -w(),Z("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, +w(),X("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, initHighlightingOnLoad:()=>{ -w(),Z("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") -},registerLanguage:(e,n)=>{let i=null;try{i=n(t)}catch(n){ -if(K("Language definition for '{}' could not be registered.".replace("{}",e)), -!r)throw n;K(n),i=c} -i.name||(i.name=e),a[e]=i,i.rawDefinition=n.bind(null,t),i.aliases&&k(i.aliases,{ -languageName:e})},unregisterLanguage:e=>{delete a[e] -;for(const n of Object.keys(i))i[n]===e&&delete i[n]}, -listLanguages:()=>Object.keys(a),getLanguage:v,registerAliases:k, -autoDetection:x,inherit:Y,addPlugin:e=>{(e=>{ -e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=n=>{ -e["before:highlightBlock"](Object.assign({block:n.el},n)) -}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{ -e["after:highlightBlock"](Object.assign({block:n.el},n))})})(e),s.push(e)}, -removePlugin:e=>{const n=s.indexOf(e);-1!==n&&s.splice(n,1)}}),t.debugMode=()=>{ -r=!1},t.safeMode=()=>{r=!0},t.versionString="11.8.0",t.regex={concat:b, -lookahead:d,either:m,optional:u,anyNumberOfTimes:g} -;for(const n in C)"object"==typeof C[n]&&e(C[n]);return Object.assign(t,C),t -},te=ne({});te.newInstance=()=>ne({});var ae=te -;const ie=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],se=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],re=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],oe=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],le=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() -;var ce="[0-9](_*[0-9])*",de=`\\.(${ce})`,ge="[0-9a-fA-F](_*[0-9a-fA-F])*",ue={ -className:"number",variants:[{ -begin:`(\\b(${ce})((${de})|\\.)?|(${de}))[eE][+-]?(${ce})[fFdD]?\\b`},{ -begin:`\\b(${ce})((${de})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ -begin:`(${de})[fFdD]?\\b`},{begin:`\\b(${ce})[fFdD]\\b`},{ -begin:`\\b0[xX]((${ge})\\.?|(${ge})?\\.(${ge}))[pP][+-]?(${ce})[fFdD]?\\b`},{ -begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${ge})[lL]?\\b`},{ -begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], -relevance:0};function be(e,n,t){return-1===t?"":e.replace(n,(a=>be(e,n,t-1)))} -const me="[A-Za-z$_][0-9A-Za-z$_]*",pe=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],he=["true","false","null","undefined","NaN","Infinity"],fe=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],_e=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ee=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Ne=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],ye=[].concat(Ee,fe,_e),we=e=>b(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ve=["Protocol","Type"].map(we),ke=["init","self"].map(we),xe=["Any","Self"],Oe=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","distributed","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],Se=["false","nil","true"],Ae=["assignment","associativity","higherThan","left","lowerThan","none","right"],Me=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],Ce=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Te=m(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Re=m(Te,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),De=b(Te,Re,"*"),Ie=m(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Be=m(Ie,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Le=b(Ie,Be,"*"),$e=b(/[A-Z]/,Be,"*"),Fe=["autoclosure",b(/convention\(/,m("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",b(/objc\(/,Le,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],ze=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] -;var Ue=Object.freeze({__proto__:null,grmr_bash:e=>{const n=e.regex,t={},a={ -begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]} -;Object.assign(t,{className:"variable",variants:[{ -begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={ -className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},s={ +w(),X("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") +},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){ +if(z("Language definition for '{}' could not be registered.".replace("{}",e)), +!o)throw t;z(t),s=l} +s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&v(s.aliases,{ +languageName:e})},unregisterLanguage:e=>{delete i[e] +;for(const t of Object.keys(s))s[t]===e&&delete s[t]}, +listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v, +autoDetection:k,inherit:Y,addPlugin:e=>{(e=>{ +e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{ +e["before:highlightBlock"](Object.assign({block:t.el},t)) +}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ +e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),r.push(e)}, +removePlugin:e=>{const t=r.indexOf(e);-1!==t&&r.splice(t,1)}}),n.debugMode=()=>{ +o=!1},n.safeMode=()=>{o=!0},n.versionString="11.11.1",n.regex={concat:h, +lookahead:g,either:f,optional:d,anyNumberOfTimes:u} +;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n +},te=ee({});return te.newInstance=()=>ee({}),te}() +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, +end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ +className:"variable",variants:[{ +begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE] +},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={ begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, -end:/(\w+)/,className:"string"})]}},r={className:"string",begin:/"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(r);const o={begin:/\$?\(\(/, +end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(o);const r={begin:/\$?\(\(/, end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] },l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 -}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ -name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, -keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"], +name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, +keyword:["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"], literal:["true","false"], -built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] -},contains:[l,e.SHEBANG(),c,o,e.HASH_COMMENT_MODE,s,{match:/(\/[a-z._-]+)+/},r,{ -className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}, -grmr_c:e=>{const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}] -}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",s="("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[l,e.SHEBANG(),m,r,i,c,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{ +className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})() +;hljs.registerLanguage("bash",e)})();/*! `c` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,n=e.COMMENT("//","$",{ +contains:[{begin:/\\\n/}] +}),a="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",r="("+a+"|"+t.optional(s)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={ className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ -match:/\batomic_[a-z]{3,6}\b/}]},o={className:"string",variants:[{ +match:/\batomic_[a-z]{3,6}\b/}]},l={className:"string",variants:[{ begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ -begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={ -className:"number",variants:[{begin:"\\b(0b[01']+)"},{ -begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ +className:"number",variants:[{match:/\b(0b[01']+)/},{ +match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/ },{ -begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" -}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ -keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" -},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{ -className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={ -className:"title",begin:n.optional(i)+e.IDENT_RE,relevance:0 -},g=n.optional(i)+e.IDENT_RE+"\\s*\\(",u={ -keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], -type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], +match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/ +},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0 +},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{ +className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},d={ +className:"title",begin:t.optional(s)+e.IDENT_RE,relevance:0 +},_=t.optional(s)+e.IDENT_RE+"\\s*\\(",u={ +keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"], literal:"true false NULL", built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" -},b=[c,r,t,e.C_BLOCK_COMMENT_MODE,l,o],m={variants:[{begin:/=/,end:/;/},{ +},m=[c,i,n,e.C_BLOCK_COMMENT_MODE,o,l],g={variants:[{begin:/=/,end:/;/},{ begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], -keywords:u,contains:b.concat([{begin:/\(/,end:/\)/,keywords:u, -contains:b.concat(["self"]),relevance:0}]),relevance:0},p={ -begin:"("+s+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,contains:m.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:m.concat(["self"]),relevance:0}]),relevance:0},p={ +begin:"("+r+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{ -begin:g,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})], +begin:_,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})], relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/, -keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,o,l,r,{begin:/\(/, -end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,o,l,r] -}]},r,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:u, -disableAutodetect:!0,illegal:"=]/,contains:[{ beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:c, -strings:o,keywords:u}}},grmr_css:e=>{const n=e.regex,t=(e=>({IMPORTANT:{ -scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{ -scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/}, -FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/}, -ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +strings:l,keywords:u}}}})();hljs.registerLanguage("c",e)})();/*! `css` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],i=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),t=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),r=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse() +;return n=>{const a=n.regex,l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, +BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", +begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ +className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{ +scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ scope:"number", begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", -relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} -}))(e),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/} +}))(n),s=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, -classNameAliases:{keyframePosition:"selector-tag"},contains:[t.BLOCK_COMMENT,{ -begin:/-(webkit|moz|ms|o)-(?=[a-z])/},t.CSS_NUMBER_MODE,{ +classNameAliases:{keyframePosition:"selector-tag"},contains:[l.BLOCK_COMMENT,{ +begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l.CSS_NUMBER_MODE,{ className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{ className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 -},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ -begin:":("+re.join("|")+")"},{begin:":(:)?("+oe.join("|")+")"}] -},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+le.join("|")+")\\b"},{ -begin:/:/,end:/[;}{]/, -contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...a,{ +},l.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+t.join("|")+")"},{begin:":(:)?("+o.join("|")+")"}]},l.CSS_VARIABLE,{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:/:/,end:/[;}{]/, +contains:[l.BLOCK_COMMENT,l.HEXCOLOR,l.IMPORTANT,l.CSS_NUMBER_MODE,...s,{ begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" -},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0, -excludeEnd:!0}]},t.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]", +},contains:[...s,{className:"string",begin:/[^)]/,endsWithParent:!0, +excludeEnd:!0}]},l.FUNCTION_DISPATCH]},{begin:a.lookahead(/@/),end:"[{;]", relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/ },{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ -$pattern:/[a-z-]+/,keyword:"and or not only",attribute:se.join(" ")},contains:[{ -begin:/[a-z-]+(?=:)/,className:"attribute"},...a,t.CSS_NUMBER_MODE]}]},{ -className:"selector-tag",begin:"\\b("+ie.join("|")+")\\b"}]}},grmr_xml:e=>{ -const n=e.regex,t=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),a={ -className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/, -contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] -},s=e.inherit(i,{begin:/\(/,end:/\)/}),r=e.inherit(e.APOS_STRING_MODE,{ -className:"string"}),o=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={ -endsWithParent:!0,illegal:/`]+/}]}]}]};return{ -name:"HTML, XML", -aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], -case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[i,o,r,s,{begin:/\[/,end:/\]/,contains:[{ -className:"meta",begin://,contains:[i,s,o,r]}]}] -},e.COMMENT(//,{relevance:10}),{begin://, -relevance:10},a,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/, -relevance:10,contains:[o]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag", -begin:/)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{ -end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", -begin:/)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{ -end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ -className:"tag",begin:/<>|<\/>/},{className:"tag", -begin:n.concat(//,/>/,/\s/)))), -end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:l}]},{ -className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{ -className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]} -},grmr_markdown:e=>{const n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml", -relevance:0},t={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{ -begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, -relevance:2},{ -begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), -relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ -begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ -},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, -returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", -excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", -end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[], -variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] -},i={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ -begin:/_(?![_\s])/,end:/_/,relevance:0}]},s=e.inherit(a,{contains:[] -}),r=e.inherit(i,{contains:[]});a.contains.push(r),i.contains.push(s) -;let o=[n,t];return[a,i,s,r].forEach((e=>{e.contains=e.contains.concat(o) -})),o=o.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ -className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{ -begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", -contains:o}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", -end:"\\s+",excludeEnd:!0},a,i,{className:"quote",begin:"^>\\s+",contains:o, -end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ -begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ -begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", -contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ -begin:"^[-\\*]{3,}",end:"$"},t,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ -className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ -className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}},grmr_dart:e=>{ -const n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},t={ -className:"subst",variants:[{begin:/\$\{/,end:/\}/}], -keywords:"true false null this is new super"},a={className:"string",variants:[{ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:i.join(" ")},contains:[{ +begin:/[a-z-]+(?=:)/,className:"attribute"},...s,l.CSS_NUMBER_MODE]}]},{ +className:"selector-tag",begin:"\\b("+e.join("|")+")\\b"}]}}})() +;hljs.registerLanguage("css",e)})();/*! `dart` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={className:"subst",variants:[{ +begin:"\\$[A-Za-z0-9_]+"}]},a={className:"subst",variants:[{begin:/\$\{/, +end:/\}/}],keywords:"true false null this is new super"},t={className:"number", +relevance:0,variants:[{ +match:/\b[0-9][0-9_]*(\.[0-9][0-9_]*)?([eE][+-]?[0-9][0-9_]*)?\b/},{ +match:/\b0[xX][0-9A-Fa-f][0-9A-Fa-f_]*\b/}]},i={className:"string",variants:[{ begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'", illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''", -contains:[e.BACKSLASH_ESCAPE,n,t]},{begin:'"""',end:'"""', -contains:[e.BACKSLASH_ESCAPE,n,t]},{begin:"'",end:"'",illegal:"\\n", -contains:[e.BACKSLASH_ESCAPE,n,t]},{begin:'"',end:'"',illegal:"\\n", -contains:[e.BACKSLASH_ESCAPE,n,t]}]};t.contains=[e.C_NUMBER_MODE,a] -;const i=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],s=i.map((e=>e+"?")) +contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'"""',end:'"""', +contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:"'",end:"'",illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'"',end:'"',illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE,n,a]}]};a.contains=[t,i] +;const r=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],s=r.map((e=>e+"?")) ;return{name:"Dart",keywords:{ keyword:["abstract","as","assert","async","await","base","break","case","catch","class","const","continue","covariant","default","deferred","do","dynamic","else","enum","export","extends","extension","external","factory","false","final","finally","for","Function","get","hide","if","implements","import","in","interface","is","late","library","mixin","new","null","on","operator","part","required","rethrow","return","sealed","set","show","static","super","switch","sync","this","throw","true","try","typedef","var","void","when","while","with","yield"], -built_in:i.concat(s).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]), +built_in:r.concat(s).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]), $pattern:/[A-Za-z][A-Za-z0-9_]*\??/}, -contains:[a,e.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0 +contains:[i,e.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0 }),e.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:"markdown",begin:".", end:"$",relevance:0}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, -contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE] -},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}, -grmr_diff:e=>{const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{ -className:"meta",relevance:10, -match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},t,{ +className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}})() +;hljs.registerLanguage("dart",e)})();/*! `diff` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"Diff", +aliases:["patch"],contains:[{className:"meta",relevance:10, +match:a.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) },{className:"comment",variants:[{ -begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), +begin:a.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, -end:/$/}]}},grmr_java:e=>{ -const n=e.regex,t="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",a=t+be("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/g,2),i={ -keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"], +end:/$/}]}}})();hljs.registerLanguage("diff",e)})();/*! `java` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict" +;var e="[0-9](_*[0-9])*",a=`\\.(${e})`,n="[0-9a-fA-F](_*[0-9a-fA-F])*",s={ +className:"number",variants:[{ +begin:`(\\b(${e})((${a})|\\.)?|(${a}))[eE][+-]?(${e})[fFdD]?\\b`},{ +begin:`\\b(${e})((${a})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${a})[fFdD]?\\b` +},{begin:`\\b(${e})[fFdD]\\b`},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?(${e})[fFdD]?\\b`},{ +begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};function t(e,a,n){return-1===n?"":e.replace(a,(s=>t(e,a,n-1)))} +return e=>{ +const a=e.regex,n="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",i=n+t("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),r={ +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"], literal:["false","true","null"], type:["char","boolean","long","float","int","byte","short","double"], -built_in:["super","this"]},s={className:"meta",begin:"@"+t,contains:[{ -begin:/\(/,end:/\)/,contains:["self"]}]},r={className:"params",begin:/\(/, -end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0} -;return{name:"Java",aliases:["jsp"],keywords:i,illegal:/<\/|#/, +built_in:["super","this"]},l={className:"meta",begin:"@"+n,contains:[{ +begin:/\(/,end:/\)/,contains:["self"]}]},c={className:"params",begin:/\(/, +end:/\)/,keywords:r,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0} +;return{name:"Java",aliases:["jsp"],keywords:r,illegal:/<\/|#/, contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 },e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/, className:"string",contains:[e.BACKSLASH_ESCAPE] },e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ -match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,t],className:{ +match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{ 1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{ -begin:[n.concat(/(?!else)/,t),/\s+/,t,/\s+/,/=(?!=)/],className:{1:"type", -3:"variable",5:"operator"}},{begin:[/record/,/\s+/,t],className:{1:"keyword", -3:"title.class"},contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +begin:[a.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type", +3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword", +3:"title.class"},contains:[c,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ beginKeywords:"new throw return else",relevance:0},{ -begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ -2:"title.function"},keywords:i,contains:[{className:"params",begin:/\(/, -end:/\)/,keywords:i,relevance:0, -contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,ue,e.C_BLOCK_COMMENT_MODE] -},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},ue,s]}},grmr_javascript:e=>{ -const n=e.regex,t=me,a={begin:/<[A-Za-z0-9\\._:-]+/, +begin:["(?:"+i+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ +2:"title.function"},keywords:r,contains:[{className:"params",begin:/\(/, +end:/\)/,keywords:r,relevance:0, +contains:[l,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},s,l]}}})() +;hljs.registerLanguage("java",e)})();/*! `javascript` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],i=[].concat(r,t,s) +;return o=>{const l=o.regex,d=e,b={begin:/<[A-Za-z0-9\\._:-]+/, end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ -const t=e[0].length+e.index,a=e.input[t] -;if("<"===a||","===a)return void n.ignoreMatch();let i -;">"===a&&(((e,{after:n})=>{const t=""===t&&(((e,{after:n})=>{const a="",S={ -match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(O)], -keywords:"async",className:{1:"keyword",3:"title.function"},contains:[_]} -;return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{ -PARAMS_CONTAINS:f,CLASS_REFERENCE:N},illegal:/#(?![$_A-z])/, -contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ +match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},k={relevance:0, +match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/), +className:"title.class",keywords:{_:[...t,...s]}},I={variants:[{ +match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}], +className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R], +illegal:/%/},x={ +match:l.concat(/\b/,(T=[...r,"super","import"].map((e=>e+"\\s*\\(")), +l.concat("(?!",T.join("|"),")")),d,l.lookahead(/\s*\(/)), +className:"title.function",relevance:0};var T;const C={ +begin:l.concat(/\./,l.lookahead(l.concat(d,/(?![0-9A-Za-z$_(])/))),end:d, +excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},M={ +match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"}, +contains:[{begin:/\(\)/},R] +},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+o.UNDERSCORE_IDENT_RE+")\\s*=>",$={ +match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(B)], +keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]} +;return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{ +PARAMS_CONTAINS:w,CLASS_REFERENCE:k},illegal:/#(?![$_A-z])/, +contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ label:"use_strict",className:"meta",relevance:10, begin:/^\s*['"]use (strict|asm)['"]/ -},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,d,g,u,b,m,{match:/\$\d+/},l,N,{ -className:"attr",begin:t+n.lookahead(":"),relevance:0},S,{ -begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", -keywords:"return throw case",relevance:0,contains:[m,e.REGEXP_MODE,{ -className:"function",begin:O,returnBegin:!0,end:"\\s*=>",contains:[{ -className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{ -className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, -excludeEnd:!0,keywords:i,contains:f}]}]},{begin:/,/,relevance:0},{match:/\s+/, -relevance:0},{variants:[{begin:"<>",end:""},{ -match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin, -"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{ -begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},y,{ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,_,N,f,p,{match:/\$\d+/},A,k,{ +scope:"attr",match:d+l.lookahead(":"),relevance:0},$,{ +begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case",relevance:0,contains:[p,o.REGEXP_MODE,{ +className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{ +className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0 +},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{ +match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:b.begin, +"on:begin":b.isTrulyOpeningTag,end:b.end}],subLanguage:"xml",contains:[{ +begin:b.begin,end:b.end,skip:!0,contains:["self"]}]}]},I,{ beginKeywords:"while if switch catch for"},{ -begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", -returnBegin:!0,label:"func.def",contains:[_,e.inherit(e.TITLE_MODE,{begin:t, -className:"title.function"})]},{match:/\.\.\./,relevance:0},k,{match:"\\$"+t, +begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,label:"func.def",contains:[R,o.inherit(o.TITLE_MODE,{begin:d, +className:"title.function"})]},{match:/\.\.\./,relevance:0},C,{match:"\\$"+d, relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, -contains:[_]},w,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, -className:"variable.constant"},E,x,{match:/\$[(.]/}]}},grmr_json:e=>{ -const n=["true","false","null"],t={scope:"literal",beginKeywords:n.join(" ")} -;return{name:"JSON",keywords:{literal:n},contains:[{className:"attr", +contains:[R]},x,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},O,M,{match:/\$[(.]/}]}}})() +;hljs.registerLanguage("javascript",e)})();/*! `json` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=["true","false","null"],s={ +scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",aliases:["jsonc"], +keywords:{literal:a},contains:[{className:"attr", begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/, className:"punctuation",relevance:0 -},e.QUOTE_STRING_MODE,t,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], -illegal:"\\S"}},grmr_kotlin:e=>{const n={ +},e.QUOTE_STRING_MODE,s,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], +illegal:"\\S"}}})();hljs.registerLanguage("json",e)})();/*! `kotlin` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict" +;var e="[0-9](_*[0-9])*",n=`\\.(${e})`,a="[0-9a-fA-F](_*[0-9a-fA-F])*",i={ +className:"number",variants:[{ +begin:`(\\b(${e})((${n})|\\.)?|(${n}))[eE][+-]?(${e})[fFdD]?\\b`},{ +begin:`\\b(${e})((${n})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${n})[fFdD]?\\b` +},{begin:`\\b(${e})[fFdD]\\b`},{ +begin:`\\b0[xX]((${a})\\.?|(${a})?\\.(${a}))[pP][+-]?(${e})[fFdD]?\\b`},{ +begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${a})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{const n={ keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing", -literal:"true false null"},t={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" -},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={ -className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},s={className:"string", -variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,a]},{begin:"'",end:"'", +literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" +},s={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},t={ +className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string", +variants:[{begin:'"""',end:'"""(?=[^"])',contains:[t,s]},{begin:"'",end:"'", illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/, -contains:[e.BACKSLASH_ESCAPE,i,a]}]};a.contains.push(s);const r={ +contains:[e.BACKSLASH_ESCAPE,t,s]}]};s.contains.push(r);const l={ className:"meta", begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?" -},o={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, -end:/\)/,contains:[e.inherit(s,{className:"string"}),"self"]}] -},l=ue,c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={ +},c={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, +end:/\)/,contains:[e.inherit(r,{className:"string"}),"self"]}] +},o=i,b=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),E={ variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/, -contains:[]}]},g=d;return g.variants[1].contains=[d],d.variants[1].contains=[g], +contains:[]}]},d=E;return d.variants[1].contains=[E],E.variants[1].contains=[d], {name:"Kotlin",aliases:["kt","kts"],keywords:n, contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag", -begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword", +begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,b,{className:"keyword", begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol", -begin:/@\w+/}]}},t,r,o,{className:"function",beginKeywords:"fun",end:"[(]|$", +begin:/@\w+/}]}},a,l,c,{className:"function",beginKeywords:"fun",end:"[(]|$", returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{ begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://, keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/, endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/, -endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0 -},e.C_LINE_COMMENT_MODE,c,r,o,s,e.C_NUMBER_MODE]},c]},{ +endsWithParent:!0,contains:[E,e.C_LINE_COMMENT_MODE,b],relevance:0 +},e.C_LINE_COMMENT_MODE,b,l,c,r,e.C_NUMBER_MODE]},b]},{ begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{ 3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0, illegal:"extends implements",contains:[{ beginKeywords:"public protected internal private constructor" },e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0, excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/, -excludeBegin:!0,returnEnd:!0},r,o]},s,{className:"meta",begin:"^#!/usr/bin/env", -end:"$",illegal:"\n"},l]}},grmr_objectivec:e=>{ -const n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n, -keyword:["@interface","@class","@protocol","@implementation"]};return{ -name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"], -keywords:{"variable.language":["this","super"],$pattern:n, +excludeBegin:!0,returnEnd:!0},l,c]},r,{className:"meta",begin:"^#!/usr/bin/env", +end:"$",illegal:"\n"},o]}}})();hljs.registerLanguage("kotlin",e)})();/*! `markdown` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/, +end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/, +relevance:0},{ +begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{ +begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ +},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[], +variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] +},s={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ +begin:/_(?![_\s])/,end:/_/,relevance:0}]},c=e.inherit(i,{contains:[] +}),t=e.inherit(s,{contains:[]});i.contains.push(t),s.contains.push(c) +;let g=[n,a];return[i,s,c,t].forEach((e=>{e.contains=e.contains.concat(g) +})),g=g.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:g},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:g}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:g, +end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ +begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ +begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", +contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ +begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},{scope:"literal", +match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}})() +;hljs.registerLanguage("markdown",e)})();/*! `objectivec` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={ +$pattern:n,keyword:["@interface","@class","@protocol","@implementation"]} +;return{name:"Objective-C", +aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{ +"variable.language":["this","super"],$pattern:n, keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"], literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"], built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"], @@ -642,139 +647,135 @@ keyword:"if else elif endif define undef warning error line pragma ifdef ifndef },contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{ className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n" },e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", -begin:"("+t.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:t, +begin:"("+_.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:_, contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, -relevance:0}]}},grmr_plaintext:e=>({name:"Plain text",aliases:["text","txt"], -disableAutodetect:!0}),grmr_shell:e=>({name:"Shell Session", +relevance:0}]}}})();hljs.registerLanguage("objectivec",e)})();/*! `plaintext` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", +aliases:["text","txt"],disableAutodetect:!0})})() +;hljs.registerLanguage("plaintext",t)})();/*! `shell` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session", aliases:["console","shellsession"],contains:[{className:"meta.prompt", begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, -subLanguage:"bash"}}]}),grmr_swift:e=>{const n={match:/\s+/,relevance:0 -},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,t],i={ -match:[/\./,m(...ve,...ke)],className:{2:"keyword"}},s={match:b(/\./,m(...Oe)), -relevance:0},r=Oe.filter((e=>"string"==typeof e)).concat(["_|0"]),o={variants:[{ +subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();/*! `swift` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(e){return t("(?=",e,")")} +function t(...n){return n.map((n=>e(n))).join("")}function a(...n){const t=(e=>{ +const n=e[e.length-1] +;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} +})(n);return"("+(t.capture?"":"?:")+n.map((n=>e(n))).join("|")+")"} +const s=e=>t(/\b/,e,/\w$/.test(e)?/\b/:/\B/),i=["Protocol","Type"].map(s),c=["init","self"].map(s),o=["Any","Self"],u=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],r=["false","nil","true"],l=["assignment","associativity","higherThan","left","lowerThan","none","right"],m=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],p=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],d=a(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),b=a(d,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),F=t(d,b,"*"),h=a(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),w=a(h,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),f=t(h,w,"*"),y=t(/[A-Z]/,w,"*"),g=["attached","autoclosure",t(/convention\(/,a("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,f,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],v=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +;return e=>{const d={match:/\s+/,relevance:0},h=e.COMMENT("/\\*","\\*/",{ +contains:["self"]}),A=[e.C_LINE_COMMENT_MODE,h],E={match:[/\./,a(...i,...c)], +className:{2:"keyword"}},k={match:t(/\./,a(...u)),relevance:0 +},C=u.filter((e=>"string"==typeof e)).concat(["_|0"]),N={variants:[{ className:"keyword", -match:m(...Oe.filter((e=>"string"!=typeof e)).concat(xe).map(we),...ke)}]},l={ -$pattern:m(/\b\w+/,/#\w+/),keyword:r.concat(Me),literal:Se},c=[i,s,o],g=[{ -match:b(/\./,m(...Ce)),relevance:0},{className:"built_in", -match:b(/\b/,m(...Ce),/(?=\()/)}],u={match:/->/,relevance:0},p=[u,{ -className:"operator",relevance:0,variants:[{match:De},{match:`\\.(\\.|${Re})+`}] -}],h="([0-9]_*)+",f="([0-9a-fA-F]_*)+",_={className:"number",relevance:0, -variants:[{match:`\\b(${h})(\\.(${h}))?([eE][+-]?(${h}))?\\b`},{ -match:`\\b0x(${f})(\\.(${f}))?([pP][+-]?(${h}))?\\b`},{match:/\b0o([0-7]_*)+\b/ -},{match:/\b0b([01]_*)+\b/}]},E=(e="")=>({className:"subst",variants:[{ -match:b(/\\/,e,/[0\\tnr"']/)},{match:b(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}] -}),N=(e="")=>({className:"subst",match:b(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/) -}),y=(e="")=>({className:"subst",label:"interpol",begin:b(/\\/,e,/\(/),end:/\)/ -}),w=(e="")=>({begin:b(e,/"""/),end:b(/"""/,e),contains:[E(e),N(e),y(e)] -}),v=(e="")=>({begin:b(e,/"/),end:b(/"/,e),contains:[E(e),y(e)]}),k={ +match:a(...u.filter((e=>"string"!=typeof e)).concat(o).map(s),...c)}]},S={ +$pattern:a(/\b\w+/,/#\w+/),keyword:C.concat(m),literal:r},B=[E,k,N],D=[{ +match:t(/\./,a(...p)),relevance:0},{className:"built_in", +match:t(/\b/,a(...p),/(?=\()/)}],_={match:/->/,relevance:0},M=[_,{ +className:"operator",relevance:0,variants:[{match:F},{match:`\\.(\\.|${b})+`}] +}],x="([0-9]_*)+",L="([0-9a-fA-F]_*)+",$={className:"number",relevance:0, +variants:[{match:`\\b(${x})(\\.(${x}))?([eE][+-]?(${x}))?\\b`},{ +match:`\\b0x(${L})(\\.(${L}))?([pP][+-]?(${x}))?\\b`},{match:/\b0o([0-7]_*)+\b/ +},{match:/\b0b([01]_*)+\b/}]},I=(e="")=>({className:"subst",variants:[{ +match:t(/\\/,e,/[0\\tnr"']/)},{match:t(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}] +}),O=(e="")=>({className:"subst",match:t(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/) +}),P=(e="")=>({className:"subst",label:"interpol",begin:t(/\\/,e,/\(/),end:/\)/ +}),j=(e="")=>({begin:t(e,/"""/),end:t(/"""/,e),contains:[I(e),O(e),P(e)] +}),K=(e="")=>({begin:t(e,/"/),end:t(/"/,e),contains:[I(e),P(e)]}),T={ className:"string", -variants:[w(),w("#"),w("##"),w("###"),v(),v("#"),v("##"),v("###")]},x={ -match:b(/`/,Le,/`/)},O=[x,{className:"variable",match:/\$\d+/},{ -className:"variable",match:`\\$${Be}+`}],S=[{match:/(@|#(un)?)available/, -className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:ze, -contains:[...p,_,k]}]}},{className:"keyword",match:b(/@/,m(...Fe))},{ -className:"meta",match:b(/@/,Le)}],A={match:d(/\b[A-Z]/),relevance:0,contains:[{ -className:"type", -match:b(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Be,"+") -},{className:"type",match:$e,relevance:0},{match:/[?!]+/,relevance:0},{ -match:/\.\.\./,relevance:0},{match:b(/\s+&\s+/,d($e)),relevance:0}]},M={ -begin://,keywords:l,contains:[...a,...c,...S,u,A]};A.contains.push(M) -;const C={begin:/\(/,end:/\)/,relevance:0,keywords:l,contains:["self",{ -match:b(Le,/\s*:/),keywords:"_|0",relevance:0 -},...a,...c,...g,...p,_,k,...O,...S,A]},T={begin://,contains:[...a,A] -},R={begin:/\(/,end:/\)/,keywords:l,contains:[{ -begin:m(d(b(Le,/\s*:/)),d(b(Le,/\s+/,Le,/\s*:/))),end:/:/,relevance:0, -contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Le}] -},...a,...c,...p,_,k,...S,A,C],endsParent:!0,illegal:/["']/},D={ -match:[/func/,/\s+/,m(x.match,Le,De)],className:{1:"keyword",3:"title.function" -},contains:[T,R,n],illegal:[/\[/,/%/]},I={ +variants:[j(),j("#"),j("##"),j("###"),K(),K("#"),K("##"),K("###")] +},z=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0, +contains:[e.BACKSLASH_ESCAPE]}],q={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//, +contains:z},U=e=>{const n=t(e,/\//),a=t(/\//,e);return{begin:n,end:a, +contains:[...z,{scope:"comment",begin:`#(?!.*${a})`,end:/$/}]}},Z={ +scope:"regexp",variants:[U("###"),U("##"),U("#"),q]},V={match:t(/`/,f,/`/) +},W=[V,{className:"variable",match:/\$\d+/},{className:"variable", +match:`\\$${w}+`}],G=[{match:/(@|#(un)?)available/,scope:"keyword",starts:{ +contains:[{begin:/\(/,end:/\)/,keywords:v,contains:[...M,$,T]}]}},{ +scope:"keyword",match:t(/@/,a(...g),n(a(/\(/,/\s+/)))},{scope:"meta", +match:t(/@/,f)}],H={match:n(/\b[A-Z]/),relevance:0,contains:[{className:"type", +match:t(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,w,"+") +},{className:"type",match:y,relevance:0},{match:/[?!]+/,relevance:0},{ +match:/\.\.\./,relevance:0},{match:t(/\s+&\s+/,n(y)),relevance:0}]},R={ +begin://,keywords:S,contains:[...A,...B,...G,_,H]};H.contains.push(R) +;const X={begin:/\(/,end:/\)/,relevance:0,keywords:S,contains:["self",{ +match:t(f,/\s*:/),keywords:"_|0",relevance:0 +},...A,Z,...B,...D,...M,$,T,...W,...G,H]},J={begin://, +keywords:"repeat each",contains:[...A,H]},Q={begin:/\(/,end:/\)/,keywords:S, +contains:[{begin:a(n(t(f,/\s*:/)),n(t(f,/\s+/,f,/\s*:/))),end:/:/,relevance:0, +contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:f}] +},...A,...B,...M,$,T,...G,H,X],endsParent:!0,illegal:/["']/},Y={ +match:[/(func|macro)/,/\s+/,a(V.match,f,F)],className:{1:"keyword", +3:"title.function"},contains:[J,Q,d],illegal:[/\[/,/%/]},ee={ match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, -contains:[T,R,n],illegal:/\[|%/},B={match:[/operator/,/\s+/,De],className:{ -1:"keyword",3:"title"}},L={begin:[/precedencegroup/,/\s+/,$e],className:{ -1:"keyword",3:"title"},contains:[A],keywords:[...Ae,...Se],end:/}/} -;for(const e of k.variants){const n=e.contains.find((e=>"interpol"===e.label)) -;n.keywords=l;const t=[...c,...g,...p,_,k,...O];n.contains=[...t,{begin:/\(/, -end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:l, -contains:[...a,D,I,{beginKeywords:"struct protocol class extension enum actor", -end:"\\{",excludeEnd:!0,keywords:l,contains:[e.inherit(e.TITLE_MODE,{ -className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...c] -},B,L,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0 -},...c,...g,...p,_,k,...O,...S,A,C]}},grmr_ruby:e=>{ -const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(a,/(::\w+)*/),s={ -"variable.constant":["__FILE__","__LINE__","__ENCODING__"], -"variable.language":["self","super"], -keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"], -built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"], -literal:["true","false","nil"]},r={className:"doctag",begin:"@[A-Za-z]+"},o={ -begin:"#<",end:">"},l=[e.COMMENT("#","$",{contains:[r] -}),e.COMMENT("^=begin","^=end",{contains:[r],relevance:10 -}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={className:"subst",begin:/#\{/, -end:/\}/,keywords:s},d={className:"string",contains:[e.BACKSLASH_ESCAPE,c], -variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{ -begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{ -begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//, -end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{ -begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{ -begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ -begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ -begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ -begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)), -contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, -contains:[e.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",u={className:"number", -relevance:0,variants:[{ -begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ -begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" -},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ -begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ -begin:"\\b0(_?[0-7])+r?i?\\b"}]},b={variants:[{match:/\(\)/},{ -className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0, -keywords:s}]},m=[d,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{ -match:[/\b(class|module)\s+/,i]}],scope:{2:"title.class", -4:"title.class.inherited"},keywords:s},{match:[/(include|extend)\s+/,i],scope:{ -2:"title.class"},keywords:s},{relevance:0,match:[i,/\.new[. (]/],scope:{ -1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, -className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{ -match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[b]},{ -begin:e.IDENT_RE+"::"},{className:"symbol", -begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", -begin:":(?!\\s)",contains:[d,{begin:t}],relevance:0},u,{className:"variable", -begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ -className:"params",begin:/\|/,end:/\|/,excludeBegin:!0,excludeEnd:!0, -relevance:0,keywords:s},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*", -keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c], -illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{ -begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[", -end:"\\][a-z]*"}]}].concat(o,l),relevance:0}].concat(o,l) -;c.contains=m,b.contains=m;const p=[{begin:/^\s*=>/,starts:{end:"$",contains:m} -},{className:"meta.prompt", -begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", -starts:{end:"$",keywords:s,contains:m}}];return l.unshift(o),{name:"Ruby", -aliases:["rb","gemspec","podspec","thor","irb"],keywords:s,illegal:/\/\*/, -contains:[e.SHEBANG({binary:"ruby"})].concat(p).concat(l).concat(m)}}, -grmr_yaml:e=>{ -const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={ -className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ -},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", -variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(a,{ -variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),s={ -end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},r={begin:/\{/, -end:/\}/,contains:[s],illegal:"\\n",relevance:0},o={begin:"\\[",end:"\\]", -contains:[s],illegal:"\\n",relevance:0},l=[{className:"attr",variants:[{ -begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ -begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", -relevance:10},{className:"string", +contains:[J,Q,d],illegal:/\[|%/},ne={match:[/operator/,/\s+/,F],className:{ +1:"keyword",3:"title"}},te={begin:[/precedencegroup/,/\s+/,y],className:{ +1:"keyword",3:"title"},contains:[H],keywords:[...l,...r],end:/}/},ae={ +begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,f,/\s*/], +beginScope:{1:"keyword",3:"title.class"},keywords:S,contains:[J,...B,{begin:/:/, +end:/\{/,keywords:S,contains:[{scope:"title.class.inherited",match:y},...B], +relevance:0}]};for(const e of T.variants){ +const n=e.contains.find((e=>"interpol"===e.label));n.keywords=S +;const t=[...B,...D,...M,$,T,...W];n.contains=[...t,{begin:/\(/,end:/\)/, +contains:["self",...t]}]}return{name:"Swift",keywords:S,contains:[...A,Y,ee,{ +match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{ +1:"keyword",3:"keyword",5:"title.function"}},{match:[/class\b/,/\s+/,/var\b/], +scope:{1:"keyword",3:"keyword"}},ae,ne,te,{beginKeywords:"import",end:/$/, +contains:[...A],relevance:0},Z,...B,...D,...M,$,T,...W,...G,H,X]}}})() +;hljs.registerLanguage("swift",e)})();/*! `xml` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, +contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{ +className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),r={ +endsWithParent:!0,illegal:/`]+/}]}]}]};return{ +name:"HTML, XML", +aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], +case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{ +className:"meta",begin://,contains:[t,i,l,c]}]}] +},e.COMMENT(//,{relevance:10}),{begin://, +relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/, +relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[r],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[r],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a.concat(//,/>/,/\s/)))), +end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:r}]},{ +className:"tag",begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{ +className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}} +})();hljs.registerLanguage("xml",e)})();/*! `yaml` grammar compiled for Highlight.js 11.11.1 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={ +className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}], +contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{ +begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(s,{variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{ +begin:/[^\s,{}[\]]+/}]}),l={end:",",endsWithParent:!0,excludeEnd:!0,keywords:n, +relevance:0},t={begin:/\{/,end:/\}/,contains:[l],illegal:"\\n",relevance:0},c={ +begin:"\\[",end:"\\]",contains:[l],illegal:"\\n",relevance:0},r=[{ +className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{ +begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{ +begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},{className:"meta", +begin:"^---\\s*$",relevance:10},{className:"string", begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, -relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type", -begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t +relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type", +begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a },{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ className:"number", begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" -},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},r,o,a],c=[...l] -;return c.pop(),c.push(i),s.contains=c,{name:"YAML",case_insensitive:!0, -aliases:["yml"],contains:l}}});const je=ae;for(const e of Object.keys(Ue)){ -const n=e.replace("grmr_","").replace("_","-");je.registerLanguage(n,Ue[e])} -return je}() -;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); +},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},t,c,{ +className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/, +scope:"char.escape",relevance:0}]},s],g=[...r] +;return g.pop(),g.push(i),l.contains=g,{name:"YAML",case_insensitive:!0, +aliases:["yml"],contains:r}}})();hljs.registerLanguage("yaml",e)})(); \ No newline at end of file diff --git a/doc/api/static-assets/readme.md b/doc/api/static-assets/readme.md index 62216710..c5c63c76 100644 --- a/doc/api/static-assets/readme.md +++ b/doc/api/static-assets/readme.md @@ -12,25 +12,34 @@ check out the [`dart doc` documentation][]. ## highlight.js -Generated from https://highlightjs.org/download/ on 2021-07-13. - **License:** https://github.com/highlightjs/highlight.js/blob/main/LICENSE -**Included languages:** - -* bash -* c -* css -* dart -* diff -* html, xml -* java -* javascript -* json -* kotlin -* markdown -* objective-c -* plaintext -* shell -* swift -* yaml +### Update + +1. Visit https://highlightjs.org/download/ +2. Open the developer console. +3. Copy the below code block and execute. +4. Verify that the listed language are selected. +5. Download and extract assets. + +```javascript +var selected = [ + 'bash', + 'c', + 'css', + 'dart', + 'diff', + 'java', + 'javascript', + 'json', + 'kotlin', + 'markdown', + 'objectivec', + 'plaintext', + 'shell', + 'swift', + 'xml', // also includes html + 'yaml', +]; +document.querySelectorAll('input[type=checkbox]').forEach(function (elem) {elem.checked = selected.includes(elem.value);}); +``` diff --git a/doc/api/static-assets/styles.css b/doc/api/static-assets/styles.css index 424cf36f..5fccbc53 100644 --- a/doc/api/static-assets/styles.css +++ b/doc/api/static-assets/styles.css @@ -1,1298 +1 @@ -.light-theme { - /*background-color body, listdropdown*/ - --main-bg-color: #fff; - /*header id-tittle*/ - --main-header-color: #eeeeee; - /*package-name*/ - --main-sidebar-color: #727272; - /*section-title and section subtitle, desc markdown(body, dd, h3), header a*/ - --main-text-color: #111111; - /*typehead search-box*/ - --main-search-bar: #fff; - /* scrollbar-thumb */ - --main-scrollbar-color: #CCC; - /* footer */ - --main-footer-background: #111111; - /*header text color*/ - --main-h-text: black; - /* hyperlinks*/ - --main-hyperlinks-color: #0175C2; - /*search background*/ - --main-search-background: transparent; - - /*code snippets*/ - --main-code-bg: #f8f8f8; - --main-keyword-color: #333; - --main-tag-color: #000080; - --main-section-color: #900; - --main-comment-color: #998; - --main-var-color: #008080; - --main-string-color: #d14; - - --main-number-filter: invert(0%); - --main-icon-color: black; - - /* alerts */ - --alert-info: #e7f8ff; - --alert-tip: #ecfaf7; - --alert-important: #e2dbff; - --alert-warning: #fcf8e3; - --alert-error: #fde9ee; -} - -.dark-theme { - /*background-color body, listdropdown*/ - --main-bg-color: #10161E; - /*header id-tittle*/ - --main-header-color: #1C2834; - /*package-name*/ - --main-sidebar-color: #fff; - /*section-title and section subtitle, desc markdown(body, dd, h3), header a*/ - --main-text-color: #fff; - /*typehead search-box*/ - --main-search-bar: #454545; - /* scrollbar-thumb */ - --main-scrollbar-color: #5f6368; - /* footer */ - --main-footer-background: #27323a; - /* hyperlinks*/ - --main-hyperlinks-color: #00D2FA; - /*search background*/ - --main-search-background: black; - - /*code snippets*/ - --main-code-bg: #10161E; - --main-keyword-color: white; - --main-tag-color: #00D2FA; - --main-section-color: #FF2D64; - --main-comment-color: #909CC3; - --main-var-color: #55A09B; - --main-string-color: #FF2D64; - - --main-number-filter: invert(100%); - --main-icon-color: white; - - /* alerts */ - --alert-info: #043875; - --alert-tip: #065517; - --alert-important: #4a00b4; - --alert-warning: #7b6909; - --alert-error: #7a0c17; -} - -#theme { - display: none; -} - -#theme-button { - position: absolute; - right: 30px; - height: 24px; -} - -#theme-button .material-symbols-outlined { - color: var(--main-icon-color); - user-select: none; - cursor: pointer; -} - -#theme-button .material-symbols-outlined:hover { - color: var(--main-hyperlinks-color); -} - -li .material-symbols-outlined, dt .material-symbols-outlined { - font-size: 1em; - vertical-align: text-bottom; -} - -dt .material-symbols-outlined { - text-indent: 0; -} - -.light-theme #light-theme-button { - display: none; -} - -.dark-theme #dark-theme-button { - display: none; -} - -/* -Only show images that fit their theme using GitHub's syntax, see: -https://github.blog/changelog/2021-11-24-specify-theme-context-for-images-in-markdown/ -*/ -.dark-theme img[src$="#gh-light-mode-only"] { - display: none; -} - -.light-theme img[src$="#gh-dark-mode-only"] { - display: none; -} - -/* for layout */ -html, -body { - margin: 0; - padding: 0; - height: 100%; - width: 100%; - overflow: hidden; - box-sizing: border-box; -} - -*, *:before, *:after { - box-sizing: inherit; -} - -body { - display: flex; - flex-direction: column; - -webkit-overflow-scrolling: touch; -} - -header { - flex: 0 0 50px; - display: flex; - flex-direction: row; - align-items: center; - padding-left: 30px; - padding-right: 30px; - background-color: var(--main-header-color); -} - -header ol { - list-style: none; - margin: 0; - padding: 0; -} - -header ol li { - display: inline; -} - -header form { - display: flex; - flex: 1; - justify-content: flex-end; -} - -header#header-search-sidebar { - height: 50px; - margin-bottom: 25px; -} - -footer { - flex: 0 0 16px; - text-align: center; - padding: 16px 20px; -} - -main { - flex: 1; - display: flex; - flex-direction: row; - min-height: 0; -} - -.sidebar-offcanvas-left { - flex: 0 1 230px; - order: 1; - overflow-y: scroll; - padding: 20px 0 15px 30px; - margin: 5px 20px 0 0; -} - -::-webkit-scrollbar-button{ display: none; height: 13px; border-radius: 0; background-color: #AAA; } -::-webkit-scrollbar-button:hover{ background-color: #AAA; } -::-webkit-scrollbar-thumb{ background-color: var(--main-scrollbar-color); } -::-webkit-scrollbar-thumb:hover{ background-color: var(--main-scrollbar-color); } -::-webkit-scrollbar{ width: 4px; } - -.main-content::-webkit-scrollbar{ width: 8px; } - -.main-content { - flex: 1; - order: 2; - overflow-y: scroll; - padding: 10px 20px 0 20px; -} - -.sidebar-offcanvas-right { - flex: 0 1 12em; - order: 3; - overflow-y: scroll; - padding: 20px 15px 15px 15px; - margin-top: 5px; - margin-right: 20px; -} -/* end for layout */ - -body { - -webkit-text-size-adjust: 100%; - overflow-x: hidden; - font-family: Roboto, sans-serif; - font-size: 16px; - line-height: 1.42857143; - color: var(--main-text-color); - background-color: var(--main-bg-color); -} - -nav.navbar { - background-color: inherit; - min-height: 50px; - border: 0; -} - -@media (max-width: 840px) { - .hidden-xs { - display: none !important; - } -} - -@media (min-width: 841px) { - .hidden-l { - display: none !important; - } -} - -nav.navbar .row { - padding-top: 8px; -} - -nav .container { - white-space: nowrap; -} - -header { - background-color: var(--main-header-color); - box-shadow: 0 3px 5px rgba(0,0,0,0.1); -} - -.pre { - border: 1px solid #ddd; - font-size: 14px; -} - -.hljs-string, .hljs-doctag { - color: var(--main-string-color); -} - -.hljs-number, .hljs-literal, .hljs-variable, .hljs-template-variable, .hljs-tag .hljs-attr { - color: var(--main-var-color); -} - -.hljs-comment, .hljs-quote { - color: var(--main-comment-color); - font-style: italic; -} - -.hljs-title, .hljs-section, .hljs-selector-id { - color: var(--main-section-color); - font-weight: bold; -} - -.hljs-tag, .hljs-name, .hljs-attribute { - color: var(--main-tag-color); - font-weight: normal; -} - -.hljs-keyword, .hljs-selector-tag, .hljs-subst { - color: var(--main-keyword-color); - font-weight: bold; -} - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: var(--main-text-color); - background: var(--main-code-bg); -} - -a { - text-decoration: none; -} - -section { - margin-bottom: 36px; -} - -dl { - margin: 0; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: Roboto, sans-serif; - font-weight: 400; - margin-top: 1.5em; - color: var(--main-text-color); -} - -h1.title { - overflow: hidden; - text-overflow: ellipsis; -} - -h1 { - font-size: 37px; - margin-top: 0; - margin-bottom: 0.67em; -} - -h2 { - font-size: 28px; -} - -h5 { - font-size: 16px; -} - -p { - margin-bottom: 1em; - margin-top: 0; -} - -a { - color: var(--main-hyperlinks-color); -} - -a:hover { - color: #13B9FD; -} - -pre.prettyprint { - font-family: 'Roboto Mono', Menlo, monospace; - color: black; - border-radius: 0; - font-size: 15px; - word-wrap: normal; - line-height: 1.4; - border: 0; - margin: 16px 0 16px 0; - padding: 8px; -} - -pre code { - white-space: pre; - word-wrap: initial; - font-size: 100% -} - -.fixed { - white-space: pre; -} - -pre { - border: 1px solid #ddd; - background-color: #eee; - font-size: 14px; -} - -code { - font-family: 'Roboto Mono', Menlo, monospace; - color: inherit; - padding: 0.2em 0.4em; - font-size: 85%; - background-color: rgba(27,31,35,0.05); - border-radius: 3px; -} - -@media(max-width: 840px) { - nav .container { - width: 100% - } - - h1 { - font-size: 24px; - } - - pre { - margin: 16px 0; - } -} - -header h1 { - font-weight: 400; - margin-bottom: 16px; -} - -header a, -header p, -header li { - color: #0175C2; -} - -header a:hover { - color: #0175C2; -} - -header h1 .kind { - color: #555; -} - -dt { - font-weight: normal; -} - -dd { - color: var(--main-text-color); - margin-bottom: 1em; - margin-left: 0; -} - -dd.callable, dd.constant, dd.property { - margin-bottom: 24px; -} - -dd p { - overflow-x: hidden; - text-overflow: ellipsis; - margin-bottom: 0; -} - -/* Enum values do not have their own pages; their full docs are presented on the - * enum class's page. */ -dt.constant + dd p { - margin-bottom: 1em; -} - -/* indents wrapped lines */ -section.summary dt { - margin-left: 24px; - text-indent: -24px; -} - -.dl-horizontal dd { - margin-left: initial; -} - -dl.dl-horizontal dt { - font-style: normal; - text-align: left; - color: #727272; - margin-right: 20px; - width: initial; -} - -dt .name { - font-weight: 500; -} - -dl dt.callable .name { - float: none; - width: auto; -} - -.type-parameter { - white-space: nowrap; -} - -.multi-line-signature .type-parameter .parameter { - margin-left: 0; - display: unset; -} - -.parameter-list { - display: table-cell; - margin-left: 10px; - list-style-type: none; - padding-inline-start: unset; -} - -.signature { - color: var(--main-text-color); -} - -.signature a { - color: var(--main-hyperlinks-color); -} - -.optional { - font-style: italic; -} - -.undocumented { - font-style: italic; -} - -.is-const { - font-style: italic; -} - -.deprecated { - text-decoration: line-through; -} - -.category.linked { - font-weight: bold; - opacity: 1; -} - -/* Colors for category based on categoryOrder in dartdoc_options.config. */ -.category.cp-0 { - background-color: #54b7c4 -} - -.category.cp-1 { - background-color: #54c47f -} - -.category.cp-2 { - background-color: #c4c254 -} - -.category.cp-3 { - background-color: #c49f54 -} - -.category.cp-4 { - background-color: #c45465 -} - -.category.cp-5 { - background-color: #c454c4 -} - -.category a { - color: white; -} - -.category { - padding: 2px 4px; - font-size: 12px; - border-radius: 4px; - background-color: #999; - text-transform: uppercase; - color: white; - opacity: .5; -} - -h1 .category { - vertical-align: middle; -} - -/* The badge under a declaration for things like "const", "read-only", etc. and for the badges inline like sealed or interface */ -/* See https://github.com/dart-lang/dartdoc/blob/main/lib/src/model/feature.dart */ -.feature { - display: inline-block; - background: var(--main-bg-color); - border: 1px solid var(--main-hyperlinks-color); - border-radius: 20px; - color: var(--main-hyperlinks-color); - - font-size: 12px; - padding: 1px 6px; - margin: 0 8px 0 0; -} - -a.feature:hover { - border-color: #13B9FD; -} - -h1 .feature { - vertical-align: middle; - margin: 0 -2px 0 0; -} - -.source-link { - padding: 18px 4px; - font-size: 18px; - vertical-align: middle; -} - -@media (max-width: 840px) { - .source-link { - padding: 7px 2px; - font-size: 10px; - } -} - -#external-links { - float: right; -} - -.btn-group { - position: relative; - display: inline-flex; - vertical-align: middle; -} - -footer { - color: #fff; - background-color: var(--main-footer-background); - width: 100%; -} - -footer p { - margin: 0; -} - -footer .no-break { - white-space: nowrap; -} - -footer .container { - padding-left: 0; - padding-right: 0; -} - -footer a, footer a:hover { - color: #fff; -} - -.markdown.desc { - max-width: 700px; -} - -.markdown h1 { - font-size: 24px; - margin-bottom: 8px; -} - -.markdown h2 { - font-size: 20px; - margin-top: 24px; - margin-bottom: 8px; -} - -.markdown h3 { - font-size: 18px; - margin-bottom: 8px; - color: var(--main-text-color); -} - -.markdown h4 { - font-size: 16px; - margin-bottom: 0; -} - -.markdown li p { - margin: 0; -} - -table { - margin-bottom: 1em; -} - -table, -th, -td { - border: 1px solid lightgrey; - border-collapse: collapse; -} - -th, -td { - padding: 8px; -} - -.gt-separated { - list-style: none; - padding: 0; - margin: 0; -} - -.gt-separated li { - display: inline-block; -} - -.gt-separated li:before { - background-image: url("data:image/svg+xml;utf8,"); - background-position: center; - content: "\00a0"; - margin: 0 6px 0 4px; - padding: 0 3px 0 0; -} - -.gt-separated.dark li:before { - background-image: url("data:image/svg+xml;utf8,"); -} - -.gt-separated li:first-child:before { - background-image: none; - content: ""; - margin: 0; - padding: 0; -} - -.multi-line-signature { - font-size: 17px; - color: #727272; -} - -.multi-line-signature .parameter { - margin-left: 24px; - display: block; -} - -.breadcrumbs { - padding: 0; - margin: 8px 0 8px 0; - white-space: nowrap; - line-height: 1; -} - -@media screen and (min-width: 840px) { - nav ol.breadcrumbs { - float: left; - } -} - -@media screen and (max-width: 840px) { - .breadcrumbs { - margin: 0 0 24px 0; - overflow-x: hidden; - } -} - -.breadcrumbs .gt-separated .dark .hidden-xs li+li:before { - color: var(--main-h-text); -} - -ol.breadcrumbs li a { - color: var(--main-hyperlinks-color); -} - -.self-crumb { - color: var(--main-h-text); -} - -.self-name { - color: #555; - display: none; -} - -.annotation-list { - list-style: none; - padding: 0; - display: inline; -} - -.comma-separated { - list-style: none; - padding: 0; - display: inline; -} - -.comma-separated li { - display: inline; -} - -.comma-separated li:after { - content: ", "; -} - -.comma-separated li:last-child:after { - content: ""; -} - -.end-with-period li:last-child:after { - content: "."; -} - -.container > section:first-child { - border: 0; -} - -.constructor-modifier { - font-style: italic; -} - -section.multi-line-signature div.parameters { - margin-left: 24px; -} - -/* sidebar styles */ - -.sidebar ol { - list-style: none; - line-height: 22px; - margin-top: 0; - margin-bottom: 0; - padding: 0 0 15px 0; -} - -.sidebar h5 a, -.sidebar h5 a:hover { - color: var(--main-sidebar-color); -} - -.sidebar h5, -.sidebar ol li { - text-overflow: ellipsis; - overflow: hidden; - padding: 3px 0 3px 3px; -} - -.sidebar h5 { - color: var(--main-sidebar-color); - font-size: 18px; - margin: 0 0 22px 0; - padding-top: 0; -} - -.sidebar ol li.section-title { - font-size: 18px; - font-weight: normal; - text-transform: uppercase; - padding-top: 25px; -} - -.sidebar ol li.section-subtitle a { - color: inherit; -} - -.sidebar ol li.section-subtitle { - font-weight: 400; - text-transform: uppercase; -} - -.sidebar ol li.section-subitem { - margin-left: 12px; -} - -.sidebar ol li:first-child { - padding-top: 3px; - margin-top: 0; -} - -button { - padding: 0; -} - -#sidenav-left-toggle { - display: none; - vertical-align: text-bottom; - padding: 0; - color: var(--main-icon-color); - user-select: none; - cursor: pointer; -} - -#sidenav-left-toggle:hover { - color: var(--main-hyperlinks-color); -} - -/* left-nav disappears, and can transition in from the left */ -@media screen and (max-width:840px) { - #sidenav-left-toggle { - display: inline; - width: 24px; - height: 24px; - border: none; - margin-right: 24px; - margin-left: 24px; - font-size: 24px; - } - - #overlay-under-drawer.active { - opacity: 0.4; - height: 100%; - z-index: 1999; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: black; - display: block; - } - - .sidebar-offcanvas-left { - left: -100%; - position: fixed; - -webkit-transition:all .25s ease-out; - -o-transition:all .25s ease-out; - transition:all .25s ease-out; - z-index: 2000; - top: 0; - width: 280px; /* works all the way down to an iphone 4 */ - height: 90%; - background-color: var(--main-bg-color); - overflow-y: scroll; /* TODO: how to hide scroll bars? */ - padding: 10px; - margin: 10px 10px; - box-shadow: 5px 5px 5px 5px #444444; - } - - ol#sidebar-nav { - font-size: 18px; - white-space: pre-line; - } - - .sidebar-offcanvas-left.active { - left: 0; /* this animates our drawer into the page */ - } - - .self-name { - display: inline-block; - color: var(--main-hyperlinks-color); - } -} - -.sidebar-offcanvas-left h5 { - margin-bottom: 10px; -} - -.sidebar-offcanvas-left h5:last-of-type { - border: 0; - margin-bottom: 25px; -} - -/* the right nav disappears out of view when the window shrinks */ -@media screen and (max-width: 992px) { - .sidebar-offcanvas-right { - display: none; - } -} - -#overlay-under-drawer { - display: none; -} - -/* find-as-you-type search box */ - -.form-control { - border-radius: 0; - border: 0; -} - -@media screen and (max-width: 840px) { - form.search { - display: none; - } -} - -.typeahead { - width: 200px; - padding: 2px 7px 1px 7px; - line-height: 20px; - outline: none; -} - -.tt-wrapper { - position: relative; - display: inline-block; -} - -.tt-input { - position: relative; - vertical-align: top; -} - -.navbar-right .tt-menu { - right: 0; - left: inherit !important; - width: 540px; - max-height: 280px; - overflow-y: scroll; -} - -.navbar-right { - padding-right: 60px; -} - -.tt-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 100; - font-size: 14px; - margin: 0; - background-color: var(--main-bg-color); - border: 1px solid var(--main-header-color); - -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); - -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2); - box-shadow: 0 5px 10px rgba(0,0,0,.2); -} - - -.typeahead { - padding: 17px 17px 17px 50px; - width: 422px; - height: 20px; - font-size: 13px; - background-image: url("./search.svg"); - background-repeat: no-repeat; - background-position: 4%; - outline: 0; - background-size: 20px; - filter: var(--main-number-filter); - -webkit-filter: var(--main-number-filter); -} - -.search-summary { - margin-bottom: 10px; -} - -a.tt-container { - font-size: 16px; - color: var(--main-hyperlinks-color); -} - -.enter-search-message { - position: -webkit-sticky; - position: sticky; - top: 0; - background-color: #AAA; - padding: 0; - font-size: 14px; - margin: 0; - clear: both; - text-align: center; - color: black; -} - -.tt-suggestion:hover { - cursor: pointer; - color: #fff; - background-color: #0097cf; -} - -.tt-suggestion:hover .search-from-lib { - color: #ddd; -} - -.tt-suggestion.tt-cursor { - color: #fff; - background-color: #0097cf; -} - -.tt-suggestion.tt-cursor .search-from-lib { - color: #ddd; -} - -.tt-suggestion p { - margin: 0; -} - -.tt-container { - font-size: 14px; - margin-bottom: 0; - margin-top: 15px; -} - -.tt-container-text { - color: var(--main-text-color); -} - - -/* Search results formatting for mini results below search bar. */ - -.tt-search-results .tt-container { - margin-top: 5px; - margin-bottom: 5px; -} - -/* Do not show the container as a section. */ -.tt-search-results .tt-container-text { - display: none -} - -/* An inline style. */ -.tt-search-results .tt-suggestion { - color: var(--main-text-color); - margin-top: 5px; - overflow: hidden; - padding-left: 10px; - padding-right: 10px; - text-overflow: ellipsis; - white-space: nowrap; -} - -.tt-search-results .tt-suggestion-title { - font-size: 14px; - padding-right: 5px; -} - -.tt-search-results .tt-suggestion-container { - color: var(--main-keyword-color); - font-size: 14px; - font-style: italic; - padding-right: 5px; -} - -.tt-search-results .one-line-description { - color: var(--main-keyword-color); - display: inline; - margin-left: 0; -} - - -.tt-search-results .one-line-description::before { - content: open-quote; -} - -.tt-search-results .one-line-description::after { - content: close-quote; -} - -/* Search results formatting for `search.html`. */ - -/* A block style. */ -#dartdoc-main-content .tt-suggestion { - color: var(--main-text-color); - margin-top: 5px; - margin-bottom: 10px; - border-style: solid; - border-color: lightgrey; - border-width: 0.5px; -} - -#dartdoc-main-content .tt-suggestion-title { - display: block; - font-weight: 500; - margin: 4px 10px 0; -} - -#dartdoc-main-content .one-line-description { - display: block; - margin: 2px 10px 3px; -} - -/* Do not show a result's container. */ -#dartdoc-main-content .tt-suggestion-container { - display: none; -} - -@media screen and (max-width: 840px) { - .typeahead { - padding: 17px 17px 17px 33px; - width: 240px; - height: 17px; - border: 1px solid #f5f5f5; - background-position: 3%; - margin: 10px 10px 10px 9px; - } - - header { - padding-left: 0; - } -} - -@media screen and (max-width: 320px) { - #sidenav-left-toggle { - margin-right: 10px; - margin-left: 20px; - } - - .self-name { - margin-right: 10px; - } -} - -::placeholder { - filter: brightness(0.85); -} - -.search-body { - border: 1px solid #7f7f7f; - max-width: 400px; - box-shadow: 3px 3px 5px rgba(0,0,0,0.1); -} - -section#setter { - border-top: 1px solid #ddd; - padding-top: 36px; -} - -li.inherited a { - opacity: 0.65; - font-style: italic; -} - -#instance-methods dt.inherited .name, -#instance-properties dt.inherited .name, -#operators dt.inherited .name { - font-weight: 400; - font-style: italic; -} - -#instance-methods dt.inherited .signature, -#instance-properties dt.inherited .signature, -#operators dt.inherited .signature { - font-weight: 400; -} - -@media print { - .subnav, .sidebar { - display: none; - } - - a[href]:after { - content: "" !important; - } -} - -/* github alert styles */ - -.markdown-alert { - margin-top: 1rem; - margin-bottom: 1rem; - padding: 1.25rem; -} - -.markdown-alert>:last-child { - margin-bottom: 0; -} - -.markdown-alert-title { - display: flex; - align-items: center; - gap: 0.4rem; - margin-bottom: 0.5rem; - - font-weight: bold; - -webkit-font-smoothing: antialiased; -} - -.markdown-alert-title:before { - font: 24px / 1 'Material Symbols Outlined'; -} - -/* note, tip, important, warning, caution */ - -.markdown-alert.markdown-alert-note { - background-color: var(--alert-info); -} - -.markdown-alert-note .markdown-alert-title:before { - content: 'info'; -} - -.markdown-alert.markdown-alert-tip { - background-color: var(--alert-tip); -} - -.markdown-alert-tip .markdown-alert-title:before { - content: 'lightbulb'; -} - -.markdown-alert.markdown-alert-important { - background-color: var(--alert-important); -} - -.markdown-alert-important .markdown-alert-title:before { - content: 'feedback'; -} - -.markdown-alert.markdown-alert-warning { - background-color: var(--alert-warning); -} - -.markdown-alert-warning .markdown-alert-title:before { - content: 'warning'; -} - -.markdown-alert.markdown-alert-caution { - background-color: var(--alert-error); -} - -.markdown-alert-caution .markdown-alert-title:before { - content: 'report'; -} +:root{--main-header-height: 50px}.light-theme{--main-bg-color: #fff;--main-header-color: #eeeeee;--main-sidebar-color: #727272;--main-text-color: #111111;--main-search-bar: #fff;--main-footer-background: #111111;--main-h-text: black;--main-hyperlinks-color: #0175C2;--main-inset-bgColor: #f5f5f7;--main-inset-borderColor: #dadce0;--main-code-bg: #f8f8f8;--main-keyword-color: #333;--main-tag-color: #000080;--main-section-color: #900;--main-comment-color: #998;--main-var-color: #008080;--main-string-color: #d14;--main-icon-color: black;--alert-info-fgColor: #2058b7;--alert-tip-fgColor: #0c7927;--alert-important-fgColor: #7953bf;--alert-warning-fgColor: #955d00;--alert-error-fgColor: #c43131;color-scheme:light}.light-theme #light-theme-button{display:none}.light-theme img[src$="#gh-dark-mode-only"]{display:none}.dark-theme{--main-bg-color: #10161E;--main-header-color: #1C2834;--main-sidebar-color: #fff;--main-text-color: #fff;--main-search-bar: #454545;--main-footer-background: #27323a;--main-hyperlinks-color: #00D2FA;--main-inset-bgColor: #242b32;--main-inset-borderColor: #676f7e;--main-code-bg: #10161E;--main-keyword-color: white;--main-tag-color: #00D2FA;--main-section-color: #FF2D64;--main-comment-color: #909CC3;--main-var-color: #55A09B;--main-string-color: #FF2D64;--main-icon-color: white;--alert-info-fgColor: #429bff;--alert-tip-fgColor: #25c04b;--alert-important-fgColor: #ad81ff;--alert-warning-fgColor: #cea11f;--alert-error-fgColor: #ff6666;color-scheme:dark}.dark-theme #dark-theme-button{display:none}.dark-theme img[src$="#gh-light-mode-only"]{display:none}#theme-button{appearance:none;border:none;background:none;cursor:pointer;position:absolute;right:30px;display:flex;align-items:center;justify-content:center;padding:4px;color:var(--main-icon-color)}#theme-button:hover{color:var(--main-hyperlinks-color)}html{scroll-padding-top:calc(var(--main-header-height) + 1rem)}html,body{margin:0;padding:0;width:100%;box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{display:flex;flex-direction:column;-webkit-text-size-adjust:100%;overflow-x:hidden;font-family:Roboto,sans-serif;font-size:16px;line-height:1.42857143;color:var(--main-text-color);background-color:var(--main-bg-color)}main{flex:1;display:flex;flex-direction:row}.gt-separated{list-style:none;padding:0;margin:0}.gt-separated.dark li:before{background-image:url("data:image/svg+xml;utf8,")}.gt-separated li{display:inline-block}.gt-separated li:before{background-image:url("data:image/svg+xml;utf8,");background-position:center;content:" ";margin:0 6px 0 4px;padding:0 3px 0 0}.gt-separated li:first-child:before{background-image:none;content:"";margin:0;padding:0}.breadcrumbs{padding:0;margin:8px 0 8px 0;white-space:nowrap;line-height:1}.breadcrumbs .gt-separated .dark .hidden-xs li+li:before{color:var(--main-h-text)}.breadcrumbs li a{color:var(--main-hyperlinks-color)}@media screen and (max-width: 840px){.breadcrumbs{margin:0 0 24px 0;overflow-x:hidden}}.breadcrumbs .self-crumb{color:var(--main-h-text)}.breadcrumbs .self-name{color:#555;display:none}pre code{white-space:pre;word-wrap:initial;font-size:100%}pre{border:1px solid #ddd;background-color:#eee;font-size:14px}@media(max-width: 840px){pre{margin:16px 0}}code{font-family:"Roboto Mono",Menlo,monospace;color:inherit;padding:.2em .4em;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.hljs{display:block;overflow-x:auto;padding:.5em;color:var(--main-text-color);background:var(--main-code-bg)}.hljs .hljs-string,.hljs .hljs-doctag{color:var(--main-string-color)}.hljs .hljs-number,.hljs .hljs-literal,.hljs .hljs-variable,.hljs .hljs-template-variable,.hljs .hljs-tag .hljs-attr{color:var(--main-var-color)}.hljs .hljs-comment,.hljs .hljs-quote{color:var(--main-comment-color);font-style:italic}.hljs .hljs-title,.hljs .hljs-section,.hljs .hljs-selector-id{color:var(--main-section-color);font-weight:bold}.hljs .hljs-tag,.hljs .hljs-name,.hljs .hljs-attribute{color:var(--main-tag-color);font-weight:normal}.hljs .hljs-keyword,.hljs .hljs-selector-tag,.hljs .hljs-subst{color:var(--main-keyword-color);font-weight:bold}.main-content{flex:1;order:2;overflow-y:scroll;padding:10px 20px 0 20px;min-height:calc(100vh - var(--main-header-height))}a{text-decoration:none}button{padding:0}section{margin-bottom:36px}dl{margin:0}header{background-color:var(--main-header-color);box-shadow:0 3px 5px rgba(0,0,0,.1)}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif;font-weight:400;margin-top:1.5em;color:var(--main-text-color)}h1.title{overflow:hidden;text-overflow:ellipsis}h1{font-size:37px;margin-top:0;margin-bottom:.67em}@media(max-width: 840px){h1{font-size:24px}}h2{font-size:28px}h5{font-size:16px}p{margin-bottom:1em;margin-top:0}a{color:var(--main-hyperlinks-color)}a:hover{color:#13b9fd}.fixed{white-space:pre}header a,header p,header li{color:#0175c2}header a:hover{color:#0175c2}header h1 .kind{color:#555}header h1{font-weight:400;margin-bottom:16px}dt{font-weight:normal}dd{color:var(--main-text-color);margin-bottom:1em;margin-left:0}dd.callable,dd.constant,dd.property{margin-bottom:24px}dd p{overflow-x:hidden;text-overflow:ellipsis;margin-bottom:0}table{margin-bottom:1em}table,th,td{border:1px solid #d3d3d3;border-collapse:collapse}th,td{padding:8px}.category{padding:2px 4px;font-size:12px;border-radius:4px;background-color:#999;text-transform:uppercase;color:#fff;opacity:.5}.category a{color:#fff}h1 .category{vertical-align:middle}.category.linked{font-weight:bold;opacity:1}.category.cp-0{background-color:#54b7c4}.category.cp-1{background-color:#54c47f}.category.cp-2{background-color:#c4c254}.category.cp-3{background-color:#c49f54}.category.cp-4{background-color:#c45465}.category.cp-5{background-color:#c454c4}.feature{display:inline-block;background:var(--main-bg-color);border:1px solid var(--main-hyperlinks-color);border-radius:20px;color:var(--main-hyperlinks-color);font-size:12px;padding:1px 6px;margin:0 8px 0 0}h1 .feature{vertical-align:middle;margin:0 -2px 0 0}a.feature:hover{border-color:#13b9fd}.markdown.desc{margin-bottom:1em;max-width:700px}.markdown h1{font-size:24px;margin-bottom:8px}.markdown h2{font-size:20px;margin-top:24px;margin-bottom:8px}.markdown h3{font-size:18px;margin-bottom:8px;color:var(--main-text-color)}.markdown h4{font-size:16px;margin-bottom:0}.markdown li p{margin:0}section#setter,div#setter{border-top:1px solid #ddd;padding-top:36px}section.summary dt,div.summary dt{margin-left:24px;text-indent:-24px}li.inherited a{opacity:.65;font-style:italic}dt.constant+dd p{margin-bottom:1em}dl.dl-horizontal dd{margin-left:initial}dl.dl-horizontal dt{font-style:normal;text-align:left;color:#727272;margin-right:20px;width:initial}dl dt.callable .name{float:none;width:auto}dl dt .name{font-weight:500}.main-content.extension-page .from-extension{display:none}sup.muted{color:var(--main-sidebar-color);font-size:.6em}.from-extension>span{color:var(--alert-warning-fgColor);font-style:italic;padding:2px}.btn-group{position:relative;display:inline-flex;vertical-align:middle}.source-link{padding:18px 4px;font-size:18px;vertical-align:middle}@media(max-width: 840px){.source-link{padding:7px 2px;font-size:10px}}#external-links{float:right}@media(max-width: 840px){.hidden-xs{display:none !important}}@media(min-width: 841px){.hidden-l{display:none !important}}li .material-symbols-outlined,dt .material-symbols-outlined{font-size:1em;vertical-align:text-bottom}dt .material-symbols-outlined{text-indent:0}.type-parameter{white-space:nowrap}.parameter-list{display:table-cell;margin-left:10px;list-style-type:none;padding-inline-start:unset}.parameter-list.single-line{display:inline;margin-left:0}.parameter-list.single-line>li{display:inline}.parameter-list.single-line>li>.parameter{display:inline;margin-left:0;text-indent:0}.signature{color:var(--main-text-color)}.signature a{color:var(--main-hyperlinks-color)}.deprecated{text-decoration:line-through}.multi-line-signature{font-size:17px;color:#727272}.multi-line-signature .type-parameter .parameter{margin-left:0;display:unset}.multi-line-signature .parameter{margin-left:60px;display:block;text-indent:-36px}.annotation-list{list-style:none;padding:0;display:inline}.comma-separated{list-style:none;padding:0;display:inline}.comma-separated li{display:inline}.comma-separated li:not(:last-child):after{content:", "}.container>section:first-child{border:0}.constructor-modifier{font-style:italic}section .multi-line-signature div.parameters,div .multi-line-signature div.parameters{margin-left:24px}#instance-methods dt.inherited .name,#instance-properties dt.inherited .name,#operators dt.inherited .name{font-weight:400;font-style:italic}#instance-methods dt.inherited .signature,#instance-properties dt.inherited .signature,#operators dt.inherited .signature{font-weight:400}footer{flex:0 0 16px;text-align:center;padding:16px 20px;color:#fff;background-color:var(--main-footer-background);width:100%}footer p{margin:0}footer .no-break{white-space:nowrap}footer .container{padding-left:0;padding-right:0}footer a,footer a:hover{color:#fff}.markdown-alert{margin-top:1rem;margin-bottom:1rem;padding:.75rem;--alert-title-color: --main-inset-borderColor;background-color:var(--main-inset-bgColor);border-left:solid .25rem var(--alert-title-color)}.markdown-alert>:last-child{margin-bottom:0}.markdown-alert .markdown-alert-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:1.125rem;font-weight:500;-webkit-font-smoothing:antialiased;color:var(--alert-title-color, inherit)}.markdown-alert .markdown-alert-title::before{font:22px/1 "Material Symbols Outlined";user-select:none}.markdown-alert.markdown-alert-note{--alert-title-color: var(--alert-info-fgColor)}.markdown-alert.markdown-alert-note .markdown-alert-title::before{content:"info"}.markdown-alert.markdown-alert-tip{--alert-title-color: var(--alert-tip-fgColor)}.markdown-alert.markdown-alert-tip .markdown-alert-title::before{content:"lightbulb"}.markdown-alert.markdown-alert-important{--alert-title-color: var(--alert-important-fgColor)}.markdown-alert.markdown-alert-important .markdown-alert-title::before{content:"feedback"}.markdown-alert.markdown-alert-warning{--alert-title-color: var(--alert-warning-fgColor)}.markdown-alert.markdown-alert-warning .markdown-alert-title::before{content:"warning"}.markdown-alert.markdown-alert-caution{--alert-title-color: var(--alert-error-fgColor)}.markdown-alert.markdown-alert-caution .markdown-alert-title::before{content:"report"}header{flex:0 0 var(--main-header-height, 50px);display:flex;flex-direction:row;align-items:center;position:sticky;top:0;z-index:10;padding-left:30px;padding-right:30px;background-color:var(--main-header-color)}@media(max-width: 840px){header{padding-left:0}}header ol{list-style:none;margin:0;padding:0}header ol li{display:inline}header form{display:flex;flex:1;justify-content:flex-end}header #header-search-sidebar{height:50px;margin-bottom:25px}header .self-name{color:#555;display:none}nav .navbar{background-color:inherit;min-height:50px;border:0}nav .navbar .row{padding-top:8px}nav .container{white-space:nowrap}@media(max-width: 840px){nav .container{width:100%}}@media print{.subnav,.sidebar{display:none}a[href]:after{content:"" !important}}.form-control{border-radius:0;border:0}@media screen and (max-width: 840px){form.search{display:none}}.navbar-right{padding-right:60px}.navbar-right .tt-menu{right:0;left:inherit !important;width:540px;max-height:280px;overflow-y:scroll}.tt-wrapper{position:relative;display:inline-block}.tt-wrapper .tt-input{position:relative;vertical-align:top}.tt-wrapper .typeahead{padding:16px 16px 16px 32px;width:422px;height:24px;font-size:15px;background-color:var(--main-bg-color);color:var(--main-text-color);background-image:url("./search.svg");background-repeat:no-repeat;background-position:2%;outline:0;background-size:20px}@media screen and (max-width: 840px){.tt-wrapper .typeahead{padding:17px 17px 17px 33px;width:240px;height:17px;border:1px solid #f5f5f5;background-position:3%;margin:10px 10px 10px 9px}}.tt-wrapper .tt-menu{position:absolute;top:100%;left:0;z-index:100;font-size:14px;margin:0;background-color:var(--main-bg-color);border:1px solid var(--main-header-color);box-shadow:0 5px 10px rgba(0,0,0,.2)}.search-summary{margin-bottom:10px}a.tt-container{font-size:16px;color:var(--main-hyperlinks-color)}.enter-search-message{position:sticky;top:0;background-color:#aaa;padding:0;font-size:14px;margin:0;clear:both;text-align:center;color:#000}.tt-suggestion:hover{cursor:pointer;color:#fff;background-color:#0097cf}.tt-suggestion:hover .search-from-lib{color:#ddd}.tt-suggestion.tt-cursor{color:#fff;background-color:#0097cf}.tt-suggestion.tt-cursor .search-from-lib{color:#ddd}.tt-suggestion p{margin:0}.tt-container{font-size:14px;margin-bottom:0;margin-top:15px}.tt-container .tt-container-text{color:var(--main-text-color)}.tt-search-results .tt-container{margin-top:5px;margin-bottom:5px}.tt-search-results .tt-container-text{display:none}.tt-search-results .tt-suggestion{color:var(--main-text-color);margin-top:5px;overflow:hidden;padding-left:10px;padding-right:10px;text-overflow:ellipsis;white-space:nowrap}.tt-search-results .tt-suggestion-title{font-size:14px;padding-right:5px}.tt-search-results .tt-suggestion-container{color:var(--main-keyword-color);font-size:14px;font-style:italic;padding-right:5px}.tt-search-results .one-line-description{color:var(--main-keyword-color);display:inline;margin-left:0}.tt-search-results .one-line-description::before{content:open-quote}.tt-search-results .one-line-description::after{content:close-quote}#dartdoc-main-content .tt-suggestion{color:var(--main-text-color);margin-top:5px;margin-bottom:10px;border-style:solid;border-color:#d3d3d3;border-width:.5px}#dartdoc-main-content .tt-suggestion-title{display:block;font-weight:500;margin:4px 10px 0}#dartdoc-main-content .one-line-description{display:block;margin:2px 10px 3px}#dartdoc-main-content .tt-suggestion-container{display:none}.search-body{border:1px solid #7f7f7f;width:fit-content;max-width:440px;box-shadow:3px 3px 5px rgba(0,0,0,.1)}.sidebar h5,.sidebar ol li{text-overflow:ellipsis;overflow:hidden;padding:3px 0 3px 3px}.sidebar ol{list-style:none;line-height:22px;margin-top:0;margin-bottom:0;padding:0 0 15px 0}.sidebar ol li.section-title{font-size:18px;font-weight:normal;text-transform:uppercase;padding-top:25px}.sidebar ol li.section-subtitle{font-weight:400;text-transform:uppercase}.sidebar ol li.section-subtitle a{color:inherit}.sidebar ol li.section-subitem{margin-left:12px}.sidebar ol li:first-child{padding-top:3px;margin-top:0}.sidebar h5{color:var(--main-sidebar-color);font-size:18px;margin:0 0 22px 0;padding-top:0}.sidebar h5 a,.sidebar h5 a:hover{color:var(--main-sidebar-color)}#sidenav-left-toggle{display:none;vertical-align:text-bottom;padding:0;color:var(--main-icon-color);user-select:none;cursor:pointer}#sidenav-left-toggle:hover{color:var(--main-hyperlinks-color)}@media screen and (max-width: 320px){#sidenav-left-toggle{margin-right:10px;margin-left:20px}}#overlay-under-drawer{display:none;opacity:.4;height:100%;z-index:1999;position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000}.sidebar-offcanvas-left,.sidebar-offcanvas-right{position:sticky;top:var(--main-header-height);overflow-y:auto;min-height:0;max-height:calc(100vh - var(--main-header-height))}.sidebar-offcanvas-left{flex:0 1 230px;order:1;padding:25px 0 15px 30px;margin-right:20px}.sidebar-offcanvas-left h5{margin-bottom:10px}.sidebar-offcanvas-left h5:last-of-type{border:0;margin-bottom:25px}.sidebar-offcanvas-right{flex:0 1 12em;order:3;padding:25px 20px 15px 15px}@media screen and (max-width: 992px){.sidebar-offcanvas-right{display:none}}@media screen and (max-width: 840px){#sidenav-left-toggle{display:inline;width:24px;height:24px;border:none;margin-right:24px;margin-left:24px;font-size:24px}#overlay-under-drawer.active{display:block}.sidebar-offcanvas-left{left:-100%;position:fixed;transition:all .25s ease-out;z-index:2000;top:0;width:280px;max-width:calc(100% - 20px);height:90%;background-color:var(--main-bg-color);overflow-y:scroll;padding:10px;margin:10px 10px;box-shadow:5px 5px 5px 5px #444}.sidebar-offcanvas-left.active{left:0}ol#sidebar-nav{font-size:18px;white-space:pre-line}header .self-name{display:inline-block;color:var(--main-hyperlinks-color)}} diff --git a/doc/architecture.md b/doc/architecture.md new file mode 100644 index 00000000..c791c536 --- /dev/null +++ b/doc/architecture.md @@ -0,0 +1,28 @@ +# Flutter MIDI Command architecture (monorepo migration) + +## Goals + +- Use a melos workspace for coordinated package versioning and CI. +- Keep platform code focused on serial/virtual host MIDI APIs. +- Keep BLE behavior in shared Dart logic (using `universal_ble` in follow-up packages). +- Define host <-> Flutter contracts through Pigeon. +- Expose transport capabilities and policy controls to apps. + +## Current baseline in this branch + +- `melos.yaml` introduces workspace scripts for analyze/test/format. +- `pigeons/midi_api.dart` defines source-of-truth host and flutter APIs. +- `MidiTransportPolicy` and `MidiCapabilities` are exposed in Dart. +- `MidiCommand.configureTransportPolicy(...)` allows include/exclude control per transport. + +## Implemented structure + +- Packages are split under `packages/` for platform wrappers plus shared BLE transport. +- Android and Linux wrappers focus on host/native serial MIDI behavior. +- Host/Flutter messaging contracts are generated from `pigeons/midi_api.dart` through Pigeon. +- The web package (`flutter_midi_command_web`) now wraps the browser Web MIDI API for serial/native MIDI access. + +## Ongoing work + +- Expand native-only test automation (Android/iOS/macOS) in CI. +- Expand browser-level automated tests for Web MIDI behavior and edge cases. diff --git a/example/.gitignore b/example/.gitignore index 1ba9c339..2757ae8a 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -31,7 +31,6 @@ /build/ # Web related -lib/generated_plugin_registrant.dart # Symbolication related app.*.symbols diff --git a/example/android/.gitignore b/example/android/.gitignore index bc2100d8..5da0a3e6 100644 --- a/example/android/.gitignore +++ b/example/android/.gitignore @@ -1,7 +1,4 @@ -gradle-wrapper.jar /.gradle /captures/ -/gradlew -/gradlew.bat /local.properties GeneratedPluginRegistrant.java diff --git a/example/android/app/build.gradle.kts b/example/android/app/build.gradle.kts index dc849dd9..f75d8c73 100644 --- a/example/android/app/build.gradle.kts +++ b/example/android/app/build.gradle.kts @@ -18,7 +18,8 @@ val flutterVersionCode = localProperties.getProperty("flutter.versionCode") ?: " val flutterVersionName = localProperties.getProperty("flutter.versionName") ?: "1.0" android { - compileSdk = 34 // use flutter.compileSdkVersion when Flutter 3.27.0 is widely used + compileSdk = 36 + ndkVersion = "28.2.13676358" namespace = "com.invisiblewrench.fluttermidicommand_example" sourceSets { getByName("main").java.srcDirs("src/main/kotlin") } diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 38c8d454..16a9ba5f 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,4 +1,3 @@ -org.gradle.jvmargs=-Xmx1536M -android.enableR8=true +org.gradle.jvmargs=-Xmx4608M -Dfile.encoding=UTF-8 android.useAndroidX=true -android.enableJetifier=true +android.enableJetifier=false diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 00000000..13372aef Binary files /dev/null and b/example/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/example/android/gradlew b/example/android/gradlew new file mode 100755 index 00000000..9d82f789 --- /dev/null +++ b/example/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/example/android/gradlew.bat b/example/android/gradlew.bat new file mode 100755 index 00000000..aec99730 --- /dev/null +++ b/example/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/example/integration_test/smoke_test.dart b/example/integration_test/smoke_test.dart new file mode 100644 index 00000000..11803fd8 --- /dev/null +++ b/example/integration_test/smoke_test.dart @@ -0,0 +1,47 @@ +import 'package:flutter_midi_command/flutter_midi_command.dart'; +import 'package:flutter_midi_command_example/main.dart' as app; +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + +import '../test/support/fake_midi_platform.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + setUp(() { + MidiCommand.resetForTest(); + }); + + testWidgets( + 'example app launches and device connect/disconnect flow works', + (tester) async { + final fakePlatform = FakeMidiPlatform(); + MidiCommand.setPlatformOverride(fakePlatform); + + app.runExampleApp(enableBle: false); + await tester.pumpAndSettle(); + + expect(find.text('FlutterMidiCommand Example'), findsOneWidget); + expect(find.text('Test Serial Device'), findsOneWidget); + + await tester.tap(find.text('Test Serial Device')); + await tester.pumpAndSettle(const Duration(milliseconds: 200)); + expect(fakePlatform.connectedDeviceIds, contains('serial-1')); + expect( + fakePlatform.device.connectionState, MidiConnectionState.connected); + + await tester.tap(find.text('Test Serial Device')); + await tester.pumpAndSettle(const Duration(milliseconds: 200)); + expect(fakePlatform.disconnectedDeviceIds, contains('serial-1')); + expect( + fakePlatform.device.connectionState, + MidiConnectionState.disconnected, + ); + + await tester.longPress(find.text('Test Serial Device')); + await tester.pumpAndSettle(); + expect(find.text('CC'), findsOneWidget); + expect(find.text('Pitch Bend'), findsOneWidget); + }, + ); +} diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 8c6e5614..d57061dd 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/example/ios/Flutter/ephemeral/flutter_lldb_helper.py b/example/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 00000000..a88caf99 --- /dev/null +++ b/example/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/example/ios/Flutter/ephemeral/flutter_lldbinit b/example/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 00000000..e3ba6fbe --- /dev/null +++ b/example/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/example/ios/Podfile b/example/ios/Podfile index 2c068c40..10f3c9b4 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index b7ce560a..a7e01e94 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -431,7 +431,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -456,7 +456,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -490,7 +490,7 @@ DEVELOPMENT_TEAM = Z8796YSZJ5; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = fluttermidicommand_bleParsingTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -521,7 +521,7 @@ DEVELOPMENT_TEAM = Z8796YSZJ5; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = fluttermidicommand_bleParsingTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -549,7 +549,7 @@ DEVELOPMENT_TEAM = Z8796YSZJ5; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = fluttermidicommand_bleParsingTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -612,7 +612,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -662,7 +662,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -689,7 +689,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -727,7 +727,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a65be4ee..0cf3c9a2 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift index 70693e4a..b6363034 100644 --- a/example/ios/Runner/AppDelegate.swift +++ b/example/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/example/lib/controller.dart b/example/lib/controller.dart index 0d0ff0f3..55de10b8 100644 --- a/example/lib/controller.dart +++ b/example/lib/controller.dart @@ -10,7 +10,7 @@ import 'package:flutter_virtual_piano/flutter_virtual_piano.dart'; class ControllerPage extends StatelessWidget { final MidiDevice device; - const ControllerPage(this.device, {Key? key}) : super(key: key); + const ControllerPage(this.device, {super.key}); @override Widget build(BuildContext context) { @@ -26,7 +26,7 @@ class ControllerPage extends StatelessWidget { class MidiControls extends StatefulWidget { final MidiDevice device; - const MidiControls(this.device, {Key? key}) : super(key: key); + const MidiControls(this.device, {super.key}); @override MidiControlsState createState() { @@ -44,7 +44,7 @@ class MidiControlsState extends State { var _nrpnCtrl = 0; // StreamSubscription _setupSubscription; - StreamSubscription? _rxSubscription; + StreamSubscription? _rxSubscription; final MidiCommand _midiCommand = MidiCommand(); final MidiRecorder _recorder = MidiRecorder(); @@ -54,56 +54,9 @@ class MidiControlsState extends State { if (kDebugMode) { print('init controller'); } - _rxSubscription = _midiCommand.onMidiDataReceived?.listen((packet) { - var data = packet.data; - var timestamp = packet.timestamp; - var device = packet.device; - // if (kDebugMode) { - // print("data $data @ time $timestamp from device ${device.name}:${device.id}"); - // } - - var status = data[0]; - - if (status == 0xF8) { - // Beat - return; - } - - if (status == 0xFE) { - // Active sense; - return; - } - - if (data.length >= 2) { - var rawStatus = status & 0xF0; // without channel - var channel = (status & 0x0F); - if (channel == _channel) { - var d1 = data[1]; - switch (rawStatus) { - case 0xB0: // CC - if (d1 == _controller) { - // CC - var d2 = data[2]; - setState(() { - _ccValue = d2; - }); - } - break; - case 0xC0: // PC - setState(() { - _pcValue = d1; - }); - break; - case 0xE0: // Pitch Bend - setState(() { - var rawPitch = d1 + (data[2] << 7); - _pitchValue = (((rawPitch) / 0x3FFF) * 2.0) - 1; - }); - break; - } - } - } - }); + _rxSubscription = _midiCommand.onMidiDataReceived?.listen( + _handleMessageEvent, + ); super.initState(); } @@ -115,6 +68,86 @@ class MidiControlsState extends State { super.dispose(); } + void _handleMessageEvent(MidiDataReceivedEvent event) { + if (event.device.id != widget.device.id) { + return; + } + + final message = event.message; + if (message is ClockMessage || message is SenseMessage) { + return; + } + + var nextCcValue = _ccValue; + var nextPcValue = _pcValue; + var nextPitchValue = _pitchValue; + var nextNrpnValue = _nrpnValue; + var nextNrpnCtrl = _nrpnCtrl; + var hasChanges = false; + + if (message is CCMessage) { + if (message.channel == _channel && message.controller == _controller) { + if (nextCcValue != message.value) { + nextCcValue = message.value; + hasChanges = true; + } + } + } else if (message is PCMessage) { + if (message.channel == _channel && nextPcValue != message.program) { + nextPcValue = message.program; + hasChanges = true; + } + } else if (message is PitchBendMessage) { + if (message.channel == _channel && nextPitchValue != message.bend) { + nextPitchValue = message.bend; + hasChanges = true; + } + } else if (message is NRPN4Message) { + if (message.channel == _channel && + (nextNrpnCtrl != message.parameter || + nextNrpnValue != message.value)) { + nextNrpnCtrl = message.parameter; + nextNrpnValue = message.value; + hasChanges = true; + } + } else if (message is NRPN3Message) { + if (message.channel == _channel && + (nextNrpnCtrl != message.parameter || + nextNrpnValue != message.value)) { + nextNrpnCtrl = message.parameter; + nextNrpnValue = message.value; + hasChanges = true; + } + } else if (message is NRPNHexMessage) { + if (message.channel != _channel) { + return; + } + + final parameter = + ((message.parameterMSB & 0x7F) << 7) | (message.parameterLSB & 0x7F); + final value = message.valueLSB >= 0 + ? ((message.valueMSB & 0x7F) << 7) | (message.valueLSB & 0x7F) + : (message.valueMSB & 0x7F); + if (nextNrpnCtrl != parameter || nextNrpnValue != value) { + nextNrpnCtrl = parameter; + nextNrpnValue = value; + hasChanges = true; + } + } + + if (!hasChanges || !mounted) { + return; + } + + setState(() { + _ccValue = nextCcValue; + _pcValue = nextPcValue; + _pitchValue = nextPitchValue; + _nrpnCtrl = nextNrpnCtrl; + _nrpnValue = nextNrpnValue; + }); + } + @override Widget build(BuildContext context) { return ListView( @@ -124,7 +157,8 @@ class MidiControlsState extends State { SteppedSelector('Channel', _channel + 1, 1, 16, _onChannelChanged), const Divider(), Text("CC", style: Theme.of(context).textTheme.titleLarge), - SteppedSelector('Controller', _controller, 0, 127, _onControllerChanged), + SteppedSelector( + 'Controller', _controller, 0, 127, _onControllerChanged), SlidingSelector('Value', _ccValue, 0, 127, _onValueChanged), const Divider(), Text("NRPN", style: Theme.of(context).textTheme.titleLarge), @@ -150,26 +184,31 @@ class MidiControlsState extends State { child: VirtualPiano( noteRange: const RangeValues(48, 76), onNotePressed: (note, vel) { - NoteOnMessage(channel: _channel, note: note, velocity: 100).send(); + NoteOnMessage( + channel: _channel, + note: note, + velocity: 100, + ).send(deviceId: widget.device.id); }, onNoteReleased: (note) { - NoteOffMessage(channel: _channel, note: note).send(); + NoteOffMessage( + channel: _channel, + note: note, + ).send(deviceId: widget.device.id); }, ), ), const Divider(), Text("SysEx", style: Theme.of(context).textTheme.titleLarge), - ...[64, 128, 256, 512, 768, 1024] - .map( - (e) => Padding( - padding: const EdgeInsets.all(8.0), - child: ElevatedButton( - onPressed: () => _sendSysex(e), - child: Text('Send $e bytes'), - ), - ), - ) - , + ...[64, 128, 256, 512, 768, 1024].map( + (e) => Padding( + padding: const EdgeInsets.all(8.0), + child: ElevatedButton( + onPressed: () => _sendSysex(e), + child: Text('Send $e bytes'), + ), + ), + ), const Divider(), Padding( padding: const EdgeInsets.all(8.0), @@ -177,23 +216,28 @@ class MidiControlsState extends State { children: [ Text("Recorder", style: Theme.of(context).textTheme.titleLarge), Expanded(child: Container()), - Switch(value: _recorder.recording, onChanged: (newValue){ - setState(() { - if (newValue) { - _recorder.startRecording(); - } else { - _recorder.stopRecording(); - } - }); - }), - TextButton(onPressed: (){ - _recorder.exportRecording(); - }, child: const Text("Export CSV")), - TextButton(onPressed: (){ - _recorder.clearRecording(); - }, child: const Text("Clear")) + Switch( + value: _recorder.recording, + onChanged: (newValue) { + setState(() { + if (newValue) { + _recorder.startRecording(); + } else { + _recorder.stopRecording(); + } + }); + }), + TextButton( + onPressed: () { + _recorder.exportRecording(); + }, + child: const Text("Export CSV")), + TextButton( + onPressed: () { + _recorder.clearRecording(); + }, + child: const Text("Clear")) ], - ), ) ], @@ -216,21 +260,31 @@ class MidiControlsState extends State { setState(() { _pcValue = newValue; }); - PCMessage(channel: _channel, program: _pcValue).send(); + PCMessage(channel: _channel, program: _pcValue).send( + deviceId: widget.device.id, + ); } _onValueChanged(int newValue) { setState(() { _ccValue = newValue; }); - CCMessage(channel: _channel, controller: _controller, value: _ccValue).send(); + CCMessage( + channel: _channel, + controller: _controller, + value: _ccValue, + ).send(deviceId: widget.device.id); } _onNRPNValueChanged(int newValue) { setState(() { _nrpnValue = newValue; }); - NRPN4Message(channel: _channel, parameter: _nrpnCtrl, value: _nrpnValue).send(); + NRPN4Message( + channel: _channel, + parameter: _nrpnCtrl, + value: _nrpnValue, + ).send(deviceId: widget.device.id); } _onNRPNCtrlChanged(int newValue) { @@ -243,18 +297,22 @@ class MidiControlsState extends State { setState(() { _pitchValue = newValue; }); - PitchBendMessage(channel: _channel, bend: _pitchValue).send(); + PitchBendMessage(channel: _channel, bend: _pitchValue).send( + deviceId: widget.device.id, + ); } void _sendSysex(int length) { - print("Send $length SysEx bytes"); + if (kDebugMode) { + print("Send $length SysEx bytes"); + } final data = Uint8List(length); data[0] = 0xF0; - for (int i = 0; i < length -1; i++) { - data[i+1] = i % 0x80; + for (int i = 0; i < length - 1; i++) { + data[i + 1] = i % 0x80; } data[length - 1] = 0xF7; - _midiCommand.sendData(data); + SysExMessage(rawData: data).send(deviceId: widget.device.id); } } @@ -265,7 +323,14 @@ class SteppedSelector extends StatelessWidget { final int value; final Function(int) callback; - const SteppedSelector(this.label, this.value, this.minValue, this.maxValue, this.callback, {Key? key}) : super(key: key); + const SteppedSelector( + this.label, + this.value, + this.minValue, + this.maxValue, + this.callback, { + super.key, + }); @override Widget build(BuildContext context) { @@ -300,7 +365,14 @@ class SlidingSelector extends StatelessWidget { final int value; final Function(int) callback; - const SlidingSelector(this.label, this.value, this.minValue, this.maxValue, this.callback, {Key? key}) : super(key: key); + const SlidingSelector( + this.label, + this.value, + this.minValue, + this.maxValue, + this.callback, { + super.key, + }); @override Widget build(BuildContext context) { diff --git a/example/lib/main.dart b/example/lib/main.dart index 5260b2fb..ea53ac79 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -3,14 +3,29 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_midi_command_ble/flutter_midi_command_ble.dart'; import 'package:flutter_midi_command/flutter_midi_command.dart'; import 'controller.dart'; -void main() => runApp(const MyApp()); +void main() => runExampleApp(); + +void runExampleApp({ + bool enableBle = true, + MidiCommand? midiCommand, +}) { + runApp(MyApp(enableBle: enableBle, midiCommand: midiCommand)); +} class MyApp extends StatefulWidget { - const MyApp({Key? key}) : super(key: key); + const MyApp({ + super.key, + this.enableBle = true, + this.midiCommand, + }); + + final bool enableBle; + final MidiCommand? midiCommand; @override MyAppState createState() => MyAppState(); @@ -19,7 +34,7 @@ class MyApp extends StatefulWidget { class MyAppState extends State { StreamSubscription? _setupSubscription; StreamSubscription? _bluetoothStateSubscription; - final MidiCommand _midiCommand = MidiCommand(); + late final MidiCommand _midiCommand; bool _virtualDeviceActivated = false; bool _iOSNetworkSessionEnabled = false; @@ -29,6 +44,18 @@ class MyAppState extends State { @override void initState() { super.initState(); + _midiCommand = widget.midiCommand ?? MidiCommand(); + + if (widget.enableBle) { + _midiCommand.configureBleTransport(UniversalBleMidiTransport()); + } else { + _midiCommand.configureBleTransport(null); + _midiCommand.configureTransportPolicy( + const MidiTransportPolicy( + excludedTransports: {MidiTransport.ble}, + ), + ); + } _setupSubscription = _midiCommand.onMidiSetupChanged?.listen((data) async { if (kDebugMode) { @@ -52,6 +79,7 @@ class MyAppState extends State { void dispose() { _setupSubscription?.cancel(); _bluetoothStateSubscription?.cancel(); + _midiCommand.configureBleTransport(null); super.dispose(); } @@ -64,19 +92,31 @@ class MyAppState extends State { } } - IconData _deviceIconForType(String type) { + IconData _deviceIconForType(MidiDeviceType type) { switch (type) { - case "native": + case MidiDeviceType.serial: return Icons.devices; - case "network": + case MidiDeviceType.network: return Icons.language; - case "BLE": + case MidiDeviceType.ble: return Icons.bluetooth; default: return Icons.device_unknown; } } + IconData _connectionIconForState(MidiConnectionState state) { + switch (state) { + case MidiConnectionState.connected: + return Icons.radio_button_on; + case MidiConnectionState.connecting: + case MidiConnectionState.disconnecting: + return Icons.sync; + case MidiConnectionState.disconnected: + return Icons.radio_button_off; + } + } + Future _informUserAboutBluetoothPermissions( BuildContext context) async { if (_didAskForBluetoothPermissions) { @@ -117,104 +157,113 @@ class MyAppState extends State { appBar: AppBar( title: const Text('FlutterMidiCommand Example'), actions: [ - Switch( - value: _iOSNetworkSessionEnabled, - onChanged: (newValue) { - _midiCommand.setNetworkSessionEnabled(newValue); - setState(() { - _iOSNetworkSessionEnabled = newValue; - }); - }), - Switch( - value: _virtualDeviceActivated, - onChanged: (newValue) { - setState(() { - _virtualDeviceActivated = newValue; - }); - if (newValue) { - _midiCommand.addVirtualDevice(name: "Flutter MIDI Command"); - } else { - _midiCommand.removeVirtualDevice( - name: "Flutter MIDI Command"); - } - }), + _LabeledAppBarSwitch( + label: 'Network', + tooltip: + 'Enable iOS Network MIDI session (RTP-MIDI) when available.', + value: _iOSNetworkSessionEnabled, + onChanged: (newValue) { + _midiCommand.setNetworkSessionEnabled(newValue); + setState(() { + _iOSNetworkSessionEnabled = newValue; + }); + }, + ), + _LabeledAppBarSwitch( + label: 'Virtual', + tooltip: 'Expose this app as a virtual MIDI device.', + value: _virtualDeviceActivated, + onChanged: (newValue) { + setState(() { + _virtualDeviceActivated = newValue; + }); + if (newValue) { + _midiCommand.addVirtualDevice(name: "Flutter MIDI Command"); + } else { + _midiCommand.removeVirtualDevice( + name: "Flutter MIDI Command"); + } + }, + ), Builder(builder: (context) { - return IconButton( - onPressed: () async { - // Ask for bluetooth permissions - await _informUserAboutBluetoothPermissions(context); - - // Start bluetooth - if (kDebugMode) { - print("start ble central"); - } - await _midiCommand - .startBluetoothCentral() - .catchError((err) { - ScaffoldMessenger.of(context).showSnackBar(SnackBar( - content: Text(err), - )); - }); - - if (kDebugMode) { - print("wait for init"); - } - await _midiCommand - .waitUntilBluetoothIsInitialized() - .timeout(const Duration(seconds: 5), onTimeout: () { + return Tooltip( + message: 'Initialize Bluetooth and scan for BLE MIDI devices.', + child: IconButton( + onPressed: () async { + // Ask for bluetooth permissions + await _informUserAboutBluetoothPermissions(context); + + // Start bluetooth + if (kDebugMode) { + print("start bluetooth"); + } + await _midiCommand.startBluetooth().catchError((err) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(err), + )); + }); + if (kDebugMode) { - print("Failed to initialize Bluetooth"); + print("wait for init"); } - }); - - // If bluetooth is powered on, start scanning - if (_midiCommand.bluetoothState == - BluetoothState.poweredOn) { - _midiCommand - .startScanningForBluetoothDevices() - .catchError((err) { + await _midiCommand + .waitUntilBluetoothIsInitialized() + .timeout(const Duration(seconds: 5), onTimeout: () { if (kDebugMode) { - print("Error $err"); + print("Failed to initialize Bluetooth"); } }); - if (context.mounted) { - ScaffoldMessenger.of(context) - .showSnackBar(const SnackBar( - content: Text('Scanning for bluetooth devices ...'), - )); - } - } else { - final messages = { - BluetoothState.unsupported: - 'Bluetooth is not supported on this device.', - BluetoothState.poweredOff: - 'Please switch on bluetooth and try again.', - BluetoothState.poweredOn: 'Everything is fine.', - BluetoothState.resetting: - 'Currently resetting. Try again later.', - BluetoothState.unauthorized: - 'This app needs bluetooth permissions. Please open settings, find your app and assign bluetooth access rights and start your app again.', - BluetoothState.unknown: - 'Bluetooth is not ready yet. Try again later.', - BluetoothState.other: - 'This should never happen. Please inform the developer of your app.', - }; - if (context.mounted) { - ScaffoldMessenger.of(context).showSnackBar(SnackBar( - backgroundColor: Colors.red, - content: Text(messages[_midiCommand.bluetoothState] ?? - 'Unknown bluetooth state: ${_midiCommand.bluetoothState}'), - )); + + // If bluetooth is powered on, start scanning + if (_midiCommand.bluetoothState == + BluetoothState.poweredOn) { + _midiCommand + .startScanningForBluetoothDevices() + .catchError((err) { + if (kDebugMode) { + print("Error $err"); + } + }); + if (context.mounted) { + ScaffoldMessenger.of(context) + .showSnackBar(const SnackBar( + content: Text('Scanning for bluetooth devices ...'), + )); + } + } else { + final messages = { + BluetoothState.unsupported: + 'Bluetooth is not supported on this device.', + BluetoothState.poweredOff: + 'Please switch on bluetooth and try again.', + BluetoothState.poweredOn: 'Everything is fine.', + BluetoothState.resetting: + 'Currently resetting. Try again later.', + BluetoothState.unauthorized: + 'This app needs bluetooth permissions. Please open settings, find your app and assign bluetooth access rights and start your app again.', + BluetoothState.unknown: + 'Bluetooth is not ready yet. Try again later.', + BluetoothState.other: + 'This should never happen. Please inform the developer of your app.', + }; + if (context.mounted) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + backgroundColor: Colors.red, + content: Text(messages[ + _midiCommand.bluetoothState] ?? + 'Unknown bluetooth state: ${_midiCommand.bluetoothState}'), + )); + } } - } - if (kDebugMode) { - print("done"); - } - // If not show a message telling users what to do - setState(() {}); - }, - icon: const Icon(Icons.refresh)); + if (kDebugMode) { + print("done"); + } + // If not show a message telling users what to do + setState(() {}); + }, + icon: const Icon(Icons.refresh)), + ); }), ], ), @@ -242,13 +291,17 @@ class MyAppState extends State { style: Theme.of(context).textTheme.headlineSmall, ), subtitle: Text( - "ins:${device.inputPorts.length} outs:${device.outputPorts.length}, ${device.id}, ${device.type}"), - leading: Icon(device.connected - ? Icons.radio_button_on - : Icons.radio_button_off), + "ins:${device.inputPorts.length} outs:${device.outputPorts.length}, ${device.id}, ${device.type.wireValue}, ${device.connectionState.name}"), + leading: Icon( + _connectionIconForState(device.connectionState), + ), trailing: Icon(_deviceIconForType(device.type)), onLongPress: () { - _midiCommand.stopScanningForBluetoothDevices(); + if (_midiCommand.isTransportEnabled( + MidiTransport.ble, + )) { + _midiCommand.stopScanningForBluetoothDevices(); + } Navigator.of(context) .push(MaterialPageRoute( builder: (_) => ControllerPage(device), @@ -258,11 +311,19 @@ class MyAppState extends State { }); }, onTap: () { + if (device.connectionState == + MidiConnectionState.connecting || + device.connectionState == + MidiConnectionState.disconnecting) { + return; + } + if (device.connected) { if (kDebugMode) { print("disconnect"); } _midiCommand.disconnectDevice(device); + setState(() {}); } else { if (kDebugMode) { print("connect"); @@ -276,6 +337,7 @@ class MyAppState extends State { content: Text( "Error: ${(err as PlatformException?)?.message}"))); }); + setState(() {}); } }, ); @@ -291,3 +353,40 @@ class MyAppState extends State { ); } } + +class _LabeledAppBarSwitch extends StatelessWidget { + const _LabeledAppBarSwitch({ + required this.label, + required this.tooltip, + required this.value, + required this.onChanged, + }); + + final String label; + final String tooltip; + final bool value; + final ValueChanged onChanged; + + @override + Widget build(BuildContext context) { + final labelStyle = Theme.of(context).textTheme.labelSmall; + + return Tooltip( + message: tooltip, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text(label, style: labelStyle), + Switch( + value: value, + onChanged: onChanged, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + ), + ], + ), + ), + ); + } +} diff --git a/example/lib/recorder.dart b/example/lib/recorder.dart index 52bf7849..ba00bdec 100644 --- a/example/lib/recorder.dart +++ b/example/lib/recorder.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'dart:io'; @@ -7,7 +6,6 @@ import 'package:csv/csv.dart'; import 'package:file_picker/file_picker.dart'; class MidiRecorder { - factory MidiRecorder() { _instance ??= MidiRecorder._(); return _instance!; @@ -21,15 +19,13 @@ class MidiRecorder { bool get recording => _recording; - final List _messages = []; + final List _messages = []; - StreamSubscription? _midiSub; + StreamSubscription? _midiSub; startRecording() { _recording = true; - _midiSub = MidiCommand().onMidiDataReceived?.listen((packet) { - _messages.add(packet); - }); + _midiSub = MidiCommand().onMidiDataReceived?.listen(_messages.add); } stopRecording() { @@ -37,9 +33,15 @@ class MidiRecorder { _midiSub?.cancel(); } - exportRecording() async { - var rows = _messages.map((e) => [e.timestamp, ...e.data.map((e) => e.toString())]).toList(); + var rows = _messages + .map( + (event) => [ + event.timestamp, + ...event.message.data.map((byte) => byte.toString()), + ], + ) + .toList(); var csv = const ListToCsvConverter().convert(rows); @@ -63,4 +65,3 @@ class MidiRecorder { _messages.clear(); } } - diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/example/macos/Flutter/GeneratedPluginRegistrant.swift index 747041c9..5982e492 100644 --- a/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,10 +5,12 @@ import FlutterMacOS import Foundation -import flutter_midi_command +import file_picker +import flutter_midi_command_darwin import universal_ble func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) SwiftFlutterMidiCommandPlugin.register(with: registry.registrar(forPlugin: "SwiftFlutterMidiCommandPlugin")) UniversalBlePlugin.register(with: registry.registrar(forPlugin: "UniversalBlePlugin")) } diff --git a/example/macos/Podfile b/example/macos/Podfile index 049abe29..9ec46f8c 100644 --- a/example/macos/Podfile +++ b/example/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index 63e3becc..d322c557 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -1,5 +1,7 @@ PODS: - - flutter_midi_command (0.0.1): + - file_picker (0.0.1): + - FlutterMacOS + - flutter_midi_command_darwin (1.0.0): - FlutterMacOS - FlutterMacOS (1.0.0) - universal_ble (0.0.1): @@ -7,23 +9,27 @@ PODS: - FlutterMacOS DEPENDENCIES: - - flutter_midi_command (from `Flutter/ephemeral/.symlinks/plugins/flutter_midi_command/macos`) + - file_picker (from `Flutter/ephemeral/.symlinks/plugins/file_picker/macos`) + - flutter_midi_command_darwin (from `Flutter/ephemeral/.symlinks/plugins/flutter_midi_command_darwin/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - universal_ble (from `Flutter/ephemeral/.symlinks/plugins/universal_ble/darwin`) EXTERNAL SOURCES: - flutter_midi_command: - :path: Flutter/ephemeral/.symlinks/plugins/flutter_midi_command/macos + file_picker: + :path: Flutter/ephemeral/.symlinks/plugins/file_picker/macos + flutter_midi_command_darwin: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_midi_command_darwin/macos FlutterMacOS: :path: Flutter/ephemeral universal_ble: :path: Flutter/ephemeral/.symlinks/plugins/universal_ble/darwin SPEC CHECKSUMS: - flutter_midi_command: c1a74de594e48e8fffd195a2ed5746161d507a48 - FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6 + file_picker: 7584aae6fa07a041af2b36a2655122d42f578c1a + flutter_midi_command_darwin: 1df1bed25c2953378a7d8e6bdce954c025c18aad + FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1 + universal_ble: ff19787898040d721109c6324472e5dd4bc86adc -PODFILE CHECKSUM: 353c8bcc5d5b0994e508d035b5431cfe18c1dea7 +PODFILE CHECKSUM: 0d3963a09fc94f580682bd88480486da345dc3f0 -COCOAPODS: 1.15.2 +COCOAPODS: 1.16.2 diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj index 61f3966c..7a5874a6 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -322,12 +322,14 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/flutter_midi_command/flutter_midi_command.framework", + "${BUILT_PRODUCTS_DIR}/file_picker/file_picker.framework", + "${BUILT_PRODUCTS_DIR}/flutter_midi_command_darwin/flutter_midi_command_darwin.framework", "${BUILT_PRODUCTS_DIR}/universal_ble/universal_ble.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_midi_command.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_picker.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_midi_command_darwin.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/universal_ble.framework", ); runOnlyForDeploymentPostprocessing = 0; diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index bfbc9cb8..d543eabc 100644 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -60,6 +60,7 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/example/macos/Runner/AppDelegate.swift b/example/macos/Runner/AppDelegate.swift index d53ef643..b3c17614 100644 --- a/example/macos/Runner/AppDelegate.swift +++ b/example/macos/Runner/AppDelegate.swift @@ -1,9 +1,13 @@ import Cocoa import FlutterMacOS -@NSApplicationMain +@main class AppDelegate: FlutterAppDelegate { override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } } diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 7685b01e..df6b7b2b 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,5 +1,6 @@ name: flutter_midi_command_example description: Demonstrates how to use the flutter_midi_command plugin. +version: 1.0.0+1 # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. @@ -19,6 +20,8 @@ dependencies: # The example app is bundled with the plugin so we use a path dependency on # the parent directory to use the current plugin's version. path: ../ + flutter_midi_command_ble: + path: ../packages/flutter_midi_command_ble # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. @@ -30,6 +33,10 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter + integration_test: + sdk: flutter + flutter_midi_command_platform_interface: + path: ../packages/flutter_midi_command_platform_interface flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the diff --git a/example/pubspec_overrides.yaml b/example/pubspec_overrides.yaml new file mode 100644 index 00000000..54875e91 --- /dev/null +++ b/example/pubspec_overrides.yaml @@ -0,0 +1,18 @@ +# melos_managed_dependency_overrides: flutter_midi_command,flutter_midi_command_android,flutter_midi_command_ble,flutter_midi_command_darwin,flutter_midi_command_linux,flutter_midi_command_platform_interface,flutter_midi_command_web,flutter_midi_command_windows +dependency_overrides: + flutter_midi_command: + path: .. + flutter_midi_command_android: + path: ../packages/flutter_midi_command_android + flutter_midi_command_ble: + path: ../packages/flutter_midi_command_ble + flutter_midi_command_darwin: + path: ../packages/flutter_midi_command_darwin + flutter_midi_command_linux: + path: ../packages/flutter_midi_command_linux + flutter_midi_command_platform_interface: + path: ../packages/flutter_midi_command_platform_interface + flutter_midi_command_web: + path: ../packages/flutter_midi_command_web + flutter_midi_command_windows: + path: ../packages/flutter_midi_command_windows diff --git a/example/test/smoke_web_test.dart b/example/test/smoke_web_test.dart new file mode 100644 index 00000000..59ed7fbf --- /dev/null +++ b/example/test/smoke_web_test.dart @@ -0,0 +1,35 @@ +import 'package:flutter_midi_command/flutter_midi_command.dart'; +import 'package:flutter_midi_command_example/main.dart' as app; +import 'package:flutter_test/flutter_test.dart'; + +import 'support/fake_midi_platform.dart'; + +void main() { + setUp(() { + MidiCommand.resetForTest(); + }); + + testWidgets('web smoke: example app renders and connect/disconnect works', ( + tester, + ) async { + final fakePlatform = FakeMidiPlatform(); + MidiCommand.setPlatformOverride(fakePlatform); + + app.runExampleApp(enableBle: false); + await tester.pumpAndSettle(); + + expect(find.text('FlutterMidiCommand Example'), findsOneWidget); + expect(find.text('Test Serial Device'), findsOneWidget); + + await tester.tap(find.text('Test Serial Device')); + await tester.pumpAndSettle(); + expect(fakePlatform.connectedDeviceIds, contains('serial-1')); + expect(fakePlatform.device.connectionState, MidiConnectionState.connected); + + await tester.tap(find.text('Test Serial Device')); + await tester.pumpAndSettle(); + expect(fakePlatform.disconnectedDeviceIds, contains('serial-1')); + expect( + fakePlatform.device.connectionState, MidiConnectionState.disconnected); + }); +} diff --git a/example/test/support/fake_midi_platform.dart b/example/test/support/fake_midi_platform.dart new file mode 100644 index 00000000..5a838a9f --- /dev/null +++ b/example/test/support/fake_midi_platform.dart @@ -0,0 +1,71 @@ +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; + +class FakeMidiPlatform extends MidiCommandPlatform { + final MidiDevice device = MidiDevice( + 'serial-1', + 'Test Serial Device', + MidiDeviceType.serial, + false, + ); + + final List connectedDeviceIds = []; + final List disconnectedDeviceIds = []; + final StreamController _rxStreamController = + StreamController.broadcast(); + final StreamController _setupStreamController = + StreamController.broadcast(); + var _isClosed = false; + + @override + Future?> get devices async => [device]; + + @override + Future connectToDevice( + MidiDevice device, { + List? ports, + }) async { + connectedDeviceIds.add(device.id); + device.setConnectionState(MidiConnectionState.connected); + } + + @override + void disconnectDevice(MidiDevice device) { + disconnectedDeviceIds.add(device.id); + device.setConnectionState(MidiConnectionState.disconnected); + } + + @override + void teardown() { + device.setConnectionState(MidiConnectionState.disconnected); + if (_isClosed) { + return; + } + _isClosed = true; + _rxStreamController.close(); + _setupStreamController.close(); + } + + @override + void sendData(Uint8List data, {int? timestamp, String? deviceId}) {} + + @override + Stream? get onMidiDataReceived => _rxStreamController.stream; + + @override + Stream? get onMidiSetupChanged => _setupStreamController.stream; + + @override + void addVirtualDevice({String? name}) {} + + @override + void removeVirtualDevice({String? name}) {} + + @override + Future get isNetworkSessionEnabled async => false; + + @override + void setNetworkSessionEnabled(bool enabled) {} +} diff --git a/example/tool/run_android_smoke_test.sh b/example/tool/run_android_smoke_test.sh new file mode 100755 index 00000000..d5f03bf4 --- /dev/null +++ b/example/tool/run_android_smoke_test.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -euo pipefail + +SMOKE_TEST_PATH="${ANDROID_SMOKE_TEST_PATH:-integration_test/smoke_test.dart}" +MAX_ATTEMPTS="${ANDROID_SMOKE_MAX_ATTEMPTS:-2}" +DEVICE_ID="${ANDROID_DEVICE_ID:-}" + +if [[ -z "${DEVICE_ID}" ]]; then + DEVICE_ID="$( + adb devices | awk '/\tdevice$/ {print $1; exit}' + )" +fi + +if [[ -z "${DEVICE_ID}" ]]; then + DEVICE_ID="emulator-5554" +fi + +wait_for_device_ready() { + adb -s "${DEVICE_ID}" wait-for-device + local boot_completed="" + local retries=90 + while [[ "${retries}" -gt 0 ]]; do + boot_completed="$(adb -s "${DEVICE_ID}" shell getprop sys.boot_completed 2>/dev/null | tr -d '\r')" + if [[ "${boot_completed}" == "1" ]]; then + break + fi + retries=$((retries - 1)) + sleep 2 + done + if [[ "${boot_completed}" != "1" ]]; then + echo "Android device did not report sys.boot_completed=1 in time." + return 1 + fi + adb -s "${DEVICE_ID}" shell input keyevent 82 >/dev/null 2>&1 || true +} + +run_smoke_test() { + flutter test "${SMOKE_TEST_PATH}" \ + -d "${DEVICE_ID}" \ + --reporter expanded \ + --timeout 4m +} + +echo "Running Android smoke test on device: ${DEVICE_ID}" +wait_for_device_ready + +attempt=1 +until run_smoke_test; do + if [[ "${attempt}" -ge "${MAX_ATTEMPTS}" ]]; then + echo "Android smoke test failed after ${MAX_ATTEMPTS} attempt(s)." + exit 1 + fi + + echo "Android smoke attempt ${attempt} failed, restarting adb and retrying..." + adb kill-server >/dev/null 2>&1 || true + adb start-server >/dev/null 2>&1 || true + wait_for_device_ready + attempt=$((attempt + 1)) +done diff --git a/example/tool/run_ios_smoke_test.sh b/example/tool/run_ios_smoke_test.sh new file mode 100755 index 00000000..a75313a3 --- /dev/null +++ b/example/tool/run_ios_smoke_test.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +set -euo pipefail + +SMOKE_TEST_PATH="${IOS_SMOKE_TEST_PATH:-integration_test/smoke_test.dart}" +MAX_ATTEMPTS="${IOS_SMOKE_MAX_ATTEMPTS:-2}" + +SIMULATOR_ID="${IOS_DEVICE_ID:-}" +if [[ -z "${SIMULATOR_ID}" ]]; then + SIMULATOR_ID="$( + flutter devices 2>/dev/null | + awk -F '•' '/ios/ {id=$2; gsub(/^[[:space:]]+|[[:space:]]+$/, "", id); print id; exit}' + )" +fi + +if [[ -z "${SIMULATOR_ID}" ]]; then + SIMULATOR_ID="$(xcrun simctl list devices available | awk -F '[()]' '/iPhone/ {print $2; exit}')" +fi + +if [[ -z "${SIMULATOR_ID}" ]]; then + echo "No iOS device/simulator found. Set IOS_DEVICE_ID to override." + exit 1 +fi + +IS_SIMULATOR=0 +if xcrun simctl list devices available | grep -q "${SIMULATOR_ID}"; then + IS_SIMULATOR=1 +fi + +boot_target() { + if [[ "${IS_SIMULATOR}" -eq 0 ]]; then + return + fi + xcrun simctl boot "${SIMULATOR_ID}" >/dev/null 2>&1 || true + xcrun simctl bootstatus "${SIMULATOR_ID}" -b >/dev/null + open -a Simulator --args -CurrentDeviceUDID "${SIMULATOR_ID}" >/dev/null 2>&1 || true +} + +run_smoke_test() { + flutter test "${SMOKE_TEST_PATH}" \ + -d "${SIMULATOR_ID}" \ + --reporter expanded \ + --timeout 4m +} + +echo "Running iOS smoke test on target: ${SIMULATOR_ID}" +boot_target + +attempt=1 +until run_smoke_test; do + if [[ "${attempt}" -ge "${MAX_ATTEMPTS}" ]]; then + echo "iOS smoke test failed after ${MAX_ATTEMPTS} attempt(s)." + exit 1 + fi + + echo "iOS smoke attempt ${attempt} failed, retrying with a clean simulator boot..." + if [[ "${IS_SIMULATOR}" -eq 1 ]]; then + xcrun simctl shutdown "${SIMULATOR_ID}" >/dev/null 2>&1 || true + xcrun simctl erase "${SIMULATOR_ID}" >/dev/null 2>&1 || true + fi + boot_target + attempt=$((attempt + 1)) +done diff --git a/example/windows/flutter/generated_plugin_registrant.cc b/example/windows/flutter/generated_plugin_registrant.cc index 5c765e60..a94f016c 100644 --- a/example/windows/flutter/generated_plugin_registrant.cc +++ b/example/windows/flutter/generated_plugin_registrant.cc @@ -6,9 +6,12 @@ #include "generated_plugin_registrant.h" +#include #include void RegisterPlugins(flutter::PluginRegistry* registry) { + DeviceManagerPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DeviceManagerPlugin")); UniversalBlePluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("UniversalBlePluginCApi")); } diff --git a/example/windows/flutter/generated_plugins.cmake b/example/windows/flutter/generated_plugins.cmake index 97ecaa5a..a434768b 100644 --- a/example/windows/flutter/generated_plugins.cmake +++ b/example/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + device_manager universal_ble ) diff --git a/fluttermidicommand.iml b/fluttermidicommand.iml deleted file mode 100644 index 6474128f..00000000 --- a/fluttermidicommand.iml +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ios/Assets/.gitkeep b/ios/Assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/ios/Classes/FlutterMidiCommandPlugin.m b/ios/Classes/FlutterMidiCommandPlugin.m deleted file mode 100644 index c72789a8..00000000 --- a/ios/Classes/FlutterMidiCommandPlugin.m +++ /dev/null @@ -1,17 +0,0 @@ -#import "FlutterMidiCommandPlugin.h" -#if __has_include() -#import -#else -// Support project import fallback if the generated compatibility header -// is not copied when this plugin is created as a library. -// https://forums.swift.org/t/swift-static-libraries-dont-copy-generated-objective-c-header/19816 -#import "flutter_midi_command-Swift.h" -#endif - - - -@implementation FlutterMidiCommandPlugin -+ (void)registerWithRegistrar:(NSObject*)registrar { - [SwiftFlutterMidiCommandPlugin registerWithRegistrar:registrar]; -} -@end diff --git a/ios/Classes/SwiftFlutterMidiCommandPlugin.swift b/ios/Classes/SwiftFlutterMidiCommandPlugin.swift deleted file mode 100644 index 33e55797..00000000 --- a/ios/Classes/SwiftFlutterMidiCommandPlugin.swift +++ /dev/null @@ -1,1989 +0,0 @@ - -#if os(macOS) -import FlutterMacOS -#else -import Flutter -#endif - -import CoreMIDI -import os.log -import CoreBluetooth -import Foundation -import CoreVideo - -/// -/// Credit to -/// http://mattg411.com/coremidi-swift-programming/ -/// https://github.com/genedelisa/Swift3MIDI -/// http://www.gneuron.com/?p=96 -/// https://learn.sparkfun.com/tutorials/midi-ble-tutorial/all - -func isVirtualEndpoint(endpoint: MIDIEndpointRef) -> Bool { - var entity : MIDIEntityRef = 0 - MIDIEndpointGetEntity(endpoint, &entity) - let result = entity == 0; - return result; -} - -func displayName(endpoint: MIDIEndpointRef) -> String { - return SwiftFlutterMidiCommandPlugin.getMIDIProperty(kMIDIPropertyDisplayName, fromObject: endpoint); -} - -func appName() -> String { - return Bundle.main.infoDictionary?[kCFBundleNameKey as String] as! String; -} - -func stringToId(str: String) -> UInt32 { - return UInt32(str.hash & 0xFFFF) -} - -public class SwiftFlutterMidiCommandPlugin: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate, FlutterPlugin { - - // MIDI - var midiClient = MIDIClientRef() - var connectedDevices = Dictionary() - - // Flutter - var midiRXChannel:FlutterEventChannel? - var rxStreamHandler = StreamHandler() - - var midiSetupChannel:FlutterEventChannel? - var setupStreamHandler = StreamHandler() - - var bluetoothStateChannel: FlutterEventChannel? - var bluetoothStateHandler = StreamHandler() - - -#if os(iOS) - // Network Session - var session:MIDINetworkSession? -#endif - - // BLE - var manager:CBCentralManager! - var discoveredDevices:Set = [] - - - var ongoingConnections = Dictionary() - - - let midiLog = OSLog(subsystem: "com.invisiblewrench.FlutterMidiCommand", category: "MIDI") - - public static func register(with registrar: FlutterPluginRegistrar) { -#if os(macOS) - let channel = FlutterMethodChannel(name: "plugins.invisiblewrench.com/flutter_midi_command", binaryMessenger: registrar.messenger) -#else - let channel = FlutterMethodChannel(name: "plugins.invisiblewrench.com/flutter_midi_command", binaryMessenger: registrar.messenger()) -#endif - let instance = SwiftFlutterMidiCommandPlugin() - registrar.addMethodCallDelegate(instance, channel: channel) - - instance.setup(registrar) - } - - deinit { - NotificationCenter.default.removeObserver(self) - MIDIClientDispose(midiClient) - } - - func setup(_ registrar: FlutterPluginRegistrar) { - // Stream setup -#if os(macOS) - midiRXChannel = FlutterEventChannel(name: "plugins.invisiblewrench.com/flutter_midi_command/rx_channel", binaryMessenger: registrar.messenger) -#else - midiRXChannel = FlutterEventChannel(name: "plugins.invisiblewrench.com/flutter_midi_command/rx_channel", binaryMessenger: registrar.messenger()) -#endif - midiRXChannel?.setStreamHandler(rxStreamHandler) - - -#if os(macOS) - midiSetupChannel = FlutterEventChannel(name: "plugins.invisiblewrench.com/flutter_midi_command/setup_channel", binaryMessenger: registrar.messenger) - bluetoothStateChannel = FlutterEventChannel(name: "plugins.invisiblewrench.com/flutter_midi_command/bluetooth_central_state", binaryMessenger: registrar.messenger) -#else - midiSetupChannel = FlutterEventChannel(name: "plugins.invisiblewrench.com/flutter_midi_command/setup_channel", binaryMessenger: registrar.messenger()) - bluetoothStateChannel = FlutterEventChannel(name: "plugins.invisiblewrench.com/flutter_midi_command/bluetooth_central_state", binaryMessenger: registrar.messenger()) -#endif - midiSetupChannel?.setStreamHandler(setupStreamHandler) - bluetoothStateChannel?.setStreamHandler(bluetoothStateHandler) - - - // MIDI client with notification handler - MIDIClientCreateWithBlock("plugins.invisiblewrench.com.FlutterMidiCommand" as CFString, &midiClient) { (notification) in - self.handleMIDINotification(notification) - } - -#if os(iOS) - session = MIDINetworkSession.default() - session?.connectionPolicy = MIDINetworkConnectionPolicy.anyone -#endif - } - - func updateSetupState(data: Any) { - DispatchQueue.main.async { - self.setupStreamHandler.send(data:data) - } - } - - func updateBluetoothState(data: Any) { - DispatchQueue.main.async { - self.bluetoothStateHandler.send(data:data) - } - } - - - func extractName(arguments: Any?) -> String?{ - var name: String? = nil - if let packet = arguments as? Dictionary { - name = packet["name"] as? String - } - return name - } - - - // Create an own virtual device appearing in other apps. - // Other apps can use that device to send and receive MIDI to and from this app. - var ownVirtualDevices = Set() - - func findOrCreateOwnVirtualDevice(name: String) -> ConnectedOwnVirtualDevice{ - let existingDevice = ownVirtualDevices.first(where: { device in - device.name == name - }) - - let result = existingDevice ?? ConnectedOwnVirtualDevice(name: name, streamHandler: rxStreamHandler, client: midiClient); - if(existingDevice == nil){ - ownVirtualDevices.insert(result) - } - - return result - } - - func removeOwnVirtualDevice(name: String){ - let existingDevice = ownVirtualDevices.first(where: { device in - device.name == name - }) - - if let existingDevice = existingDevice { - existingDevice.close() - ownVirtualDevices.remove(existingDevice) - } - } - - // Check if an endpoint is an own virtual destination or source - func isOwnVirtualEndpoint(endpoint: MIDIEndpointRef) -> Bool{ - return ownVirtualDevices.contains { device in - device.virtualSourceEndpoint == endpoint || device.virtualDestinationEndpoint == endpoint - } - } - - - // BLE - public func startBluetoothCentralWhenNeeded(){ - if(manager == nil){ - manager = CBCentralManager.init(delegate: self, queue: DispatchQueue.global(qos: .userInteractive)) - - updateBluetoothState(data: getBluetoothCentralStateAsString()) - } - } - - public func getBluetoothCentralStateAsString() -> String { - startBluetoothCentralWhenNeeded(); - switch(manager.state){ - case CBManagerState.poweredOn: - return "poweredOn" - case CBManagerState.poweredOff: - return "poweredOff" - case CBManagerState.resetting: - return "resetting" - case CBManagerState.unauthorized: - return "unauthorized" - case CBManagerState.unknown: - return "unknown" - case CBManagerState.unsupported: - return "unsupported" - @unknown default: - return "other" - } - } - - public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { - // print("call method \(call.method)") - switch call.method { - case "startBluetoothCentral": - startBluetoothCentralWhenNeeded(); - result(nil); - break; - case "bluetoothState": - result(getBluetoothCentralStateAsString()); - break; - case "scanForDevices": - startBluetoothCentralWhenNeeded(); - print("\(manager.state.rawValue)") - if manager.state == CBManagerState.poweredOn { - print("Start discovery") - manager.stopScan() - let serviceList = [CBUUID(string: "03B80E5A-EDE8-4B33-A751-6CE34EC4C700")] - manager.retrieveConnectedPeripherals(withServices: serviceList) - manager.scanForPeripherals(withServices: serviceList, options: nil) - result(nil) - } else { - print("BT not ready") - result(FlutterError(code: "MESSAGEERROR", message: "bluetoothNotAvailable", details: call.arguments)) - } - break - case "stopScanForDevices": - startBluetoothCentralWhenNeeded(); - manager.stopScan() - break - case "getDevices": - let devices = getDevices() - print("--- devices ---\n\(devices)") - result(devices) - break - case "connectToDevice": - if let args = call.arguments as? Dictionary { - if let deviceInfo = args["device"] as? Dictionary { - if let deviceId = deviceInfo["id"] as? String { - if connectedDevices[deviceId] != nil { - result(FlutterError.init(code: "MESSAGEERROR", message: "Device already connected", details: call.arguments)) - } else { - ongoingConnections[deviceId] = result - connectToDevice(deviceId: deviceId, type: deviceInfo["type"] as! String, ports: nil) - } - } else { - result(FlutterError.init(code: "MESSAGEERROR", message: "No device Id", details: deviceInfo)) - } - } else { - result(FlutterError.init(code: "MESSAGEERROR", message: "Could not parse deviceInfo", details: call.arguments)) - } - } else { - result(FlutterError.init(code: "MESSAGEERROR", message: "Could not parse args", details: call.arguments)) - } - break - case "disconnectDevice": - if let deviceInfo = call.arguments as? Dictionary { - if let deviceId = deviceInfo["id"] as? String { - disconnectDevice(deviceId: deviceId) - } else { - result(FlutterError.init(code: "MESSAGEERROR", message: "No device Id", details: call.arguments)) - } - result(nil) - } else { - result(FlutterError.init(code: "MESSAGEERROR", message: "Could not parse device id", details: call.arguments)) - } - result(nil) - break - - case "sendData": - if let packet = call.arguments as? Dictionary { - sendData(packet["data"] as! FlutterStandardTypedData, deviceId: packet["deviceId"] as? String, timestamp: packet["timestamp"] as? UInt64) - result(nil) - } else { - result(FlutterError.init(code: "MESSAGEERROR", message: "Could not form midi packet", details: call.arguments)) - } - break - case "teardown": - teardown() - break - - case "addVirtualDevice": - let name = extractName(arguments: call.arguments) ?? appName() - let ownVirtualDevice = findOrCreateOwnVirtualDevice(name: name) - let error = ownVirtualDevice.errors.count > 0 ? ownVirtualDevice.errors.joined(separator: "\n") : nil; - if(error != nil){ - removeOwnVirtualDevice(name: name) - } - - result(error == nil ? error : FlutterError.init(code: "AUDIOERROR", message: error, details: call.arguments)) - break; - - case "removeVirtualDevice": - let name = extractName(arguments: call.arguments) ?? appName() - removeOwnVirtualDevice(name: name) - result(nil) - break; - - case "enableNetworkSession": - if let enabled = call.arguments as? Bool { -#if os(iOS) - session?.isEnabled = enabled -#endif - } - - case "isNetworkSessionEnabled": -#if os(iOS) - result(session?.isEnabled ?? false) -#else - result(nil) -#endif - - default: - result(FlutterMethodNotImplemented) - } - } - - func teardown() { - for device in connectedDevices { - disconnectDevice(deviceId: device.value.id) - } - } - - - func connectToDevice(deviceId:String, type:String, ports:[Port]?) { - print("connect \(deviceId) \(type)") - - if type == "BLE" { - if let periph = discoveredDevices.filter({ (p) -> Bool in p.identifier.uuidString == deviceId }).first { - let device = ConnectedBLEDevice(id: deviceId, type: type, streamHandler: rxStreamHandler, result:ongoingConnections[deviceId], peripheral: periph, ports:ports) - connectedDevices[deviceId] = device - manager.stopScan() - manager.connect(periph, options: nil) - } else { - print("error connecting to device \(deviceId) [\(type)]") - } - } else if type == "own-virtual" { - let device = ownVirtualDevices.first { device in - String(device.id) == deviceId - } - - if let device = device { - connectedDevices[device.id] = device - (device as ConnectedOwnVirtualDevice).isConnected = true - updateSetupState(data: "deviceConnected") - if let result = ongoingConnections[deviceId] { - result(nil) - } - } - } else // if type == "native" || if type == "virtual" - { - let device = (type == "native" || type == "network") ? ConnectedNativeDevice(id: deviceId, type: type, streamHandler: rxStreamHandler, client: midiClient, ports:ports) - : ConnectedVirtualDevice(id: deviceId, type: type, streamHandler: rxStreamHandler, client: midiClient, ports:ports) - print("connected to \(device) \(deviceId)") - connectedDevices[deviceId] = device - updateSetupState(data: "deviceConnected") - if let result = ongoingConnections[deviceId] { - result(nil) - } - } - } - - func disconnectDevice(deviceId:String) { - let device = connectedDevices[deviceId] - print("disconnect \(String(describing: device)) for id \(deviceId)") - if let device = device { - if device.deviceType == "BLE" { - let p = (device as! ConnectedBLEDevice).peripheral - manager.cancelPeripheralConnection(p) - } else if device.deviceType == "own-virtual" { - print("disconnected MIDI") - (device as! ConnectedOwnVirtualDevice).isConnected = false - updateSetupState(data: "deviceDisconnected") - } - else { - print("disconnected MIDI") - device.close() - updateSetupState(data: "deviceDisconnected") - } - connectedDevices.removeValue(forKey: deviceId) - } - } - - - func sendData(_ data:FlutterStandardTypedData, deviceId: String?, timestamp: UInt64?) { - let bytes = [UInt8](data.data) - - if let deviceId = deviceId { - if let device = connectedDevices[deviceId] { - device.send(bytes: bytes, timestamp: timestamp) - } - } else { - connectedDevices.values.forEach({ (device) in - device.send(bytes: bytes, timestamp: timestamp) - }) - } - } - - - static func getMIDIProperty(_ prop:CFString, fromObject obj:MIDIObjectRef) -> String { - var param: Unmanaged? - var result: String = "Error" - let err: OSStatus = MIDIObjectGetStringProperty(obj, prop, ¶m) - if err == OSStatus(noErr) { result = param!.takeRetainedValue() as String } - return result - } - - static func isNetwork(device:MIDIObjectRef) -> Bool { - var isNetwork:Bool = false - - var list: Unmanaged? - MIDIObjectGetProperties(device, &list, true) - if let list = list { - let dict = list.takeRetainedValue() as! NSDictionary - if dict["apple.midirtp.session"] != nil { - isNetwork = true - } - } - return isNetwork - } - - - func createPortDict(count:Int) -> Array> { - return (0.. Dictionary in - return ["id": id, "connected" : false] - } - } - - - func getDevices() -> [Dictionary] { - var devices:[Dictionary] = [] - - // ###### - // Native - // ###### - - var nativeDevices = Dictionary>() - - let destinationCount = MIDIGetNumberOfDestinations() - for d in 0..>() - - for d in 0..>() - - for ownVirtualDevice in self.ownVirtualDevices { - let displayName = ownVirtualDevice.deviceName - let id = stringToId(str: displayName) - - ownVirtualDevices[id] = [ - "name" : displayName, - "id" : "\(id)", - "type" : "own-virtual", - "connected":(connectedDevices.keys.contains(String(id)) ? "true" : "false"), - "outputs" : createPortDict(count: 1), - "inputs" : createPortDict(count: 1), - ] - } - - devices.append(contentsOf: ownVirtualDevices.values) - - - return devices; - } - - - func handleMIDINotification(_ midiNotification: UnsafePointer) { - print("\ngot a MIDINotification!") - - let notification = midiNotification.pointee - print("MIDI Notify, messageId= \(notification.messageID) \(notification.messageSize)") - - updateSetupState(data: "\(notification.messageID)") - - switch notification.messageID { - - // Some aspect of the current MIDISetup has changed. No data. Should ignore this message if messages 2-6 are handled. - case .msgSetupChanged: - print("MIDI setup changed") - let ptr = UnsafeMutablePointer(mutating: midiNotification) - // let ptr = UnsafeMutablePointer(midiNotification) - let m = ptr.pointee - print(m) - print("id \(m.messageID)") - print("size \(m.messageSize)") - break - - - // A device, entity or endpoint was added. Structure is MIDIObjectAddRemoveNotification. - case .msgObjectAdded: - - print("added") - // let ptr = UnsafeMutablePointer(midiNotification) - - midiNotification.withMemoryRebound(to: MIDIObjectAddRemoveNotification.self, capacity: 1) { - let m = $0.pointee - print(m) - print("id \(m.messageID)") - print("size \(m.messageSize)") - print("child \(m.child)") - print("child type \(m.childType)") - showMIDIObjectType(m.childType) - print("parent \(m.parent)") - print("parentType \(m.parentType)") - showMIDIObjectType(m.parentType) - // print("childName \(String(describing: getDisplayName(m.child)))") - } - - - break - - // A device, entity or endpoint was removed. Structure is MIDIObjectAddRemoveNotification. - case .msgObjectRemoved: - print("kMIDIMsgObjectRemoved") - // let ptr = UnsafeMutablePointer(midiNotification) - midiNotification.withMemoryRebound(to: MIDIObjectAddRemoveNotification.self, capacity: 1) { - - let m = $0.pointee - print(m) - print("id \(m.messageID)") - print("size \(m.messageSize)") - print("child \(m.child)") - print("child type \(m.childType)") - print("parent \(m.parent)") - print("parentType \(m.parentType)") - - // print("childName \(String(describing: getDisplayName(m.child)))") - } - break - - // An object's property was changed. Structure is MIDIObjectPropertyChangeNotification. - case .msgPropertyChanged: - print("kMIDIMsgPropertyChanged") - midiNotification.withMemoryRebound(to: MIDIObjectPropertyChangeNotification.self, capacity: 1) { - - let m = $0.pointee - print(m) - print("id \(m.messageID)") - print("size \(m.messageSize)") - print("object \(m.object)") - print("objectType \(m.objectType)") - print("propertyName \(m.propertyName)") - print("propertyName \(m.propertyName.takeUnretainedValue())") - - if m.propertyName.takeUnretainedValue() as String == "apple.midirtp.session" { - print("connected") - } - } - - break - - // A persistent MIDI Thru connection wasor destroyed. No data. - case .msgThruConnectionsChanged: - print("MIDI thru connections changed.") - break - - //A persistent MIDI Thru connection was created or destroyed. No data. - case .msgSerialPortOwnerChanged: - print("MIDI serial port owner changed.") - break - - case .msgIOError: - print("MIDI I/O error.") - - //let ptr = UnsafeMutablePointer(midiNotification) - midiNotification.withMemoryRebound(to: MIDIIOErrorNotification.self, capacity: 1) { - let m = $0.pointee - print(m) - print("id \(m.messageID)") - print("size \(m.messageSize)") - print("driverDevice \(m.driverDevice)") - print("errorCode \(m.errorCode)") - } - break - @unknown default: - break - } - } - - func showMIDIObjectType(_ ot: MIDIObjectType) { - switch ot { - case .other: - os_log("midiObjectType: Other", log: midiLog, type: .debug) - break - - case .device: - os_log("midiObjectType: Device", log: midiLog, type: .debug) - break - - case .entity: - os_log("midiObjectType: Entity", log: midiLog, type: .debug) - break - - case .source: - os_log("midiObjectType: Source", log: midiLog, type: .debug) - break - - case .destination: - os_log("midiObjectType: Destination", log: midiLog, type: .debug) - break - - case .externalDevice: - os_log("midiObjectType: ExternalDevice", log: midiLog, type: .debug) - break - - case .externalEntity: - print("midiObjectType: ExternalEntity") - os_log("midiObjectType: ExternalEntity", log: midiLog, type: .debug) - break - - case .externalSource: - os_log("midiObjectType: ExternalSource", log: midiLog, type: .debug) - break - - case .externalDestination: - os_log("midiObjectType: ExternalDestination", log: midiLog, type: .debug) - break - @unknown default: - break - } - - } - -#if os(iOS) - /// MIDI Network Session - @objc func midiNetworkChanged(notification:NSNotification) { - print("\(#function)") - print("\(notification)") - if let session = notification.object as? MIDINetworkSession { - print("session \(session)") - for con in session.connections() { - print("con \(con)") - } - print("isEnabled \(session.isEnabled)") - print("sourceEndpoint \(session.sourceEndpoint())") - print("destinationEndpoint \(session.destinationEndpoint())") - print("networkName \(session.networkName)") - print("localName \(session.localName)") - - // if let name = getDeviceName(session.sourceEndpoint()) { - // print("source name \(name)") - // } - // - // if let name = getDeviceName(session.destinationEndpoint()) { - // print("destination name \(name)") - // } - } - updateSetupState(data: "\(#function) \(notification)") - } - - @objc func midiNetworkContactsChanged(notification:NSNotification) { - print("\(#function)") - print("\(notification)") - if let session = notification.object as? MIDINetworkSession { - print("session \(session)") - for con in session.contacts() { - print("contact \(con)") - } - } - updateSetupState(data: "\(#function) \(notification)") - } -#endif - - /// BLE handling - - // Central - public func centralManagerDidUpdateState(_ central: CBCentralManager) { - print("central did update state \(getBluetoothCentralStateAsString())") - updateBluetoothState(data: getBluetoothCentralStateAsString()); - } - - public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) { - print("central didDiscover \(peripheral)") - if !discoveredDevices.contains(peripheral) { - discoveredDevices.insert(peripheral) - updateSetupState(data: "deviceAppeared") - } - } - - public func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) { - print("central did connect \(peripheral)") - (connectedDevices[peripheral.identifier.uuidString] as! ConnectedBLEDevice).setupBLE(stream: setupStreamHandler) - } - - public func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) { - print("central did fail to connect state \(peripheral) \(String(describing: error?.localizedDescription))") - - updateSetupState(data: "connectionFailed") - connectedDevices.removeValue(forKey: peripheral.identifier.uuidString) - } - - public func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) { - print("central didDisconnectPeripheral \(peripheral)") - - updateSetupState(data: "deviceDisconnected") - } -} - -class StreamHandler : NSObject, FlutterStreamHandler { - - var sink:FlutterEventSink? - - func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? { - sink = events - return nil - } - - func onCancel(withArguments arguments: Any?) -> FlutterError? { - sink = nil - return nil - } - - func send(data: Any) { - if let sink = sink { - sink(data) - // } else { - // print("no sink") - } - } -} - -class Port { - var id:Int - var type:String - - init(id:Int, type:String) { - self.id = id; - self.type = type - } -} - -class ConnectedDevice : NSObject { - var id:String - var deviceType:String - var streamHandler : StreamHandler - - init(id:String, type:String, streamHandler:StreamHandler) { - self.id = id - self.deviceType = type - self.streamHandler = streamHandler - } - - func openPorts() {} - - func send(bytes:[UInt8], timestamp: UInt64?) {} - - func close() {} -} - -class ConnectedVirtualOrNativeDevice : ConnectedDevice { - var ports:[Port]? - var outputPort = MIDIPortRef() - var inputPort = MIDIPortRef() - var client : MIDIClientRef - var name : String? - var outEndpoint : MIDIEndpointRef? - var inSource : MIDIEndpointRef? - var deviceInfo:Dictionary - - init(id:String, type:String, streamHandler:StreamHandler, client: MIDIClientRef, ports:[Port]?) { - self.client = client - self.ports = ports - - - deviceInfo = ["name" : name, - "id": String(id), - "type":type, - "connected": String(true),] - - super.init(id: id, type: type, streamHandler: streamHandler) - } - - override func send(bytes: [UInt8], timestamp: UInt64?) { - print("send \(bytes.count) bytes to \(String(describing: name))") - - if let ep = outEndpoint { - splitDataIntoMIDIPackets(bytes: bytes, timestamp: timestamp) { packetListPointer in - MIDISend(outputPort, ep, packetListPointer) - } - } else { - print("No MIDI destination for id \(name!)") - } - } - - func splitDataIntoMIDIPackets(bytes:[UInt8], timestamp: UInt64?, packetCallback:(UnsafePointer) -> Void) { - let maxPacketSize = 256 // Maximum size for a single packet's data field - var offset = 0 - let ts = timestamp ?? mach_absolute_time() - - while offset < bytes.count { - var packetList = MIDIPacketList() - - // Calculate the size of the current chunk - let chunkSize = min(maxPacketSize, bytes.count - offset) - let chunk = Array(bytes[offset...allocate(capacity: 2) // Don't know why I need to a capacity of 2 here. If I setup 1 I'm getting a crash. - - func handlePacketList(_ packetList:UnsafePointer, srcConnRefCon:UnsafeMutableRawPointer?) { - let packets = packetList.pointee - let packet:MIDIPacket = packets.packet - var ap = buffer; - buffer.initialize(to:packet) - - for _ in 0 ..< packets.numPackets { - let p = ap.pointee - var tmp = p.data - let data = Data(bytes: &tmp, count: Int(p.length)) - let timestamp = p.timeStamp - parseData(data: data, timestamp: timestamp) - ap = MIDIPacketNext(ap) - } - } - - enum PARSER_STATE - { - case HEADER - case PARAMS - case SYSEX - } - - var parserState = PARSER_STATE.HEADER - var sysExBuffer:[UInt8] = [] - var midiBuffer:[UInt8] = [] - var midiPacketLength:Int = 0 - var statusByte:UInt8 = 0 - - func parseData(data:Data, timestamp:UInt64) { - if (data.count > 0) { - for i in 0...data.count-1 { - let midiByte:UInt8 = data[i] - let midiInt = midiByte & 0xFF - - // Log.d("FlutterMIDICommand", "parserState $parserState byte $midiByte") - - switch (parserState) { - case PARSER_STATE.HEADER: - if (midiInt == 0xF0) { - parserState = PARSER_STATE.SYSEX - sysExBuffer.removeAll() - sysExBuffer.append(midiByte) - } else if (midiInt & 0x80 == 0x80) { - // some kind of midi msg - statusByte = midiByte - midiPacketLength = lengthOfMessageType(type: midiInt) - midiBuffer.removeAll() - midiBuffer.append(midiByte) - parserState = PARSER_STATE.PARAMS - finalizeMessageIfComplete(timestamp: timestamp) - } else { - // in header state but no status byte, do running status - midiBuffer.removeAll() - midiBuffer.append(statusByte) - midiBuffer.append(midiByte) - parserState = PARSER_STATE.PARAMS - finalizeMessageIfComplete(timestamp: timestamp) - } - break - - - case PARSER_STATE.SYSEX: - // if (midiInt == 0xF0) { - // // Android can skip SysEx end bytes, when more sysex messages are coming in succession. - // // in an attempt to save the situation, add an end byte to the current buffer and start a new one. - // sysExBuffer.append(0xF7) - //// Log.d("FlutterMIDICommand", "sysex force finalized $sysExBuffer") - // streamHandler.send(data: ["data": sysExBuffer, "timestamp":timestamp, "device":deviceInfo]) - // sysExBuffer.removeAll(); - // } - sysExBuffer.append(midiByte) - if (midiInt == 0xF7) { - // Sysex complete - let sysExBufferCopy:[UInt8] = self.sysExBuffer; // local copy of data to be handled async - DispatchQueue.main.async { - self.streamHandler.send(data: ["data": sysExBufferCopy, "timestamp":timestamp, "device":self.deviceInfo] as [String:Any]) - } - parserState = PARSER_STATE.HEADER - } - break - - case PARSER_STATE.PARAMS: - midiBuffer.append(midiByte) - finalizeMessageIfComplete(timestamp: timestamp) - break - } - } - } - } - - func finalizeMessageIfComplete(timestamp: UInt64) { - if (midiBuffer.count == midiPacketLength) { - let midiData = ["data": midiBuffer, "timestamp":timestamp, "device":deviceInfo] as [String : Any] - DispatchQueue.main.async { - self.streamHandler.send(data: midiData) - } - parserState = PARSER_STATE.HEADER - } - } - - func lengthOfMessageType(type:UInt8) -> Int { - let midiType:UInt8 = type & 0xF0 - - switch (type) { - case 0xF6, 0xF8, 0xFA, 0xFB, 0xFC, 0xFF, 0xFE: return 1 - case 0xF1, 0xF3: return 2 - case 0xF2: return 3 - default: - break - } - - switch (midiType) { - case 0xC0, 0xD0: return 2 - case 0x80, 0x90, 0xA0, 0xB0, 0xE0: return 3 - default: break - } - return 0 - } - -} - - -class ConnectedNativeDevice : ConnectedVirtualOrNativeDevice { - - var entity : MIDIEntityRef? - - override init(id:String, type:String, streamHandler:StreamHandler, client: MIDIClientRef, ports:[Port]?) { - super.init(id:id, type: type, streamHandler: streamHandler, client: client, ports: ports) - - self.ports = ports - let idParts = id.split(separator: ":") - - // Store entity and get device/entity name - if let deviceId = MIDIDeviceRef(idParts[0]) { - if let entityId = Int(idParts[1]) { - entity = MIDIDeviceGetEntity(deviceId, entityId) - if let e = entity { - let entityName = SwiftFlutterMidiCommandPlugin.getMIDIProperty(kMIDIPropertyName, fromObject: e) - - var device:MIDIDeviceRef = 0 - MIDIEntityGetDevice(e, &device) - let deviceName = SwiftFlutterMidiCommandPlugin.getMIDIProperty(kMIDIPropertyName, fromObject: device) - - name = "\(deviceName) \(entityName)" - } else { - print("no entity") - } - } else { - print("no entityId") - } - } else { - print("no deviceId") - } - - - deviceInfo = ["name" : name, - "id": String(id), - "type":"native"] - - - // MIDI Input with handler - MIDIInputPortCreateWithBlock(client, "FlutterMidiCommand_InPort" as CFString, &inputPort) { (packetList, srcConnRefCon) in - self.handlePacketList(packetList, srcConnRefCon: srcConnRefCon) - } - - // MIDI output - MIDIOutputPortCreate(client, "FlutterMidiCommand_OutPort" as CFString, &outputPort); - - openPorts() - } - - override func openPorts() { - print("open native ports") - - if let e = entity { - - let ref = Unmanaged.passUnretained(self).toOpaque() - - if let ps = ports { - for port in ps { - inSource = MIDIEntityGetSource(e, port.id) - - switch port.type { - case "MidiPortType.IN": - let status = MIDIPortConnectSource(inputPort, inSource!, ref) - print("port open status \(status)") - case "MidiPortType.OUT": - outEndpoint = MIDIEntityGetDestination(e, port.id) - // print("port endpoint \(endpoint)") - break - default: - print("unknown port type \(port.type)") - } - } - } else { - print("open default ports") - inSource = MIDIEntityGetSource(e, 0) - let status = MIDIPortConnectSource(inputPort, inSource!, ref) - if(status != noErr){ - print("Error \(status) while calling MIDIPortConnectSource"); - } - outEndpoint = MIDIEntityGetDestination(e, 0) - } - } - } - - override func close() { - /* - if let oEP = outEndpoint { - MIDIEndpointDispose(oEP) - } - */ - if let iS = inSource { - MIDIPortDisconnectSource(inputPort, iS) - } - - MIDIPortDispose(inputPort) - MIDIPortDispose(outputPort) - } - - override func handlePacketList(_ packetList:UnsafePointer, srcConnRefCon:UnsafeMutableRawPointer?) { - // let deviceInfo = ["name" : name, - // "id": String(id), - // "type":"native"] - - var timestampFactor : Double = 1.0 - var tb = mach_timebase_info_data_t() - let kError = mach_timebase_info(&tb) - if (kError == 0) { - timestampFactor = Double(tb.numer) / Double(tb.denom) - } - - // New implementation: Handles packages with a size larger then 256 bytes - if #available(macOS 10.15, iOS 13.0, *) { - let packetListSize = MIDIPacketList.sizeInBytes(pktList: packetList) - - // Copy raw data from packetList - let packetListAsRawData = Data(bytes: packetList, count: packetListSize) - var packetNumber = 0 - - for packet in packetList.unsafeSequence() { - let offsetStart = getOffsetForPackageData(packetList: packetList, packageNumber: (Int)(packetNumber)) - let offsetEnd = (offsetStart + (Int)(packet.pointee.length) - 1) - let packetData = packetListAsRawData.subdata(in: Range(offsetStart...offsetEnd)) - - let timestamp = UInt64(round(Double(packet.pointee.timeStamp) * timestampFactor)) - - parseData(data: packetData, timestamp: timestamp) - - packetNumber += 1 - } - } else { - // Original implementation: This implementation will not work with packages larger than 256 bytes - // The issue is due to the line (see below): let packet:MIDIPacket = packets.packet - // which will only copy the first 256 bytes from the received data - let packets = packetList.pointee - let packet:MIDIPacket = packets.packet // This will only copy the first 256 bytes! - var ap = buffer - ap.initialize(to:packet) - - // print("tb \(tb) timestamp \(timestampFactor)") - for _ in 0 ..< packets.numPackets { - let p = ap.pointee - var tmp = p.data - let data = Data(bytes: &tmp, count: Int(p.length)) - let timestamp = UInt64(round(Double(p.timeStamp) * timestampFactor)) - parseData(data: data, timestamp: timestamp) - ap = MIDIPacketNext(ap) - } - // ap.deallocate() - } - } - - func getOffsetForPackageData(packetList: UnsafePointer, packageNumber: Int) -> Int { - if #available(macOS 10.15, iOS 13.0, *) { - var packageCount = 0 - for packet in packetList.unsafeSequence() { - if (packageCount == packageNumber) { - return (Int)(UInt(bitPattern:Int(Int(bitPattern: packet))) - UInt(bitPattern:Int(Int(bitPattern: packetList)))) + MemoryLayout.offset(of: \MIDIPacket.data)! - } - - packageCount += 1 - } - } - return -1 - } -} - -class ConnectedVirtualDevice : ConnectedVirtualOrNativeDevice { - - override init(id:String, type:String, streamHandler:StreamHandler, client: MIDIClientRef, ports:[Port]?) { - - super.init(id:id, type: type, streamHandler: streamHandler, client: client, ports: ports) - - let idParts = id.split(separator: ":") - assert(idParts.count > 0); - outEndpoint = idParts.count > 0 && idParts[0].count > 0 ? MIDIEndpointRef(idParts[0]) : nil; - inSource = idParts.count > 1 && idParts[1].count > 0 ? MIDIEndpointRef(idParts[1]) : nil; - - name = displayName(endpoint: outEndpoint ?? inSource ?? 0); - - // MIDI Input with handler - MIDIInputPortCreateWithBlock(client, "FlutterMidiCommand_InPort" as CFString, &inputPort) { (packetList, srcConnRefCon) in - self.handlePacketList(packetList, srcConnRefCon: srcConnRefCon) - } - - // MIDI output - MIDIOutputPortCreate(client, "FlutterMidiCommand_OutPort" as CFString, &outputPort); - - openPorts() - } - - override func openPorts() { - - if(inSource != nil){ - let ref = Unmanaged.passUnretained(self).toOpaque() - MIDIPortConnectSource(inputPort, inSource!, ref); - } - } -} - -class ConnectedOwnVirtualDevice : ConnectedVirtualOrNativeDevice { - init(name: String, streamHandler:StreamHandler, client: MIDIClientRef) { - self.deviceName = name - self.midiClient = client - super.init(id: String(stringToId(str: name)), type: "own-virtual", streamHandler: streamHandler, client: client, ports: []) - initVirtualSource() - initVirtualDestination() - self.name = name - } - - override func openPorts() {} - - var virtualSourceEndpoint: MIDIClientRef = 0 - var virtualDestinationEndpoint: MIDIClientRef = 0 - let midiClient: MIDIClientRef - let deviceName: String - var isConnected = false - var errors: Array = [] - - - override func send(bytes: [UInt8], timestamp: UInt64?) { - - if(!isConnected){ - return; - } - - - splitDataIntoMIDIPackets(bytes: bytes, timestamp: timestamp) { packetListPointer in - let status = MIDIReceived(virtualSourceEndpoint, packetListPointer) - if(status != noErr){ - let error = "Error \(status) while publishing MIDI on own virtual source endpoint." - errors.append(error) - print(error) - } - } - -// let packetList = UnsafeMutablePointer.allocate(capacity: 1) -// var packet = MIDIPacketListInit(packetList) -// let time = MIDITimeStamp(timestamp ?? mach_absolute_time()) -// packet = MIDIPacketListAdd(packetList, 1024, packet, time, bytes.count, bytes) - -// let status = MIDIReceived(virtualSourceEndpoint, packetList) -// if(status != noErr){ -// let error = "Error \(status) while publishing MIDI on own virtual source endpoint." -// errors.append(error) -// print(error) -// } - -// packetList.deallocate() - } - - override func close() { - closeVirtualSource() - closeVirtualDestination() - } - - - func initVirtualSource(){ - let s = MIDISourceCreate(midiClient, deviceName as CFString, &virtualSourceEndpoint); - if(s != noErr){ - let error = "Error \(s) while create MIDI virtual source" - errors.append(error) - print(error) - return - } - - // Attempt to use saved unique ID - let defaults = UserDefaults.standard - var uniqueID = Int32(defaults.integer(forKey: "FlutterMIDICommand Saved Virtual Source ID \(deviceName)")) - - //Set unique ID if available - if ( uniqueID != 0 ) - { - let s = MIDIObjectSetIntegerProperty(virtualSourceEndpoint, kMIDIPropertyUniqueID, uniqueID); - - if ( s == kMIDIIDNotUnique ) - { - uniqueID = 0; - } - } - - // Create and save a new unique id - if ( uniqueID == 0 ) { - let s = MIDIObjectGetIntegerProperty(virtualSourceEndpoint, kMIDIPropertyUniqueID, &uniqueID); - if(s != noErr){ - let error = "Error \(s) while getting MIDI virtual source ID" - errors.append(error) - print(error) - } - - if ( s == noErr ) { - defaults.set(uniqueID, forKey: "FlutterMIDICommand Saved Virtual Source ID \(deviceName)") - } - } - } - - func closeVirtualSource(){ - let s = MIDIEndpointDispose(virtualSourceEndpoint); - if(s != noErr){ - let error = "Error \(s) while disposing MIDI virtual source." - errors.append(error) - print(error) - } - } - - func initVirtualDestination(){ - - - let s = MIDIDestinationCreateWithBlock(midiClient, deviceName as CFString, &virtualDestinationEndpoint) { (packetList, srcConnRefCon) in - if(self.isConnected){ - self.handlePacketList(packetList, srcConnRefCon: srcConnRefCon) - } - } - - - if ( s != noErr ) { - if(s == -10844){ - let error = "Error while creating virtual MIDI destination. You need to add the key 'UIBackgroundModes' with value 'audio' to your Info.plist file" - errors.append(error) - print(error) - } - return; - } - - // Attempt to use saved unique ID - let defaults = UserDefaults.standard - var uniqueID = Int32(defaults.integer(forKey: "FlutterMIDICommand Saved Virtual Destination ID \(deviceName)")) - - if ( uniqueID != 0 ) - { - let s = MIDIObjectSetIntegerProperty(virtualDestinationEndpoint, kMIDIPropertyUniqueID, uniqueID) - if ( s == kMIDIIDNotUnique ) - { - uniqueID = 0; - } - } - // Save the ID - if ( uniqueID == 0 ) { - let s = MIDIObjectGetIntegerProperty(virtualDestinationEndpoint, kMIDIPropertyUniqueID, &uniqueID) - - if ( s == noErr ) { - defaults.set(uniqueID, forKey: "FlutterMIDICommand Saved Virtual Destination ID \(deviceName)") - } - else { - let error = "Error: \(s) while setting unique ID for virtuel endpoint" - errors.append(error) - print(error) - } - } - } - - func closeVirtualDestination(){ - let s = MIDIEndpointDispose(virtualDestinationEndpoint); - if(s != 0){ - let error = "Error: \(s) while disposing MIDI endpoint" - errors.append(error) - print(error) - } - } -} - -class ConnectedBLEDevice : ConnectedDevice, CBPeripheralDelegate { - var peripheral:CBPeripheral - var characteristic:CBCharacteristic? - - - // BLE MIDI parsing - enum BLE_HANDLER_STATE - { - case HEADER - case TIMESTAMP - case STATUS - case STATUS_RUNNING - case PARAMS - case SYSTEM_RT - case SYSEX - case SYSEX_END - case SYSEX_INT - } - - var bleHandlerState = BLE_HANDLER_STATE.HEADER - - var sysExBuffer: [UInt8] = [] - var timestamp: UInt64 = 0 - var bleMidiBuffer:[UInt8] = [] - var bleMidiPacketLength:UInt8 = 0 - var bleSysExHasFinished = true - - var isBusy = false - - var setupStream : StreamHandler? - var connectResult : FlutterResult? - - init(id:String, type:String, streamHandler:StreamHandler, result:FlutterResult?, peripheral:CBPeripheral, ports:[Port]?) { - self.peripheral = peripheral - self.connectResult = result - super.init(id: id, type: type, streamHandler: streamHandler) - } - - func setupBLE(stream: StreamHandler) { - setupStream = stream - peripheral.delegate = self - peripheral.discoverServices([CBUUID(string: "03B80E5A-EDE8-4B33-A751-6CE34EC4C700")]) - } - - - override func close() { - CBCentralManager().cancelPeripheralConnection(peripheral) - characteristic = nil - } - - override func send(bytes:[UInt8], timestamp: UInt64?) { -// print("ble send \(id) \(bytes)") - if (characteristic != nil) { - - - let packetSize = peripheral.maximumWriteValueLength(for:writeType) -// print("packetSize = \(packetSize)") - - var dataBytes = Data(bytes) - - if bytes.first == 0xF0 && bytes.last == 0xF7 { // this is a sysex message, handle carefully - if bytes.count > packetSize-3 { // Split into multiple messages of 20 bytes total - - // First packet - var packet = dataBytes.subdata(in: 0.. 0 { - - print("count \(dataBytes.count)") - - let pickCount = min(dataBytes.count, packetSize-1) - // print("pickCount \(pickCount)") - packet = dataBytes.subdata(in: 0.. packetSize-2) { - dataBytes = dataBytes.advanced(by: pickCount) // Advance buffer - } - else { - print("done") - return - } - } - } else { - // Insert timestamp low in front of Sysex End-byte - dataBytes.insert(0x80, at: bytes.count-1) - - // Insert header(and empty timstamp high) and timestamp low in front of BLE Midi message - dataBytes.insert(0x80, at: 0) - dataBytes.insert(0x80, at: 0) - - enqueueMidiData(bytes: dataBytes) - } - return - } - - // In bluetooth MIDI we need to send each midi command separately - var currentBuffer = Data(); - for i in 0.. Void { - // print("parse \(packet.map { String(format: "%02hhx ", $0) }.joined())") - - if (packet.count > 1) - { - // parse BLE message - bleHandlerState = BLE_HANDLER_STATE.HEADER - - let header = packet[0] - var statusByte:UInt8 = 0 - - for i in 1...packet.count-1 { - let midiByte:UInt8 = packet[i] - // print ("from bleHandlerState \(bleHandlerState) byte \(midiByte)") - - if ((((midiByte & 0x80) == 0x80) && (bleHandlerState != BLE_HANDLER_STATE.TIMESTAMP)) && (bleHandlerState != BLE_HANDLER_STATE.SYSEX_INT)) { - if (!bleSysExHasFinished) { - // print("Set to SYSEX_INT") - bleHandlerState = BLE_HANDLER_STATE.SYSEX_INT - } else { - bleHandlerState = BLE_HANDLER_STATE.TIMESTAMP - } - } else { - - // State handling - switch (bleHandlerState) - { - case BLE_HANDLER_STATE.HEADER: - if (!bleSysExHasFinished) - { - if ((midiByte & 0x80) == 0x80) - { // System messages can interrupt ongoing sysex - bleHandlerState = BLE_HANDLER_STATE.SYSEX_INT - } - else - { - // Sysex continue - //print("sysex continue") - bleHandlerState = BLE_HANDLER_STATE.SYSEX - } - } - break - - case BLE_HANDLER_STATE.TIMESTAMP: - if ((midiByte & 0xFF) == 0xF0) - { // Sysex start - bleSysExHasFinished = false - sysExBuffer.removeAll() - bleHandlerState = BLE_HANDLER_STATE.SYSEX - } - else if ((midiByte & 0x80) == 0x80) - { // Status/System start - bleHandlerState = BLE_HANDLER_STATE.STATUS - } - else - { - bleHandlerState = BLE_HANDLER_STATE.STATUS_RUNNING - } - break - - case BLE_HANDLER_STATE.STATUS: - bleHandlerState = BLE_HANDLER_STATE.PARAMS - break - - case BLE_HANDLER_STATE.STATUS_RUNNING: - bleHandlerState = BLE_HANDLER_STATE.PARAMS - break; - - case BLE_HANDLER_STATE.PARAMS: // After params can come TSlow or more params - break - - case BLE_HANDLER_STATE.SYSEX: - break - - case BLE_HANDLER_STATE.SYSEX_INT: - if ((midiByte & 0xFF) == 0xF7) - { // Sysex end - // print("sysex end") - bleSysExHasFinished = true - bleHandlerState = BLE_HANDLER_STATE.SYSEX_END - } - else - { - bleHandlerState = BLE_HANDLER_STATE.SYSTEM_RT - } - break; - - case BLE_HANDLER_STATE.SYSTEM_RT: - if (!bleSysExHasFinished) - { // Continue incomplete Sysex - bleHandlerState = BLE_HANDLER_STATE.SYSEX - } - break - - default: - print ("Unhandled state \(bleHandlerState)") - break - } - } - - // print ("handle \(bleHandlerState) - \(midiByte) [\(String(format:"%02X", midiByte))]") - - // Data handling - switch (bleHandlerState) - { - case BLE_HANDLER_STATE.TIMESTAMP: - // print ("set timestamp") - let tsHigh = header & 0x3f - let tsLow = midiByte & 0x7f - timestamp = UInt64(tsHigh) << 7 | UInt64(tsLow) - // print ("timestamp is \(timestamp)") - break - - case BLE_HANDLER_STATE.STATUS: - - bleMidiPacketLength = lengthOfMessageType(midiByte) - // print("message length \(bleMidiPacketLength)") - bleMidiBuffer.removeAll() - bleMidiBuffer.append(midiByte) - - if bleMidiPacketLength == 1 { - createMessageEvent(bleMidiBuffer, timestamp: timestamp, peripheral:peripheral) // TODO Add timestamp - } else { - // print ("set status") - statusByte = midiByte - } - break - - case BLE_HANDLER_STATE.STATUS_RUNNING: - // print("set running status") - bleMidiPacketLength = lengthOfMessageType(statusByte) - bleMidiBuffer.removeAll() - bleMidiBuffer.append(statusByte) - bleMidiBuffer.append(midiByte) - - if bleMidiPacketLength == 2 { - createMessageEvent(bleMidiBuffer, timestamp: timestamp, peripheral:peripheral) - } - break - - case BLE_HANDLER_STATE.PARAMS: - // print ("add param \(midiByte)") - bleMidiBuffer.append(midiByte) - - if bleMidiPacketLength == bleMidiBuffer.count { - createMessageEvent(bleMidiBuffer, timestamp: timestamp, peripheral:peripheral) - bleMidiBuffer.removeLast(Int(bleMidiPacketLength)-1) // Remove all but status, which might be used for running msgs - } - break - - case BLE_HANDLER_STATE.SYSTEM_RT: - // print("handle RT") - createMessageEvent([midiByte], timestamp: timestamp, peripheral:peripheral) - break - - case BLE_HANDLER_STATE.SYSEX: - // print("add sysex") - sysExBuffer.append(midiByte) - break - - case BLE_HANDLER_STATE.SYSEX_INT: - // print("sysex int") - break - - case BLE_HANDLER_STATE.SYSEX_END: - // print("finalize sysex") - sysExBuffer.append(midiByte) - createMessageEvent(sysExBuffer, timestamp: 0, peripheral:peripheral) - break - - default: - print ("Unhandled state (data) \(bleHandlerState)") - break - } - } - } - } - - func lengthOfMessageType(_ type:UInt8) -> UInt8 { - let midiType:UInt8 = type & 0xF0 - - switch (type) { - case 0xF6, 0xF8, 0xFA, 0xFB, 0xFC, 0xFF, 0xFE: - return 1 - case 0xF1, 0xF3: - return 2 - case 0xF2: - return 3 - default: - break - } - - switch (midiType) { - case 0xC0, 0xD0: - return 2 - case 0x80, 0x90, 0xA0, 0xB0, 0xE0: - return 3 - default: - break - } - return 0 - } - -} diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 4f8d4d24..00000000 --- a/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig deleted file mode 100644 index e8efba11..00000000 --- a/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig deleted file mode 100644 index 399e9340..00000000 --- a/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile deleted file mode 100644 index 313ea4a1..00000000 --- a/ios/Podfile +++ /dev/null @@ -1,41 +0,0 @@ -# Uncomment this line to define a global platform for your project -platform :ios, '11.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 53af0bb9..00000000 --- a/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,514 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1020; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = Z8796YSZJ5; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - MARKETING_VERSION = 0.1; - PRODUCT_BUNDLE_IDENTIFIER = com.invisiblewrench.flutterMidiCommand; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = Z8796YSZJ5; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - MARKETING_VERSION = 0.1; - PRODUCT_BUNDLE_IDENTIFIER = com.invisiblewrench.flutterMidiCommand; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = Z8796YSZJ5; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Flutter", - ); - MARKETING_VERSION = 0.1; - PRODUCT_BUNDLE_IDENTIFIER = com.invisiblewrench.flutterMidiCommand; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a16..00000000 --- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5..00000000 --- a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index a28140cf..00000000 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a16..00000000 --- a/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5..00000000 --- a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4a..00000000 --- a/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab..00000000 --- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada47..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index 28c6bf03..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 2ccbfd96..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index f091b6b0..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 4cde1211..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d0ef06e7..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index dcdc2306..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 2ccbfd96..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index c8f9ed8f..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index a6d6b860..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index a6d6b860..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 75b2d164..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index c4df70d3..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 6a84f41e..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index d0e1f585..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2f..00000000 --- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19eac..00000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eac..00000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eac..00000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b..00000000 --- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c7..00000000 --- a/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c28516..00000000 --- a/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist deleted file mode 100644 index 639e3d8b..00000000 --- a/ios/Runner/Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - flutter_midi_command - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a56..00000000 --- a/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/ios/flutter_midi_command.podspec b/ios/flutter_midi_command.podspec deleted file mode 100644 index ced07eeb..00000000 --- a/ios/flutter_midi_command.podspec +++ /dev/null @@ -1,23 +0,0 @@ -# -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint flutter_midi_command.podspec' to validate before publishing. -# -Pod::Spec.new do |s| - s.name = 'flutter_midi_command' - s.version = '0.4.2' - s.summary = 'A Flutter plugin for sending and receiving MIDI messages' - s.description = <<-DESC - 'A Flutter plugin for sending and receiving MIDI messages' - DESC - s.homepage = 'http://invisiblewrench.com' - s.license = { :file => '../LICENSE' } - s.author = { 'Invisible Wrench ApS' => 'hello@invisiblewrench.com' } - s.source = { :path => '.' } - s.source_files = 'Classes/**/*' - s.dependency 'Flutter' - s.platform = :ios, '11.0' - - # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } - s.swift_version = '5.0' -end diff --git a/lib/flutter_midi_command.dart b/lib/flutter_midi_command.dart index 7bceb1d5..4e7c9fd7 100644 --- a/lib/flutter_midi_command.dart +++ b/lib/flutter_midi_command.dart @@ -1,59 +1,139 @@ import 'dart:async'; import 'dart:typed_data'; +import 'package:async/async.dart'; +import 'package:flutter_midi_command/flutter_midi_command_messages.dart'; import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:flutter_midi_command/src/midi_transports.dart'; -export 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart' - show MidiDevice, MidiPacket, MidiPort; - -enum BluetoothState { - poweredOn, - poweredOff, - resetting, - unauthorized, - unknown, - unsupported, - other, +export 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart' show MidiDevice, MidiDeviceTypeWire, MidiPacket, MidiPort; +export 'package:flutter_midi_command_platform_interface/midi_device.dart' show MidiConnectionState, MidiDeviceType; +export 'src/midi_transports.dart'; + +enum BluetoothState { poweredOn, poweredOff, resetting, unauthorized, unknown, unsupported, other } + +enum _MidiDeviceRoute { platform, bleTransport } + +class MidiDataReceivedEvent { + const MidiDataReceivedEvent({required this.message, required this.device, required this.transport, required this.timestamp}); + + final MidiMessage message; + final MidiDevice device; + final MidiTransport transport; + final int timestamp; } class MidiCommand { - factory MidiCommand() { + static const Set supportedTransports = {MidiTransport.native, MidiTransport.ble, MidiTransport.network, MidiTransport.virtual}; + + factory MidiCommand({MidiBleTransport? bleTransport}) { if (_instance == null) { - _instance = MidiCommand._(); + _instance = MidiCommand._(bleTransport: bleTransport); + } else if (bleTransport != null) { + _instance!.configureBleTransport(bleTransport); } return _instance!; } - MidiCommand._(); + MidiCommand._({MidiBleTransport? bleTransport}) : _bleTransport = bleTransport; + + MidiTransportPolicy _transportPolicy = const MidiTransportPolicy(); + MidiBleTransport? _bleTransport; + final Expando<_MidiDeviceRoute> _deviceRouteByInstance = Expando<_MidiDeviceRoute>('midi_device_route'); + final Map _deviceRouteById = {}; + final Map _messageParsersBySource = {}; + Expando _messageParsersByAnonymousDevice = Expando('midi_message_parser'); + + Set get enabledTransports => _transportPolicy.resolveEnabledTransports(supportedTransports); + + MidiCapabilities get capabilities => MidiCapabilities(supportedTransports: supportedTransports, enabledTransports: enabledTransports); + + void configureTransportPolicy(MidiTransportPolicy policy) { + _transportPolicy = policy; + } + + /// Attaches or detaches the BLE implementation. + /// + /// Pass `null` to disable BLE integration entirely for this instance. + void configureBleTransport(MidiBleTransport? transport) { + if (identical(_bleTransport, transport)) { + return; + } + _onBluetoothStateChangedStreamSubscription?.cancel(); + _onBluetoothStateChangedStreamSubscription = null; + _bleTransport?.teardown(); + _bleTransport = transport; + _bluetoothIsStarted = false; + _bluetoothState = BluetoothState.unknown; + _deviceRouteById.clear(); + _resetMessageParsers(); + } - dispose() { + bool isTransportEnabled(MidiTransport transport) => enabledTransports.contains(transport); + + void _requireTransport(MidiTransport transport, String operation) { + if (!isTransportEnabled(transport)) { + throw StateError('$operation requires transport $transport, but it is disabled by policy.'); + } + } + + void _requireBleTransport(String operation) { + if (_bleTransport == null) { + throw StateError( + '$operation requires a BLE transport implementation. ' + 'Add flutter_midi_command_ble and pass UniversalBleMidiTransport() to MidiCommand().', + ); + } + } + + void dispose() { + __platform?.teardown(); + _txStreamCtrl.close(); _bluetoothStateStream.close(); _onBluetoothStateChangedStreamSubscription?.cancel(); + _bleTransport?.teardown(); + _bleTransport = null; + _bluetoothIsStarted = false; + _bluetoothStartFuture = null; + _bluetoothState = BluetoothState.unknown; + _deviceRouteById.clear(); + _resetMessageParsers(); + if (identical(_instance, this)) { + _instance = null; + } } static MidiCommand? _instance; static MidiCommandPlatform? __platform; - StreamController _txStreamCtrl = StreamController.broadcast(); + static void setPlatformOverride(MidiCommandPlatform platform) { + __platform = platform; + } + + static void resetForTest() { + _instance = null; + __platform = null; + } + + final StreamController _txStreamCtrl = StreamController.broadcast(); final _bluetoothStateStream = StreamController.broadcast(); - var _bluetoothCentralIsStarted = false; + var _bluetoothIsStarted = false; + Future? _bluetoothStartFuture; BluetoothState _bluetoothState = BluetoothState.unknown; StreamSubscription? _onBluetoothStateChangedStreamSubscription; _listenToBluetoothState() async { - _onBluetoothStateChangedStreamSubscription = - _platform.onBluetoothStateChanged?.listen((s) { + _onBluetoothStateChangedStreamSubscription = _bleTransport?.onBluetoothStateChanged.listen((s) { _bluetoothState = BluetoothState.values.byName(s); _bluetoothStateStream.add(_bluetoothState); }); scheduleMicrotask(() async { if (_bluetoothState == BluetoothState.unknown) { - _bluetoothState = - BluetoothState.values.byName(await _platform.bluetoothState()); + _bluetoothState = BluetoothState.values.byName(await _bleTransport!.bluetoothState()); _bluetoothStateStream.add(_bluetoothState); } }); @@ -70,34 +150,67 @@ class MidiCommand { /// Gets a list of available MIDI devices and returns it Future?> get devices async { - return _platform.devices; + final devices = []; + _deviceRouteById.clear(); + + final platformDevices = await _platform.devices ?? []; + for (final device in platformDevices) { + _rememberDeviceRoute(device, _MidiDeviceRoute.platform); + } + devices.addAll(platformDevices); + + if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) { + final bleDevices = await _bleTransport!.devices; + for (final device in bleDevices) { + _rememberDeviceRoute(device, _MidiDeviceRoute.bleTransport); + } + devices.addAll(bleDevices); + } + + return devices; } /// Stream firing events whenever the bluetooth state changes - Stream get onBluetoothStateChanged => - _bluetoothStateStream.stream.distinct(); + Stream get onBluetoothStateChanged => _bluetoothStateStream.stream.distinct(); - /// Returns the state of the bluetooth central + /// Returns the current Bluetooth state BluetoothState get bluetoothState => _bluetoothState; - /// Starts the bluetooth central - Future startBluetoothCentral() async { - if (_bluetoothCentralIsStarted) { + /// Starts the Bluetooth subsystem used for BLE MIDI discovery/connection. + Future startBluetooth() async { + _requireTransport(MidiTransport.ble, 'startBluetooth'); + _requireBleTransport('startBluetooth'); + + if (_bluetoothIsStarted) { return; } - _bluetoothCentralIsStarted = true; - await _platform.startBluetoothCentral(); - await _listenToBluetoothState(); + if (_bluetoothStartFuture != null) { + return _bluetoothStartFuture!; + } + + _bluetoothStartFuture = () async { + try { + await _bleTransport!.startBluetooth(); + await _listenToBluetoothState(); + _bluetoothIsStarted = true; + } catch (_) { + _bluetoothIsStarted = false; + rethrow; + } finally { + _bluetoothStartFuture = null; + } + }(); + + return _bluetoothStartFuture!; } /// Wait for the blueetooth state to be initialized /// /// Found devices will be included in the list returned by [devices] Future waitUntilBluetoothIsInitialized() async { + _requireTransport(MidiTransport.ble, 'waitUntilBluetoothIsInitialized'); bool isInitialized() => _bluetoothState != BluetoothState.unknown; - print(_bluetoothState); - if (isInitialized()) { return; } @@ -114,49 +227,166 @@ class MidiCommand { /// /// Found devices will be included in the list returned by [devices] Future startScanningForBluetoothDevices() async { - return _platform.startScanningForBluetoothDevices(); + _requireTransport(MidiTransport.ble, 'startScanningForBluetoothDevices'); + _requireBleTransport('startScanningForBluetoothDevices'); + return _bleTransport!.startScanningForBluetoothDevices(); } /// Stop scanning for BLE MIDI devices void stopScanningForBluetoothDevices() { - _platform.stopScanningForBluetoothDevices(); + _requireTransport(MidiTransport.ble, 'stopScanningForBluetoothDevices'); + _requireBleTransport('stopScanningForBluetoothDevices'); + _bleTransport!.stopScanningForBluetoothDevices(); } /// Connects to the device - Future connectToDevice(MidiDevice device) async { - return _platform.connectToDevice(device); + Future connectToDevice(MidiDevice device, {Duration? awaitConnectionTimeout = const Duration(seconds: 10)}) async { + if (!device.connected) { + device.setConnectionState(MidiConnectionState.connecting); + } + final connectionEstablished = _awaitConnectedOrFailed(device); + + try { + final route = _resolveDeviceRoute(device); + if (route == _MidiDeviceRoute.bleTransport) { + _requireTransport(MidiTransport.ble, 'connectToDevice'); + _requireBleTransport('connectToDevice'); + await _bleTransport!.connectToDevice(device); + } else { + await _platform.connectToDevice(device); + } + } catch (_) { + if (device.connectionState == MidiConnectionState.connecting) { + device.setConnectionState(MidiConnectionState.disconnected); + } + rethrow; + } + + if (device.connected) { + return; + } + + if (awaitConnectionTimeout == null) { + await connectionEstablished; + return; + } + try { + await connectionEstablished.timeout(awaitConnectionTimeout); + } on TimeoutException { + if (device.connectionState == MidiConnectionState.connecting) { + device.setConnectionState(MidiConnectionState.disconnected); + } + rethrow; + } } /// Disconnects from the device void disconnectDevice(MidiDevice device) { + if (device.connected) { + device.setConnectionState(MidiConnectionState.disconnecting); + } + final route = _resolveDeviceRoute(device); + if (route == _MidiDeviceRoute.bleTransport) { + _requireTransport(MidiTransport.ble, 'disconnectDevice'); + _requireBleTransport('disconnectDevice'); + _bleTransport!.disconnectDevice(device); + return; + } _platform.disconnectDevice(device); } /// Disconnects from all devices void teardown() { _platform.teardown(); + _bleTransport?.teardown(); + _deviceRouteById.clear(); + _resetMessageParsers(); } /// Sends data to the currently connected device /// /// Data is an UInt8List of individual MIDI command bytes void sendData(Uint8List data, {String? deviceId, int? timestamp}) { + if (deviceId != null) { + final route = _deviceRouteById[deviceId]; + if (route == _MidiDeviceRoute.platform) { + _platform.sendData(data, deviceId: deviceId, timestamp: timestamp); + _txStreamCtrl.add(data); + return; + } + if (route == _MidiDeviceRoute.bleTransport && _bleTransport != null && isTransportEnabled(MidiTransport.ble)) { + _bleTransport!.sendData(data, deviceId: deviceId, timestamp: timestamp); + _txStreamCtrl.add(data); + return; + } + } + _platform.sendData(data, deviceId: deviceId, timestamp: timestamp); + if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) { + _bleTransport!.sendData(data, deviceId: deviceId, timestamp: timestamp); + } _txStreamCtrl.add(data); } - /// Stream firing events whenever a midi package is received + /// Stream firing events whenever a typed MIDI message is received. /// - /// The event contains the raw bytes contained in the MIDI package - Stream? get onMidiDataReceived { - return _platform.onMidiDataReceived; + /// Each event contains the parsed [MidiMessage], source [MidiDevice], + /// [MidiTransport], and packet timestamp. + Stream? get onMidiDataReceived { + final streams = >[]; + if (_platform.onMidiDataReceived != null) { + streams.add(_mapPacketsToTypedEvents(_platform.onMidiDataReceived!, fallbackTransport: MidiTransport.native)); + } + if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) { + streams.add(_mapPacketsToTypedEvents(_bleTransport!.onMidiDataReceived, fallbackTransport: MidiTransport.ble)); + } + if (streams.isEmpty) { + return null; + } + if (streams.length == 1) { + return streams.first; + } + return StreamGroup.merge(streams).asBroadcastStream(); + } + + /// Stream firing events whenever a raw MIDI packet is received. + /// + /// Prefer [onMidiDataReceived] for parsed message events. + Stream? get onMidiPacketReceived { + final streams = >[]; + if (_platform.onMidiDataReceived != null) { + streams.add(_platform.onMidiDataReceived!); + } + if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) { + streams.add(_bleTransport!.onMidiDataReceived); + } + if (streams.isEmpty) { + return null; + } + if (streams.length == 1) { + return streams.first; + } + return StreamGroup.merge(streams).asBroadcastStream(); } /// Stream firing events whenever a change in the MIDI setup occurs /// /// For example, when a new BLE devices is discovered Stream? get onMidiSetupChanged { - return _platform.onMidiSetupChanged; + final streams = >[]; + if (_platform.onMidiSetupChanged != null) { + streams.add(_platform.onMidiSetupChanged!); + } + if (_bleTransport != null && isTransportEnabled(MidiTransport.ble)) { + streams.add(_bleTransport!.onMidiSetupChanged); + } + if (streams.isEmpty) { + return null; + } + if (streams.length == 1) { + return streams.first; + } + return StreamGroup.merge(streams).asBroadcastStream(); } /// Stream firing events whenever a midi package is sent @@ -172,12 +402,14 @@ class MidiCommand { /// Other apps can receive MIDI from this source. /// Currently only supported on iOS. void addVirtualDevice({String? name}) { + _requireTransport(MidiTransport.virtual, 'addVirtualDevice'); _platform.addVirtualDevice(name: name); } /// Removes a previously created virtual MIDI source. /// Currently only supported on iOS. void removeVirtualDevice({String? name}) { + _requireTransport(MidiTransport.virtual, 'removeVirtualDevice'); _platform.removeVirtualDevice(name: name); } @@ -185,6 +417,7 @@ class MidiCommand { /// /// This is functional on iOS only, will return null on other platforms Future get isNetworkSessionEnabled { + _requireTransport(MidiTransport.network, 'isNetworkSessionEnabled'); return _platform.isNetworkSessionEnabled; } @@ -192,6 +425,130 @@ class MidiCommand { /// /// This is functional on iOS only void setNetworkSessionEnabled(bool enabled) { + _requireTransport(MidiTransport.network, 'setNetworkSessionEnabled'); _platform.setNetworkSessionEnabled(enabled); } + + Future _awaitConnectedOrFailed(MidiDevice device) { + if (device.connected) { + return Future.value(); + } + + final completer = Completer(); + var wasConnecting = device.connectionState == MidiConnectionState.connecting; + late StreamSubscription sub; + + void completeSuccess() { + if (!completer.isCompleted) { + completer.complete(); + } + } + + void completeFailure() { + if (!completer.isCompleted) { + completer.completeError(StateError('Failed to connect to MIDI device ${device.id}.')); + } + } + + sub = device.onConnectionStateChanged.listen((state) { + if (state == MidiConnectionState.connecting) { + wasConnecting = true; + return; + } + if (state == MidiConnectionState.connected) { + completeSuccess(); + return; + } + if (state == MidiConnectionState.disconnected && wasConnecting) { + completeFailure(); + } + }); + + if (device.connected) { + completeSuccess(); + } else if (device.connectionState == MidiConnectionState.disconnected && wasConnecting) { + completeFailure(); + } + + return completer.future.whenComplete(() => sub.cancel()); + } + + void _rememberDeviceRoute(MidiDevice device, _MidiDeviceRoute route) { + _deviceRouteByInstance[device] = route; + if (device.id.isNotEmpty) { + _deviceRouteById.putIfAbsent(device.id, () => route); + } + } + + _MidiDeviceRoute _resolveDeviceRoute(MidiDevice device) { + final byInstance = _deviceRouteByInstance[device]; + if (byInstance != null) { + return byInstance; + } + + final byId = _deviceRouteById[device.id]; + if (byId != null) { + return byId; + } + + if (device.type == MidiDeviceType.ble && _bleTransport != null) { + return _MidiDeviceRoute.bleTransport; + } + + return _MidiDeviceRoute.platform; + } + + Stream _mapPacketsToTypedEvents(Stream packets, {required MidiTransport fallbackTransport}) { + return packets.asyncExpand((packet) { + final transport = _transportForPacket(packet, fallbackTransport: fallbackTransport); + final parser = _parserForPacket(packet, transport); + final parsedMessages = parser.parse(packet.data, flushPendingNrpn: false); + if (parsedMessages.isEmpty) { + return const Stream.empty(); + } + return Stream.fromIterable( + parsedMessages.map((message) => MidiDataReceivedEvent(message: message, device: packet.device, transport: transport, timestamp: packet.timestamp)), + ); + }); + } + + MidiMessageParser _parserForPacket(MidiPacket packet, MidiTransport transport) { + if (packet.device.id.isNotEmpty) { + final key = '${transport.name}:${packet.device.id}'; + return _messageParsersBySource.putIfAbsent(key, MidiMessageParser.new); + } + + final existing = _messageParsersByAnonymousDevice[packet.device]; + if (existing != null) { + return existing; + } + + final parser = MidiMessageParser(); + _messageParsersByAnonymousDevice[packet.device] = parser; + return parser; + } + + MidiTransport _transportForPacket(MidiPacket packet, {required MidiTransport fallbackTransport}) { + switch (packet.device.type) { + case MidiDeviceType.ble: + return MidiTransport.ble; + case MidiDeviceType.network: + return MidiTransport.network; + case MidiDeviceType.virtual: + case MidiDeviceType.ownVirtual: + return MidiTransport.virtual; + case MidiDeviceType.serial: + return MidiTransport.native; + case MidiDeviceType.unknown: + return fallbackTransport; + } + } + + void _resetMessageParsers() { + for (final parser in _messageParsersBySource.values) { + parser.reset(); + } + _messageParsersBySource.clear(); + _messageParsersByAnonymousDevice = Expando('midi_message_parser'); + } } diff --git a/lib/flutter_midi_command_messages.dart b/lib/flutter_midi_command_messages.dart index 1a17d32f..19d33b98 100644 --- a/lib/flutter_midi_command_messages.dart +++ b/lib/flutter_midi_command_messages.dart @@ -1,6 +1,7 @@ import 'dart:typed_data'; import 'flutter_midi_command.dart'; +part 'src/midi_message_parser.dart'; enum MessageType { CC, @@ -13,7 +14,7 @@ enum MessageType { Beat, PolyAT, AT, - PitchBend + PitchBend, } class MidiMessage { @@ -23,9 +24,24 @@ class MidiMessage { /// Base class for MIDI message types MidiMessage(); + /// Generates MIDI bytes for this message without sending. + /// + /// Subclasses override this to provide typed message encoding. + Uint8List generateData() => data; + + /// Parses one or more raw MIDI messages into typed [MidiMessage] objects. + static List parse( + Uint8List bytes, { + MidiMessageParser? parser, + bool flushPendingNrpn = true, + }) { + final activeParser = parser ?? MidiMessageParser(); + return activeParser.parse(bytes, flushPendingNrpn: flushPendingNrpn); + } + /// Send the message bytes to all connected devices void send({String? deviceId, int? timestamp}) { - // print("send $data"); + data = generateData(); MidiCommand().sendData(data, deviceId: deviceId, timestamp: timestamp); } } @@ -39,12 +55,12 @@ class CCMessage extends MidiMessage { CCMessage({this.channel = 0, this.controller = 0, this.value = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(3); - data[0] = 0xB0 + channel; - data[1] = controller; - data[2] = value; - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + final generated = Uint8List(3); + generated[0] = 0xB0 + channel; + generated[1] = controller; + generated[2] = value; + return generated; } } @@ -56,11 +72,11 @@ class PCMessage extends MidiMessage { PCMessage({this.channel = 0, this.program = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(2); - data[0] = 0xC0 + channel; - data[1] = program; - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + final generated = Uint8List(2); + generated[0] = 0xC0 + channel; + generated[1] = program; + return generated; } } @@ -73,12 +89,12 @@ class NoteOnMessage extends MidiMessage { NoteOnMessage({this.channel = 0, this.note = 0, this.velocity = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(3); - data[0] = 0x90 + channel; - data[1] = note; - data[2] = velocity; - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + final generated = Uint8List(3); + generated[0] = 0x90 + channel; + generated[1] = note; + generated[2] = velocity; + return generated; } } @@ -91,33 +107,36 @@ class NoteOffMessage extends MidiMessage { NoteOffMessage({this.channel = 0, this.note = 0, this.velocity = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(3); - data[0] = 0x80 + channel; - data[1] = note; - data[2] = velocity; - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + final generated = Uint8List(3); + generated[0] = 0x80 + channel; + generated[1] = note; + generated[2] = velocity; + return generated; } } class SysExMessage extends MidiMessage { List headerData; int value; + List? rawData; /// System Exclusive Message - SysExMessage({this.headerData = const [], this.value = 0}); + SysExMessage({this.headerData = const [], this.value = 0, this.rawData}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List.fromList(headerData); - data.insert(0, 0xF0); // Start byte - data.addAll(_bytesForValue(value)); - data.add(0xF7); // End byte - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + if (rawData != null) { + return Uint8List.fromList(rawData!); + } + final generated = Uint8List.fromList(headerData); + generated.insert(0, 0xF0); // Start byte + generated.addAll(_bytesForValue(value)); + generated.add(0xF7); // End byte + return generated; } Int8List _bytesForValue(int value) { - print("bytes for value $value"); var bytes = Int8List(5); int absValue = value.abs(); @@ -152,34 +171,34 @@ class NRPN4Message extends MidiMessage { NRPN4Message({this.channel = 0, this.parameter = 0, this.value = 0}); @override - void send({String? deviceId, int? timestamp}) { - parameter = parameter.clamp(0, 16383); - int parameterMSB = parameter ~/ 128; - int parameterLSB = parameter & 0x7F; + Uint8List generateData() { + final clampedParameter = parameter.clamp(0, 16383); + final parameterMSB = clampedParameter ~/ 128; + final parameterLSB = clampedParameter & 0x7F; - value = value.clamp(0, 16383); - int valueMSB = value ~/ 128; - int valueLSB = value & 0x7F; + final clampedValue = value.clamp(0, 16383); + final valueMSB = clampedValue ~/ 128; + final valueLSB = clampedValue & 0x7F; - data = Uint8List(9); + final generated = Uint8List(9); // Data Entry MSB - data[0] = 0xB0 + channel; - data[1] = 0x63; - data[2] = parameterMSB; + generated[0] = 0xB0 + channel; + generated[1] = 0x63; + generated[2] = parameterMSB; // Data Entry LSB - data[3] = 0x62; - data[4] = parameterLSB; + generated[3] = 0x62; + generated[4] = parameterLSB; // Data Value MSB - data[5] = 0x06; - data[6] = valueMSB; + generated[5] = 0x06; + generated[6] = valueMSB; // Data Value LSB - data[7] = 0x26; - data[8] = valueLSB; + generated[7] = 0x26; + generated[8] = valueLSB; - super.send(deviceId: deviceId, timestamp: timestamp); + return generated; } } @@ -192,28 +211,27 @@ class NRPN3Message extends MidiMessage { NRPN3Message({this.channel = 0, this.parameter = 0, this.value = 0}); @override - void send({String? deviceId, int? timestamp}) { - parameter = parameter.clamp(0, 16383); - int parameterMSB = parameter ~/ 128; - int parameterLSB = parameter & 0x7F; - - value = value & 0x7F; + Uint8List generateData() { + final clampedParameter = parameter.clamp(0, 16383); + final parameterMSB = clampedParameter ~/ 128; + final parameterLSB = clampedParameter & 0x7F; + final clampedValue = value & 0x7F; - data = Uint8List(7); + final generated = Uint8List(7); // Data Entry MSB - data[0] = 0xB0 + channel; - data[1] = 0x63; - data[2] = parameterMSB; + generated[0] = 0xB0 + channel; + generated[1] = 0x63; + generated[2] = parameterMSB; // Data Entry LSB - data[3] = 0x62; - data[4] = parameterLSB; + generated[3] = 0x62; + generated[4] = parameterLSB; // Data Value - data[5] = 0x06; - data[6] = value; + generated[5] = 0x06; + generated[6] = clampedValue; - super.send(deviceId: deviceId, timestamp: timestamp); + return generated; } } @@ -234,26 +252,29 @@ class NRPNHexMessage extends MidiMessage { }); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(9); + Uint8List generateData() { + final hasValueLsb = valueLSB >= 0; + final generated = Uint8List(hasValueLsb ? 9 : 7); // Data Entry MSB - data[0] = 0xB0 + channel; - data[1] = 0x63; - data[2] = parameterMSB; + generated[0] = 0xB0 + channel; + generated[1] = 0x63; + generated[2] = parameterMSB; // Data Entry LSB - data[3] = 0x62; - data[4] = parameterLSB; + generated[3] = 0x62; + generated[4] = parameterLSB; // Data Value MSB - data[5] = 0x06; - data[6] = valueMSB; + generated[5] = 0x06; + generated[6] = valueMSB; // Data Value LSB - data[7] = 0x26; - data[8] = valueLSB; + if (hasValueLsb) { + generated[7] = 0x26; + generated[8] = valueLSB; + } - super.send(deviceId: deviceId, timestamp: timestamp); + return generated; } } @@ -265,19 +286,19 @@ class NRPNNullMessage extends MidiMessage { NRPNNullMessage({this.channel = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(6); + Uint8List generateData() { + final generated = Uint8List(6); // Data Entry MSB - data[0] = 0xB0 + channel; - data[1] = 0x63; - data[2] = 0x7F; + generated[0] = 0xB0 + channel; + generated[1] = 0x63; + generated[2] = 0x7F; // Data Entry LSB - data[3] = 0xB0 + channel; - data[4] = 0x62; - data[5] = 0x7F; + generated[3] = 0xB0 + channel; + generated[4] = 0x62; + generated[5] = 0x7F; - super.send(deviceId: deviceId, timestamp: timestamp); + return generated; } } @@ -300,29 +321,29 @@ class RPNMessage extends MidiMessage { RPNMessage({this.channel = 0, this.parameter = 0, this.value = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(12); + Uint8List generateData() { + final generated = Uint8List(12); // Data Entry MSB - data[0] = 0xB0 + channel; - data[1] = 0x65; - data[2] = parameter >> 7; + generated[0] = 0xB0 + channel; + generated[1] = 0x65; + generated[2] = parameter >> 7; // Data Entry LSB - data[3] = 0xB0 + channel; - data[4] = 0x64; - data[5] = parameter & 0x7F; + generated[3] = 0xB0 + channel; + generated[4] = 0x64; + generated[5] = parameter & 0x7F; // Data Value MSB - data[6] = 0xB0 + channel; - data[7] = 0x06; - data[8] = value >> 7; + generated[6] = 0xB0 + channel; + generated[7] = 0x06; + generated[8] = value >> 7; // Data Value LSB - data[9] = 0xB0 + channel; - data[10] = 0x26; - data[11] = value & 0x7F; + generated[9] = 0xB0 + channel; + generated[10] = 0x26; + generated[11] = value & 0x7F; - super.send(deviceId: deviceId, timestamp: timestamp); + return generated; } } @@ -343,32 +364,32 @@ class RPNHexMessage extends MidiMessage { }); @override - void send({String? deviceId, int? timestamp}) { - var length = valueLSB > -1 ? 12 : 9; - data = Uint8List(length); + Uint8List generateData() { + final length = valueLSB > -1 ? 12 : 9; + final generated = Uint8List(length); // Data Entry MSB - data[0] = 0xB0 + channel; - data[1] = 0x65; - data[2] = parameterMSB; + generated[0] = 0xB0 + channel; + generated[1] = 0x65; + generated[2] = parameterMSB; // Data Entry LSB - data[3] = 0xB0 + channel; - data[4] = 0x64; - data[5] = parameterLSB; + generated[3] = 0xB0 + channel; + generated[4] = 0x64; + generated[5] = parameterLSB; // Data Value MSB - data[6] = 0xB0 + channel; - data[7] = 0x06; - data[8] = valueMSB; + generated[6] = 0xB0 + channel; + generated[7] = 0x06; + generated[8] = valueMSB; // Data Value LSB if (valueLSB > -1) { - data[9] = 0xB0 + channel; - data[10] = 0x26; - data[11] = valueLSB; + generated[9] = 0xB0 + channel; + generated[10] = 0x26; + generated[11] = valueLSB; } - super.send(deviceId: deviceId, timestamp: timestamp); + return generated; } } @@ -380,19 +401,19 @@ class RPNNullMessage extends MidiMessage { RPNNullMessage({this.channel = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(6); + Uint8List generateData() { + final generated = Uint8List(6); // Data Entry MSB - data[0] = 0xB0 + channel; - data[1] = 0x65; - data[2] = 0x7F; + generated[0] = 0xB0 + channel; + generated[1] = 0x65; + generated[2] = 0x7F; // Data Entry LSB - data[3] = 0xB0 + channel; - data[4] = 0x64; - data[5] = 0x7F; + generated[3] = 0xB0 + channel; + generated[4] = 0x64; + generated[5] = 0x7F; - super.send(deviceId: deviceId, timestamp: timestamp); + return generated; } } @@ -404,18 +425,17 @@ class PitchBendMessage extends MidiMessage { PitchBendMessage({this.channel = 0, this.bend = 0}); @override - void send({String? deviceId, int? timestamp}) { - double clampedBend = (bend.clamp(-1, 1) + 1) / 2.0; - int targetValue = (clampedBend * 0x3FFF).round(); - - int bendMSB = targetValue >> 7; - int bendLSB = targetValue & 0x7F; - - data = Uint8List(3); - data[0] = 0xE0 + channel; - data[1] = bendLSB; - data[2] = bendMSB; - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + final clampedBend = (bend.clamp(-1.0, 1.0) + 1) / 2.0; + final targetValue = (clampedBend * 0x3FFF).round(); + final bendMSB = targetValue >> 7; + final bendLSB = targetValue & 0x7F; + + final generated = Uint8List(3); + generated[0] = 0xE0 + channel; + generated[1] = bendLSB; + generated[2] = bendMSB; + return generated; } } @@ -428,12 +448,12 @@ class PolyATMessage extends MidiMessage { PolyATMessage({this.channel = 0, this.note = 0, this.pressure = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(3); - data[0] = 0xA0 + channel; - data[1] = note; - data[2] = pressure; - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + final generated = Uint8List(3); + generated[0] = 0xA0 + channel; + generated[1] = note; + generated[2] = pressure; + return generated; } } @@ -445,11 +465,11 @@ class ATMessage extends MidiMessage { ATMessage({this.channel = 0, this.pressure = 0}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(2); - data[0] = 0xD0 + channel; - data[1] = pressure; - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + final generated = Uint8List(2); + generated[0] = 0xD0 + channel; + generated[1] = pressure; + return generated; } } @@ -457,10 +477,10 @@ class SenseMessage extends MidiMessage { /// Sense Message @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(1); - data[0] = 0xFE; - super.send(deviceId: deviceId, timestamp: timestamp); + Uint8List generateData() { + final generated = Uint8List(1); + generated[0] = 0xFE; + return generated; } } @@ -473,22 +493,22 @@ class ClockMessage extends MidiMessage { ClockMessage({this.type = ClockType.beat}); @override - void send({String? deviceId, int? timestamp}) { - data = Uint8List(1); + Uint8List generateData() { + final generated = Uint8List(1); switch (type) { case ClockType.beat: - data[0] = 0xF8; + generated[0] = 0xF8; break; case ClockType.start: - data[0] = 0xFA; + generated[0] = 0xFA; break; case ClockType.cont: - data[0] = 0xFB; + generated[0] = 0xFB; break; case ClockType.stop: - data[0] = 0xFC; + generated[0] = 0xFC; break; } - super.send(deviceId: deviceId, timestamp: timestamp); + return generated; } } diff --git a/lib/src/midi_message_parser.dart b/lib/src/midi_message_parser.dart new file mode 100644 index 00000000..d4bc1a46 --- /dev/null +++ b/lib/src/midi_message_parser.dart @@ -0,0 +1,435 @@ +part of '../flutter_midi_command_messages.dart'; + +/// Stateful parser that converts raw MIDI bytes into typed [MidiMessage]s. +/// +/// Supports all currently defined typed messages in `flutter_midi_command`: +/// CC, PC, Note On/Off, NRPN, RPN, SysEx, Clock, PolyAT, AT, and Pitch Bend. +class MidiMessageParser { + final List<_ParameterState> _channelStates = List<_ParameterState>.generate( + 16, + (_) => _ParameterState(), + ); + + int? _runningStatus; + int? _currentStatus; + int _expectedDataLength = 0; + final List _currentData = []; + + bool _insideSysEx = false; + final List _sysexBuffer = []; + + /// Parse [bytes] into typed messages. + /// + /// Set [flushPendingNrpn] to `false` to preserve partial NRPN/RPN state + /// across parse calls when packets are split across chunks. + List parse(Uint8List bytes, {bool flushPendingNrpn = true}) { + final messages = []; + + for (final byte in bytes) { + _consumeByte(byte & 0xFF, messages); + } + + if (flushPendingNrpn) { + _flushAllPending(messages); + } + + return messages; + } + + /// Clears parser state (running status, SysEx buffer, NRPN/RPN context). + void reset() { + _runningStatus = null; + _currentStatus = null; + _expectedDataLength = 0; + _currentData.clear(); + _insideSysEx = false; + _sysexBuffer.clear(); + for (final state in _channelStates) { + state.clear(); + } + } + + void _consumeByte(int byte, List messages) { + // Real-time single-byte messages are valid even while inside SysEx. + if (byte >= 0xF8) { + final realtime = _parseRealtimeByte(byte); + if (realtime != null) { + messages.add(realtime); + } + return; + } + + if (_insideSysEx) { + _sysexBuffer.add(byte); + if (byte == 0xF7) { + final message = SysExMessage(rawData: List.from(_sysexBuffer)); + message.data = Uint8List.fromList(_sysexBuffer); + messages.add(message); + _sysexBuffer.clear(); + _insideSysEx = false; + } + return; + } + + if (byte == 0xF0) { + _insideSysEx = true; + _sysexBuffer + ..clear() + ..add(byte); + _currentStatus = null; + _currentData.clear(); + _expectedDataLength = 0; + _runningStatus = null; + return; + } + + if ((byte & 0x80) != 0) { + _currentStatus = byte; + _currentData.clear(); + _expectedDataLength = _dataLengthForStatus(byte); + + if (byte < 0xF0) { + _runningStatus = byte; + } else { + _runningStatus = null; + } + + if (_expectedDataLength == 0) { + _currentStatus = null; + } + return; + } + + if (_currentStatus == null) { + if (_runningStatus == null) { + return; + } + _currentStatus = _runningStatus; + _expectedDataLength = _dataLengthForStatus(_currentStatus!); + _currentData.clear(); + } + + _currentData.add(byte & 0x7F); + if (_currentData.length < _expectedDataLength) { + return; + } + + final status = _currentStatus!; + _emitMessage(status, _currentData, messages); + _currentData.clear(); + _currentStatus = status < 0xF0 ? _runningStatus : null; + } + + MidiMessage? _parseRealtimeByte(int byte) { + switch (byte) { + case 0xF8: + final message = ClockMessage(type: ClockType.beat); + message.data = Uint8List.fromList([byte]); + return message; + case 0xFA: + final message = ClockMessage(type: ClockType.start); + message.data = Uint8List.fromList([byte]); + return message; + case 0xFB: + final message = ClockMessage(type: ClockType.cont); + message.data = Uint8List.fromList([byte]); + return message; + case 0xFC: + final message = ClockMessage(type: ClockType.stop); + message.data = Uint8List.fromList([byte]); + return message; + case 0xFE: + final message = SenseMessage(); + message.data = Uint8List.fromList([byte]); + return message; + default: + return null; + } + } + + int _dataLengthForStatus(int status) { + final statusClass = status & 0xF0; + switch (statusClass) { + case 0x80: + case 0x90: + case 0xA0: + case 0xB0: + case 0xE0: + return 2; + case 0xC0: + case 0xD0: + return 1; + } + + switch (status) { + case 0xF1: + case 0xF3: + return 1; + case 0xF2: + return 2; + default: + return 0; + } + } + + void _emitMessage(int status, List payload, List messages) { + final statusClass = status & 0xF0; + final channel = status & 0x0F; + + if (statusClass != 0xB0 && statusClass >= 0x80 && statusClass <= 0xE0) { + _flushPendingForChannel(channel, messages); + } + + switch (statusClass) { + case 0x80: + final message = NoteOffMessage( + channel: channel, + note: payload[0], + velocity: payload[1], + ); + message.data = Uint8List.fromList([status, ...payload]); + messages.add(message); + return; + + case 0x90: + final note = payload[0]; + final velocity = payload[1]; + if (velocity == 0) { + final message = NoteOffMessage( + channel: channel, + note: note, + velocity: velocity, + ); + message.data = Uint8List.fromList([status, ...payload]); + messages.add(message); + } else { + final message = NoteOnMessage( + channel: channel, + note: note, + velocity: velocity, + ); + message.data = Uint8List.fromList([status, ...payload]); + messages.add(message); + } + return; + + case 0xA0: + final message = PolyATMessage( + channel: channel, + note: payload[0], + pressure: payload[1], + ); + message.data = Uint8List.fromList([status, ...payload]); + messages.add(message); + return; + + case 0xB0: + messages.addAll(_handleControlChange(channel, payload[0], payload[1])); + return; + + case 0xC0: + final message = PCMessage(channel: channel, program: payload[0]); + message.data = Uint8List.fromList([status, ...payload]); + messages.add(message); + return; + + case 0xD0: + final message = ATMessage(channel: channel, pressure: payload[0]); + message.data = Uint8List.fromList([status, ...payload]); + messages.add(message); + return; + + case 0xE0: + final rawValue = ((payload[1] & 0x7F) << 7) | (payload[0] & 0x7F); + final bend = (rawValue / 0x3FFF) * 2.0 - 1.0; + final message = PitchBendMessage(channel: channel, bend: bend); + message.data = Uint8List.fromList([status, ...payload]); + messages.add(message); + return; + } + } + + List _handleControlChange( + int channel, + int controller, + int value, + ) { + final out = []; + final state = _channelStates[channel]; + final c = controller & 0x7F; + final v = value & 0x7F; + + switch (c) { + case 0x63: // NRPN parameter MSB + _flushPendingForChannel(channel, out); + state.nrpnParameterMsb = v; + state.nrpnParameterLsb = null; + return out; + case 0x62: // NRPN parameter LSB + _flushPendingForChannel(channel, out); + state.nrpnParameterLsb = v; + if (state.nrpnParameterMsb == 0x7F && state.nrpnParameterLsb == 0x7F) { + final message = NRPNNullMessage(channel: channel); + message.data = message.generateData(); + out.add(message); + state.clearNrpn(); + } + return out; + case 0x65: // RPN parameter MSB + _flushPendingForChannel(channel, out); + state.rpnParameterMsb = v; + state.rpnParameterLsb = null; + return out; + case 0x64: // RPN parameter LSB + _flushPendingForChannel(channel, out); + state.rpnParameterLsb = v; + if (state.rpnParameterMsb == 0x7F && state.rpnParameterLsb == 0x7F) { + final message = RPNNullMessage(channel: channel); + message.data = message.generateData(); + out.add(message); + state.clearRpn(); + } + return out; + case 0x06: // Data Entry MSB + if (state.hasNrpnParameter) { + _flushPendingForChannel(channel, out); + state.pendingNrpnValueMsb = v; + return out; + } + if (state.hasRpnParameter) { + _flushPendingForChannel(channel, out); + state.pendingRpnValueMsb = v; + return out; + } + out.add(_ccMessage(channel, c, v)); + return out; + case 0x26: // Data Entry LSB + if (state.hasNrpnParameter && state.pendingNrpnValueMsb != null) { + final message = NRPN4Message( + channel: channel, + parameter: state.nrpnParameterValue!, + value: ((state.pendingNrpnValueMsb! & 0x7F) << 7) | v, + ); + message.data = message.generateData(); + out.add(message); + state.pendingNrpnValueMsb = null; + return out; + } + if (state.hasRpnParameter && state.pendingRpnValueMsb != null) { + final message = RPNMessage( + channel: channel, + parameter: state.rpnParameterValue!, + value: ((state.pendingRpnValueMsb! & 0x7F) << 7) | v, + ); + message.data = message.generateData(); + out.add(message); + state.pendingRpnValueMsb = null; + return out; + } + out.add(_ccMessage(channel, c, v)); + return out; + default: + _flushPendingForChannel(channel, out); + out.add(_ccMessage(channel, c, v)); + return out; + } + } + + CCMessage _ccMessage(int channel, int controller, int value) { + final message = CCMessage( + channel: channel, + controller: controller, + value: value, + ); + message.data = message.generateData(); + return message; + } + + void _flushPendingForChannel(int channel, List out) { + final pending = _channelStates[channel].buildPendingMessage(channel); + if (pending != null) { + out.add(pending); + } + } + + void _flushAllPending(List out) { + for (var channel = 0; channel < _channelStates.length; channel += 1) { + _flushPendingForChannel(channel, out); + } + } +} + +class _ParameterState { + int? nrpnParameterMsb; + int? nrpnParameterLsb; + int? pendingNrpnValueMsb; + + int? rpnParameterMsb; + int? rpnParameterLsb; + int? pendingRpnValueMsb; + + bool get hasNrpnParameter => + nrpnParameterMsb != null && + nrpnParameterLsb != null && + !(nrpnParameterMsb == 0x7F && nrpnParameterLsb == 0x7F); + + int? get nrpnParameterValue => + hasNrpnParameter + ? ((nrpnParameterMsb! & 0x7F) << 7) | (nrpnParameterLsb! & 0x7F) + : null; + + bool get hasRpnParameter => + rpnParameterMsb != null && + rpnParameterLsb != null && + !(rpnParameterMsb == 0x7F && rpnParameterLsb == 0x7F); + + int? get rpnParameterValue => + hasRpnParameter + ? ((rpnParameterMsb! & 0x7F) << 7) | (rpnParameterLsb! & 0x7F) + : null; + + MidiMessage? buildPendingMessage(int channel) { + if (hasNrpnParameter && pendingNrpnValueMsb != null) { + final message = NRPN3Message( + channel: channel, + parameter: nrpnParameterValue!, + value: pendingNrpnValueMsb!, + ); + message.data = message.generateData(); + pendingNrpnValueMsb = null; + return message; + } + + if (hasRpnParameter && pendingRpnValueMsb != null) { + final message = RPNHexMessage( + channel: channel, + parameterMSB: rpnParameterMsb!, + parameterLSB: rpnParameterLsb!, + valueMSB: pendingRpnValueMsb!, + valueLSB: -1, + ); + message.data = message.generateData(); + pendingRpnValueMsb = null; + return message; + } + + return null; + } + + void clearNrpn() { + nrpnParameterMsb = null; + nrpnParameterLsb = null; + pendingNrpnValueMsb = null; + } + + void clearRpn() { + rpnParameterMsb = null; + rpnParameterLsb = null; + pendingRpnValueMsb = null; + } + + void clear() { + clearNrpn(); + clearRpn(); + } +} diff --git a/lib/src/midi_transports.dart b/lib/src/midi_transports.dart new file mode 100644 index 00000000..4163adcf --- /dev/null +++ b/lib/src/midi_transports.dart @@ -0,0 +1,33 @@ +enum MidiTransport { + /// Host/platform MIDI stack (for example USB, virtual host ports, + /// and paired devices exposed by the operating system). + native, + ble, + network, + virtual, +} + +class MidiCapabilities { + const MidiCapabilities({required this.supportedTransports, required this.enabledTransports}); + + final Set supportedTransports; + final Set enabledTransports; + + bool supports(MidiTransport transport) => supportedTransports.contains(transport); + + bool isEnabled(MidiTransport transport) => enabledTransports.contains(transport); +} + +class MidiTransportPolicy { + const MidiTransportPolicy({this.includedTransports, this.excludedTransports = const {}}); + + final Set? includedTransports; + final Set excludedTransports; + + Set resolveEnabledTransports(Set supported) { + final included = includedTransports ?? supported; + return included.where((transport) { + return supported.contains(transport) && !excludedTransports.contains(transport); + }).toSet(); + } +} diff --git a/lib/src/pigeon/README.md b/lib/src/pigeon/README.md new file mode 100644 index 00000000..ac5bb119 --- /dev/null +++ b/lib/src/pigeon/README.md @@ -0,0 +1,15 @@ +Generated Pigeon outputs should be written to this directory. +Run: + +``` +dart run pigeon --input pigeons/midi_api.dart +``` + +Current generated Dart output target: + +`packages/flutter_midi_command_platform_interface/lib/src/pigeon/midi_api.g.dart` + +Current generated host outputs: + +- `packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/pigeon/MidiApi.g.kt` +- `packages/flutter_midi_command_darwin/ios/Classes/pigeon/MidiApi.g.swift` diff --git a/macos/flutter_midi_command.podspec b/macos/flutter_midi_command.podspec deleted file mode 100644 index 512ee59d..00000000 --- a/macos/flutter_midi_command.podspec +++ /dev/null @@ -1,22 +0,0 @@ -# -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint flutter_midi_command.podspec' to validate before publishing. -# -Pod::Spec.new do |s| - s.name = 'flutter_midi_command' - s.version = '0.0.1' - s.summary = 'A new flutter plugin project.' - s.description = <<-DESC -A new flutter plugin project. - DESC - s.homepage = 'https://github.com/InvisibleWrench/FlutterMidiCommand' - s.license = { :file => '../LICENSE' } - s.author = { 'Invisible Wrench' => 'hello@invisiblewrench.com' } - s.source = { :path => '.' } - s.source_files = 'Classes/**/*' - s.dependency 'FlutterMacOS' - - s.platform = :osx, '10.13' - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } - s.swift_version = '5.0' -end diff --git a/melos.yaml b/melos.yaml new file mode 100644 index 00000000..0e542a99 --- /dev/null +++ b/melos.yaml @@ -0,0 +1,49 @@ +name: flutter_midi_command_workspace +packages: + - . + - packages/** + - example + +scripts: + bootstrap: + run: dart run melos bootstrap + analyze: + run: dart run melos exec --concurrency=1 --ignore=flutter_midi_command_example -- "flutter analyze --no-fatal-infos --no-fatal-warnings" + test: + run: dart run melos exec --dir-exists=test --concurrency=1 --ignore=flutter_midi_command_example --ignore=flutter_midi_command_web -- "flutter test" + test:web:chrome: + run: dart run melos exec --scope=flutter_midi_command_web -- "flutter test --platform chrome" + test:native:android: + run: bash ./example/android/gradlew -p example/android :flutter_midi_command_android:testDebugUnitTest + test:native:darwin: + run: swift test --package-path packages/flutter_midi_command_darwin/ios && swiftc packages/flutter_midi_command_darwin/ios/Classes/MidiPacketParser.swift packages/flutter_midi_command_darwin/ios/Tests/midi_packet_parser_smoke.swift -o /tmp/midi_packet_parser_smoke && /tmp/midi_packet_parser_smoke + test:native:linux: + run: dart run melos exec --scope=flutter_midi_command_linux -- "flutter test" + test:native:windows: + run: dart run melos exec --scope=flutter_midi_command_windows -- "flutter test" + test:example:integration:android: + run: dart run melos exec --scope=flutter_midi_command_example -- "bash tool/run_android_smoke_test.sh" + test:example:integration:ios: + run: dart run melos exec --scope=flutter_midi_command_example -- "bash tool/run_ios_smoke_test.sh" + test:example:integration:linux: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter test integration_test/smoke_test.dart -d linux" + test:example:integration:macos: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter test integration_test/smoke_test.dart -d macos" + test:example:integration:web: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter test test/smoke_web_test.dart --platform chrome" + test:example:integration:windows: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter test integration_test/smoke_test.dart -d windows" + build:example:android: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter build apk --debug --target-platform android-arm64 --android-skip-build-dependency-validation" + build:example:linux: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter build linux --debug" + build:example:ios: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter build ios --debug --no-codesign" + build:example:macos: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter build macos --debug" + build:example:windows: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter build windows --debug" + build:example:web: + run: dart run melos exec --scope=flutter_midi_command_example -- "flutter build web --debug" + format: + run: dart run melos exec -- "dart format --set-exit-if-changed ." diff --git a/melos_flutter_midi_command.iml b/melos_flutter_midi_command.iml new file mode 100644 index 00000000..9fc8ce79 --- /dev/null +++ b/melos_flutter_midi_command.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/melos_flutter_midi_command_workspace.iml b/melos_flutter_midi_command_workspace.iml new file mode 100644 index 00000000..597d6e49 --- /dev/null +++ b/melos_flutter_midi_command_workspace.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/flutter_midi_command_android/CHANGELOG.md b/packages/flutter_midi_command_android/CHANGELOG.md new file mode 100644 index 00000000..e2caa50d --- /dev/null +++ b/packages/flutter_midi_command_android/CHANGELOG.md @@ -0,0 +1,4 @@ +## 1.0.0 + +- Initial federated Android implementation release in monorepo layout. +- Host MIDI API contracts migrated to generated Pigeon interfaces. diff --git a/packages/flutter_midi_command_android/LICENSE b/packages/flutter_midi_command_android/LICENSE new file mode 100644 index 00000000..664f94e0 --- /dev/null +++ b/packages/flutter_midi_command_android/LICENSE @@ -0,0 +1,25 @@ +Copyright 2020 InvisibleWrench. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Invisible Wrench ApS nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/flutter_midi_command_android/README.md b/packages/flutter_midi_command_android/README.md new file mode 100644 index 00000000..1dcd163a --- /dev/null +++ b/packages/flutter_midi_command_android/README.md @@ -0,0 +1,8 @@ +# flutter_midi_command_android + +[![pub package](https://img.shields.io/pub/v/flutter_midi_command_android.svg)](https://pub.dev/packages/flutter_midi_command_android) + +Android host implementation for `flutter_midi_command`. + +This package is an endorsed federated implementation and is not intended to be used directly. +Add `flutter_midi_command` to your app; Flutter will select this implementation on Android. diff --git a/android/.gitignore b/packages/flutter_midi_command_android/android/.gitignore similarity index 100% rename from android/.gitignore rename to packages/flutter_midi_command_android/android/.gitignore diff --git a/android/build.gradle.kts b/packages/flutter_midi_command_android/android/build.gradle.kts similarity index 84% rename from android/build.gradle.kts rename to packages/flutter_midi_command_android/android/build.gradle.kts index f92dd6d7..d64b1237 100644 --- a/android/build.gradle.kts +++ b/packages/flutter_midi_command_android/android/build.gradle.kts @@ -12,8 +12,8 @@ rootProject.allprojects { } android { - namespace = "com.invisiblewrench.flutter_midi_command_example" - compileSdk = 34 // use flutter.compileSdkVersion when Flutter 3.27.0 is widely used + namespace = "com.invisiblewrench.fluttermidicommand" + compileSdk = 36 sourceSets { getByName("main").java.srcDirs("src/main/kotlin") diff --git a/android/settings.gradle.kts b/packages/flutter_midi_command_android/android/settings.gradle.kts similarity index 100% rename from android/settings.gradle.kts rename to packages/flutter_midi_command_android/android/settings.gradle.kts diff --git a/packages/flutter_midi_command_android/android/src/main/AndroidManifest.xml b/packages/flutter_midi_command_android/android/src/main/AndroidManifest.xml new file mode 100644 index 00000000..1363e3f7 --- /dev/null +++ b/packages/flutter_midi_command_android/android/src/main/AndroidManifest.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/ConnectedDevice.kt b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/ConnectedDevice.kt new file mode 100644 index 00000000..e2bd0848 --- /dev/null +++ b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/ConnectedDevice.kt @@ -0,0 +1,100 @@ +package com.invisiblewrench.fluttermidicommand + +import android.content.pm.ServiceInfo +import android.media.midi.* +import com.invisiblewrench.fluttermidicommand.pigeon.MidiDeviceType +import com.invisiblewrench.fluttermidicommand.pigeon.MidiHostDevice +import com.invisiblewrench.fluttermidicommand.pigeon.MidiPacket + +class ConnectedDevice( + device: MidiDevice, + private val onSetupChanged: (String) -> Unit, + private val onDataReceived: (MidiPacket) -> Unit, + private val onConnectionChanged: (String, Boolean) -> Unit, + private val deviceType: MidiDeviceType, +) : Device(deviceIdForInfo(device.info), device.info.type.toString()) { + var inputPort: MidiInputPort? = null + var outputPort: MidiOutputPort? = null + + private var isOwnVirtualDevice = false + + init { + this.midiDevice = device + } + + override fun connect() { + this.midiDevice.info.let { + val serviceInfo = it.properties.getParcelable("service_info") + if (serviceInfo?.name == "com.invisiblewrench.fluttermidicommand.VirtualDeviceService") { + isOwnVirtualDevice = true + this.receiver = RXReceiver(_toHostDevice(MidiDeviceType.OWN_VIRTUAL), onDataReceived) + } else { + this.receiver = RXReceiver(_toHostDevice(deviceType), onDataReceived) + if (it.inputPortCount > 0) { + this.inputPort = this.midiDevice.openInputPort(0) + } + } + if (it.outputPortCount > 0) { + this.outputPort = this.midiDevice.openOutputPort(0) + this.outputPort?.connect(this.receiver) + } + } + onSetupChanged("deviceConnected") + onConnectionChanged(id, true) + } + + private fun _toHostDevice(type: MidiDeviceType): MidiHostDevice { + return MidiHostDevice( + id = deviceIdForInfo(this.midiDevice.info), + name = this.midiDevice.info.properties.getString(MidiDeviceInfo.PROPERTY_NAME), + type = type, + connected = true, + inputs = null, + outputs = null, + ) + } + + override fun send(data: ByteArray, timestamp: Long?) { + if(isOwnVirtualDevice) { + if (timestamp == null) + this.receiver?.send(data, 0, data.size) + else + this.receiver?.send(data, 0, data.size, timestamp) + + } else { + this.inputPort?.send(data, 0, data.count(), if (timestamp is Long) timestamp else 0) + } + } + + override fun close() { + this.inputPort?.flush() + this.inputPort?.close() + this.outputPort?.close() + this.outputPort?.disconnect(this.receiver) + this.receiver = null + this.midiDevice.close() + + onSetupChanged("deviceDisconnected") + onConnectionChanged(id, false) + } + + class RXReceiver( + private val deviceInfo: MidiHostDevice, + private val onDataReceived: (MidiPacket) -> Unit, + ) : MidiReceiver() { + private val parser = MidiPacketParser { bytes, timestamp -> + onDataReceived( + MidiPacket( + device = deviceInfo, + data = bytes, + timestamp = timestamp, + ), + ) + } + + override fun onSend(msg: ByteArray?, offset: Int, count: Int, timestamp: Long) { + msg?.also { parser.parse(it, offset, count, timestamp) } + } + } + +} diff --git a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Device.kt b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Device.kt similarity index 81% rename from android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Device.kt rename to packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Device.kt index 368e31b5..1948ed4c 100644 --- a/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Device.kt +++ b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/Device.kt @@ -4,21 +4,19 @@ import android.bluetooth.BluetoothDevice import android.media.midi.MidiDevice import android.media.midi.MidiDeviceInfo import android.media.midi.MidiReceiver -import io.flutter.plugin.common.MethodChannel.Result abstract class Device { var id:String var type:String lateinit var midiDevice: MidiDevice protected var receiver:MidiReceiver? = null - protected var setupStreamHandler: FMCStreamHandler? = null constructor(id: String, type: String) { this.id = id this.type = type } - abstract fun connectWithStreamHandler(streamHandler: FMCStreamHandler, connectResult:Result?) + abstract fun connect() abstract fun send(data: ByteArray, timestamp: Long?) diff --git a/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FlutterMidiCommandPlugin.kt b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FlutterMidiCommandPlugin.kt new file mode 100644 index 00000000..77cde36f --- /dev/null +++ b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/FlutterMidiCommandPlugin.kt @@ -0,0 +1,294 @@ +package com.invisiblewrench.fluttermidicommand + +import android.app.Activity +import android.content.ComponentName +import android.content.Context +import android.content.pm.PackageManager +import android.content.pm.ServiceInfo +import android.media.midi.MidiDevice +import android.media.midi.MidiDeviceInfo +import android.media.midi.MidiDeviceStatus +import android.media.midi.MidiManager +import android.os.Handler +import com.invisiblewrench.fluttermidicommand.pigeon.FlutterError +import com.invisiblewrench.fluttermidicommand.pigeon.MidiDeviceType +import com.invisiblewrench.fluttermidicommand.pigeon.MidiFlutterApi +import com.invisiblewrench.fluttermidicommand.pigeon.MidiHostApi +import com.invisiblewrench.fluttermidicommand.pigeon.MidiHostDevice +import com.invisiblewrench.fluttermidicommand.pigeon.MidiPacket +import com.invisiblewrench.fluttermidicommand.pigeon.MidiPort +import io.flutter.embedding.engine.plugins.FlutterPlugin +import io.flutter.embedding.engine.plugins.activity.ActivityAware +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding +import io.flutter.plugin.common.BinaryMessenger + +/** FlutterMidiCommandPlugin */ +class FlutterMidiCommandPlugin : FlutterPlugin, ActivityAware, MidiHostApi { + + private lateinit var context: Context + private var activity: Activity? = null + private lateinit var messenger: BinaryMessenger + + private lateinit var midiManager: MidiManager + private lateinit var handler: Handler + + private var isSupported: Boolean = false + private var isMidiCallbackRegistered: Boolean = false + + private val connectedDevices = mutableMapOf() + private lateinit var flutterApi: MidiFlutterApi + + override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) { + messenger = binding.binaryMessenger + context = binding.applicationContext + handler = Handler(context.mainLooper) + + isSupported = context.packageManager.hasSystemFeature(PackageManager.FEATURE_MIDI) + + flutterApi = MidiFlutterApi(messenger) + MidiHostApi.setUp(messenger, this) + + if (!isSupported) { + MidiLogger.debug("MIDI not supported") + return + } + + midiManager = context.getSystemService(Context.MIDI_SERVICE) as MidiManager + midiManager.registerDeviceCallback(deviceConnectionCallback, handler) + isMidiCallbackRegistered = true + + VirtualDeviceService.onDataReceived = this::sendDataPacket + } + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { + teardownInternal() + MidiHostApi.setUp(messenger, null) + } + + override fun onAttachedToActivity(binding: ActivityPluginBinding) { + activity = binding.activity + } + + override fun onDetachedFromActivityForConfigChanges() { + activity = null + } + + override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) { + activity = binding.activity + } + + override fun onDetachedFromActivity() { + activity = null + } + + private fun sendSetupUpdate(update: String) { + handler.post { + flutterApi.onSetupChanged(update) { result -> + result.exceptionOrNull()?.let { + MidiLogger.debug("Failed to send setup update: $it") + } + } + } + } + + private fun sendConnectionStateUpdate(deviceId: String, connected: Boolean) { + handler.post { + flutterApi.onDeviceConnectionStateChanged(deviceId, connected) { result -> + result.exceptionOrNull()?.let { + MidiLogger.debug("Failed to send connection state update: $it") + } + } + } + } + + private fun sendDataPacket(packet: MidiPacket) { + handler.post { + flutterApi.onDataReceived(packet) { result -> + result.exceptionOrNull()?.let { + MidiLogger.debug("Failed to send MIDI packet: $it") + } + } + } + } + + override fun listDevices(): List { + if (!isSupported) { + return emptyList() + } + + return midiManager.devices + .mapNotNull { info -> + val type = mapDeviceType(info) + + val id = Device.deviceIdForInfo(info) + MidiHostDevice( + id = id, + name = info.properties.getString(MidiDeviceInfo.PROPERTY_NAME) ?: "-", + type = type, + connected = connectedDevices.contains(id), + inputs = listOfPorts(info.inputPortCount, isInput = true), + outputs = listOfPorts(info.outputPortCount, isInput = false), + ) + } + } + + override fun connect(device: MidiHostDevice, ports: List?) { + if (!isSupported) { + throw FlutterError("ERROR", "MIDI not supported", null) + } + + val deviceId = device.id ?: throw FlutterError("ERROR", "Missing device id", null) + val deviceType = device.type ?: MidiDeviceType.UNKNOWN + if (connectedDevices.containsKey(deviceId)) { + return + } + + val target = midiManager.devices.firstOrNull { info -> Device.deviceIdForInfo(info) == deviceId } + ?: throw FlutterError("ERROR", "Device not found", null) + + midiManager.openDevice(target, { openedDevice: MidiDevice? -> + if (openedDevice == null) { + sendSetupUpdate("connectionFailed") + sendConnectionStateUpdate(deviceId, false) + return@openDevice + } + + val connectedDevice = ConnectedDevice( + openedDevice, + this::sendSetupUpdate, + this::sendDataPacket, + this::sendConnectionStateUpdate, + deviceType, + ) + connectedDevices[connectedDevice.id] = connectedDevice + connectedDevice.connect() + }, handler) + } + + override fun disconnect(deviceId: String) { + connectedDevices[deviceId]?.also { + it.close() + connectedDevices.remove(deviceId) + } + } + + override fun teardown() { + teardownInternal() + } + + private fun teardownInternal() { + stopVirtualService() + + connectedDevices.values.forEach { device -> + device.close() + } + connectedDevices.clear() + + if (isSupported && isMidiCallbackRegistered) { + midiManager.unregisterDeviceCallback(deviceConnectionCallback) + isMidiCallbackRegistered = false + } + + VirtualDeviceService.onDataReceived = null + } + + override fun sendData(packet: MidiPacket) { + val data = packet.data ?: return + val timestamp = packet.timestamp + val deviceId = packet.device?.id + + if (deviceId != null) { + connectedDevices[deviceId]?.send(data, timestamp) + return + } + + connectedDevices.values.forEach { device -> + device.send(data, timestamp) + } + } + + override fun addVirtualDevice(name: String?) { + startVirtualService() + } + + override fun removeVirtualDevice(name: String?) { + stopVirtualService() + } + + override fun isNetworkSessionEnabled(): Boolean? { + return false + } + + override fun setNetworkSessionEnabled(enabled: Boolean) { + // Android has no equivalent CoreMIDI network session. + } + + private fun listOfPorts(count: Int, isInput: Boolean): List { + return (0 until count).map { index -> + MidiPort( + id = index.toLong(), + connected = false, + isInput = isInput, + ) + } + } + + private fun mapDeviceType(info: MidiDeviceInfo): MidiDeviceType { + val serviceInfo = info.properties.getParcelable("service_info") + return when { + serviceInfo?.name == "com.invisiblewrench.fluttermidicommand.VirtualDeviceService" -> MidiDeviceType.OWN_VIRTUAL + info.type == MidiDeviceInfo.TYPE_BLUETOOTH -> MidiDeviceType.BLE + info.type == MidiDeviceInfo.TYPE_VIRTUAL -> MidiDeviceType.VIRTUAL_DEVICE + else -> MidiDeviceType.SERIAL + } + } + + private fun startVirtualService() { + val component = ComponentName(context, "com.invisiblewrench.fluttermidicommand.VirtualDeviceService") + context.packageManager.setComponentEnabledSetting( + component, + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.SYNCHRONOUS or PackageManager.DONT_KILL_APP, + ) + } + + private fun stopVirtualService() { + val component = ComponentName(context, "com.invisiblewrench.fluttermidicommand.VirtualDeviceService") + context.packageManager.setComponentEnabledSetting( + component, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP, + ) + } + + private val deviceConnectionCallback = object : MidiManager.DeviceCallback() { + + override fun onDeviceAdded(device: MidiDeviceInfo?) { + super.onDeviceAdded(device) + if (device != null) { + sendSetupUpdate("deviceFound") + } + } + + override fun onDeviceRemoved(device: MidiDeviceInfo?) { + super.onDeviceRemoved(device) + if (device == null) { + return + } + + val id = Device.deviceIdForInfo(device) + connectedDevices[id]?.also { + connectedDevices.remove(id) + sendConnectionStateUpdate(id, false) + } + sendSetupUpdate("deviceLost") + } + + override fun onDeviceStatusChanged(status: MidiDeviceStatus?) { + super.onDeviceStatusChanged(status) + if (status != null) { + sendSetupUpdate(status.toString()) + } + } + } +} diff --git a/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/MidiLogger.kt b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/MidiLogger.kt new file mode 100644 index 00000000..afed5680 --- /dev/null +++ b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/MidiLogger.kt @@ -0,0 +1,14 @@ +package com.invisiblewrench.fluttermidicommand + +import android.util.Log + +internal object MidiLogger { + private const val tag = "FlutterMIDICommand" + private const val debugLoggingEnabled = false + + fun debug(message: String) { + if (debugLoggingEnabled) { + Log.d(tag, message) + } + } +} diff --git a/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/MidiPacketParser.kt b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/MidiPacketParser.kt new file mode 100644 index 00000000..fd9a56f7 --- /dev/null +++ b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/MidiPacketParser.kt @@ -0,0 +1,105 @@ +package com.invisiblewrench.fluttermidicommand + +internal class MidiPacketParser( + private val onPacket: (ByteArray, Long) -> Unit, +) { + private enum class ParserState { + HEADER, + PARAMS, + SYSEX, + } + + private var parserState = ParserState.HEADER + private val sysExBuffer = mutableListOf() + private val midiBuffer = mutableListOf() + private var midiPacketLength = 0 + private var statusByte: Byte = 0 + + fun parse(data: ByteArray, offset: Int, count: Int, timestamp: Long) { + if (count <= 0 || offset < 0 || offset >= data.size) { + return + } + val endExclusive = (offset + count).coerceAtMost(data.size) + for (index in offset until endExclusive) { + val midiByte = data[index] + val midiInt = midiByte.toInt() and 0xFF + + when (parserState) { + ParserState.HEADER -> { + if (midiInt == 0xF0) { + parserState = ParserState.SYSEX + sysExBuffer.clear() + sysExBuffer.add(midiByte) + } else if ((midiInt and 0x80) == 0x80) { + // Regular status byte. + statusByte = midiByte + midiPacketLength = lengthOfMessageType(midiInt) + if (midiPacketLength <= 0) { + parserState = ParserState.HEADER + continue + } + midiBuffer.clear() + midiBuffer.add(midiByte) + parserState = ParserState.PARAMS + finalizeMessageIfComplete(timestamp) + } else if (statusByte != 0.toByte()) { + // Running status uses the latest status byte. + midiPacketLength = lengthOfMessageType(statusByte.toInt() and 0xFF) + if (midiPacketLength <= 1) { + parserState = ParserState.HEADER + continue + } + midiBuffer.clear() + midiBuffer.add(statusByte) + midiBuffer.add(midiByte) + parserState = ParserState.PARAMS + finalizeMessageIfComplete(timestamp) + } + } + + ParserState.SYSEX -> { + if (midiInt == 0xF0) { + // Some Android stacks can emit back-to-back SysEx starts without a closing F7. + // Close the previous frame and start a new one. + sysExBuffer.add(0xF7.toByte()) + onPacket(sysExBuffer.toByteArray(), timestamp) + sysExBuffer.clear() + } + sysExBuffer.add(midiByte) + if (midiInt == 0xF7) { + onPacket(sysExBuffer.toByteArray(), timestamp) + parserState = ParserState.HEADER + } + } + + ParserState.PARAMS -> { + midiBuffer.add(midiByte) + finalizeMessageIfComplete(timestamp) + } + } + } + } + + private fun finalizeMessageIfComplete(timestamp: Long) { + if (midiPacketLength > 0 && midiBuffer.size == midiPacketLength) { + onPacket(midiBuffer.toByteArray(), timestamp) + parserState = ParserState.HEADER + } + } + + private fun lengthOfMessageType(type: Int): Int { + val midiType = type and 0xF0 + + when (type) { + 0xF6, 0xF8, 0xFA, 0xFB, 0xFC, 0xFF, 0xFE -> return 1 + 0xF1, 0xF3 -> return 2 + 0xF2 -> return 3 + } + + when (midiType) { + 0xC0, 0xD0 -> return 2 + 0x80, 0x90, 0xA0, 0xB0, 0xE0 -> return 3 + } + return 0 + } +} diff --git a/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/VirtualDeviceService.kt b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/VirtualDeviceService.kt new file mode 100644 index 00000000..baa273aa --- /dev/null +++ b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/VirtualDeviceService.kt @@ -0,0 +1,67 @@ +package com.invisiblewrench.fluttermidicommand + +import android.content.Intent +import android.media.midi.MidiDeviceService +import android.media.midi.MidiReceiver +import com.invisiblewrench.fluttermidicommand.pigeon.MidiDeviceType +import com.invisiblewrench.fluttermidicommand.pigeon.MidiHostDevice +import com.invisiblewrench.fluttermidicommand.pigeon.MidiPacket + +class VirtualDeviceService() : MidiDeviceService() { + var receiver:VirtualRXReceiver? = null + + override fun onGetInputPortReceivers(): Array { + MidiLogger.debug("Create receiver $this") + if (receiver == null) { + receiver = VirtualRXReceiver(onDataReceived) + } + return arrayOf(receiver!!) + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + MidiLogger.debug("onStartCommand") + + return START_NOT_STICKY + } + + override fun onDestroy() { + receiver = null; + super.onDestroy() + } + + class VirtualRXReceiver(private val onDataReceived: ((MidiPacket) -> Unit)?) : MidiReceiver() { + private val deviceInfo = MidiHostDevice( + id = "FlutterMidiCommand_Virtual", + name = "FlutterMidiCommand_Virtual", + type = MidiDeviceType.OWN_VIRTUAL, + connected = true, + inputs = null, + outputs = null, + ) + + override fun onSend(msg: ByteArray?, offset: Int, count: Int, timestamp: Long) { + msg?.also { + val data = it.slice(IntRange(offset, offset + count - 1)).toByteArray() + onDataReceived?.invoke( + MidiPacket( + device = deviceInfo, + data = data, + timestamp = timestamp, + ) + ) + } + } + + override fun send(msg: ByteArray?, offset: Int, count: Int) { + MidiLogger.debug("Send override") + super.send(msg, offset, count) + } + } + + companion + + object { + var onDataReceived: ((MidiPacket) -> Unit)? = null + } + +} diff --git a/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/pigeon/MidiApi.g.kt b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/pigeon/MidiApi.g.kt new file mode 100644 index 00000000..4a7dee32 --- /dev/null +++ b/packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/pigeon/MidiApi.g.kt @@ -0,0 +1,434 @@ +// Autogenerated from Pigeon (v22.7.4), do not edit directly. +// See also: https://pub.dev/packages/pigeon +@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") + +package com.invisiblewrench.fluttermidicommand.pigeon + +import android.util.Log +import io.flutter.plugin.common.BasicMessageChannel +import io.flutter.plugin.common.BinaryMessenger +import io.flutter.plugin.common.EventChannel +import io.flutter.plugin.common.MessageCodec +import io.flutter.plugin.common.StandardMethodCodec +import io.flutter.plugin.common.StandardMessageCodec +import java.io.ByteArrayOutputStream +import java.nio.ByteBuffer + +private fun wrapResult(result: Any?): List { + return listOf(result) +} + +private fun wrapError(exception: Throwable): List { + return if (exception is FlutterError) { + listOf( + exception.code, + exception.message, + exception.details + ) + } else { + listOf( + exception.javaClass.simpleName, + exception.toString(), + "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception) + ) + } +} + +private fun createConnectionError(channelName: String): FlutterError { + return FlutterError("channel-error", "Unable to establish connection on channel: '$channelName'.", "")} + +/** + * Error class for passing custom error details to Flutter via a thrown PlatformException. + * @property code The error code. + * @property message The error message. + * @property details The error details. Must be a datatype supported by the api codec. + */ +class FlutterError ( + val code: String, + override val message: String? = null, + val details: Any? = null +) : Throwable() + +enum class MidiDeviceType(val raw: Int) { + SERIAL(0), + BLE(1), + VIRTUAL_DEVICE(2), + OWN_VIRTUAL(3), + NETWORK(4), + UNKNOWN(5); + + companion object { + fun ofRaw(raw: Int): MidiDeviceType? { + return values().firstOrNull { it.raw == raw } + } + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class MidiHostDevice ( + val id: String? = null, + val name: String? = null, + val type: MidiDeviceType? = null, + val connected: Boolean? = null, + val inputs: List? = null, + val outputs: List? = null +) + { + companion object { + fun fromList(pigeonVar_list: List): MidiHostDevice { + val id = pigeonVar_list[0] as String? + val name = pigeonVar_list[1] as String? + val type = pigeonVar_list[2] as MidiDeviceType? + val connected = pigeonVar_list[3] as Boolean? + val inputs = pigeonVar_list[4] as List? + val outputs = pigeonVar_list[5] as List? + return MidiHostDevice(id, name, type, connected, inputs, outputs) + } + } + fun toList(): List { + return listOf( + id, + name, + type, + connected, + inputs, + outputs, + ) + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class MidiPort ( + val id: Long? = null, + val connected: Boolean? = null, + val isInput: Boolean? = null +) + { + companion object { + fun fromList(pigeonVar_list: List): MidiPort { + val id = pigeonVar_list[0] as Long? + val connected = pigeonVar_list[1] as Boolean? + val isInput = pigeonVar_list[2] as Boolean? + return MidiPort(id, connected, isInput) + } + } + fun toList(): List { + return listOf( + id, + connected, + isInput, + ) + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class MidiPacket ( + val device: MidiHostDevice? = null, + val data: ByteArray? = null, + val timestamp: Long? = null +) + { + companion object { + fun fromList(pigeonVar_list: List): MidiPacket { + val device = pigeonVar_list[0] as MidiHostDevice? + val data = pigeonVar_list[1] as ByteArray? + val timestamp = pigeonVar_list[2] as Long? + return MidiPacket(device, data, timestamp) + } + } + fun toList(): List { + return listOf( + device, + data, + timestamp, + ) + } +} +private open class MidiApiPigeonCodec : StandardMessageCodec() { + override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? { + return when (type) { + 129.toByte() -> { + return (readValue(buffer) as Long?)?.let { + MidiDeviceType.ofRaw(it.toInt()) + } + } + 130.toByte() -> { + return (readValue(buffer) as? List)?.let { + MidiHostDevice.fromList(it) + } + } + 131.toByte() -> { + return (readValue(buffer) as? List)?.let { + MidiPort.fromList(it) + } + } + 132.toByte() -> { + return (readValue(buffer) as? List)?.let { + MidiPacket.fromList(it) + } + } + else -> super.readValueOfType(type, buffer) + } + } + override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { + when (value) { + is MidiDeviceType -> { + stream.write(129) + writeValue(stream, value.raw) + } + is MidiHostDevice -> { + stream.write(130) + writeValue(stream, value.toList()) + } + is MidiPort -> { + stream.write(131) + writeValue(stream, value.toList()) + } + is MidiPacket -> { + stream.write(132) + writeValue(stream, value.toList()) + } + else -> super.writeValue(stream, value) + } + } +} + +/** Generated interface from Pigeon that represents a handler of messages from Flutter. */ +interface MidiHostApi { + fun listDevices(): List + fun connect(device: MidiHostDevice, ports: List?) + fun disconnect(deviceId: String) + fun teardown() + fun sendData(packet: MidiPacket) + fun addVirtualDevice(name: String?) + fun removeVirtualDevice(name: String?) + fun isNetworkSessionEnabled(): Boolean? + fun setNetworkSessionEnabled(enabled: Boolean) + + companion object { + /** The codec used by MidiHostApi. */ + val codec: MessageCodec by lazy { + MidiApiPigeonCodec() + } + /** Sets up an instance of `MidiHostApi` to handle messages through the `binaryMessenger`. */ + @JvmOverloads + fun setUp(binaryMessenger: BinaryMessenger, api: MidiHostApi?, messageChannelSuffix: String = "") { + val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.listDevices$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { _, reply -> + val wrapped: List = try { + listOf(api.listDevices()) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.connect$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val deviceArg = args[0] as MidiHostDevice + val portsArg = args[1] as List? + val wrapped: List = try { + api.connect(deviceArg, portsArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.disconnect$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val deviceIdArg = args[0] as String + val wrapped: List = try { + api.disconnect(deviceIdArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.teardown$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { _, reply -> + val wrapped: List = try { + api.teardown() + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.sendData$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val packetArg = args[0] as MidiPacket + val wrapped: List = try { + api.sendData(packetArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.addVirtualDevice$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val nameArg = args[0] as String? + val wrapped: List = try { + api.addVirtualDevice(nameArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.removeVirtualDevice$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val nameArg = args[0] as String? + val wrapped: List = try { + api.removeVirtualDevice(nameArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.isNetworkSessionEnabled$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { _, reply -> + val wrapped: List = try { + listOf(api.isNetworkSessionEnabled()) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = BasicMessageChannel(binaryMessenger, "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.setNetworkSessionEnabled$separatedMessageChannelSuffix", codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val enabledArg = args[0] as Boolean + val wrapped: List = try { + api.setNetworkSessionEnabled(enabledArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + } + } +} +/** Generated class from Pigeon that represents Flutter messages that can be called from Kotlin. */ +class MidiFlutterApi(private val binaryMessenger: BinaryMessenger, private val messageChannelSuffix: String = "") { + companion object { + /** The codec used by MidiFlutterApi. */ + val codec: MessageCodec by lazy { + MidiApiPigeonCodec() + } + } + fun onSetupChanged(setupChangeArg: String, callback: (Result) -> Unit) +{ + val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" + val channelName = "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onSetupChanged$separatedMessageChannelSuffix" + val channel = BasicMessageChannel(binaryMessenger, channelName, codec) + channel.send(listOf(setupChangeArg)) { + if (it is List<*>) { + if (it.size > 1) { + callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?))) + } else { + callback(Result.success(Unit)) + } + } else { + callback(Result.failure(createConnectionError(channelName))) + } + } + } + fun onDataReceived(packetArg: MidiPacket, callback: (Result) -> Unit) +{ + val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" + val channelName = "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDataReceived$separatedMessageChannelSuffix" + val channel = BasicMessageChannel(binaryMessenger, channelName, codec) + channel.send(listOf(packetArg)) { + if (it is List<*>) { + if (it.size > 1) { + callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?))) + } else { + callback(Result.success(Unit)) + } + } else { + callback(Result.failure(createConnectionError(channelName))) + } + } + } + fun onDeviceConnectionStateChanged(deviceIdArg: String, connectedArg: Boolean, callback: (Result) -> Unit) +{ + val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" + val channelName = "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDeviceConnectionStateChanged$separatedMessageChannelSuffix" + val channel = BasicMessageChannel(binaryMessenger, channelName, codec) + channel.send(listOf(deviceIdArg, connectedArg)) { + if (it is List<*>) { + if (it.size > 1) { + callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?))) + } else { + callback(Result.success(Unit)) + } + } else { + callback(Result.failure(createConnectionError(channelName))) + } + } + } +} diff --git a/android/src/main/res/xml/virtual_device_info.xml b/packages/flutter_midi_command_android/android/src/main/res/xml/virtual_device_info.xml similarity index 100% rename from android/src/main/res/xml/virtual_device_info.xml rename to packages/flutter_midi_command_android/android/src/main/res/xml/virtual_device_info.xml diff --git a/packages/flutter_midi_command_android/android/src/test/kotlin/com/invisiblewrench/fluttermidicommand/MidiPacketParserTest.kt b/packages/flutter_midi_command_android/android/src/test/kotlin/com/invisiblewrench/fluttermidicommand/MidiPacketParserTest.kt new file mode 100644 index 00000000..26323a1a --- /dev/null +++ b/packages/flutter_midi_command_android/android/src/test/kotlin/com/invisiblewrench/fluttermidicommand/MidiPacketParserTest.kt @@ -0,0 +1,78 @@ +package com.invisiblewrench.fluttermidicommand + +import kotlin.test.Test +import kotlin.test.assertContentEquals +import kotlin.test.assertEquals + +class MidiPacketParserTest { + + @Test + fun parsesChannelMessagesWithRunningStatus() { + val packets = mutableListOf() + val parser = MidiPacketParser { bytes, _ -> packets.add(bytes) } + + parser.parse( + byteArrayOf(0x90.toByte(), 0x3C, 0x64, 0x40, 0x7F.toByte()), + offset = 0, + count = 5, + timestamp = 123L, + ) + + assertEquals(2, packets.size) + assertContentEquals(byteArrayOf(0x90.toByte(), 0x3C, 0x64), packets[0]) + assertContentEquals( + byteArrayOf(0x90.toByte(), 0x40, 0x7F.toByte()), + packets[1], + ) + } + + @Test + fun parsesSingleByteRealtimeMessages() { + val packets = mutableListOf() + val parser = MidiPacketParser { bytes, _ -> packets.add(bytes) } + + parser.parse(byteArrayOf(0xF8.toByte()), offset = 0, count = 1, timestamp = 1L) + + assertEquals(1, packets.size) + assertContentEquals(byteArrayOf(0xF8.toByte()), packets.single()) + } + + @Test + fun repairsBackToBackSysExStartFrames() { + val packets = mutableListOf() + val parser = MidiPacketParser { bytes, _ -> packets.add(bytes) } + + parser.parse( + byteArrayOf(0xF0.toByte(), 0x01, 0x02, 0xF0.toByte(), 0x03, 0xF7.toByte()), + offset = 0, + count = 6, + timestamp = 5L, + ) + + assertEquals(2, packets.size) + assertContentEquals( + byteArrayOf(0xF0.toByte(), 0x01, 0x02, 0xF7.toByte()), + packets[0], + ) + assertContentEquals( + byteArrayOf(0xF0.toByte(), 0x03, 0xF7.toByte()), + packets[1], + ) + } + + @Test + fun appliesOffsetAndCountWindow() { + val packets = mutableListOf() + val parser = MidiPacketParser { bytes, _ -> packets.add(bytes) } + + parser.parse( + byteArrayOf(0x00, 0x90.toByte(), 0x3C, 0x40, 0x00), + offset = 1, + count = 3, + timestamp = 42L, + ) + + assertEquals(1, packets.size) + assertContentEquals(byteArrayOf(0x90.toByte(), 0x3C, 0x40), packets.single()) + } +} diff --git a/packages/flutter_midi_command_android/lib/flutter_midi_command_android.dart b/packages/flutter_midi_command_android/lib/flutter_midi_command_android.dart new file mode 100644 index 00000000..abcf5ad5 --- /dev/null +++ b/packages/flutter_midi_command_android/lib/flutter_midi_command_android.dart @@ -0,0 +1 @@ +library flutter_midi_command_android; diff --git a/packages/flutter_midi_command_android/melos_flutter_midi_command_android.iml b/packages/flutter_midi_command_android/melos_flutter_midi_command_android.iml new file mode 100644 index 00000000..9fc8ce79 --- /dev/null +++ b/packages/flutter_midi_command_android/melos_flutter_midi_command_android.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/flutter_midi_command_android/pubspec.yaml b/packages/flutter_midi_command_android/pubspec.yaml new file mode 100644 index 00000000..452ae9b4 --- /dev/null +++ b/packages/flutter_midi_command_android/pubspec.yaml @@ -0,0 +1,34 @@ +name: flutter_midi_command_android +description: Android serial MIDI wrapper for flutter_midi_command. +version: 1.0.0 +homepage: https://github.com/InvisibleWrench/FlutterMidiCommand +repository: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_android +issue_tracker: https://github.com/InvisibleWrench/FlutterMidiCommand/issues +documentation: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_android +topics: + - midi + - flutter-plugin + - android + - serial + - usb + +environment: + sdk: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" + +dependencies: + flutter: + sdk: flutter + flutter_midi_command_platform_interface: ^1.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + plugin: + implements: flutter_midi_command + platforms: + android: + package: com.invisiblewrench.fluttermidicommand + pluginClass: FlutterMidiCommandPlugin diff --git a/packages/flutter_midi_command_android/pubspec_overrides.yaml b/packages/flutter_midi_command_android/pubspec_overrides.yaml new file mode 100644 index 00000000..9252d546 --- /dev/null +++ b/packages/flutter_midi_command_android/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: flutter_midi_command_platform_interface +dependency_overrides: + flutter_midi_command_platform_interface: + path: ../flutter_midi_command_platform_interface diff --git a/packages/flutter_midi_command_ble/.flutter-plugins-dependencies b/packages/flutter_midi_command_ble/.flutter-plugins-dependencies new file mode 100644 index 00000000..701faddb --- /dev/null +++ b/packages/flutter_midi_command_ble/.flutter-plugins-dependencies @@ -0,0 +1 @@ +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"universal_ble","path":"/Users/morten/.pub-cache/hosted/pub.dev/universal_ble-0.21.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"universal_ble","path":"/Users/morten/.pub-cache/hosted/pub.dev/universal_ble-0.21.1/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"universal_ble","path":"/Users/morten/.pub-cache/hosted/pub.dev/universal_ble-0.21.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[],"windows":[{"name":"universal_ble","path":"/Users/morten/.pub-cache/hosted/pub.dev/universal_ble-0.21.1/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[]},"dependencyGraph":[{"name":"universal_ble","dependencies":[]}],"date_created":"2026-02-15 20:10:27.551756","version":"3.38.9","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file diff --git a/packages/flutter_midi_command_ble/CHANGELOG.md b/packages/flutter_midi_command_ble/CHANGELOG.md new file mode 100644 index 00000000..899cbc1f --- /dev/null +++ b/packages/flutter_midi_command_ble/CHANGELOG.md @@ -0,0 +1,4 @@ +## 1.0.0 + +- Initial shared BLE transport release for `flutter_midi_command`. +- BLE transport implemented in Dart via `universal_ble`. diff --git a/packages/flutter_midi_command_ble/LICENSE b/packages/flutter_midi_command_ble/LICENSE new file mode 100644 index 00000000..664f94e0 --- /dev/null +++ b/packages/flutter_midi_command_ble/LICENSE @@ -0,0 +1,25 @@ +Copyright 2020 InvisibleWrench. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Invisible Wrench ApS nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/flutter_midi_command_ble/README.md b/packages/flutter_midi_command_ble/README.md new file mode 100644 index 00000000..5367e532 --- /dev/null +++ b/packages/flutter_midi_command_ble/README.md @@ -0,0 +1,17 @@ +# flutter_midi_command_ble + +[![pub package](https://img.shields.io/pub/v/flutter_midi_command_ble.svg)](https://pub.dev/packages/flutter_midi_command_ble) + +Shared BLE MIDI transport for `flutter_midi_command`, implemented in Dart using `universal_ble`. + +Use this package when you want BLE MIDI discovery/connection in addition to host/native MIDI transports. + +## Usage + +```dart +import 'package:flutter_midi_command/flutter_midi_command.dart'; +import 'package:flutter_midi_command_ble/flutter_midi_command_ble.dart'; + +final midi = MidiCommand(); +midi.configureBleTransport(UniversalBleMidiTransport()); +``` diff --git a/packages/flutter_midi_command_ble/lib/flutter_midi_command_ble.dart b/packages/flutter_midi_command_ble/lib/flutter_midi_command_ble.dart new file mode 100644 index 00000000..9403a433 --- /dev/null +++ b/packages/flutter_midi_command_ble/lib/flutter_midi_command_ble.dart @@ -0,0 +1,534 @@ +library flutter_midi_command_ble; + +import 'dart:async'; +import 'dart:math'; +import 'dart:typed_data'; + +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:universal_ble/universal_ble.dart'; + +const midiServiceId = "03B80E5A-EDE8-4B33-A751-6CE34EC4C700"; +const midiCharacteristicId = "7772E5DB-3868-4112-A1A9-F2669D106BF3"; + +enum _DeviceState { none, interrogating, available, irrelevant } + +enum _BleHandlerState { + header, + timestamp, + status, + statusRunning, + params, + systemRt, + sysex, + sysexEnd, + sysexInt, +} + +class UniversalBleMidiTransport implements MidiBleTransport { + UniversalBleMidiTransport() { + UniversalBle.timeout = const Duration(seconds: 10); + _registerCallbacks(); + } + + final _rxStreamController = StreamController.broadcast(); + final _setupStreamController = StreamController.broadcast(); + final _bluetoothStateStreamController = StreamController.broadcast(); + final Map _devices = {}; + String _bleState = "unknown"; + bool _callbacksRegistered = false; + bool _isTornDown = false; + + void _registerCallbacks() { + if (_callbacksRegistered) { + return; + } + _callbacksRegistered = true; + + UniversalBle.onAvailabilityChange = (state) { + _bleState = state.name; + _bluetoothStateStreamController.add(state.name); + }; + + UniversalBle.onScanResult = (result) { + if (_devices.containsKey(result.deviceId) || result.name == null) { + return; + } + _devices[result.deviceId] = _BleMidiDevice( + deviceId: result.deviceId, + name: result.name!, + rxStream: _rxStreamController, + ); + _setupStreamController.add("deviceAppeared"); + }; + + UniversalBle.onConnectionChange = (deviceId, isConnected, error) { + final device = _devices[deviceId]; + if (device == null) { + return; + } + if (isConnected) { + device.updateConnectionState(BleConnectionState.connected); + _setupStreamController.add("deviceConnected"); + } else { + device.updateConnectionState(BleConnectionState.disconnected); + _setupStreamController.add("deviceDisconnected"); + } + }; + + UniversalBle.onValueChange = (deviceId, characteristicId, data) { + _devices[deviceId]?.handleData(data); + }; + + UniversalBle.onPairingStateChange = (deviceId, isPaired) { + _devices[deviceId]?.updatePairingState(isPaired); + }; + } + + void _unregisterCallbacks() { + if (!_callbacksRegistered) { + return; + } + UniversalBle.onAvailabilityChange = null; + UniversalBle.onScanResult = null; + UniversalBle.onConnectionChange = null; + UniversalBle.onValueChange = null; + UniversalBle.onPairingStateChange = (_, __) {}; + _callbacksRegistered = false; + } + + void _activateIfNeeded() { + if (!_isTornDown) { + return; + } + _isTornDown = false; + _registerCallbacks(); + } + + @override + Future startBluetooth() async { + _activateIfNeeded(); + final state = await UniversalBle.getBluetoothAvailabilityState(); + _bleState = state.name; + _bluetoothStateStreamController.add(state.name); + } + + @override + Future bluetoothState() async => _bleState; + + @override + Stream get onBluetoothStateChanged => + _bluetoothStateStreamController.stream; + + @override + Future startScanningForBluetoothDevices() async { + _activateIfNeeded(); + await UniversalBle.startScan( + scanFilter: ScanFilter(withServices: [midiServiceId]), + ); + } + + @override + void stopScanningForBluetoothDevices() { + UniversalBle.stopScan(); + } + + @override + Future> get devices async => _devices.values.toList(); + + @override + Future connectToDevice( + MidiDevice device, { + List? ports, + }) async { + _activateIfNeeded(); + if (device.type != MidiDeviceType.ble) { + return; + } + final bleDevice = _devices[device.id]; + if (bleDevice == null) { + throw StateError( + 'BLE MIDI device ${device.id} is not known by this transport.', + ); + } + await bleDevice.connect(); + } + + @override + void disconnectDevice(MidiDevice device) { + _activateIfNeeded(); + if (device.type != MidiDeviceType.ble) { + return; + } + final bleDevice = _devices[device.id]; + if (bleDevice == null) { + return; + } + unawaited(bleDevice.disconnect()); + } + + @override + void sendData(Uint8List data, {int? timestamp, String? deviceId}) { + _activateIfNeeded(); + if (deviceId != null) { + _devices[deviceId]?.send(data); + return; + } + for (final device in _devices.values.where((d) => d.connected)) { + device.send(data); + } + } + + @override + Stream get onMidiDataReceived => _rxStreamController.stream; + + @override + Stream get onMidiSetupChanged => _setupStreamController.stream; + + @override + void teardown() { + if (_isTornDown) { + return; + } + _isTornDown = true; + _unregisterCallbacks(); + unawaited(UniversalBle.stopScan()); + for (final device in _devices.values) { + if (device.connectionState != MidiConnectionState.disconnected) { + unawaited(device.disconnect()); + } + } + _devices.clear(); + _bleState = "unknown"; + } +} + +class _BleMidiDevice extends MidiDevice { + _BleMidiDevice({ + required this.deviceId, + required String name, + required StreamController rxStream, + }) : _rxStreamCtrl = rxStream, + super(deviceId, name, MidiDeviceType.ble, false); + + final String deviceId; + final StreamController _rxStreamCtrl; + + _DeviceState _devState = _DeviceState.none; + BleService? _midiService; + BleCharacteristic? _midiCharacteristic; + + void updateConnectionState(BleConnectionState state) { + final isConnected = state == BleConnectionState.connected; + connected = isConnected; + if (!isConnected) { + _devState = _DeviceState.none; + _midiService = null; + _midiCharacteristic = null; + return; + } + + unawaited(_requestMtu()); + if (_devState.index < _DeviceState.interrogating.index) { + unawaited(_discoverServices()); + } + } + + void updatePairingState(bool value) { + if (value) { + _startNotify(); + } + } + + Future connect() async { + if (connected) { + return; + } + await UniversalBle.connect(deviceId); + } + + Future disconnect() async { + if (_midiService != null && _midiCharacteristic != null) { + try { + await UniversalBle.unsubscribe( + deviceId, + _midiService!.uuid, + _midiCharacteristic!.uuid, + ); + } catch (_) {} + } + try { + await UniversalBle.disconnect(deviceId); + } catch (_) { + // Ignore failures on teardown/disconnect path. + } + connected = false; + _devState = _DeviceState.none; + _midiService = null; + _midiCharacteristic = null; + } + + Future send(Uint8List bytes) async { + if (bytes.isEmpty) { + return; + } + if (_midiService == null || _midiCharacteristic == null) { + return; + } + + const packetSize = 20; + var dataBytes = List.from(bytes); + + if (bytes.first == 0xF0 && bytes.last == 0xF7) { + if (bytes.length > packetSize - 3) { + var packet = dataBytes.take(packetSize - 2).toList(); + packet.insert(0, 0x80); + packet.insert(0, 0x80); + await _sendBytes(packet); + dataBytes = dataBytes.skip(packetSize - 2).toList(); + + while (dataBytes.isNotEmpty) { + final pickCount = min(dataBytes.length, packetSize - 1); + packet = dataBytes.getRange(0, pickCount).toList(); + packet.insert(0, 0x80); + if (packet.length < packetSize) { + packet.insert(packet.length - 1, 0x80); + } + await _sendBytes(packet); + if (dataBytes.length > packetSize - 2) { + dataBytes = dataBytes.skip(pickCount).toList(); + } else { + return; + } + } + } else { + dataBytes.insert(bytes.length - 1, 0x80); + dataBytes.insert(0, 0x80); + dataBytes.insert(0, 0x80); + await _sendBytes(dataBytes); + } + return; + } + + var currentBuffer = []; + for (var i = 0; i < dataBytes.length; i++) { + final byte = dataBytes[i]; + if ((byte & 0x80) != 0) { + currentBuffer.insert(0, 0x80); + currentBuffer.insert(0, 0x80); + } + currentBuffer.add(byte); + + final endReached = i == (dataBytes.length - 1); + final isCompleteCommand = endReached || (dataBytes[i + 1] & 0x80) != 0; + if (isCompleteCommand) { + await _sendBytes(currentBuffer); + currentBuffer = []; + } + } + } + + Future _sendBytes(List bytes) async { + try { + await UniversalBle.write( + deviceId, + _midiService!.uuid, + _midiCharacteristic!.uuid, + Uint8List.fromList(bytes), + withoutResponse: true, + ); + } catch (_) {} + } + + Future _requestMtu() async { + try { + await UniversalBle.requestMtu(deviceId, 247); + } catch (_) {} + } + + Future _discoverServices() async { + _devState = _DeviceState.interrogating; + final services = await UniversalBle.discoverServices(deviceId); + _midiService = + services + .where((s) => s.uuid.toUpperCase() == midiServiceId) + .firstOrNull; + if (_midiService == null) { + _devState = _DeviceState.irrelevant; + return; + } + + _midiCharacteristic = + _midiService!.characteristics + .where((c) => c.uuid.toUpperCase() == midiCharacteristicId) + .firstOrNull; + if (_midiCharacteristic == null) { + _devState = _DeviceState.irrelevant; + return; + } + + final isPaired = await UniversalBle.isPaired(deviceId) ?? false; + if (isPaired) { + _devState = _DeviceState.available; + _startNotify(); + return; + } + try { + await UniversalBle.pair(deviceId); + } catch (_) {} + } + + void _startNotify() { + if (_midiService == null || _midiCharacteristic == null) { + return; + } + try { + UniversalBle.subscribeNotifications( + deviceId, + _midiService!.uuid, + _midiCharacteristic!.uuid, + ); + } catch (_) {} + } + + void handleData(Uint8List data) { + _parseBlePacket(data); + } + + _BleHandlerState bleHandlerState = _BleHandlerState.header; + final List _sysExBuffer = []; + int _timestamp = 0; + final List _bleMidiBuffer = []; + int _bleMidiPacketLength = 0; + bool _bleSysExHasFinished = true; + + void _parseBlePacket(Uint8List packet) { + if (packet.length <= 1) { + return; + } + bleHandlerState = _BleHandlerState.header; + final header = packet[0]; + var statusByte = 0; + + for (var i = 1; i < packet.length; i++) { + final midiByte = packet[i]; + if (((midiByte & 0x80) == 0x80) && + bleHandlerState != _BleHandlerState.timestamp && + bleHandlerState != _BleHandlerState.sysexInt) { + bleHandlerState = + _bleSysExHasFinished + ? _BleHandlerState.timestamp + : _BleHandlerState.sysexInt; + } else { + switch (bleHandlerState) { + case _BleHandlerState.header: + if (!_bleSysExHasFinished) { + bleHandlerState = + (midiByte & 0x80) == 0x80 + ? _BleHandlerState.sysexInt + : _BleHandlerState.sysex; + } + break; + case _BleHandlerState.timestamp: + if ((midiByte & 0xFF) == 0xF0) { + _bleSysExHasFinished = false; + _sysExBuffer.clear(); + bleHandlerState = _BleHandlerState.sysex; + } else if ((midiByte & 0x80) == 0x80) { + bleHandlerState = _BleHandlerState.status; + } else { + bleHandlerState = _BleHandlerState.statusRunning; + } + break; + case _BleHandlerState.status: + case _BleHandlerState.statusRunning: + bleHandlerState = _BleHandlerState.params; + break; + case _BleHandlerState.sysexInt: + if ((midiByte & 0xFF) == 0xF7) { + _bleSysExHasFinished = true; + bleHandlerState = _BleHandlerState.sysexEnd; + } else { + bleHandlerState = _BleHandlerState.systemRt; + } + break; + case _BleHandlerState.systemRt: + if (!_bleSysExHasFinished) { + bleHandlerState = _BleHandlerState.sysex; + } + break; + case _BleHandlerState.params: + case _BleHandlerState.sysex: + case _BleHandlerState.sysexEnd: + break; + } + } + + switch (bleHandlerState) { + case _BleHandlerState.timestamp: + final tsHigh = header & 0x3F; + final tsLow = midiByte & 0x7F; + _timestamp = tsHigh << 7 | tsLow; + break; + case _BleHandlerState.status: + _bleMidiPacketLength = _lengthOfMessageType(midiByte); + _bleMidiBuffer + ..clear() + ..add(midiByte); + if (_bleMidiPacketLength == 1) { + _emit(_bleMidiBuffer, _timestamp); + } + statusByte = midiByte; + break; + case _BleHandlerState.statusRunning: + _bleMidiPacketLength = _lengthOfMessageType(statusByte); + _bleMidiBuffer + ..clear() + ..add(statusByte) + ..add(midiByte); + if (_bleMidiBuffer.length >= _bleMidiPacketLength) { + _emit(_bleMidiBuffer, _timestamp); + } + break; + case _BleHandlerState.params: + _bleMidiBuffer.add(midiByte); + if (_bleMidiBuffer.length >= _bleMidiPacketLength) { + _emit(_bleMidiBuffer, _timestamp); + } + break; + case _BleHandlerState.sysex: + case _BleHandlerState.sysexInt: + _sysExBuffer.add(midiByte); + break; + case _BleHandlerState.sysexEnd: + _sysExBuffer.add(midiByte); + _emit(_sysExBuffer, _timestamp); + _sysExBuffer.clear(); + break; + case _BleHandlerState.header: + case _BleHandlerState.systemRt: + break; + } + } + } + + void _emit(List bytes, int timestamp) { + _rxStreamCtrl.add( + MidiPacket(Uint8List.fromList(List.from(bytes)), timestamp, this), + ); + } + + int _lengthOfMessageType(int status) { + final high = status & 0xF0; + if (high == 0xC0 || high == 0xD0) { + return 2; + } + if (high == 0x80 || + high == 0x90 || + high == 0xA0 || + high == 0xB0 || + high == 0xE0) { + return 3; + } + return 1; + } +} diff --git a/packages/flutter_midi_command_ble/melos_flutter_midi_command_ble.iml b/packages/flutter_midi_command_ble/melos_flutter_midi_command_ble.iml new file mode 100644 index 00000000..9fc8ce79 --- /dev/null +++ b/packages/flutter_midi_command_ble/melos_flutter_midi_command_ble.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/flutter_midi_command_ble/pubspec.yaml b/packages/flutter_midi_command_ble/pubspec.yaml new file mode 100644 index 00000000..98c66cec --- /dev/null +++ b/packages/flutter_midi_command_ble/pubspec.yaml @@ -0,0 +1,27 @@ +name: flutter_midi_command_ble +description: Shared BLE MIDI transport for flutter_midi_command based on universal_ble. +version: 1.0.0 +homepage: https://github.com/InvisibleWrench/FlutterMidiCommand +repository: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_ble +issue_tracker: https://github.com/InvisibleWrench/FlutterMidiCommand/issues +documentation: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_ble +topics: + - midi + - flutter-plugin + - bluetooth + - ble + - music-tech + +environment: + sdk: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" + +dependencies: + flutter: + sdk: flutter + flutter_midi_command_platform_interface: ^1.0.0 + universal_ble: ^0.21.0 + +dev_dependencies: + flutter_test: + sdk: flutter diff --git a/packages/flutter_midi_command_ble/pubspec_overrides.yaml b/packages/flutter_midi_command_ble/pubspec_overrides.yaml new file mode 100644 index 00000000..9252d546 --- /dev/null +++ b/packages/flutter_midi_command_ble/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: flutter_midi_command_platform_interface +dependency_overrides: + flutter_midi_command_platform_interface: + path: ../flutter_midi_command_platform_interface diff --git a/packages/flutter_midi_command_ble/test/flutter_midi_command_ble_test.dart b/packages/flutter_midi_command_ble/test/flutter_midi_command_ble_test.dart new file mode 100644 index 00000000..a5e89a57 --- /dev/null +++ b/packages/flutter_midi_command_ble/test/flutter_midi_command_ble_test.dart @@ -0,0 +1,245 @@ +import 'dart:typed_data'; + +import 'package:flutter_midi_command_ble/flutter_midi_command_ble.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:universal_ble/universal_ble.dart'; + +class _FakeUniversalBlePlatform extends UniversalBlePlatform { + AvailabilityState availabilityState = AvailabilityState.poweredOn; + final Set failingConnectIds = {}; + final Map> servicesByDevice = + >{}; + final Map _pairedByDevice = {}; + final Map _connectionByDevice = + {}; + + final List connectCalls = []; + final List disconnectCalls = []; + int startScanCalls = 0; + int stopScanCalls = 0; + + @override + Future getBluetoothAvailabilityState() async { + return availabilityState; + } + + @override + Future enableBluetooth() async => true; + + @override + Future disableBluetooth() async => true; + + @override + Future startScan({ + ScanFilter? scanFilter, + PlatformConfig? platformConfig, + }) async { + startScanCalls += 1; + } + + @override + Future stopScan() async { + stopScanCalls += 1; + } + + @override + Future connect(String deviceId, {Duration? connectionTimeout}) async { + connectCalls.add(deviceId); + await Future.delayed(const Duration(milliseconds: 1)); + if (failingConnectIds.contains(deviceId)) { + updateConnection(deviceId, false, 'connection-failed'); + _connectionByDevice[deviceId] = BleConnectionState.disconnected; + throw ConnectionException('connection-failed'); + } + _connectionByDevice[deviceId] = BleConnectionState.connected; + updateConnection(deviceId, true); + } + + @override + Future disconnect(String deviceId) async { + disconnectCalls.add(deviceId); + _connectionByDevice[deviceId] = BleConnectionState.disconnected; + updateConnection(deviceId, false); + } + + @override + Future> discoverServices(String deviceId) async { + return servicesByDevice[deviceId] ?? []; + } + + @override + Future setNotifiable( + String deviceId, + String service, + String characteristic, + BleInputProperty bleInputProperty, + ) async {} + + @override + Future readValue( + String deviceId, + String service, + String characteristic, { + Duration? timeout, + }) async { + return Uint8List(0); + } + + @override + Future writeValue( + String deviceId, + String service, + String characteristic, + Uint8List value, + BleOutputProperty bleOutputProperty, + ) async {} + + @override + Future requestMtu(String deviceId, int expectedMtu) async { + return expectedMtu; + } + + @override + Future isPaired(String deviceId) async { + return _pairedByDevice[deviceId] ?? false; + } + + @override + Future pair(String deviceId) async { + _pairedByDevice[deviceId] = true; + updatePairingState(deviceId, true); + return true; + } + + @override + Future unpair(String deviceId) async { + _pairedByDevice[deviceId] = false; + updatePairingState(deviceId, false); + } + + @override + Future getConnectionState(String deviceId) async { + return _connectionByDevice[deviceId] ?? BleConnectionState.disconnected; + } + + @override + Future> getSystemDevices(List? withServices) async { + return []; + } + + void emitAvailability(AvailabilityState state) { + availabilityState = state; + updateAvailability(state); + } + + void emitScanDevice(BleDevice device) { + updateScanResult(device); + } +} + +void main() { + late _FakeUniversalBlePlatform fakePlatform; + late UniversalBleMidiTransport transport; + + setUp(() { + fakePlatform = _FakeUniversalBlePlatform(); + UniversalBle.setInstance(fakePlatform); + transport = UniversalBleMidiTransport(); + }); + + test( + 'startBluetooth updates and emits bluetooth availability state', + () async { + final emittedStates = []; + final sub = transport.onBluetoothStateChanged.listen(emittedStates.add); + + await transport.startBluetooth(); + fakePlatform.emitAvailability(AvailabilityState.poweredOff); + await Future.delayed(const Duration(milliseconds: 5)); + await sub.cancel(); + + expect(await transport.bluetoothState(), 'poweredOff'); + expect(emittedStates, contains('poweredOn')); + expect(emittedStates, contains('poweredOff')); + }, + ); + + test('connectToDevice completes only when BLE connection succeeds', () async { + fakePlatform.servicesByDevice['ble-1'] = [ + BleService(midiServiceId, [ + BleCharacteristic(midiCharacteristicId, [ + CharacteristicProperty.notify, + ]), + ]), + ]; + + fakePlatform.emitScanDevice( + BleDevice(deviceId: 'ble-1', name: 'BLE Device', services: []), + ); + + final device = (await transport.devices).single; + expect(device.connected, isFalse); + + await transport.connectToDevice(device); + await Future.delayed(const Duration(milliseconds: 5)); + + expect(fakePlatform.connectCalls, ['ble-1']); + expect(device.connected, isTrue); + }); + + test('connectToDevice surfaces BLE connection failures', () async { + fakePlatform.failingConnectIds.add('ble-2'); + fakePlatform.emitScanDevice( + BleDevice( + deviceId: 'ble-2', + name: 'Failing Device', + services: [], + ), + ); + final device = (await transport.devices).single; + + await expectLater( + transport.connectToDevice(device), + throwsA(isA()), + ); + }); + + test('disconnectDevice forwards to BLE backend', () async { + fakePlatform.emitScanDevice( + BleDevice( + deviceId: 'ble-3', + name: 'Disconnect Device', + services: [], + ), + ); + final device = (await transport.devices).single; + + await transport.connectToDevice(device); + transport.disconnectDevice(device); + await Future.delayed(const Duration(milliseconds: 5)); + + expect(fakePlatform.disconnectCalls, contains('ble-3')); + expect(device.connected, isFalse); + }); + + test('teardown unregisters callbacks and can be reactivated', () async { + expect(fakePlatform.onScanResult, isNotNull); + expect(fakePlatform.onConnectionChange, isNotNull); + expect(fakePlatform.onValueChange, isNotNull); + expect(fakePlatform.onAvailabilityChange, isNotNull); + + transport.teardown(); + + expect(fakePlatform.onScanResult, isNull); + expect(fakePlatform.onConnectionChange, isNull); + expect(fakePlatform.onValueChange, isNull); + expect(fakePlatform.onAvailabilityChange, isNull); + + await transport.startBluetooth(); + + expect(fakePlatform.onScanResult, isNotNull); + expect(fakePlatform.onConnectionChange, isNotNull); + expect(fakePlatform.onValueChange, isNotNull); + expect(fakePlatform.onAvailabilityChange, isNotNull); + }); +} diff --git a/packages/flutter_midi_command_darwin/CHANGELOG.md b/packages/flutter_midi_command_darwin/CHANGELOG.md new file mode 100644 index 00000000..c7a8b020 --- /dev/null +++ b/packages/flutter_midi_command_darwin/CHANGELOG.md @@ -0,0 +1,4 @@ +## 1.0.0 + +- Initial federated Darwin (iOS/macOS) implementation release in monorepo layout. +- Host MIDI API contracts migrated to generated Pigeon interfaces. diff --git a/packages/flutter_midi_command_darwin/LICENSE b/packages/flutter_midi_command_darwin/LICENSE new file mode 100644 index 00000000..664f94e0 --- /dev/null +++ b/packages/flutter_midi_command_darwin/LICENSE @@ -0,0 +1,25 @@ +Copyright 2020 InvisibleWrench. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Invisible Wrench ApS nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/flutter_midi_command_darwin/README.md b/packages/flutter_midi_command_darwin/README.md new file mode 100644 index 00000000..d87bcad4 --- /dev/null +++ b/packages/flutter_midi_command_darwin/README.md @@ -0,0 +1,8 @@ +# flutter_midi_command_darwin + +[![pub package](https://img.shields.io/pub/v/flutter_midi_command_darwin.svg)](https://pub.dev/packages/flutter_midi_command_darwin) + +Darwin (iOS/macOS) host implementation for `flutter_midi_command`. + +This package is an endorsed federated implementation and is not intended to be used directly. +Add `flutter_midi_command` to your app; Flutter will select this implementation on iOS/macOS. diff --git a/packages/flutter_midi_command_darwin/ios/.build/arm64-apple-macosx/debug/flutter_midi_command.build/module.modulemap b/packages/flutter_midi_command_darwin/ios/.build/arm64-apple-macosx/debug/flutter_midi_command.build/module.modulemap new file mode 100644 index 00000000..3cf8aac8 --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/.build/arm64-apple-macosx/debug/flutter_midi_command.build/module.modulemap @@ -0,0 +1,4 @@ +module flutter_midi_command { + header "/Users/morten/Work/Flutter/flutter_midi_command/packages/flutter_midi_command_darwin/ios/.build/arm64-apple-macosx/debug/flutter_midi_command.build/flutter_midi_command-Swift.h" + requires objc +} diff --git a/packages/flutter_midi_command_darwin/ios/.build/arm64-apple-macosx/debug/flutter_midi_commandPackageTests.build/module.modulemap b/packages/flutter_midi_command_darwin/ios/.build/arm64-apple-macosx/debug/flutter_midi_commandPackageTests.build/module.modulemap new file mode 100644 index 00000000..d83fd352 --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/.build/arm64-apple-macosx/debug/flutter_midi_commandPackageTests.build/module.modulemap @@ -0,0 +1,4 @@ +module flutter_midi_commandPackageTests { + header "/Users/morten/Work/Flutter/flutter_midi_command/packages/flutter_midi_command_darwin/ios/.build/arm64-apple-macosx/debug/flutter_midi_commandPackageTests.build/flutter_midi_commandPackageTests-Swift.h" + requires objc +} diff --git a/packages/flutter_midi_command_darwin/ios/.build/workspace-state.json b/packages/flutter_midi_command_darwin/ios/.build/workspace-state.json new file mode 100644 index 00000000..71deae90 --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/.build/workspace-state.json @@ -0,0 +1,11 @@ +{ + "object" : { + "artifacts" : [ + + ], + "dependencies" : [ + + ] + }, + "version" : 6 +} \ No newline at end of file diff --git a/ios/.gitignore b/packages/flutter_midi_command_darwin/ios/.gitignore similarity index 100% rename from ios/.gitignore rename to packages/flutter_midi_command_darwin/ios/.gitignore diff --git a/ios/Classes/FlutterMidiCommandPlugin.h b/packages/flutter_midi_command_darwin/ios/Classes/FlutterMidiCommandPlugin.h similarity index 100% rename from ios/Classes/FlutterMidiCommandPlugin.h rename to packages/flutter_midi_command_darwin/ios/Classes/FlutterMidiCommandPlugin.h diff --git a/packages/flutter_midi_command_darwin/ios/Classes/FlutterMidiCommandPlugin.m b/packages/flutter_midi_command_darwin/ios/Classes/FlutterMidiCommandPlugin.m new file mode 100644 index 00000000..921c7b80 --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/Classes/FlutterMidiCommandPlugin.m @@ -0,0 +1,17 @@ +#import "FlutterMidiCommandPlugin.h" +#if __has_include() +#import +#else +// Support project import fallback if the generated compatibility header +// is not copied when this plugin is created as a library. +// https://forums.swift.org/t/swift-static-libraries-dont-copy-generated-objective-c-header/19816 +#import "flutter_midi_command_darwin-Swift.h" +#endif + + + +@implementation FlutterMidiCommandPlugin ++ (void)registerWithRegistrar:(NSObject*)registrar { + [SwiftFlutterMidiCommandPlugin registerWithRegistrar:registrar]; +} +@end diff --git a/packages/flutter_midi_command_darwin/ios/Classes/MidiPacketParser.swift b/packages/flutter_midi_command_darwin/ios/Classes/MidiPacketParser.swift new file mode 100644 index 00000000..fa1d750a --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/Classes/MidiPacketParser.swift @@ -0,0 +1,109 @@ +import Foundation + +final class MidiPacketParser { + private enum ParserState { + case header + case params + case sysex + } + + private var parserState: ParserState = .header + private var sysExBuffer: [UInt8] = [] + private var midiBuffer: [UInt8] = [] + private var midiPacketLength: Int = 0 + private var statusByte: UInt8 = 0 + private let onPacket: (_ bytes: [UInt8], _ timestamp: UInt64) -> Void + + init(onPacket: @escaping (_ bytes: [UInt8], _ timestamp: UInt64) -> Void) { + self.onPacket = onPacket + } + + func parse(data: Data, timestamp: UInt64) { + guard !data.isEmpty else { + return + } + + for midiByte in data { + let midiInt = Int(midiByte & 0xFF) + + switch parserState { + case .header: + if midiInt == 0xF0 { + parserState = .sysex + sysExBuffer.removeAll(keepingCapacity: true) + sysExBuffer.append(midiByte) + } else if (midiInt & 0x80) == 0x80 { + statusByte = midiByte + midiPacketLength = lengthOfMessageType(type: statusByte) + guard midiPacketLength > 0 else { + parserState = .header + continue + } + midiBuffer.removeAll(keepingCapacity: true) + midiBuffer.append(midiByte) + parserState = .params + finalizeMessageIfComplete(timestamp: timestamp) + } else if statusByte != 0 { + midiPacketLength = lengthOfMessageType(type: statusByte) + guard midiPacketLength > 1 else { + parserState = .header + continue + } + midiBuffer.removeAll(keepingCapacity: true) + midiBuffer.append(statusByte) + midiBuffer.append(midiByte) + parserState = .params + finalizeMessageIfComplete(timestamp: timestamp) + } + + case .sysex: + if midiInt == 0xF0 { + // Some stacks emit back-to-back SysEx starts without a closing F7. + sysExBuffer.append(0xF7) + onPacket(sysExBuffer, timestamp) + sysExBuffer.removeAll(keepingCapacity: true) + } + sysExBuffer.append(midiByte) + if midiInt == 0xF7 { + onPacket(sysExBuffer, timestamp) + parserState = .header + } + + case .params: + midiBuffer.append(midiByte) + finalizeMessageIfComplete(timestamp: timestamp) + } + } + } + + private func finalizeMessageIfComplete(timestamp: UInt64) { + if midiPacketLength > 0 && midiBuffer.count == midiPacketLength { + onPacket(midiBuffer, timestamp) + parserState = .header + } + } + + private func lengthOfMessageType(type: UInt8) -> Int { + let midiType = type & 0xF0 + + switch type { + case 0xF6, 0xF8, 0xFA, 0xFB, 0xFC, 0xFF, 0xFE: + return 1 + case 0xF1, 0xF3: + return 2 + case 0xF2: + return 3 + default: + break + } + + switch midiType { + case 0xC0, 0xD0: + return 2 + case 0x80, 0x90, 0xA0, 0xB0, 0xE0: + return 3 + default: + return 0 + } + } +} diff --git a/packages/flutter_midi_command_darwin/ios/Classes/SwiftFlutterMidiCommandPlugin.swift b/packages/flutter_midi_command_darwin/ios/Classes/SwiftFlutterMidiCommandPlugin.swift new file mode 100644 index 00000000..86aa847f --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/Classes/SwiftFlutterMidiCommandPlugin.swift @@ -0,0 +1,1340 @@ + +#if os(macOS) +import FlutterMacOS +#else +import Flutter +#endif + +import CoreMIDI +import os.log +import Foundation + +private let midiDebugLoggingEnabled = false + +func midiDebugLog(_ message: @autoclosure () -> String) { + if midiDebugLoggingEnabled { + print(message()) + } +} + +/// +/// Credit to +/// http://mattg411.com/coremidi-swift-programming/ +/// https://github.com/genedelisa/Swift3MIDI +/// http://www.gneuron.com/?p=96 +/// https://learn.sparkfun.com/tutorials/midi-ble-tutorial/all + +func isVirtualEndpoint(endpoint: MIDIEndpointRef) -> Bool { + var entity : MIDIEntityRef = 0 + MIDIEndpointGetEntity(endpoint, &entity) + let result = entity == 0; + return result; +} + +func displayName(endpoint: MIDIEndpointRef) -> String { + return SwiftFlutterMidiCommandPlugin.getMIDIProperty(kMIDIPropertyDisplayName, fromObject: endpoint); +} + +func appName() -> String { + return Bundle.main.infoDictionary?[kCFBundleNameKey as String] as! String; +} + +func stringToId(str: String) -> UInt32 { + return UInt32(str.hash & 0xFFFF) +} + +func midiDeviceTypeFromLegacy(_ value: String?) -> MidiDeviceType { + switch value?.lowercased() { + case "native", "serial": + return .serial + case "virtual": + return .virtualDevice + case "own-virtual", "ownvirtual": + return .ownVirtual + case "network": + return .network + case "ble", "bluetooth", "bonded": + return .ble + default: + return .unknown + } +} + +public class SwiftFlutterMidiCommandPlugin: NSObject, FlutterPlugin, MidiHostApi { + + // MIDI + var midiClient = MIDIClientRef() + var connectedDevices = Dictionary() + + // Internal callback buses used by platform MIDI classes. + var rxStreamHandler = StreamHandler() + var setupStreamHandler = StreamHandler() + + var pigeonFlutterApi: MidiFlutterApiProtocol? + + +#if os(iOS) + // Network Session + var session:MIDINetworkSession? +#endif + + let midiLog = OSLog(subsystem: "com.invisiblewrench.FlutterMidiCommand", category: "MIDI") + + public static func register(with registrar: FlutterPluginRegistrar) { + let instance = SwiftFlutterMidiCommandPlugin() + instance.setup(registrar) + } + + deinit { + NotificationCenter.default.removeObserver(self) + MIDIClientDispose(midiClient) + } + + func setup(_ registrar: FlutterPluginRegistrar) { + #if os(macOS) + let messenger = registrar.messenger + #else + let messenger = registrar.messenger() + #endif + + pigeonFlutterApi = MidiFlutterApi(binaryMessenger: messenger) + MidiHostApiSetup.setUp(binaryMessenger: messenger, api: self) + + rxStreamHandler.onSend = { [weak self] payload in + self?.forwardMidiPayloadToPigeon(payload: payload) + } + + setupStreamHandler.onSend = { [weak self] payload in + self?.forwardSetupPayloadToPigeon(payload: payload) + } + + + // MIDI client with notification handler + MIDIClientCreateWithBlock("plugins.invisiblewrench.com.FlutterMidiCommand" as CFString, &midiClient) { (notification) in + self.handleMIDINotification(notification) + } + +#if os(iOS) + session = MIDINetworkSession.default() + session?.connectionPolicy = MIDINetworkConnectionPolicy.anyone +#endif + } + + func updateSetupState(data: Any) { + DispatchQueue.main.async { + self.setupStreamHandler.send(data:data) + } + } + + private func legacyDeviceType(from type: MidiDeviceType) -> String { + switch type { + case .serial: + return "serial" + case .ble: + return "BLE" + case .virtualDevice: + return "virtual" + case .ownVirtual: + return "own-virtual" + case .network: + return "network" + case .unknown: + return "unknown" + } + } + + private func forwardSetupPayloadToPigeon(payload: Any) { + pigeonFlutterApi?.onSetupChanged(setupChange: String(describing: payload)) { _ in } + } + + private func forwardMidiPayloadToPigeon(payload: Any) { + if let packet = payload as? MidiPacket { + pigeonFlutterApi?.onDataReceived(packet: packet) { _ in } + } + } + + func listDevices() throws -> [MidiHostDevice] { + return getDevices() + } + + func connect(device: MidiHostDevice, ports: [MidiPort]?) throws { + guard let id = device.id else { + throw PigeonError(code: "MESSAGEERROR", message: "No device Id", details: nil) + } + let type = device.type ?? .unknown + let mappedPorts = ports?.compactMap { port -> Port? in + guard let id = port.id else { + return nil + } + let type = (port.isInput ?? false) ? "MidiPortType.IN" : "MidiPortType.OUT" + return Port(id: Int(id), type: type) + } + let legacyType = type == .unknown ? "serial" : legacyDeviceType(from: type) + connectToDevice(deviceId: id, type: legacyType, ports: mappedPorts) + } + + func disconnect(deviceId: String) throws { + disconnectDevice(deviceId: deviceId) + } + + func sendData(packet: MidiPacket) throws { + guard let data = packet.data else { + return + } + let timestamp = packet.timestamp.map { UInt64(bitPattern: $0) } + sendData(data, deviceId: packet.device?.id, timestamp: timestamp) + } + + func addVirtualDevice(name: String?) throws { + let deviceName = name ?? appName() + let ownVirtualDevice = findOrCreateOwnVirtualDevice(name: deviceName) + if ownVirtualDevice.errors.count > 0 { + let error = ownVirtualDevice.errors.joined(separator: "\n") + removeOwnVirtualDevice(name: deviceName) + throw PigeonError(code: "AUDIOERROR", message: error, details: nil) + } + } + + func removeVirtualDevice(name: String?) throws { + let deviceName = name ?? appName() + removeOwnVirtualDevice(name: deviceName) + } + + func isNetworkSessionEnabled() throws -> Bool? { +#if os(iOS) + return session?.isEnabled ?? false +#else + return nil +#endif + } + + func setNetworkSessionEnabled(enabled: Bool) throws { +#if os(iOS) + session?.isEnabled = enabled +#endif + } + + + // Create an own virtual device appearing in other apps. + // Other apps can use that device to send and receive MIDI to and from this app. + var ownVirtualDevices = Set() + + func findOrCreateOwnVirtualDevice(name: String) -> ConnectedOwnVirtualDevice{ + let existingDevice = ownVirtualDevices.first(where: { device in + device.name == name + }) + + let result = existingDevice ?? ConnectedOwnVirtualDevice(name: name, streamHandler: rxStreamHandler, client: midiClient); + if(existingDevice == nil){ + ownVirtualDevices.insert(result) + } + + return result + } + + func removeOwnVirtualDevice(name: String){ + let existingDevice = ownVirtualDevices.first(where: { device in + device.name == name + }) + + if let existingDevice = existingDevice { + existingDevice.close() + ownVirtualDevices.remove(existingDevice) + } + } + + // Check if an endpoint is an own virtual destination or source + func isOwnVirtualEndpoint(endpoint: MIDIEndpointRef) -> Bool{ + return ownVirtualDevices.contains { device in + device.virtualSourceEndpoint == endpoint || device.virtualDestinationEndpoint == endpoint + } + } + + + func teardown() { + for device in connectedDevices { + disconnectDevice(deviceId: device.value.id) + } + } + + + func connectToDevice(deviceId:String, type:String, ports:[Port]?) { + midiDebugLog("connect \(deviceId) \(type)") + + if type == "own-virtual" { + let device = ownVirtualDevices.first { device in + String(device.id) == deviceId + } + + if let device = device { + connectedDevices[device.id] = device + (device as ConnectedOwnVirtualDevice).isConnected = true + updateSetupState(data: "deviceConnected") + pigeonFlutterApi?.onDeviceConnectionStateChanged(deviceId: deviceId, connected: true) { _ in } + } + } else // if type == "native" || if type == "virtual" + { + let device = (type == "native" || type == "network" || type == "serial" || type.lowercased() == "ble" || type.lowercased() == "bluetooth") ? ConnectedNativeDevice(id: deviceId, type: type, streamHandler: rxStreamHandler, client: midiClient, ports:ports) + : ConnectedVirtualDevice(id: deviceId, type: type, streamHandler: rxStreamHandler, client: midiClient, ports:ports) + midiDebugLog("connected to \(device) \(deviceId)") + connectedDevices[deviceId] = device + updateSetupState(data: "deviceConnected") + pigeonFlutterApi?.onDeviceConnectionStateChanged(deviceId: deviceId, connected: true) { _ in } + } + } + + func disconnectDevice(deviceId:String) { + let device = connectedDevices[deviceId] + midiDebugLog("disconnect \(String(describing: device)) for id \(deviceId)") + if let device = device { + if device.deviceType == "own-virtual" { + (device as! ConnectedOwnVirtualDevice).isConnected = false + updateSetupState(data: "deviceDisconnected") + pigeonFlutterApi?.onDeviceConnectionStateChanged(deviceId: deviceId, connected: false) { _ in } + } + else { + device.close() + updateSetupState(data: "deviceDisconnected") + pigeonFlutterApi?.onDeviceConnectionStateChanged(deviceId: deviceId, connected: false) { _ in } + } + connectedDevices.removeValue(forKey: deviceId) + } + } + + + func sendData(_ data:FlutterStandardTypedData, deviceId: String?, timestamp: UInt64?) { + let bytes = [UInt8](data.data) + + if let deviceId = deviceId { + if let device = connectedDevices[deviceId] { + device.send(bytes: bytes, timestamp: timestamp) + } + } else { + connectedDevices.values.forEach({ (device) in + device.send(bytes: bytes, timestamp: timestamp) + }) + } + } + + + static func getMIDIProperty(_ prop:CFString, fromObject obj:MIDIObjectRef) -> String { + var param: Unmanaged? + var result: String = "Error" + let err: OSStatus = MIDIObjectGetStringProperty(obj, prop, ¶m) + if err == OSStatus(noErr) { result = param!.takeRetainedValue() as String } + return result + } + + static func isNetwork(device:MIDIObjectRef) -> Bool { + var isNetwork:Bool = false + + var list: Unmanaged? + MIDIObjectGetProperties(device, &list, true) + if let list = list { + let dict = list.takeRetainedValue() as! NSDictionary + if dict["apple.midirtp.session"] != nil { + isNetwork = true + } + } + return isNetwork + } + + static func isBluetooth(device: MIDIObjectRef) -> Bool { + var owner: Unmanaged? + let ownerStatus = MIDIObjectGetStringProperty(device, kMIDIPropertyDriverOwner, &owner) + if ownerStatus == noErr, + let ownerName = owner?.takeRetainedValue() as String?, + containsBluetoothMarker(in: ownerName) { + return true + } + + var list: Unmanaged? + MIDIObjectGetProperties(device, &list, true) + if let list = list, + let dict = list.takeRetainedValue() as? NSDictionary { + return containsBluetoothMarker(in: dict) + } + + return false + } + + private static func containsBluetoothMarker(in value: Any?) -> Bool { + guard let value else { + return false + } + + if let stringValue = value as? String { + let normalized = stringValue.lowercased() + return normalized.contains("bluetooth") || normalized.contains("btle") + } + + if let dictionary = value as? NSDictionary { + for entry in dictionary { + if containsBluetoothMarker(in: entry.key) || containsBluetoothMarker(in: entry.value) { + return true + } + } + return false + } + + if let array = value as? [Any] { + for item in array { + if containsBluetoothMarker(in: item) { + return true + } + } + return false + } + + return false + } + + + func createPorts(count:Int, isInput: Bool) -> [MidiPort?] { + return (0.. [MidiHostDevice] { + var devices:[MidiHostDevice] = [] + + // ###### + // Native + // ###### + + var nativeDevices = Dictionary() + + let destinationCount = MIDIGetNumberOfDestinations() + for d in 0..() + + for d in 0..) { + let notification = midiNotification.pointee + + updateSetupState(data: "\(notification.messageID)") + + if !midiDebugLoggingEnabled { + return + } + + midiDebugLog("\ngot a MIDINotification!") + midiDebugLog("MIDI Notify, messageId= \(notification.messageID) \(notification.messageSize)") + + switch notification.messageID { + + // Some aspect of the current MIDISetup has changed. No data. Should ignore this message if messages 2-6 are handled. + case .msgSetupChanged: + midiDebugLog("MIDI setup changed") + let ptr = UnsafeMutablePointer(mutating: midiNotification) + // let ptr = UnsafeMutablePointer(midiNotification) + let m = ptr.pointee + midiDebugLog("\(m)") + midiDebugLog("id \(m.messageID)") + midiDebugLog("size \(m.messageSize)") + break + + + // A device, entity or endpoint was added. Structure is MIDIObjectAddRemoveNotification. + case .msgObjectAdded: + + midiDebugLog("added") + // let ptr = UnsafeMutablePointer(midiNotification) + + midiNotification.withMemoryRebound(to: MIDIObjectAddRemoveNotification.self, capacity: 1) { + let m = $0.pointee + midiDebugLog("\(m)") + midiDebugLog("id \(m.messageID)") + midiDebugLog("size \(m.messageSize)") + midiDebugLog("child \(m.child)") + midiDebugLog("child type \(m.childType)") + showMIDIObjectType(m.childType) + midiDebugLog("parent \(m.parent)") + midiDebugLog("parentType \(m.parentType)") + showMIDIObjectType(m.parentType) + // midiDebugLog("childName \(String(describing: getDisplayName(m.child)))") + } + + + break + + // A device, entity or endpoint was removed. Structure is MIDIObjectAddRemoveNotification. + case .msgObjectRemoved: + midiDebugLog("kMIDIMsgObjectRemoved") + // let ptr = UnsafeMutablePointer(midiNotification) + midiNotification.withMemoryRebound(to: MIDIObjectAddRemoveNotification.self, capacity: 1) { + + let m = $0.pointee + midiDebugLog("\(m)") + midiDebugLog("id \(m.messageID)") + midiDebugLog("size \(m.messageSize)") + midiDebugLog("child \(m.child)") + midiDebugLog("child type \(m.childType)") + midiDebugLog("parent \(m.parent)") + midiDebugLog("parentType \(m.parentType)") + + // midiDebugLog("childName \(String(describing: getDisplayName(m.child)))") + } + break + + // An object's property was changed. Structure is MIDIObjectPropertyChangeNotification. + case .msgPropertyChanged: + midiDebugLog("kMIDIMsgPropertyChanged") + midiNotification.withMemoryRebound(to: MIDIObjectPropertyChangeNotification.self, capacity: 1) { + + let m = $0.pointee + midiDebugLog("\(m)") + midiDebugLog("id \(m.messageID)") + midiDebugLog("size \(m.messageSize)") + midiDebugLog("object \(m.object)") + midiDebugLog("objectType \(m.objectType)") + midiDebugLog("propertyName \(m.propertyName)") + midiDebugLog("propertyName \(m.propertyName.takeUnretainedValue())") + + if m.propertyName.takeUnretainedValue() as String == "apple.midirtp.session" { + midiDebugLog("connected") + } + } + + break + + // A persistent MIDI Thru connection wasor destroyed. No data. + case .msgThruConnectionsChanged: + midiDebugLog("MIDI thru connections changed.") + break + + //A persistent MIDI Thru connection was created or destroyed. No data. + case .msgSerialPortOwnerChanged: + midiDebugLog("MIDI serial port owner changed.") + break + + case .msgIOError: + midiDebugLog("MIDI I/O error.") + + //let ptr = UnsafeMutablePointer(midiNotification) + midiNotification.withMemoryRebound(to: MIDIIOErrorNotification.self, capacity: 1) { + let m = $0.pointee + midiDebugLog("\(m)") + midiDebugLog("id \(m.messageID)") + midiDebugLog("size \(m.messageSize)") + midiDebugLog("driverDevice \(m.driverDevice)") + midiDebugLog("errorCode \(m.errorCode)") + } + break + @unknown default: + break + } + } + + func showMIDIObjectType(_ ot: MIDIObjectType) { + switch ot { + case .other: + os_log("midiObjectType: Other", log: midiLog, type: .debug) + break + + case .device: + os_log("midiObjectType: Device", log: midiLog, type: .debug) + break + + case .entity: + os_log("midiObjectType: Entity", log: midiLog, type: .debug) + break + + case .source: + os_log("midiObjectType: Source", log: midiLog, type: .debug) + break + + case .destination: + os_log("midiObjectType: Destination", log: midiLog, type: .debug) + break + + case .externalDevice: + os_log("midiObjectType: ExternalDevice", log: midiLog, type: .debug) + break + + case .externalEntity: + midiDebugLog("midiObjectType: ExternalEntity") + os_log("midiObjectType: ExternalEntity", log: midiLog, type: .debug) + break + + case .externalSource: + os_log("midiObjectType: ExternalSource", log: midiLog, type: .debug) + break + + case .externalDestination: + os_log("midiObjectType: ExternalDestination", log: midiLog, type: .debug) + break + @unknown default: + break + } + + } + +#if os(iOS) + /// MIDI Network Session + @objc func midiNetworkChanged(notification:NSNotification) { + midiDebugLog("\(#function)") + midiDebugLog("\(notification)") + if let session = notification.object as? MIDINetworkSession { + midiDebugLog("session \(session)") + for con in session.connections() { + midiDebugLog("con \(con)") + } + midiDebugLog("isEnabled \(session.isEnabled)") + midiDebugLog("sourceEndpoint \(session.sourceEndpoint())") + midiDebugLog("destinationEndpoint \(session.destinationEndpoint())") + midiDebugLog("networkName \(session.networkName)") + midiDebugLog("localName \(session.localName)") + + // if let name = getDeviceName(session.sourceEndpoint()) { + // midiDebugLog("source name \(name)") + // } + // + // if let name = getDeviceName(session.destinationEndpoint()) { + // midiDebugLog("destination name \(name)") + // } + } + updateSetupState(data: "\(#function) \(notification)") + } + + @objc func midiNetworkContactsChanged(notification:NSNotification) { + midiDebugLog("\(#function)") + midiDebugLog("\(notification)") + if let session = notification.object as? MIDINetworkSession { + midiDebugLog("session \(session)") + for con in session.contacts() { + midiDebugLog("contact \(con)") + } + } + updateSetupState(data: "\(#function) \(notification)") + } +#endif +} + +class StreamHandler : NSObject { + var onSend: ((Any) -> Void)? + + func send(data: Any) { + onSend?(data) + } +} + +class Port { + var id:Int + var type:String + + init(id:Int, type:String) { + self.id = id; + self.type = type + } +} + +class ConnectedDevice : NSObject { + var id:String + var deviceType:String + var streamHandler : StreamHandler + + init(id:String, type:String, streamHandler:StreamHandler) { + self.id = id + self.deviceType = type + self.streamHandler = streamHandler + } + + func openPorts() {} + + func send(bytes:[UInt8], timestamp: UInt64?) {} + + func close() {} +} + +class ConnectedVirtualOrNativeDevice : ConnectedDevice { + var ports:[Port]? + var outputPort = MIDIPortRef() + var inputPort = MIDIPortRef() + var client : MIDIClientRef + var name : String? + var outEndpoint : MIDIEndpointRef? + var inSource : MIDIEndpointRef? + var deviceInfo: MidiHostDevice + + init(id:String, type:String, streamHandler:StreamHandler, client: MIDIClientRef, ports:[Port]?) { + self.client = client + self.ports = ports + + + deviceInfo = MidiHostDevice( + id: id, + name: name, + type: midiDeviceTypeFromLegacy(type), + connected: true, + inputs: nil, + outputs: nil + ) + + super.init(id: id, type: type, streamHandler: streamHandler) + } + + override func send(bytes: [UInt8], timestamp: UInt64?) { + midiDebugLog("send \(bytes.count) bytes to \(String(describing: name))") + + if let ep = outEndpoint { + splitDataIntoMIDIPackets(bytes: bytes, timestamp: timestamp) { packetListPointer in + MIDISend(outputPort, ep, packetListPointer) + } + } else { + midiDebugLog("No MIDI destination for id \(name ?? "")") + } + } + + func splitDataIntoMIDIPackets(bytes:[UInt8], timestamp: UInt64?, packetCallback:(UnsafePointer) -> Void) { + let maxPacketSize = 256 // Maximum size for a single packet's data field + var offset = 0 + let ts = timestamp ?? mach_absolute_time() + + while offset < bytes.count { + var packetList = MIDIPacketList() + + // Calculate the size of the current chunk + let chunkSize = min(maxPacketSize, bytes.count - offset) + let chunk = Array(bytes[offset...allocate(capacity: 2) // Don't know why I need to a capacity of 2 here. If I setup 1 I'm getting a crash. + private lazy var midiPacketParser = MidiPacketParser { [weak self] bytes, timestamp in + guard let self else { + return + } + DispatchQueue.main.async { + self.streamHandler.send( + data: MidiPacket( + device: self.deviceInfo, + data: FlutterStandardTypedData(bytes: Data(bytes)), + timestamp: Int64(bitPattern: timestamp) + ) + ) + } + } + + func handlePacketList(_ packetList:UnsafePointer, srcConnRefCon:UnsafeMutableRawPointer?) { + let packets = packetList.pointee + let packet:MIDIPacket = packets.packet + var ap = buffer; + buffer.initialize(to:packet) + + for _ in 0 ..< packets.numPackets { + let p = ap.pointee + var tmp = p.data + let data = Data(bytes: &tmp, count: Int(p.length)) + let timestamp = p.timeStamp + parseData(data: data, timestamp: timestamp) + ap = MIDIPacketNext(ap) + } + } + + func parseData(data: Data, timestamp: UInt64) { + midiPacketParser.parse(data: data, timestamp: timestamp) + } + +} + + +class ConnectedNativeDevice : ConnectedVirtualOrNativeDevice { + + var entity : MIDIEntityRef? + + override init(id:String, type:String, streamHandler:StreamHandler, client: MIDIClientRef, ports:[Port]?) { + super.init(id:id, type: type, streamHandler: streamHandler, client: client, ports: ports) + + self.ports = ports + let idParts = id.split(separator: ":") + + // Store entity and get device/entity name + if let deviceId = MIDIDeviceRef(idParts[0]) { + if let entityId = Int(idParts[1]) { + entity = MIDIDeviceGetEntity(deviceId, entityId) + if let e = entity { + let entityName = SwiftFlutterMidiCommandPlugin.getMIDIProperty(kMIDIPropertyName, fromObject: e) + + var device:MIDIDeviceRef = 0 + MIDIEntityGetDevice(e, &device) + let deviceName = SwiftFlutterMidiCommandPlugin.getMIDIProperty(kMIDIPropertyName, fromObject: device) + + name = "\(deviceName) \(entityName)" + } else { + midiDebugLog("no entity") + } + } else { + midiDebugLog("no entityId") + } + } else { + midiDebugLog("no deviceId") + } + + + deviceInfo = MidiHostDevice( + id: String(id), + name: name, + type: midiDeviceTypeFromLegacy(type), + connected: true, + inputs: nil, + outputs: nil + ) + + + // MIDI Input with handler + MIDIInputPortCreateWithBlock(client, "FlutterMidiCommand_InPort" as CFString, &inputPort) { (packetList, srcConnRefCon) in + self.handlePacketList(packetList, srcConnRefCon: srcConnRefCon) + } + + // MIDI output + MIDIOutputPortCreate(client, "FlutterMidiCommand_OutPort" as CFString, &outputPort); + + openPorts() + } + + override func openPorts() { + midiDebugLog("open native ports") + + if let e = entity { + + let ref = Unmanaged.passUnretained(self).toOpaque() + + if let ps = ports { + for port in ps { + inSource = MIDIEntityGetSource(e, port.id) + + switch port.type { + case "MidiPortType.IN": + let status = MIDIPortConnectSource(inputPort, inSource!, ref) + midiDebugLog("port open status \(status)") + case "MidiPortType.OUT": + outEndpoint = MIDIEntityGetDestination(e, port.id) + // midiDebugLog("port endpoint \(endpoint)") + break + default: + midiDebugLog("unknown port type \(port.type)") + } + } + } else { + midiDebugLog("open default ports") + inSource = MIDIEntityGetSource(e, 0) + let status = MIDIPortConnectSource(inputPort, inSource!, ref) + if(status != noErr){ + midiDebugLog("Error \(status) while calling MIDIPortConnectSource"); + } + outEndpoint = MIDIEntityGetDestination(e, 0) + } + } + } + + override func close() { + /* + if let oEP = outEndpoint { + MIDIEndpointDispose(oEP) + } + */ + if let iS = inSource { + MIDIPortDisconnectSource(inputPort, iS) + } + + MIDIPortDispose(inputPort) + MIDIPortDispose(outputPort) + } + + override func handlePacketList(_ packetList:UnsafePointer, srcConnRefCon:UnsafeMutableRawPointer?) { + // let deviceInfo = ["name" : name, + // "id": String(id), + // "type":"native"] + + var timestampFactor : Double = 1.0 + var tb = mach_timebase_info_data_t() + let kError = mach_timebase_info(&tb) + if (kError == 0) { + timestampFactor = Double(tb.numer) / Double(tb.denom) + } + + // New implementation: Handles packages with a size larger then 256 bytes + if #available(macOS 10.15, iOS 13.0, *) { + let packetListSize = MIDIPacketList.sizeInBytes(pktList: packetList) + + // Copy raw data from packetList + let packetListAsRawData = Data(bytes: packetList, count: packetListSize) + var packetNumber = 0 + + for packet in packetList.unsafeSequence() { + let offsetStart = getOffsetForPackageData(packetList: packetList, packageNumber: (Int)(packetNumber)) + let offsetEnd = (offsetStart + (Int)(packet.pointee.length) - 1) + let packetData = packetListAsRawData.subdata(in: Range(offsetStart...offsetEnd)) + + let timestamp = UInt64(round(Double(packet.pointee.timeStamp) * timestampFactor)) + + parseData(data: packetData, timestamp: timestamp) + + packetNumber += 1 + } + } else { + // Original implementation: This implementation will not work with packages larger than 256 bytes + // The issue is due to the line (see below): let packet:MIDIPacket = packets.packet + // which will only copy the first 256 bytes from the received data + let packets = packetList.pointee + let packet:MIDIPacket = packets.packet // This will only copy the first 256 bytes! + var ap = buffer + ap.initialize(to:packet) + + // midiDebugLog("tb \(tb) timestamp \(timestampFactor)") + for _ in 0 ..< packets.numPackets { + let p = ap.pointee + var tmp = p.data + let data = Data(bytes: &tmp, count: Int(p.length)) + let timestamp = UInt64(round(Double(p.timeStamp) * timestampFactor)) + parseData(data: data, timestamp: timestamp) + ap = MIDIPacketNext(ap) + } + // ap.deallocate() + } + } + + func getOffsetForPackageData(packetList: UnsafePointer, packageNumber: Int) -> Int { + if #available(macOS 10.15, iOS 13.0, *) { + var packageCount = 0 + for packet in packetList.unsafeSequence() { + if (packageCount == packageNumber) { + return (Int)(UInt(bitPattern:Int(Int(bitPattern: packet))) - UInt(bitPattern:Int(Int(bitPattern: packetList)))) + MemoryLayout.offset(of: \MIDIPacket.data)! + } + + packageCount += 1 + } + } + return -1 + } +} + +class ConnectedVirtualDevice : ConnectedVirtualOrNativeDevice { + + override init(id:String, type:String, streamHandler:StreamHandler, client: MIDIClientRef, ports:[Port]?) { + + super.init(id:id, type: type, streamHandler: streamHandler, client: client, ports: ports) + + let idParts = id.split(separator: ":") + assert(idParts.count > 0); + outEndpoint = idParts.count > 0 && idParts[0].count > 0 ? MIDIEndpointRef(idParts[0]) : nil; + inSource = idParts.count > 1 && idParts[1].count > 0 ? MIDIEndpointRef(idParts[1]) : nil; + + name = displayName(endpoint: outEndpoint ?? inSource ?? 0); + + // MIDI Input with handler + MIDIInputPortCreateWithBlock(client, "FlutterMidiCommand_InPort" as CFString, &inputPort) { (packetList, srcConnRefCon) in + self.handlePacketList(packetList, srcConnRefCon: srcConnRefCon) + } + + // MIDI output + MIDIOutputPortCreate(client, "FlutterMidiCommand_OutPort" as CFString, &outputPort); + + openPorts() + } + + override func openPorts() { + + if(inSource != nil){ + let ref = Unmanaged.passUnretained(self).toOpaque() + MIDIPortConnectSource(inputPort, inSource!, ref); + } + } +} + +class ConnectedOwnVirtualDevice : ConnectedVirtualOrNativeDevice { + init(name: String, streamHandler:StreamHandler, client: MIDIClientRef) { + self.deviceName = name + self.midiClient = client + super.init(id: String(stringToId(str: name)), type: "own-virtual", streamHandler: streamHandler, client: client, ports: []) + initVirtualSource() + initVirtualDestination() + self.name = name + } + + override func openPorts() {} + + var virtualSourceEndpoint: MIDIClientRef = 0 + var virtualDestinationEndpoint: MIDIClientRef = 0 + let midiClient: MIDIClientRef + let deviceName: String + var isConnected = false + var errors: Array = [] + + + override func send(bytes: [UInt8], timestamp: UInt64?) { + + if(!isConnected){ + return; + } + + + splitDataIntoMIDIPackets(bytes: bytes, timestamp: timestamp) { packetListPointer in + let status = MIDIReceived(virtualSourceEndpoint, packetListPointer) + if(status != noErr){ + let error = "Error \(status) while publishing MIDI on own virtual source endpoint." + errors.append(error) + midiDebugLog(error) + } + } + +// let packetList = UnsafeMutablePointer.allocate(capacity: 1) +// var packet = MIDIPacketListInit(packetList) +// let time = MIDITimeStamp(timestamp ?? mach_absolute_time()) +// packet = MIDIPacketListAdd(packetList, 1024, packet, time, bytes.count, bytes) + +// let status = MIDIReceived(virtualSourceEndpoint, packetList) +// if(status != noErr){ +// let error = "Error \(status) while publishing MIDI on own virtual source endpoint." +// errors.append(error) +// midiDebugLog(error) +// } + +// packetList.deallocate() + } + + override func close() { + closeVirtualSource() + closeVirtualDestination() + } + + + func initVirtualSource(){ + let s = MIDISourceCreate(midiClient, deviceName as CFString, &virtualSourceEndpoint); + if(s != noErr){ + let error = "Error \(s) while create MIDI virtual source" + errors.append(error) + midiDebugLog(error) + return + } + + // Attempt to use saved unique ID + let defaults = UserDefaults.standard + var uniqueID = Int32(defaults.integer(forKey: "FlutterMIDICommand Saved Virtual Source ID \(deviceName)")) + + //Set unique ID if available + if ( uniqueID != 0 ) + { + let s = MIDIObjectSetIntegerProperty(virtualSourceEndpoint, kMIDIPropertyUniqueID, uniqueID); + + if ( s == kMIDIIDNotUnique ) + { + uniqueID = 0; + } + } + + // Create and save a new unique id + if ( uniqueID == 0 ) { + let s = MIDIObjectGetIntegerProperty(virtualSourceEndpoint, kMIDIPropertyUniqueID, &uniqueID); + if(s != noErr){ + let error = "Error \(s) while getting MIDI virtual source ID" + errors.append(error) + midiDebugLog(error) + } + + if ( s == noErr ) { + defaults.set(uniqueID, forKey: "FlutterMIDICommand Saved Virtual Source ID \(deviceName)") + } + } + } + + func closeVirtualSource(){ + let s = MIDIEndpointDispose(virtualSourceEndpoint); + if(s != noErr){ + let error = "Error \(s) while disposing MIDI virtual source." + errors.append(error) + midiDebugLog(error) + } + } + + func initVirtualDestination(){ + + + let s = MIDIDestinationCreateWithBlock(midiClient, deviceName as CFString, &virtualDestinationEndpoint) { (packetList, srcConnRefCon) in + if(self.isConnected){ + self.handlePacketList(packetList, srcConnRefCon: srcConnRefCon) + } + } + + + if ( s != noErr ) { + if(s == -10844){ + let error = "Error while creating virtual MIDI destination. You need to add the key 'UIBackgroundModes' with value 'audio' to your Info.plist file" + errors.append(error) + midiDebugLog(error) + } + return; + } + + // Attempt to use saved unique ID + let defaults = UserDefaults.standard + var uniqueID = Int32(defaults.integer(forKey: "FlutterMIDICommand Saved Virtual Destination ID \(deviceName)")) + + if ( uniqueID != 0 ) + { + let s = MIDIObjectSetIntegerProperty(virtualDestinationEndpoint, kMIDIPropertyUniqueID, uniqueID) + if ( s == kMIDIIDNotUnique ) + { + uniqueID = 0; + } + } + // Save the ID + if ( uniqueID == 0 ) { + let s = MIDIObjectGetIntegerProperty(virtualDestinationEndpoint, kMIDIPropertyUniqueID, &uniqueID) + + if ( s == noErr ) { + defaults.set(uniqueID, forKey: "FlutterMIDICommand Saved Virtual Destination ID \(deviceName)") + } + else { + let error = "Error: \(s) while setting unique ID for virtuel endpoint" + errors.append(error) + midiDebugLog(error) + } + } + } + + func closeVirtualDestination(){ + let s = MIDIEndpointDispose(virtualDestinationEndpoint); + if(s != 0){ + let error = "Error: \(s) while disposing MIDI endpoint" + errors.append(error) + midiDebugLog(error) + } + } +} diff --git a/packages/flutter_midi_command_darwin/ios/Classes/pigeon/MidiApi.g.swift b/packages/flutter_midi_command_darwin/ios/Classes/pigeon/MidiApi.g.swift new file mode 100644 index 00000000..c42809e8 --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/Classes/pigeon/MidiApi.g.swift @@ -0,0 +1,452 @@ +// Autogenerated from Pigeon (v22.7.4), do not edit directly. +// See also: https://pub.dev/packages/pigeon + +import Foundation + +#if os(iOS) + import Flutter +#elseif os(macOS) + import FlutterMacOS +#else + #error("Unsupported platform.") +#endif + +/// Error class for passing custom error details to Dart side. +final class PigeonError: Error { + let code: String + let message: String? + let details: Any? + + init(code: String, message: String?, details: Any?) { + self.code = code + self.message = message + self.details = details + } + + var localizedDescription: String { + return + "PigeonError(code: \(code), message: \(message ?? ""), details: \(details ?? "")" + } +} + +private func wrapResult(_ result: Any?) -> [Any?] { + return [result] +} + +private func wrapError(_ error: Any) -> [Any?] { + if let pigeonError = error as? PigeonError { + return [ + pigeonError.code, + pigeonError.message, + pigeonError.details, + ] + } + if let flutterError = error as? FlutterError { + return [ + flutterError.code, + flutterError.message, + flutterError.details, + ] + } + return [ + "\(error)", + "\(type(of: error))", + "Stacktrace: \(Thread.callStackSymbols)", + ] +} + +private func createConnectionError(withChannelName channelName: String) -> PigeonError { + return PigeonError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "") +} + +private func isNullish(_ value: Any?) -> Bool { + return value is NSNull || value == nil +} + +private func nilOrValue(_ value: Any?) -> T? { + if value is NSNull { return nil } + return value as! T? +} + +enum MidiDeviceType: Int { + case serial = 0 + case ble = 1 + case virtualDevice = 2 + case ownVirtual = 3 + case network = 4 + case unknown = 5 +} + +/// Generated class from Pigeon that represents data sent in messages. +struct MidiHostDevice { + var id: String? = nil + var name: String? = nil + var type: MidiDeviceType? = nil + var connected: Bool? = nil + var inputs: [MidiPort?]? = nil + var outputs: [MidiPort?]? = nil + + + // swift-format-ignore: AlwaysUseLowerCamelCase + static func fromList(_ pigeonVar_list: [Any?]) -> MidiHostDevice? { + let id: String? = nilOrValue(pigeonVar_list[0]) + let name: String? = nilOrValue(pigeonVar_list[1]) + let type: MidiDeviceType? = nilOrValue(pigeonVar_list[2]) + let connected: Bool? = nilOrValue(pigeonVar_list[3]) + let inputs: [MidiPort?]? = nilOrValue(pigeonVar_list[4]) + let outputs: [MidiPort?]? = nilOrValue(pigeonVar_list[5]) + + return MidiHostDevice( + id: id, + name: name, + type: type, + connected: connected, + inputs: inputs, + outputs: outputs + ) + } + func toList() -> [Any?] { + return [ + id, + name, + type, + connected, + inputs, + outputs, + ] + } +} + +/// Generated class from Pigeon that represents data sent in messages. +struct MidiPort { + var id: Int64? = nil + var connected: Bool? = nil + var isInput: Bool? = nil + + + // swift-format-ignore: AlwaysUseLowerCamelCase + static func fromList(_ pigeonVar_list: [Any?]) -> MidiPort? { + let id: Int64? = nilOrValue(pigeonVar_list[0]) + let connected: Bool? = nilOrValue(pigeonVar_list[1]) + let isInput: Bool? = nilOrValue(pigeonVar_list[2]) + + return MidiPort( + id: id, + connected: connected, + isInput: isInput + ) + } + func toList() -> [Any?] { + return [ + id, + connected, + isInput, + ] + } +} + +/// Generated class from Pigeon that represents data sent in messages. +struct MidiPacket { + var device: MidiHostDevice? = nil + var data: FlutterStandardTypedData? = nil + var timestamp: Int64? = nil + + + // swift-format-ignore: AlwaysUseLowerCamelCase + static func fromList(_ pigeonVar_list: [Any?]) -> MidiPacket? { + let device: MidiHostDevice? = nilOrValue(pigeonVar_list[0]) + let data: FlutterStandardTypedData? = nilOrValue(pigeonVar_list[1]) + let timestamp: Int64? = nilOrValue(pigeonVar_list[2]) + + return MidiPacket( + device: device, + data: data, + timestamp: timestamp + ) + } + func toList() -> [Any?] { + return [ + device, + data, + timestamp, + ] + } +} + +private class MidiApiPigeonCodecReader: FlutterStandardReader { + override func readValue(ofType type: UInt8) -> Any? { + switch type { + case 129: + let enumResultAsInt: Int? = nilOrValue(self.readValue() as! Int?) + if let enumResultAsInt = enumResultAsInt { + return MidiDeviceType(rawValue: enumResultAsInt) + } + return nil + case 130: + return MidiHostDevice.fromList(self.readValue() as! [Any?]) + case 131: + return MidiPort.fromList(self.readValue() as! [Any?]) + case 132: + return MidiPacket.fromList(self.readValue() as! [Any?]) + default: + return super.readValue(ofType: type) + } + } +} + +private class MidiApiPigeonCodecWriter: FlutterStandardWriter { + override func writeValue(_ value: Any) { + if let value = value as? MidiDeviceType { + super.writeByte(129) + super.writeValue(value.rawValue) + } else if let value = value as? MidiHostDevice { + super.writeByte(130) + super.writeValue(value.toList()) + } else if let value = value as? MidiPort { + super.writeByte(131) + super.writeValue(value.toList()) + } else if let value = value as? MidiPacket { + super.writeByte(132) + super.writeValue(value.toList()) + } else { + super.writeValue(value) + } + } +} + +private class MidiApiPigeonCodecReaderWriter: FlutterStandardReaderWriter { + override func reader(with data: Data) -> FlutterStandardReader { + return MidiApiPigeonCodecReader(data: data) + } + + override func writer(with data: NSMutableData) -> FlutterStandardWriter { + return MidiApiPigeonCodecWriter(data: data) + } +} + +class MidiApiPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { + static let shared = MidiApiPigeonCodec(readerWriter: MidiApiPigeonCodecReaderWriter()) +} + +/// Generated protocol from Pigeon that represents a handler of messages from Flutter. +protocol MidiHostApi { + func listDevices() throws -> [MidiHostDevice] + func connect(device: MidiHostDevice, ports: [MidiPort]?) throws + func disconnect(deviceId: String) throws + func teardown() throws + func sendData(packet: MidiPacket) throws + func addVirtualDevice(name: String?) throws + func removeVirtualDevice(name: String?) throws + func isNetworkSessionEnabled() throws -> Bool? + func setNetworkSessionEnabled(enabled: Bool) throws +} + +/// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. +class MidiHostApiSetup { + static var codec: FlutterStandardMessageCodec { MidiApiPigeonCodec.shared } + /// Sets up an instance of `MidiHostApi` to handle messages through the `binaryMessenger`. + static func setUp(binaryMessenger: FlutterBinaryMessenger, api: MidiHostApi?, messageChannelSuffix: String = "") { + let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" + let listDevicesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.listDevices\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + listDevicesChannel.setMessageHandler { _, reply in + do { + let result = try api.listDevices() + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + listDevicesChannel.setMessageHandler(nil) + } + let connectChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.connect\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + connectChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let deviceArg = args[0] as! MidiHostDevice + let portsArg: [MidiPort]? = nilOrValue(args[1]) + do { + try api.connect(device: deviceArg, ports: portsArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + connectChannel.setMessageHandler(nil) + } + let disconnectChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.disconnect\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + disconnectChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let deviceIdArg = args[0] as! String + do { + try api.disconnect(deviceId: deviceIdArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + disconnectChannel.setMessageHandler(nil) + } + let teardownChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.teardown\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + teardownChannel.setMessageHandler { _, reply in + do { + try api.teardown() + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + teardownChannel.setMessageHandler(nil) + } + let sendDataChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.sendData\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + sendDataChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let packetArg = args[0] as! MidiPacket + do { + try api.sendData(packet: packetArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + sendDataChannel.setMessageHandler(nil) + } + let addVirtualDeviceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.addVirtualDevice\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + addVirtualDeviceChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let nameArg: String? = nilOrValue(args[0]) + do { + try api.addVirtualDevice(name: nameArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + addVirtualDeviceChannel.setMessageHandler(nil) + } + let removeVirtualDeviceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.removeVirtualDevice\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + removeVirtualDeviceChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let nameArg: String? = nilOrValue(args[0]) + do { + try api.removeVirtualDevice(name: nameArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + removeVirtualDeviceChannel.setMessageHandler(nil) + } + let isNetworkSessionEnabledChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.isNetworkSessionEnabled\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + isNetworkSessionEnabledChannel.setMessageHandler { _, reply in + do { + let result = try api.isNetworkSessionEnabled() + reply(wrapResult(result)) + } catch { + reply(wrapError(error)) + } + } + } else { + isNetworkSessionEnabledChannel.setMessageHandler(nil) + } + let setNetworkSessionEnabledChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.setNetworkSessionEnabled\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + setNetworkSessionEnabledChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let enabledArg = args[0] as! Bool + do { + try api.setNetworkSessionEnabled(enabled: enabledArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + setNetworkSessionEnabledChannel.setMessageHandler(nil) + } + } +} +/// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift. +protocol MidiFlutterApiProtocol { + func onSetupChanged(setupChange setupChangeArg: String, completion: @escaping (Result) -> Void) + func onDataReceived(packet packetArg: MidiPacket, completion: @escaping (Result) -> Void) + func onDeviceConnectionStateChanged(deviceId deviceIdArg: String, connected connectedArg: Bool, completion: @escaping (Result) -> Void) +} +class MidiFlutterApi: MidiFlutterApiProtocol { + private let binaryMessenger: FlutterBinaryMessenger + private let messageChannelSuffix: String + init(binaryMessenger: FlutterBinaryMessenger, messageChannelSuffix: String = "") { + self.binaryMessenger = binaryMessenger + self.messageChannelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" + } + var codec: MidiApiPigeonCodec { + return MidiApiPigeonCodec.shared + } + func onSetupChanged(setupChange setupChangeArg: String, completion: @escaping (Result) -> Void) { + let channelName: String = "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onSetupChanged\(messageChannelSuffix)" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([setupChangeArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(Void())) + } + } + } + func onDataReceived(packet packetArg: MidiPacket, completion: @escaping (Result) -> Void) { + let channelName: String = "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDataReceived\(messageChannelSuffix)" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([packetArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(Void())) + } + } + } + func onDeviceConnectionStateChanged(deviceId deviceIdArg: String, connected connectedArg: Bool, completion: @escaping (Result) -> Void) { + let channelName: String = "dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDeviceConnectionStateChanged\(messageChannelSuffix)" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([deviceIdArg, connectedArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(Void())) + } + } + } +} diff --git a/packages/flutter_midi_command_darwin/ios/Package.swift b/packages/flutter_midi_command_darwin/ios/Package.swift new file mode 100644 index 00000000..a749f9a7 --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/Package.swift @@ -0,0 +1,29 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "flutter_midi_command", + platforms: [ + .iOS(.v13), + .macOS(.v10_15), + ], + targets: [ + .target( + name: "flutter_midi_command", + path: "Classes", + exclude: [ + "FlutterMidiCommandPlugin.m", + "SwiftFlutterMidiCommandPlugin.swift", + "pigeon", + ], + sources: ["MidiPacketParser.swift"] + ), + .testTarget( + name: "MidiPacketParserTests", + dependencies: ["flutter_midi_command"], + path: "Tests", + exclude: ["midi_packet_parser_smoke.swift"], + sources: ["MidiPacketParserTests.swift"] + ), + ] +) diff --git a/packages/flutter_midi_command_darwin/ios/Tests/MidiPacketParserTests.swift b/packages/flutter_midi_command_darwin/ios/Tests/MidiPacketParserTests.swift new file mode 100644 index 00000000..66a4cc0b --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/Tests/MidiPacketParserTests.swift @@ -0,0 +1,48 @@ +import XCTest +@testable import flutter_midi_command + +final class MidiPacketParserTests: XCTestCase { + func testParsesChannelMessagesWithRunningStatus() { + var packets: [[UInt8]] = [] + let parser = MidiPacketParser { bytes, _ in + packets.append(bytes) + } + + parser.parse( + data: Data([0x90, 0x3C, 0x64, 0x40, 0x7F]), + timestamp: 123 + ) + + XCTAssertEqual(packets.count, 2) + XCTAssertEqual(packets[0], [0x90, 0x3C, 0x64]) + XCTAssertEqual(packets[1], [0x90, 0x40, 0x7F]) + } + + func testParsesRealtimeSingleByteMessages() { + var packets: [[UInt8]] = [] + let parser = MidiPacketParser { bytes, _ in + packets.append(bytes) + } + + parser.parse(data: Data([0xF8]), timestamp: 1) + + XCTAssertEqual(packets.count, 1) + XCTAssertEqual(packets[0], [0xF8]) + } + + func testRepairsBackToBackSysExStartFrames() { + var packets: [[UInt8]] = [] + let parser = MidiPacketParser { bytes, _ in + packets.append(bytes) + } + + parser.parse( + data: Data([0xF0, 0x01, 0x02, 0xF0, 0x03, 0xF7]), + timestamp: 5 + ) + + XCTAssertEqual(packets.count, 2) + XCTAssertEqual(packets[0], [0xF0, 0x01, 0x02, 0xF7]) + XCTAssertEqual(packets[1], [0xF0, 0x03, 0xF7]) + } +} diff --git a/packages/flutter_midi_command_darwin/ios/Tests/midi_packet_parser_smoke.swift b/packages/flutter_midi_command_darwin/ios/Tests/midi_packet_parser_smoke.swift new file mode 100644 index 00000000..a94dddfc --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/Tests/midi_packet_parser_smoke.swift @@ -0,0 +1,30 @@ +import Foundation + +@main +struct MidiPacketParserSmoke { + @inline(__always) + static func assertOrExit(_ condition: @autoclosure () -> Bool, _ message: String) { + if !condition() { + fputs("Assertion failed: \(message)\n", stderr) + exit(1) + } + } + + static func main() { + var packets: [[UInt8]] = [] + let parser = MidiPacketParser { bytes, _ in + packets.append(bytes) + } + + parser.parse(data: Data([0x90, 0x3C, 0x64, 0x40, 0x7F]), timestamp: 1) + assertOrExit(packets.count == 2, "running status packet count") + assertOrExit(packets[0] == [0x90, 0x3C, 0x64], "running status first packet") + assertOrExit(packets[1] == [0x90, 0x40, 0x7F], "running status second packet") + + packets.removeAll(keepingCapacity: true) + parser.parse(data: Data([0xF0, 0x01, 0x02, 0xF0, 0x03, 0xF7]), timestamp: 2) + assertOrExit(packets.count == 2, "sysex packet count") + assertOrExit(packets[0] == [0xF0, 0x01, 0x02, 0xF7], "sysex first packet") + assertOrExit(packets[1] == [0xF0, 0x03, 0xF7], "sysex second packet") + } +} diff --git a/packages/flutter_midi_command_darwin/ios/flutter_midi_command_darwin.podspec b/packages/flutter_midi_command_darwin/ios/flutter_midi_command_darwin.podspec new file mode 100644 index 00000000..8f37193d --- /dev/null +++ b/packages/flutter_midi_command_darwin/ios/flutter_midi_command_darwin.podspec @@ -0,0 +1,26 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint flutter_midi_command_darwin.podspec' to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'flutter_midi_command_darwin' + s.version = '1.0.0' + s.summary = 'A Flutter plugin for sending and receiving MIDI messages' + s.description = <<-DESC + 'A Flutter plugin for sending and receiving MIDI messages' + DESC + s.homepage = 'http://invisiblewrench.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Invisible Wrench ApS' => 'hello@invisiblewrench.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.test_spec 'Tests' do |test_spec| + test_spec.source_files = 'Tests/**/*' + end + s.dependency 'Flutter' + s.platform = :ios, '11.0' + + # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } + s.swift_version = '5.0' +end diff --git a/packages/flutter_midi_command_darwin/lib/flutter_midi_command_darwin.dart b/packages/flutter_midi_command_darwin/lib/flutter_midi_command_darwin.dart new file mode 100644 index 00000000..6d36036a --- /dev/null +++ b/packages/flutter_midi_command_darwin/lib/flutter_midi_command_darwin.dart @@ -0,0 +1 @@ +library flutter_midi_command_darwin; diff --git a/packages/flutter_midi_command_darwin/macos/Classes/MidiPacketParser.swift b/packages/flutter_midi_command_darwin/macos/Classes/MidiPacketParser.swift new file mode 120000 index 00000000..d2d42313 --- /dev/null +++ b/packages/flutter_midi_command_darwin/macos/Classes/MidiPacketParser.swift @@ -0,0 +1 @@ +../../ios/Classes/MidiPacketParser.swift \ No newline at end of file diff --git a/macos/Classes/SwiftFlutterMidiCommandPlugin.swift b/packages/flutter_midi_command_darwin/macos/Classes/SwiftFlutterMidiCommandPlugin.swift similarity index 100% rename from macos/Classes/SwiftFlutterMidiCommandPlugin.swift rename to packages/flutter_midi_command_darwin/macos/Classes/SwiftFlutterMidiCommandPlugin.swift diff --git a/packages/flutter_midi_command_darwin/macos/Classes/pigeon/MidiApi.g.swift b/packages/flutter_midi_command_darwin/macos/Classes/pigeon/MidiApi.g.swift new file mode 120000 index 00000000..7472b18d --- /dev/null +++ b/packages/flutter_midi_command_darwin/macos/Classes/pigeon/MidiApi.g.swift @@ -0,0 +1 @@ +../../../ios/Classes/pigeon/MidiApi.g.swift \ No newline at end of file diff --git a/packages/flutter_midi_command_darwin/macos/flutter_midi_command_darwin.podspec b/packages/flutter_midi_command_darwin/macos/flutter_midi_command_darwin.podspec new file mode 100644 index 00000000..feb46909 --- /dev/null +++ b/packages/flutter_midi_command_darwin/macos/flutter_midi_command_darwin.podspec @@ -0,0 +1,22 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint flutter_midi_command_darwin.podspec' to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'flutter_midi_command_darwin' + s.version = '1.0.0' + s.summary = 'Darwin serial MIDI wrapper for flutter_midi_command.' + s.description = <<-DESC +Darwin serial MIDI wrapper for flutter_midi_command. + DESC + s.homepage = 'https://github.com/InvisibleWrench/FlutterMidiCommand' + s.license = { :file => '../LICENSE' } + s.author = { 'Invisible Wrench' => 'hello@invisiblewrench.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'FlutterMacOS' + + s.platform = :osx, '10.13' + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } + s.swift_version = '5.0' +end diff --git a/packages/flutter_midi_command_darwin/melos_flutter_midi_command_darwin.iml b/packages/flutter_midi_command_darwin/melos_flutter_midi_command_darwin.iml new file mode 100644 index 00000000..9fc8ce79 --- /dev/null +++ b/packages/flutter_midi_command_darwin/melos_flutter_midi_command_darwin.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/flutter_midi_command_darwin/pubspec.yaml b/packages/flutter_midi_command_darwin/pubspec.yaml new file mode 100644 index 00000000..9873a8d9 --- /dev/null +++ b/packages/flutter_midi_command_darwin/pubspec.yaml @@ -0,0 +1,35 @@ +name: flutter_midi_command_darwin +description: Darwin (iOS/macOS) serial MIDI wrapper for flutter_midi_command. +version: 1.0.0 +homepage: https://github.com/InvisibleWrench/FlutterMidiCommand +repository: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_darwin +issue_tracker: https://github.com/InvisibleWrench/FlutterMidiCommand/issues +documentation: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_darwin +topics: + - midi + - flutter-plugin + - ios + - macos + - coremidi + +environment: + sdk: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" + +dependencies: + flutter: + sdk: flutter + flutter_midi_command_platform_interface: ^1.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + plugin: + implements: flutter_midi_command + platforms: + ios: + pluginClass: FlutterMidiCommandPlugin + macos: + pluginClass: SwiftFlutterMidiCommandPlugin diff --git a/packages/flutter_midi_command_darwin/pubspec_overrides.yaml b/packages/flutter_midi_command_darwin/pubspec_overrides.yaml new file mode 100644 index 00000000..9252d546 --- /dev/null +++ b/packages/flutter_midi_command_darwin/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: flutter_midi_command_platform_interface +dependency_overrides: + flutter_midi_command_platform_interface: + path: ../flutter_midi_command_platform_interface diff --git a/packages/flutter_midi_command_linux/.gitignore b/packages/flutter_midi_command_linux/.gitignore new file mode 100644 index 00000000..8470f198 --- /dev/null +++ b/packages/flutter_midi_command_linux/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +.dart_tool/ + +.packages +.pub/ +pubspec.lock + +build/ +.idea/ diff --git a/packages/flutter_midi_command_linux/CHANGELOG.md b/packages/flutter_midi_command_linux/CHANGELOG.md new file mode 100644 index 00000000..2e45ba11 --- /dev/null +++ b/packages/flutter_midi_command_linux/CHANGELOG.md @@ -0,0 +1,25 @@ +## 1.0.0 +- Major release aligned with the federated monorepo architecture. +- Updated to the 1.x platform interface and typed host models. + +## 0.3.0 +- Updated to Flutter 3.10, Dart 3 +- Added error messages for missing functionality + +## 0.1.4 +Updated to latest platform interface + +## 0.1.3 +Fixed buffer allocation + +## 0.1.2 +Isolate port close + +## 0.1.1 +Fixed notification on device disconnect + +## 0.1.0 +First release with linux support + +## 0.0.1 +Initial Linux support diff --git a/packages/flutter_midi_command_linux/LICENSE b/packages/flutter_midi_command_linux/LICENSE new file mode 100644 index 00000000..1e7e656e --- /dev/null +++ b/packages/flutter_midi_command_linux/LICENSE @@ -0,0 +1,25 @@ +Copyright 2020 InvisibleWrench. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/flutter_midi_command_linux/README.md b/packages/flutter_midi_command_linux/README.md new file mode 100644 index 00000000..42ddd283 --- /dev/null +++ b/packages/flutter_midi_command_linux/README.md @@ -0,0 +1,5 @@ +# flutter_midi_command_linux + +[![pub package](https://img.shields.io/pub/v/flutter_midi_command_linux.svg)](https://pub.dev/packages/flutter_midi_command_linux) + +This is the Linux specific implementation of [FlutterMidiCommand](https://pub.dev/packages/flutter_midi_command) diff --git a/packages/flutter_midi_command_linux/lib/flutter_midi_command_linux.dart b/packages/flutter_midi_command_linux/lib/flutter_midi_command_linux.dart new file mode 100644 index 00000000..fc690169 --- /dev/null +++ b/packages/flutter_midi_command_linux/lib/flutter_midi_command_linux.dart @@ -0,0 +1,180 @@ +import 'dart:async'; +import 'package:midi/midi.dart'; +import 'dart:typed_data'; +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; + +class LinuxMidiDevice extends MidiDevice { + StreamController _rxStreamCtrl; + int cardId; + int deviceId; + AlsaMidiDevice _device; + + LinuxMidiDevice(this._device, this.cardId, this.deviceId, String name, + MidiDeviceType type, this._rxStreamCtrl, bool connected) + : super( + AlsaMidiDevice.hardwareId(cardId, deviceId), + name, + type, + connected, + ) { + // Get input, output ports + var i = 0; + _device.inputPorts.toList().forEach((element) { + inputPorts.add(MidiPort(++i, MidiPortType.IN)); + }); + i = 0; + _device.outputPorts.toList().forEach((element) { + outputPorts.add(MidiPort(++i, MidiPortType.OUT)); + }); + } + + Future connect() async { + await _device.connect(); + connected = true; + + // connect up incoming alsa midi data to our rx stream of MidiPackets + _device.receivedMessages.listen((event) { + _rxStreamCtrl.add(MidiPacket(event.data, event.timestamp, this)); + }); + return true; + } + + send(buffer, int length) { + _device.send(buffer); + } + + disconnect() { + _device.disconnect(); + connected = false; + } +} + +class FlutterMidiCommandLinux extends MidiCommandPlatform { + StreamController _rxStreamController = + StreamController.broadcast(); + late Stream _rxStream; + StreamController _setupStreamController = + StreamController.broadcast(); + late Stream _setupStream; + + Map _connectedDevices = + Map(); + + final List _allAlsaDevices = []; + + /// A constructor that allows tests to override the window object used by the plugin. + FlutterMidiCommandLinux() { + _setupStream = _setupStreamController.stream; + _rxStream = _rxStreamController.stream; + } + + /// The linux implementation of [MidiCommandPlatform] + /// + /// This class implements the `package:flutter_midi_command_platform_interface` functionality for linux + static void registerWith() { + print("register FlutterMidiCommandLinux"); + MidiCommandPlatform.instance = FlutterMidiCommandLinux(); + } + + @override + Future> get devices async { + if (_allAlsaDevices.isEmpty) { + _allAlsaDevices.addAll(AlsaMidiDevice.getDevices()); + } + return _allAlsaDevices + .map( + (alsMidiDevice) => LinuxMidiDevice( + alsMidiDevice, + alsMidiDevice.cardId, + alsMidiDevice.deviceId, + alsMidiDevice.name, + MidiDeviceType.serial, + _rxStreamController, + _connectedDevices.containsKey(AlsaMidiDevice.hardwareId( + alsMidiDevice.cardId, alsMidiDevice.deviceId)), + ), + ) + .toList(); + } + + /// Connects to the device. + @override + Future connectToDevice(MidiDevice device, + {List? ports}) async { + print('connect to $device'); + + var linuxDevice = device as LinuxMidiDevice; + final success = await linuxDevice.connect(); + if (success) { + _connectedDevices[device.id] = device; + _setupStreamController.add("deviceConnected"); + } else { + print("failed to connect $linuxDevice"); + } + } + + /// Disconnects from the device. + @override + void disconnectDevice(MidiDevice device, {bool remove = true}) { + if (_connectedDevices.containsKey(device.id)) { + var linuxDevice = device as LinuxMidiDevice; + linuxDevice.disconnect(); + if (remove) { + _connectedDevices.remove(device.id); + _setupStreamController.add("deviceDisconnected"); + } + } + } + + @override + void teardown() { + _connectedDevices.values.forEach((device) { + disconnectDevice(device, remove: false); + }); + _connectedDevices.clear(); + _setupStreamController.add("deviceDisconnected"); + _rxStreamController.close(); + } + + /// Sends data to the currently connected device.wmidi hardware driver name + /// + /// Data is an UInt8List of individual MIDI command bytes. + @override + void sendData(Uint8List data, {int? timestamp, String? deviceId}) { + _connectedDevices.values.forEach((device) { + // print("send to $device"); + device.send(data, data.length); + }); + } + + /// Stream firing events whenever a midi package is received. + /// + /// The event contains the raw bytes contained in the MIDI package. + @override + Stream? get onMidiDataReceived { + return _rxStream; + } + + /// Stream firing events whenever a change in the MIDI setup occurs. + /// + /// For example, when a new BLE devices is discovered. + @override + Stream? get onMidiSetupChanged { + return _setupStream; + } + + /// Creates a virtual MIDI source + /// + /// The virtual MIDI source appears as a virtual port in other apps. + /// Currently only supported on iOS. + @override + void addVirtualDevice({String? name}) { + // Not implemented + } + + /// Removes a previously addd virtual MIDI source. + @override + void removeVirtualDevice({String? name}) { + // Not implemented + } +} diff --git a/packages/flutter_midi_command_linux/linux/CMakeLists.txt b/packages/flutter_midi_command_linux/linux/CMakeLists.txt new file mode 100644 index 00000000..a5e0b96b --- /dev/null +++ b/packages/flutter_midi_command_linux/linux/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.10) +set(PROJECT_NAME "flutter_midi_command_linux") +project(${PROJECT_NAME} LANGUAGES CXX) + +set(PLUGIN_NAME "${PROJECT_NAME}_plugin") + +add_library(${PLUGIN_NAME} SHARED + "${PLUGIN_NAME}.cc" +) +apply_standard_settings(${PLUGIN_NAME}) +set_target_properties(${PLUGIN_NAME} PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL) +target_include_directories(${PLUGIN_NAME} INTERFACE + "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_link_libraries(${PLUGIN_NAME} PRIVATE flutter) +target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::GTK) + +# List of absolute paths to libraries that should be bundled with the plugin +set(flutter_midi_command_linux_bundled_libraries + "" + PARENT_SCOPE +) diff --git a/packages/flutter_midi_command_linux/linux/flutter_midi_command_linux_plugin.cc b/packages/flutter_midi_command_linux/linux/flutter_midi_command_linux_plugin.cc new file mode 100644 index 00000000..05bf2d70 --- /dev/null +++ b/packages/flutter_midi_command_linux/linux/flutter_midi_command_linux_plugin.cc @@ -0,0 +1,85 @@ +#include "include/flutter_midi_command_linux/flutter_midi_command_linux_plugin.h" + +#include +#include +#include + +#define FLUTTER_MIDI_COMMAND_LINUX_PLUGIN(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), flutter_midi_command_linux_plugin_get_type(), \ + FlutterMidiCommandLinuxPlugin)) + +struct _FlutterMidiCommandLinuxPlugin { + GObject parent_instance; + + FlPluginRegistrar* registrar; + + // Connection to Flutter engine. + FlMethodChannel* channel; + FIEventChannel* rxChannel; + FIEventChannel* setupChannel; +}; + +G_DEFINE_TYPE(FlutterMidiCommandLinuxPlugin, flutter_midi_command_linux_plugin, g_object_get_type()) + +// Called when a method call is received from Flutter. +static void flutter_midi_command_linux_plugin_handle_method_call( + FlutterMidiCommandLinuxPlugin* self, + FlMethodCall* method_call) { + g_autoptr(FlMethodResponse) response = nullptr; + + const gchar* method = fl_method_call_get_name(method_call); + + if (strcmp(method, "getPlatformVersion") == 0) { + struct utsname uname_data = {}; + uname(&uname_data); + g_autofree gchar *version = g_strdup_printf("Linux %s", uname_data.version); + g_autoptr(FlValue) result = fl_value_new_string(version); + response = FL_METHOD_RESPONSE(fl_method_success_response_new(result)); + } else { + response = FL_METHOD_RESPONSE(fl_method_not_implemented_response_new()); + } + + fl_method_call_respond(method_call, response, nullptr); +} + +static void flutter_midi_command_linux_plugin_dispose(GObject* object) { + G_OBJECT_CLASS(flutter_midi_command_linux_plugin_parent_class)->dispose(object); +} + +static void flutter_midi_command_linux_plugin_class_init(FlutterMidiCommandLinuxPluginClass* klass) { + G_OBJECT_CLASS(klass)->dispose = flutter_midi_command_linux_plugin_dispose; +} + +static void flutter_midi_command_linux_plugin_init(FlutterMidiCommandLinuxPlugin* self) {} + +static void method_call_cb(FlMethodChannel* channel, FlMethodCall* method_call, + gpointer user_data) { + FlutterMidiCommandLinuxPlugin* plugin = FLUTTER_MIDI_COMMAND_LINUX_PLUGIN(user_data); + flutter_midi_command_linux_plugin_handle_method_call(plugin, method_call); +} + +void flutter_midi_command_linux_plugin_register_with_registrar(FlPluginRegistrar* registrar) { + FlutterMidiCommandLinuxPlugin* plugin = FLUTTER_MIDI_COMMAND_LINUX_PLUGIN( + g_object_new(flutter_midi_command_linux_plugin_get_type(), nullptr)); + + g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new(); + g_autoptr(FlMethodChannel) channel = + fl_method_channel_new(fl_plugin_registrar_get_messenger(registrar), + "plugins.invisiblewrench.com/flutter_midi_command", + FL_METHOD_CODEC(codec)); + fl_method_channel_set_method_call_handler(channel, method_call_cb, + g_object_ref(plugin), + g_object_unref); + + g_autoptr(FlMethodChannel) channel = + fl_event_channel_new(fl_plugin_registrar_get_messenger(registrar), + "plugins.invisiblewrench.com/flutter_midi_command/rx_channel", + FL_METHOD_CODEC(codec)); + + g_autoptr(FlMethodChannel) channel = + fl_event_channel_new(fl_plugin_registrar_get_messenger(registrar), + "plugins.invisiblewrench.com/flutter_midi_command/setup_channel", + FL_METHOD_CODEC(codec)); + + g_object_unref(plugin); +} diff --git a/packages/flutter_midi_command_linux/linux/include/flutter_midi_command_linux/flutter_midi_command_linux_plugin.h b/packages/flutter_midi_command_linux/linux/include/flutter_midi_command_linux/flutter_midi_command_linux_plugin.h new file mode 100644 index 00000000..a8dc285a --- /dev/null +++ b/packages/flutter_midi_command_linux/linux/include/flutter_midi_command_linux/flutter_midi_command_linux_plugin.h @@ -0,0 +1,26 @@ +#ifndef FLUTTER_PLUGIN_FLUTTER_MIDI_COMMAND_LINUX_PLUGIN_H_ +#define FLUTTER_PLUGIN_FLUTTER_MIDI_COMMAND_LINUX_PLUGIN_H_ + +#include + +G_BEGIN_DECLS + +#ifdef FLUTTER_PLUGIN_IMPL +#define FLUTTER_PLUGIN_EXPORT __attribute__((visibility("default"))) +#else +#define FLUTTER_PLUGIN_EXPORT +#endif + +typedef struct _FlutterMidiCommandLinuxPlugin FlutterMidiCommandLinuxPlugin; +typedef struct { + GObjectClass parent_class; +} FlutterMidiCommandLinuxPluginClass; + +FLUTTER_PLUGIN_EXPORT GType flutter_midi_command_linux_plugin_get_type(); + +FLUTTER_PLUGIN_EXPORT void flutter_midi_command_linux_plugin_register_with_registrar( + FlPluginRegistrar* registrar); + +G_END_DECLS + +#endif // FLUTTER_PLUGIN_FLUTTER_MIDI_COMMAND_LINUX_PLUGIN_H_ diff --git a/packages/flutter_midi_command_linux/melos_flutter_midi_command_linux.iml b/packages/flutter_midi_command_linux/melos_flutter_midi_command_linux.iml new file mode 100644 index 00000000..9fc8ce79 --- /dev/null +++ b/packages/flutter_midi_command_linux/melos_flutter_midi_command_linux.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/flutter_midi_command_linux/pubspec.yaml b/packages/flutter_midi_command_linux/pubspec.yaml new file mode 100644 index 00000000..e1c23992 --- /dev/null +++ b/packages/flutter_midi_command_linux/pubspec.yaml @@ -0,0 +1,36 @@ +name: flutter_midi_command_linux +description: FlutterMidiCommand for Linux. +version: 1.0.0 +homepage: https://github.com/InvisibleWrench/FlutterMidiCommand +repository: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_linux +issue_tracker: https://github.com/InvisibleWrench/FlutterMidiCommand/issues +documentation: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_linux +topics: + - midi + - flutter-plugin + - linux + - alsa + - serial + +environment: + sdk: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" + +dependencies: + flutter: + sdk: flutter + flutter_midi_command_platform_interface: ^1.0.0 + midi: ^0.1.0 + ffi: ^2.0.1 + tuple: ^2.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + plugin: + implements: flutter_midi_command + platforms: + linux: + dartPluginClass: FlutterMidiCommandLinux diff --git a/packages/flutter_midi_command_linux/pubspec_overrides.yaml b/packages/flutter_midi_command_linux/pubspec_overrides.yaml new file mode 100644 index 00000000..9252d546 --- /dev/null +++ b/packages/flutter_midi_command_linux/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: flutter_midi_command_platform_interface +dependency_overrides: + flutter_midi_command_platform_interface: + path: ../flutter_midi_command_platform_interface diff --git a/packages/flutter_midi_command_linux/test/flutter_midi_command_linux_test.dart b/packages/flutter_midi_command_linux/test/flutter_midi_command_linux_test.dart new file mode 100644 index 00000000..ef5e1b04 --- /dev/null +++ b/packages/flutter_midi_command_linux/test/flutter_midi_command_linux_test.dart @@ -0,0 +1,34 @@ +import 'package:flutter_midi_command_linux/flutter_midi_command_linux.dart'; +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + test('registerWith installs linux platform implementation', () { + FlutterMidiCommandLinux.registerWith(); + expect(MidiCommandPlatform.instance, isA()); + }); + + test('linux plugin exposes streams and no-op virtual device APIs', () { + final plugin = FlutterMidiCommandLinux(); + + expect(plugin.onMidiDataReceived, isNotNull); + expect(plugin.onMidiSetupChanged, isNotNull); + expect( + () => plugin.addVirtualDevice(name: 'Test Virtual'), + returnsNormally, + ); + expect( + () => plugin.removeVirtualDevice(name: 'Test Virtual'), + returnsNormally, + ); + }); + + test('teardown closes midi data stream', () async { + final plugin = FlutterMidiCommandLinux(); + final done = expectLater(plugin.onMidiDataReceived!, emitsDone); + + plugin.teardown(); + + await done; + }); +} diff --git a/packages/flutter_midi_command_platform_interface/.gitignore b/packages/flutter_midi_command_platform_interface/.gitignore new file mode 100644 index 00000000..12901d3b --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/.gitignore @@ -0,0 +1,3 @@ +.packages +pubspec.lock +.dart_tool diff --git a/packages/flutter_midi_command_platform_interface/CHANGELOG.md b/packages/flutter_midi_command_platform_interface/CHANGELOG.md new file mode 100644 index 00000000..0d4616af --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/CHANGELOG.md @@ -0,0 +1,39 @@ +## 1.0.0 +- Major API cleanup for the federated 1.0 architecture. +- Typed device/port/packet models used across generated Pigeon host contracts. + +## 0.4.3 +- Merged PR4 from felixdollack + +## 0.4.2 +- No change + +## 0.4.1 +- Added `isNetworkSessionEnabled` and `setNetworkSessionEnabled` for controlling Network Sessions on iOS (introduced in FlutterMidiCommand 0.4.15) + +## 0.4.0 +- Fixed missing future in connectDevice() + +## 0.3.4 +- Improved bluetooth state handling: + - Start bluetooth subsystem only when you want, not automatically + - Allow to retrieve bluetooth state before starting scanning + - Allow to observe bluetooth state (poweredOn, poweredOff, ...) + +## 0.3.3 +- Fixed device status value on Android + +## 0.3.2 +- Fixed null warning + +## 0.3.1 +- Aligned midi ports + +## 0.3.0 +- Null safety + +## 0.2.1 +- Removed print. + +## 0.2.0 +- Initial release. diff --git a/packages/flutter_midi_command_platform_interface/LICENSE b/packages/flutter_midi_command_platform_interface/LICENSE new file mode 100644 index 00000000..1e7e656e --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/LICENSE @@ -0,0 +1,25 @@ +Copyright 2020 InvisibleWrench. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/flutter_midi_command_platform_interface/README.md b/packages/flutter_midi_command_platform_interface/README.md new file mode 100644 index 00000000..ee9b5c69 --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/README.md @@ -0,0 +1,14 @@ +# flutter_midi_command_platform_interface + +[![pub package](https://img.shields.io/pub/v/flutter_midi_command_platform_interface.svg)](https://pub.dev/packages/flutter_midi_command_platform_interface) + +Shared platform contracts for the `flutter_midi_command` plugin family. + +## Scope + +- `MidiCommandPlatform`: native serial/host MIDI contract +- `MidiBleTransport`: optional BLE transport contract implemented in Dart +- Shared models (`MidiDevice`, `MidiPacket`, `MidiPort`) + +BLE is intentionally not part of `MidiCommandPlatform`. +The app-facing `MidiCommand` API composes native MIDI + optional BLE transport. diff --git a/packages/flutter_midi_command_platform_interface/lib/flutter_midi_command_platform_interface.dart b/packages/flutter_midi_command_platform_interface/lib/flutter_midi_command_platform_interface.dart new file mode 100644 index 00000000..0be4b359 --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/lib/flutter_midi_command_platform_interface.dart @@ -0,0 +1,100 @@ +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:flutter_midi_command_platform_interface/midi_device.dart'; +import 'package:flutter_midi_command_platform_interface/midi_packet.dart'; +import 'package:flutter_midi_command_platform_interface/midi_port.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; +import 'method_channel_midi_command.dart'; + +export 'package:flutter_midi_command_platform_interface/midi_device.dart'; +export 'package:flutter_midi_command_platform_interface/midi_ble_transport.dart'; +export 'package:flutter_midi_command_platform_interface/midi_packet.dart'; +export 'package:flutter_midi_command_platform_interface/midi_port.dart'; + +abstract class MidiCommandPlatform extends PlatformInterface { + /// Constructs a MidiCommandPlatform. + MidiCommandPlatform() : super(token: _token); + + static final Object _token = Object(); + + static MidiCommandPlatform _instance = MethodChannelMidiCommand(); + + /// The default instance of [MidiCommandPlatform] to use. + /// + /// Defaults to [MethodChannelMidiCommand]. + static MidiCommandPlatform get instance => _instance; + + /// Platform-specific plugins should set this with their own platform-specific + /// class that extends [MidiCommandPlatform] when they register themselves. + static set instance(MidiCommandPlatform instance) { + PlatformInterface.verifyToken(instance, _token); + _instance = instance; + } + + /// Returns a list of found MIDI devices. + Future?> get devices async { + throw UnimplementedError('get devices has not been implemented.'); + } + + /// Connects to the device. + Future connectToDevice(MidiDevice device, {List? ports}) { + throw UnimplementedError('connectToDevice() has not been implemented.'); + } + + /// Disconnects from the device. + void disconnectDevice(MidiDevice device) { + throw UnimplementedError('disconnectDevice() has not been implemented.'); + } + + /// Disconnects from all devices. + void teardown() { + throw UnimplementedError('teardown() has not been implemented.'); + } + + /// Sends data to the currently connected device. + /// + /// Data is an UInt8List of individual MIDI command bytes. + void sendData(Uint8List data, {int? timestamp, String? deviceId}) { + throw UnimplementedError('sendData() has not been implemented.'); + } + + Stream? get onMidiDataReceived { + throw UnimplementedError( + 'get onMidiDataReceived has not been implemented.', + ); + } + + /// Stream firing events whenever a change in the MIDI setup occurs. + /// + /// For example, when a new BLE devices is discovered. + Stream? get onMidiSetupChanged { + throw UnimplementedError( + 'get onMidiSetupChanged has not been implemented.', + ); + } + + /// Creates a virtual MIDI source. + void addVirtualDevice({String? name}) { + throw UnimplementedError('addVirtualDevice() has not been implemented.'); + } + + /// Removes a previously created virtual MIDI source. + void removeVirtualDevice({String? name}) { + throw UnimplementedError('removeVirtualDevice() has not been implemented.'); + } + + /// Returns the current state of the network session (iOS only) + Future get isNetworkSessionEnabled { + throw UnimplementedError( + 'isNetworkSessionEnabled has not been implemented.', + ); + } + + /// Sets the enabled state of the network session (iOS only) + void setNetworkSessionEnabled(bool enabled) { + throw UnimplementedError( + 'setNetworkSessionEnabled has not been implemented.', + ); + } +} diff --git a/packages/flutter_midi_command_platform_interface/lib/method_channel_midi_command.dart b/packages/flutter_midi_command_platform_interface/lib/method_channel_midi_command.dart new file mode 100644 index 00000000..0067f3ba --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/lib/method_channel_midi_command.dart @@ -0,0 +1,322 @@ +import 'dart:async'; +import 'dart:typed_data'; +import 'flutter_midi_command_platform_interface.dart'; +import 'src/pigeon/midi_api.g.dart' as pigeon; + +typedef MidiFlutterApiSetUp = void Function(pigeon.MidiFlutterApi? api); + +/// Thrown when [MethodChannelMidiCommand] is initialized off the root isolate. +class MidiCommandRootIsolateRequiredError extends UnsupportedError { + MidiCommandRootIsolateRequiredError() + : super( + 'MidiCommand must be initialized on the root isolate. ' + 'Background isolates cannot register platform callbacks via ' + 'setMessageHandler(). Initialize MidiCommand on the root isolate and ' + 'forward MIDI events/commands to worker isolates via SendPort.', + ); +} + +/// A [MidiCommandPlatform] implementation backed by generated Pigeon APIs. +class MethodChannelMidiCommand extends MidiCommandPlatform + implements pigeon.MidiFlutterApi { + MethodChannelMidiCommand({ + pigeon.MidiHostApi? hostApi, + MidiFlutterApiSetUp? flutterApiSetUp, + }) : _hostApi = hostApi ?? pigeon.MidiHostApi(), + _flutterApiSetUp = flutterApiSetUp ?? pigeon.MidiFlutterApi.setUp { + _registerFlutterApi(); + } + + final pigeon.MidiHostApi _hostApi; + final MidiFlutterApiSetUp _flutterApiSetUp; + final StreamController _rxStreamController = + StreamController.broadcast(); + final StreamController _setupStreamController = + StreamController.broadcast(); + final Map _deviceCache = {}; + + void _registerFlutterApi() { + try { + _flutterApiSetUp(this); + } on UnsupportedError catch (error, stackTrace) { + if (_isBackgroundIsolateMessageHandlerError(error)) { + Error.throwWithStackTrace( + MidiCommandRootIsolateRequiredError(), + stackTrace, + ); + } + rethrow; + } + } + + bool _isBackgroundIsolateMessageHandlerError(UnsupportedError error) { + final message = error.message ?? ''; + return message.contains( + 'Background isolates do not support setMessageHandler()', + ) || + message.contains('setMessageHandler'); + } + + /// Returns a list of found MIDI devices. + @override + Future?> get devices async { + final hostDevices = await _hostApi.listDevices(); + _pruneDeviceCache( + hostDevices.map((device) => device.id).whereType().toSet(), + ); + return hostDevices.map(_fromHostDevice).toList(growable: false); + } + + void _pruneDeviceCache(Set liveIds) { + final staleIds = + _deviceCache.keys.where((id) => !liveIds.contains(id)).toList(); + for (final id in staleIds) { + final staleDevice = _deviceCache.remove(id); + staleDevice?.setConnectionState(MidiConnectionState.disconnected); + staleDevice?.dispose(); + } + } + + List _fromHostPorts( + List? portList, + MidiPortType fallbackType, + ) { + if (portList == null) { + return []; + } + return portList + .whereType() + .map((port) { + final type = + (port.isInput ?? (fallbackType == MidiPortType.IN)) + ? MidiPortType.IN + : MidiPortType.OUT; + final mappedPort = MidiPort((port.id ?? 0).toInt(), type); + mappedPort.connected = port.connected ?? false; + return mappedPort; + }) + .toList(growable: false); + } + + MidiDevice _fromHostDevice(pigeon.MidiHostDevice hostDevice) { + final id = hostDevice.id ?? ''; + final cached = id.isEmpty ? null : _deviceCache[id]; + final device = + cached ?? + MidiDevice( + id, + hostDevice.name ?? '-', + _fromHostDeviceType(hostDevice.type), + hostDevice.connected ?? false, + ); + device.name = hostDevice.name ?? '-'; + device.type = _fromHostDeviceType(hostDevice.type); + device.connected = hostDevice.connected ?? false; + device.inputPorts = _fromHostPorts(hostDevice.inputs, MidiPortType.IN); + device.outputPorts = _fromHostPorts(hostDevice.outputs, MidiPortType.OUT); + if (id.isNotEmpty) { + _deviceCache[id] = device; + } + return device; + } + + pigeon.MidiPort _toHostPort(MidiPort port, {bool? isInput}) { + return pigeon.MidiPort( + id: port.id, + connected: port.connected, + isInput: isInput ?? port.type == MidiPortType.IN, + ); + } + + pigeon.MidiHostDevice _toHostDevice(MidiDevice device) { + return pigeon.MidiHostDevice( + id: device.id, + name: device.name, + type: _toHostDeviceType(device.type), + connected: device.connected, + inputs: device.inputPorts + .map((port) => _toHostPort(port, isInput: true)) + .toList(growable: false), + outputs: device.outputPorts + .map((port) => _toHostPort(port, isInput: false)) + .toList(growable: false), + ); + } + + MidiDeviceType _fromHostDeviceType(pigeon.MidiDeviceType? type) { + switch (type) { + case pigeon.MidiDeviceType.serial: + return MidiDeviceType.serial; + case pigeon.MidiDeviceType.ble: + return MidiDeviceType.ble; + case pigeon.MidiDeviceType.virtualDevice: + return MidiDeviceType.virtual; + case pigeon.MidiDeviceType.ownVirtual: + return MidiDeviceType.ownVirtual; + case pigeon.MidiDeviceType.network: + return MidiDeviceType.network; + case pigeon.MidiDeviceType.unknown: + case null: + return MidiDeviceType.unknown; + } + } + + pigeon.MidiDeviceType _toHostDeviceType(MidiDeviceType type) { + switch (type) { + case MidiDeviceType.serial: + return pigeon.MidiDeviceType.serial; + case MidiDeviceType.ble: + return pigeon.MidiDeviceType.ble; + case MidiDeviceType.virtual: + return pigeon.MidiDeviceType.virtualDevice; + case MidiDeviceType.ownVirtual: + return pigeon.MidiDeviceType.ownVirtual; + case MidiDeviceType.network: + return pigeon.MidiDeviceType.network; + case MidiDeviceType.unknown: + return pigeon.MidiDeviceType.unknown; + } + } + + /// Connects to the device. + @override + Future connectToDevice( + MidiDevice device, { + List? ports, + }) async { + if (device.id.isNotEmpty) { + _deviceCache[device.id] = device; + } + device.setConnectionState(MidiConnectionState.connecting); + final hostPorts = ports + ?.map((port) => _toHostPort(port)) + .toList(growable: false); + await _hostApi.connect(_toHostDevice(device), hostPorts); + } + + /// Disconnects from the device. + @override + void disconnectDevice(MidiDevice device) { + device.setConnectionState(MidiConnectionState.disconnecting); + unawaited( + _hostApi.disconnect(device.id).then((_) { + if (device.connectionState == MidiConnectionState.disconnecting) { + device.setConnectionState(MidiConnectionState.disconnected); + } + _deviceCache.remove(device.id); + }), + ); + } + + /// Disconnects from all devices. + @override + void teardown() { + for (final device in _deviceCache.values) { + device.setConnectionState(MidiConnectionState.disconnected); + device.dispose(); + } + _deviceCache.clear(); + unawaited(_hostApi.teardown()); + } + + /// Sends data to the currently connected device. + /// + /// Data is an UInt8List of individual MIDI command bytes. + @override + void sendData(Uint8List data, {int? timestamp, String? deviceId}) { + unawaited( + _hostApi.sendData( + pigeon.MidiPacket( + device: + deviceId == null + ? null + : pigeon.MidiHostDevice( + id: deviceId, + type: pigeon.MidiDeviceType.unknown, + ), + data: data, + timestamp: timestamp, + ), + ), + ); + } + + /// Stream firing events whenever a midi package is received. + /// + /// The event contains the raw bytes contained in the MIDI package. + @override + Stream? get onMidiDataReceived => _rxStreamController.stream; + + /// Stream firing events whenever a change in the MIDI setup occurs. + /// + /// For example, when a new BLE devices is discovered. + @override + Stream? get onMidiSetupChanged => _setupStreamController.stream; + + @override + void onSetupChanged(String setupChange) { + _setupStreamController.add(setupChange); + } + + @override + void onDataReceived(pigeon.MidiPacket packet) { + final sourceDevice = packet.device ?? pigeon.MidiHostDevice(); + final midiDevice = _fromHostDevice(sourceDevice); + _rxStreamController.add( + MidiPacket( + packet.data ?? Uint8List(0), + packet.timestamp ?? 0, + midiDevice, + ), + ); + } + + @override + void onDeviceConnectionStateChanged(String deviceId, bool connected) { + if (!connected) { + final cached = _deviceCache[deviceId]; + cached?.connected = false; + _deviceCache.remove(deviceId); + _setupStreamController.add('deviceDisconnected'); + return; + } + + final cached = + _deviceCache[deviceId] ?? + MidiDevice(deviceId, deviceId, MidiDeviceType.unknown, true); + cached.connected = true; + _deviceCache[deviceId] = cached; + _setupStreamController.add('deviceConnected'); + } + + /// Creates a virtual MIDI source + /// + /// The virtual MIDI source appears as a virtual port in other apps. + /// Currently only supported on iOS. + @override + void addVirtualDevice({String? name}) { + unawaited(_hostApi.addVirtualDevice(name)); + } + + /// Removes a previously addd virtual MIDI source. + @override + void removeVirtualDevice({String? name}) { + unawaited(_hostApi.removeVirtualDevice(name)); + } + + /// Returns the current state of the network session + /// + /// This is functional on iOS only, will return null on other platforms + @override + Future get isNetworkSessionEnabled { + return _hostApi.isNetworkSessionEnabled(); + } + + /// Sets the enabled state of the network session + /// + /// This is functional on iOS only + @override + void setNetworkSessionEnabled(bool enabled) { + unawaited(_hostApi.setNetworkSessionEnabled(enabled)); + } +} diff --git a/packages/flutter_midi_command_platform_interface/lib/midi_ble_transport.dart b/packages/flutter_midi_command_platform_interface/lib/midi_ble_transport.dart new file mode 100644 index 00000000..4c6012e1 --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/lib/midi_ble_transport.dart @@ -0,0 +1,26 @@ +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:flutter_midi_command_platform_interface/midi_device.dart'; +import 'package:flutter_midi_command_platform_interface/midi_packet.dart'; +import 'package:flutter_midi_command_platform_interface/midi_port.dart'; + +/// BLE transport contract consumed by `MidiCommand`. +/// +/// This is intentionally separate from `MidiCommandPlatform` so native +/// platform wrappers can remain focused on serial/native MIDI stacks while BLE +/// is provided by shared Dart implementations (for example universal_ble). +abstract class MidiBleTransport { + Future startBluetooth(); + Future bluetoothState(); + Stream get onBluetoothStateChanged; + Future startScanningForBluetoothDevices(); + void stopScanningForBluetoothDevices(); + Future> get devices; + Future connectToDevice(MidiDevice device, {List? ports}); + void disconnectDevice(MidiDevice device); + void sendData(Uint8List data, {int? timestamp, String? deviceId}); + Stream get onMidiDataReceived; + Stream get onMidiSetupChanged; + void teardown(); +} diff --git a/packages/flutter_midi_command_platform_interface/lib/midi_device.dart b/packages/flutter_midi_command_platform_interface/lib/midi_device.dart new file mode 100644 index 00000000..25b9e570 --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/lib/midi_device.dart @@ -0,0 +1,90 @@ +import 'dart:async'; + +import 'package:flutter_midi_command_platform_interface/midi_port.dart'; + +enum MidiDeviceType { serial, ble, virtual, ownVirtual, network, unknown } + +enum MidiConnectionState { disconnected, connecting, connected, disconnecting } + +extension MidiDeviceTypeWire on MidiDeviceType { + String get wireValue { + switch (this) { + case MidiDeviceType.serial: + return 'native'; + case MidiDeviceType.ble: + return 'BLE'; + case MidiDeviceType.virtual: + return 'virtual'; + case MidiDeviceType.ownVirtual: + return 'own-virtual'; + case MidiDeviceType.network: + return 'network'; + case MidiDeviceType.unknown: + return 'unknown'; + } + } + + static MidiDeviceType fromWireValue(Object? value) { + final normalized = value?.toString().trim().toLowerCase() ?? 'unknown'; + switch (normalized) { + case 'ble': + case 'bluetooth': + case 'bonded': + return MidiDeviceType.ble; + case 'native': + case 'serial': + return MidiDeviceType.serial; + case 'virtual': + return MidiDeviceType.virtual; + case 'own-virtual': + case 'ownvirtual': + return MidiDeviceType.ownVirtual; + case 'network': + return MidiDeviceType.network; + default: + return MidiDeviceType.unknown; + } + } +} + +class MidiDevice { + String name; + String id; + MidiDeviceType type; + List inputPorts = []; + List outputPorts = []; + final StreamController _connectionStateController = + StreamController.broadcast(); + MidiConnectionState _connectionState; + + MidiDevice(this.id, this.name, this.type, bool connected) + : _connectionState = + connected + ? MidiConnectionState.connected + : MidiConnectionState.disconnected; + + Stream get onConnectionStateChanged => + _connectionStateController.stream; + + MidiConnectionState get connectionState => _connectionState; + + bool get connected => _connectionState == MidiConnectionState.connected; + + set connected(bool value) { + setConnectionState( + value ? MidiConnectionState.connected : MidiConnectionState.disconnected, + ); + } + + void setConnectionState(MidiConnectionState value) { + if (_connectionState == value) { + return; + } + _connectionState = value; + _connectionStateController.add(value); + } + + void dispose() { + _connectionStateController.close(); + } +} diff --git a/packages/flutter_midi_command_platform_interface/lib/midi_packet.dart b/packages/flutter_midi_command_platform_interface/lib/midi_packet.dart new file mode 100644 index 00000000..9c7ec989 --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/lib/midi_packet.dart @@ -0,0 +1,11 @@ +import 'dart:typed_data'; + +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; + +class MidiPacket { + int timestamp; + Uint8List data; + MidiDevice device; + + MidiPacket(this.data, this.timestamp, this.device); +} diff --git a/packages/flutter_midi_command_platform_interface/lib/midi_port.dart b/packages/flutter_midi_command_platform_interface/lib/midi_port.dart new file mode 100644 index 00000000..ae4634b9 --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/lib/midi_port.dart @@ -0,0 +1,9 @@ +enum MidiPortType { IN, OUT } + +class MidiPort { + MidiPortType type; + int id; + bool connected = false; + + MidiPort(this.id, this.type); +} diff --git a/packages/flutter_midi_command_platform_interface/lib/src/pigeon/midi_api.g.dart b/packages/flutter_midi_command_platform_interface/lib/src/pigeon/midi_api.g.dart new file mode 100644 index 00000000..51a07dde --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/lib/src/pigeon/midi_api.g.dart @@ -0,0 +1,495 @@ +// Autogenerated from Pigeon (v22.7.4), do not edit directly. +// See also: https://pub.dev/packages/pigeon +// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers + +import 'dart:async'; +import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; + +import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; +import 'package:flutter/services.dart'; + +PlatformException _createConnectionError(String channelName) { + return PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel: "$channelName".', + ); +} + +List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { + if (empty) { + return []; + } + if (error == null) { + return [result]; + } + return [error.code, error.message, error.details]; +} + +enum MidiDeviceType { + serial, + ble, + virtualDevice, + ownVirtual, + network, + unknown, +} + +class MidiHostDevice { + MidiHostDevice({ + this.id, + this.name, + this.type, + this.connected, + this.inputs, + this.outputs, + }); + + String? id; + + String? name; + + MidiDeviceType? type; + + bool? connected; + + List? inputs; + + List? outputs; + + Object encode() { + return [ + id, + name, + type, + connected, + inputs, + outputs, + ]; + } + + static MidiHostDevice decode(Object result) { + result as List; + return MidiHostDevice( + id: result[0] as String?, + name: result[1] as String?, + type: result[2] as MidiDeviceType?, + connected: result[3] as bool?, + inputs: (result[4] as List?)?.cast(), + outputs: (result[5] as List?)?.cast(), + ); + } +} + +class MidiPort { + MidiPort({ + this.id, + this.connected, + this.isInput, + }); + + int? id; + + bool? connected; + + bool? isInput; + + Object encode() { + return [ + id, + connected, + isInput, + ]; + } + + static MidiPort decode(Object result) { + result as List; + return MidiPort( + id: result[0] as int?, + connected: result[1] as bool?, + isInput: result[2] as bool?, + ); + } +} + +class MidiPacket { + MidiPacket({ + this.device, + this.data, + this.timestamp, + }); + + MidiHostDevice? device; + + Uint8List? data; + + int? timestamp; + + Object encode() { + return [ + device, + data, + timestamp, + ]; + } + + static MidiPacket decode(Object result) { + result as List; + return MidiPacket( + device: result[0] as MidiHostDevice?, + data: result[1] as Uint8List?, + timestamp: result[2] as int?, + ); + } +} + + +class _PigeonCodec extends StandardMessageCodec { + const _PigeonCodec(); + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is int) { + buffer.putUint8(4); + buffer.putInt64(value); + } else if (value is MidiDeviceType) { + buffer.putUint8(129); + writeValue(buffer, value.index); + } else if (value is MidiHostDevice) { + buffer.putUint8(130); + writeValue(buffer, value.encode()); + } else if (value is MidiPort) { + buffer.putUint8(131); + writeValue(buffer, value.encode()); + } else if (value is MidiPacket) { + buffer.putUint8(132); + writeValue(buffer, value.encode()); + } else { + super.writeValue(buffer, value); + } + } + + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 129: + final int? value = readValue(buffer) as int?; + return value == null ? null : MidiDeviceType.values[value]; + case 130: + return MidiHostDevice.decode(readValue(buffer)!); + case 131: + return MidiPort.decode(readValue(buffer)!); + case 132: + return MidiPacket.decode(readValue(buffer)!); + default: + return super.readValueOfType(type, buffer); + } + } +} + +class MidiHostApi { + /// Constructor for [MidiHostApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default + /// BinaryMessenger will be used which routes to the host platform. + MidiHostApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + final BinaryMessenger? pigeonVar_binaryMessenger; + + static const MessageCodec pigeonChannelCodec = _PigeonCodec(); + + final String pigeonVar_messageChannelSuffix; + + Future> listDevices() async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.listDevices$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send(null) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as List?)!.cast(); + } + } + + Future connect(MidiHostDevice device, List? ports) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.connect$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send([device, ports]) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + Future disconnect(String deviceId) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.disconnect$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send([deviceId]) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + Future teardown() async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.teardown$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send(null) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + Future sendData(MidiPacket packet) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.sendData$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send([packet]) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + Future addVirtualDevice(String? name) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.addVirtualDevice$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send([name]) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + Future removeVirtualDevice(String? name) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.removeVirtualDevice$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send([name]) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + Future isNetworkSessionEnabled() async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.isNetworkSessionEnabled$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send(null) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return (pigeonVar_replyList[0] as bool?); + } + } + + Future setNetworkSessionEnabled(bool enabled) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiHostApi.setNetworkSessionEnabled$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final List? pigeonVar_replyList = + await pigeonVar_channel.send([enabled]) as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } +} + +abstract class MidiFlutterApi { + static const MessageCodec pigeonChannelCodec = _PigeonCodec(); + + void onSetupChanged(String setupChange); + + void onDataReceived(MidiPacket packet); + + void onDeviceConnectionStateChanged(String deviceId, bool connected); + + static void setUp(MidiFlutterApi? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + { + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onSetupChanged$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (api == null) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onSetupChanged was null.'); + final List args = (message as List?)!; + final String? arg_setupChange = (args[0] as String?); + assert(arg_setupChange != null, + 'Argument for dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onSetupChanged was null, expected non-null String.'); + try { + api.onSetupChanged(arg_setupChange!); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + { + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDataReceived$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (api == null) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDataReceived was null.'); + final List args = (message as List?)!; + final MidiPacket? arg_packet = (args[0] as MidiPacket?); + assert(arg_packet != null, + 'Argument for dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDataReceived was null, expected non-null MidiPacket.'); + try { + api.onDataReceived(arg_packet!); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + { + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDeviceConnectionStateChanged$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (api == null) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDeviceConnectionStateChanged was null.'); + final List args = (message as List?)!; + final String? arg_deviceId = (args[0] as String?); + assert(arg_deviceId != null, + 'Argument for dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDeviceConnectionStateChanged was null, expected non-null String.'); + final bool? arg_connected = (args[1] as bool?); + assert(arg_connected != null, + 'Argument for dev.flutter.pigeon.flutter_midi_command_platform_interface.MidiFlutterApi.onDeviceConnectionStateChanged was null, expected non-null bool.'); + try { + api.onDeviceConnectionStateChanged(arg_deviceId!, arg_connected!); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } +} diff --git a/packages/flutter_midi_command_platform_interface/melos_flutter_midi_command_platform_interface.iml b/packages/flutter_midi_command_platform_interface/melos_flutter_midi_command_platform_interface.iml new file mode 100644 index 00000000..9fc8ce79 --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/melos_flutter_midi_command_platform_interface.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/flutter_midi_command_platform_interface/pubspec.yaml b/packages/flutter_midi_command_platform_interface/pubspec.yaml new file mode 100644 index 00000000..6122e5bd --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/pubspec.yaml @@ -0,0 +1,25 @@ +name: flutter_midi_command_platform_interface +description: A common platform interface for the FlutterMidiCommand plugin. +version: 1.0.0 +homepage: https://github.com/InvisibleWrench/FlutterMidiCommand +repository: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_platform_interface +issue_tracker: https://github.com/InvisibleWrench/FlutterMidiCommand/issues +documentation: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_platform_interface +topics: + - midi + - flutter-plugin + - federated-plugin + - platform-interface + +environment: + sdk: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" + +dependencies: + flutter: + sdk: flutter + plugin_platform_interface: ^2.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter diff --git a/packages/flutter_midi_command_platform_interface/test/method_channel_midi_command_test.dart b/packages/flutter_midi_command_platform_interface/test/method_channel_midi_command_test.dart new file mode 100644 index 00000000..760d965f --- /dev/null +++ b/packages/flutter_midi_command_platform_interface/test/method_channel_midi_command_test.dart @@ -0,0 +1,336 @@ +import 'dart:typed_data'; + +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:flutter_midi_command_platform_interface/method_channel_midi_command.dart'; +import 'package:flutter_midi_command_platform_interface/src/pigeon/midi_api.g.dart' + as pigeon; +import 'package:flutter_test/flutter_test.dart'; + +class _FakeHostApi extends pigeon.MidiHostApi { + List listedDevices = []; + pigeon.MidiHostDevice? lastConnectDevice; + List? lastConnectPorts; + final List disconnectCalls = []; + final List sentPackets = []; + int teardownCalls = 0; + int addVirtualCalls = 0; + int removeVirtualCalls = 0; + String? lastVirtualName; + bool? networkEnabled = false; + bool? setNetworkEnabledArg; + + @override + Future> listDevices() async => listedDevices; + + @override + Future connect( + pigeon.MidiHostDevice device, + List? ports, + ) async { + lastConnectDevice = device; + lastConnectPorts = ports; + } + + @override + Future disconnect(String deviceId) async { + disconnectCalls.add(deviceId); + } + + @override + Future teardown() async { + teardownCalls += 1; + } + + @override + Future sendData(pigeon.MidiPacket packet) async { + sentPackets.add(packet); + } + + @override + Future addVirtualDevice(String? name) async { + addVirtualCalls += 1; + lastVirtualName = name; + } + + @override + Future removeVirtualDevice(String? name) async { + removeVirtualCalls += 1; + lastVirtualName = name; + } + + @override + Future isNetworkSessionEnabled() async => networkEnabled; + + @override + Future setNetworkSessionEnabled(bool enabled) async { + setNetworkEnabledArg = enabled; + } +} + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + tearDown(() { + pigeon.MidiFlutterApi.setUp(null); + }); + + test('devices maps typed host devices and ports', () async { + final host = + _FakeHostApi() + ..listedDevices = [ + pigeon.MidiHostDevice( + id: 'serial-1', + name: 'Serial', + type: pigeon.MidiDeviceType.serial, + connected: true, + inputs: [ + pigeon.MidiPort(id: 0, connected: true, isInput: true), + ], + outputs: [ + pigeon.MidiPort(id: 1, connected: false, isInput: false), + ], + ), + ]; + final platform = MethodChannelMidiCommand(hostApi: host); + + final devices = await platform.devices; + + expect(devices, isNotNull); + expect(devices!.length, 1); + expect(devices.first.id, 'serial-1'); + expect(devices.first.name, 'Serial'); + expect(devices.first.type, MidiDeviceType.serial); + expect(devices.first.connected, isTrue); + expect(devices.first.inputPorts.first.id, 0); + expect(devices.first.inputPorts.first.type, MidiPortType.IN); + expect(devices.first.inputPorts.first.connected, isTrue); + expect(devices.first.outputPorts.first.id, 1); + expect(devices.first.outputPorts.first.type, MidiPortType.OUT); + expect(devices.first.outputPorts.first.connected, isFalse); + }); + + test('devices prunes stale cached devices when host list changes', () async { + final host = + _FakeHostApi() + ..listedDevices = [ + pigeon.MidiHostDevice( + id: 'serial-1', + name: 'Serial', + type: pigeon.MidiDeviceType.serial, + connected: true, + ), + ]; + final platform = MethodChannelMidiCommand(hostApi: host); + + final firstList = await platform.devices; + final device = firstList!.first; + final states = []; + final sub = device.onConnectionStateChanged.listen(states.add); + expect(device.connected, isTrue); + + host.listedDevices = []; + final secondList = await platform.devices; + + await Future.delayed(const Duration(milliseconds: 10)); + await sub.cancel(); + + expect(secondList, isEmpty); + expect(device.connected, isFalse); + expect(states, contains(MidiConnectionState.disconnected)); + }); + + test('pruning stale cache entries closes device state streams', () async { + final host = + _FakeHostApi() + ..listedDevices = [ + pigeon.MidiHostDevice( + id: 'serial-1', + name: 'Serial', + type: pigeon.MidiDeviceType.serial, + connected: true, + ), + ]; + final platform = MethodChannelMidiCommand(hostApi: host); + + final device = (await platform.devices)!.single; + final done = expectLater( + device.onConnectionStateChanged, + emitsInOrder([MidiConnectionState.disconnected, emitsDone]), + ); + + host.listedDevices = []; + await platform.devices; + await done; + }); + + test( + 'connect forwards typed payload and connection callback updates same instance', + () async { + final host = _FakeHostApi(); + final platform = MethodChannelMidiCommand(hostApi: host); + final device = MidiDevice( + 'serial-1', + 'Serial', + MidiDeviceType.serial, + false, + ); + final port = MidiPort(3, MidiPortType.OUT)..connected = true; + + await platform.connectToDevice(device, ports: [port]); + + expect(device.connectionState, MidiConnectionState.connecting); + expect(host.lastConnectDevice, isNotNull); + expect(host.lastConnectDevice!.id, 'serial-1'); + expect(host.lastConnectDevice!.type, pigeon.MidiDeviceType.serial); + expect(host.lastConnectPorts, isNotNull); + expect(host.lastConnectPorts!.length, 1); + expect(host.lastConnectPorts!.first.id, 3); + expect(host.lastConnectPorts!.first.connected, isTrue); + expect(host.lastConnectPorts!.first.isInput, isFalse); + + platform.onDeviceConnectionStateChanged('serial-1', true); + expect(device.connected, isTrue); + expect(device.connectionState, MidiConnectionState.connected); + }, + ); + + test( + 'disconnect triggers host disconnect and transitions to disconnected', + () async { + final host = _FakeHostApi(); + final platform = MethodChannelMidiCommand(hostApi: host); + final device = MidiDevice( + 'serial-1', + 'Serial', + MidiDeviceType.serial, + true, + ); + + platform.disconnectDevice(device); + + expect(device.connectionState, MidiConnectionState.disconnecting); + await Future.delayed(Duration.zero); + + expect(host.disconnectCalls, ['serial-1']); + expect(device.connectionState, MidiConnectionState.disconnected); + }, + ); + + test('disconnect callback removes cached entry for that device', () async { + final host = + _FakeHostApi() + ..listedDevices = [ + pigeon.MidiHostDevice( + id: 'serial-1', + name: 'Serial', + type: pigeon.MidiDeviceType.serial, + connected: true, + ), + ]; + final platform = MethodChannelMidiCommand(hostApi: host); + final device = (await platform.devices)!.first; + expect(device.connected, isTrue); + + platform.onDeviceConnectionStateChanged('serial-1', false); + expect(device.connected, isFalse); + + // If cache entry was removed, reconnect callback creates a new instance and + // does not mutate the old stale one. + platform.onDeviceConnectionStateChanged('serial-1', true); + expect(device.connected, isFalse); + }); + + test('sendData serializes into typed packet payload', () async { + final host = _FakeHostApi(); + final platform = MethodChannelMidiCommand(hostApi: host); + final bytes = Uint8List.fromList([0x90, 0x3C, 0x64]); + + platform.sendData(bytes, deviceId: 'serial-1', timestamp: 42); + platform.sendData(bytes); + await Future.delayed(Duration.zero); + + expect(host.sentPackets.length, 2); + expect(host.sentPackets.first.data, bytes); + expect(host.sentPackets.first.timestamp, 42); + expect(host.sentPackets.first.device?.id, 'serial-1'); + expect(host.sentPackets.last.device, isNull); + }); + + test('Flutter callbacks forward setup and midi streams', () async { + final host = _FakeHostApi(); + final platform = MethodChannelMidiCommand(hostApi: host); + final setupEvents = []; + final packets = []; + + final setupSub = platform.onMidiSetupChanged!.listen(setupEvents.add); + final packetSub = platform.onMidiDataReceived!.listen(packets.add); + + platform.onSetupChanged('deviceFound'); + platform.onDataReceived( + pigeon.MidiPacket( + device: pigeon.MidiHostDevice( + id: 'serial-1', + name: 'Serial', + type: pigeon.MidiDeviceType.serial, + connected: true, + ), + data: Uint8List.fromList([0xF8]), + timestamp: 7, + ), + ); + + await Future.delayed(const Duration(milliseconds: 10)); + await setupSub.cancel(); + await packetSub.cancel(); + + expect(setupEvents, ['deviceFound']); + expect(packets.length, 1); + expect(packets.first.data, Uint8List.fromList([0xF8])); + expect(packets.first.timestamp, 7); + expect(packets.first.device.id, 'serial-1'); + expect(packets.first.device.type, MidiDeviceType.serial); + }); + + test('virtual/network/teardown methods delegate to host api', () async { + final host = _FakeHostApi()..networkEnabled = true; + final platform = MethodChannelMidiCommand(hostApi: host); + final connected = MidiDevice( + 'serial-1', + 'Serial', + MidiDeviceType.serial, + true, + ); + + await platform.connectToDevice(connected); + platform.addVirtualDevice(name: 'Virtual'); + platform.removeVirtualDevice(name: 'Virtual'); + final networkEnabled = await platform.isNetworkSessionEnabled; + platform.setNetworkSessionEnabled(false); + platform.teardown(); + await Future.delayed(Duration.zero); + + expect(host.addVirtualCalls, 1); + expect(host.removeVirtualCalls, 1); + expect(networkEnabled, isTrue); + expect(host.setNetworkEnabledArg, isFalse); + expect(host.teardownCalls, 1); + expect(connected.connectionState, MidiConnectionState.disconnected); + }); + + test( + 'constructor throws root-isolate error for background message handler setup failures', + () { + expect( + () => MethodChannelMidiCommand( + hostApi: _FakeHostApi(), + flutterApiSetUp: (_) { + throw UnsupportedError( + 'Background isolates do not support setMessageHandler().', + ); + }, + ), + throwsA(isA()), + ); + }, + ); +} diff --git a/packages/flutter_midi_command_web/CHANGELOG.md b/packages/flutter_midi_command_web/CHANGELOG.md new file mode 100644 index 00000000..cc92267f --- /dev/null +++ b/packages/flutter_midi_command_web/CHANGELOG.md @@ -0,0 +1,4 @@ +## 1.0.0 + +- Initial web implementation release for `flutter_midi_command`. +- Web MIDI backend for device enumeration, connect/disconnect, send, and receive. diff --git a/packages/flutter_midi_command_web/LICENSE b/packages/flutter_midi_command_web/LICENSE new file mode 100644 index 00000000..664f94e0 --- /dev/null +++ b/packages/flutter_midi_command_web/LICENSE @@ -0,0 +1,25 @@ +Copyright 2020 InvisibleWrench. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Invisible Wrench ApS nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/flutter_midi_command_web/README.md b/packages/flutter_midi_command_web/README.md new file mode 100644 index 00000000..75edcbd6 --- /dev/null +++ b/packages/flutter_midi_command_web/README.md @@ -0,0 +1,41 @@ +# flutter_midi_command_web + +[![pub package](https://img.shields.io/pub/v/flutter_midi_command_web.svg)](https://pub.dev/packages/flutter_midi_command_web) + +Web implementation of `flutter_midi_command` backed by the browser Web MIDI API. + +## What it supports + +- Enumerating MIDI input/output ports as `MidiDevice` +- Connecting/disconnecting to discovered devices +- Receiving MIDI packets from input ports +- Sending MIDI packets to output ports +- Emitting setup-change events when browser MIDI ports appear/disappear + +## What it does not support + +- Virtual MIDI devices (`addVirtualDevice` / `removeVirtualDevice`) +- iOS/macOS network session APIs (`isNetworkSessionEnabled` / `setNetworkSessionEnabled`) +- BLE via `flutter_midi_command_ble` on web + +## Browser requirements + +- HTTPS origin (or localhost during development) +- Browser with Web MIDI API support (typically Chrome/Edge) +- User permission granted for MIDI access + +If the browser does not expose `navigator.requestMIDIAccess`, API calls will throw `UnsupportedError`. + +## Notes on permissions and SysEx + +The implementation requests MIDI access with SysEx enabled (`sysex: true`). +If SysEx permission is denied by the browser/user policy, initialization may fail and surface as an error from `devices`/`connectToDevice`. + +## Testing + +This package includes backend-injected unit tests in `test/flutter_midi_command_web_test.dart`. +Run in a browser with: + +```sh +flutter test --platform chrome +``` diff --git a/packages/flutter_midi_command_web/lib/flutter_midi_command_web.dart b/packages/flutter_midi_command_web/lib/flutter_midi_command_web.dart new file mode 100644 index 00000000..e997234f --- /dev/null +++ b/packages/flutter_midi_command_web/lib/flutter_midi_command_web.dart @@ -0,0 +1,437 @@ +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:flutter_web_plugins/flutter_web_plugins.dart'; + +import 'src/web_midi_backend.dart'; +import 'src/web_midi_backend_factory.dart'; + +class FlutterMidiCommandWeb extends MidiCommandPlatform { + FlutterMidiCommandWeb({WebMidiBackend? backend}) + : _backend = backend ?? createDefaultWebMidiBackend(); + + static void registerWith(Registrar registrar) { + MidiCommandPlatform.instance = FlutterMidiCommandWeb(); + } + + final WebMidiBackend _backend; + final StreamController _rxStreamController = + StreamController.broadcast(); + final StreamController _setupStreamController = + StreamController.broadcast(); + + StreamSubscription? _stateChangeSubscription; + bool _initialized = false; + + final Map _deviceSnapshots = + {}; + final Map _connectedDeviceRefs = {}; + final Map> _connectedInputPortsByDevice = + >{}; + final Map> _connectedOutputPortsByDevice = + >{}; + + UnsupportedError _unsupported(String message) { + return UnsupportedError('flutter_midi_command_web: $message'); + } + + Future _ensureInitialized() async { + if (_initialized) { + return; + } + + await _backend.initialize(); + + _stateChangeSubscription?.cancel(); + _stateChangeSubscription = _backend.onStateChanged.listen((event) { + switch (event.type) { + case WebMidiStateChangeType.connected: + _setupStreamController.add('deviceAppeared'); + case WebMidiStateChangeType.disconnected: + _setupStreamController.add('deviceDisappeared'); + case WebMidiStateChangeType.changed: + _setupStreamController.add('deviceStateChanged'); + } + }); + + _initialized = true; + } + + int _portNumericId(String portId, bool isInput, int fallbackIndex) { + final parsed = int.tryParse(portId); + if (parsed != null) { + return parsed; + } + + final seed = '$portId|${isInput ? 'in' : 'out'}'.hashCode; + final normalized = seed & 0x7fffffff; + if (normalized == 0) { + return fallbackIndex; + } + return normalized; + } + + String _deviceKeyForPort(WebMidiPortInfo port, {required String fallback}) { + final manufacturer = (port.manufacturer ?? '').trim(); + final name = (port.name ?? '').trim(); + + if (manufacturer.isNotEmpty || name.isNotEmpty) { + return '$manufacturer::$name'; + } + + if (port.id.isNotEmpty) { + return port.id; + } + + return fallback; + } + + String _displayNameForPort(WebMidiPortInfo port, {required String fallback}) { + final name = port.name?.trim(); + if (name != null && name.isNotEmpty) { + return name; + } + return fallback; + } + + Future> _snapshotDevices() async { + await _ensureInitialized(); + + final inputs = await _backend.listInputs(); + final outputs = await _backend.listOutputs(); + final grouped = {}; + + for (var i = 0; i < inputs.length; i++) { + final input = inputs[i]; + final key = _deviceKeyForPort(input, fallback: 'input-$i'); + final builder = grouped.putIfAbsent( + key, + () => _WebDeviceSnapshotBuilder( + id: key, + name: _displayNameForPort(input, fallback: 'MIDI Input $i'), + ), + ); + + builder.inputs.add( + _WebInputPortSnapshot( + id: _portNumericId(input.id, true, i), + connected: input.connected, + portId: input.id, + ), + ); + } + + for (var i = 0; i < outputs.length; i++) { + final output = outputs[i]; + final key = _deviceKeyForPort(output, fallback: 'output-$i'); + final builder = grouped.putIfAbsent( + key, + () => _WebDeviceSnapshotBuilder( + id: key, + name: _displayNameForPort(output, fallback: 'MIDI Output $i'), + ), + ); + + builder.outputs.add( + _WebOutputPortSnapshot( + id: _portNumericId(output.id, false, i), + connected: output.connected, + portId: output.id, + ), + ); + } + + final snapshots = grouped.values + .map((builder) => builder.build()) + .toList(growable: false); + + _deviceSnapshots + ..clear() + ..addEntries( + snapshots.map((snapshot) => MapEntry(snapshot.id, snapshot)), + ); + + return snapshots; + } + + MidiDevice _toMidiDevice(_WebDeviceSnapshot snapshot) { + final connected = _connectedDeviceRefs.containsKey(snapshot.id); + final device = + _connectedDeviceRefs[snapshot.id] ?? + MidiDevice( + snapshot.id, + snapshot.name, + MidiDeviceType.serial, + connected, + ); + + device + ..name = snapshot.name + ..type = MidiDeviceType.serial + ..connected = connected + ..inputPorts = snapshot.inputs + .map( + (port) => + MidiPort(port.id, MidiPortType.IN)..connected = port.connected, + ) + .toList(growable: false) + ..outputPorts = snapshot.outputs + .map( + (port) => + MidiPort(port.id, MidiPortType.OUT)..connected = port.connected, + ) + .toList(growable: false); + + return device; + } + + _WebDeviceSnapshot _requireSnapshot(String deviceId) { + final snapshot = _deviceSnapshots[deviceId]; + if (snapshot != null) { + return snapshot; + } + throw StateError('Unknown MIDI device: $deviceId'); + } + + List<_WebInputPortSnapshot> _filterInputPorts( + List<_WebInputPortSnapshot> available, + List? selected, + ) { + if (selected == null) { + return available; + } + + final ids = + selected + .where((port) => port.type == MidiPortType.IN) + .map((port) => port.id) + .toSet(); + + if (ids.isEmpty) { + return <_WebInputPortSnapshot>[]; + } + + return available.where((port) => ids.contains(port.id)).toList(); + } + + List<_WebOutputPortSnapshot> _filterOutputPorts( + List<_WebOutputPortSnapshot> available, + List? selected, + ) { + if (selected == null) { + return available; + } + + final ids = + selected + .where((port) => port.type == MidiPortType.OUT) + .map((port) => port.id) + .toSet(); + + if (ids.isEmpty) { + return <_WebOutputPortSnapshot>[]; + } + + return available.where((port) => ids.contains(port.id)).toList(); + } + + Future _attachInputListener( + _WebInputPortSnapshot input, + MidiDevice device, + String deviceId, + ) async { + await _backend.openInput(input.portId, (data, timestamp) { + final sourceDevice = _connectedDeviceRefs[deviceId] ?? device; + _rxStreamController.add( + MidiPacket(Uint8List.fromList(data), timestamp, sourceDevice), + ); + }); + } + + @override + Future?> get devices async { + final snapshots = await _snapshotDevices(); + return snapshots.map(_toMidiDevice).toList(growable: false); + } + + @override + Future connectToDevice( + MidiDevice device, { + List? ports, + }) async { + if (!_deviceSnapshots.containsKey(device.id)) { + await _snapshotDevices(); + } + + final snapshot = _requireSnapshot(device.id); + final inputPorts = _filterInputPorts(snapshot.inputs, ports); + final outputPorts = _filterOutputPorts(snapshot.outputs, ports); + + if (inputPorts.isEmpty && outputPorts.isEmpty) { + throw StateError('Device ${device.id} has no selectable MIDI ports.'); + } + + for (final input in inputPorts) { + await _attachInputListener(input, device, device.id); + } + + for (final output in outputPorts) { + await _backend.openOutput(output.portId); + } + + _connectedDeviceRefs[device.id] = device; + _connectedInputPortsByDevice[device.id] = inputPorts + .map((port) => port.portId) + .toList(growable: false); + _connectedOutputPortsByDevice[device.id] = outputPorts + .map((port) => port.portId) + .toList(growable: false); + + device.connected = true; + _setupStreamController.add('deviceConnected'); + } + + @override + void disconnectDevice(MidiDevice device) { + unawaited(_disconnectDeviceAsync(device)); + } + + Future _disconnectDeviceAsync(MidiDevice device) async { + final inputIds = _connectedInputPortsByDevice.remove(device.id) ?? const []; + final outputIds = + _connectedOutputPortsByDevice.remove(device.id) ?? const []; + + for (final inputId in inputIds) { + await _backend.closeInput(inputId); + } + + for (final outputId in outputIds) { + await _backend.closeOutput(outputId); + } + + _connectedDeviceRefs.remove(device.id); + device.connected = false; + _setupStreamController.add('deviceDisconnected'); + } + + @override + void sendData(Uint8List data, {int? timestamp, String? deviceId}) { + final targetOutputIds = []; + + if (deviceId != null) { + targetOutputIds.addAll( + _connectedOutputPortsByDevice[deviceId] ?? const [], + ); + } else { + for (final outputIds in _connectedOutputPortsByDevice.values) { + targetOutputIds.addAll(outputIds); + } + } + + for (final outputId in targetOutputIds) { + _backend.send(outputId, data, timestamp: timestamp); + } + } + + @override + Stream? get onMidiDataReceived => _rxStreamController.stream; + + @override + Stream? get onMidiSetupChanged => _setupStreamController.stream; + + @override + void addVirtualDevice({String? name}) { + throw _unsupported('virtual MIDI devices are not supported on web.'); + } + + @override + void removeVirtualDevice({String? name}) { + throw _unsupported('virtual MIDI devices are not supported on web.'); + } + + @override + Future get isNetworkSessionEnabled async => false; + + @override + void setNetworkSessionEnabled(bool enabled) { + // No-op on web. + } + + @override + void teardown() { + unawaited(_teardownAsync()); + } + + Future _teardownAsync() async { + final deviceIds = _connectedDeviceRefs.keys.toList(growable: false); + for (final deviceId in deviceIds) { + final device = _connectedDeviceRefs[deviceId]; + if (device != null) { + await _disconnectDeviceAsync(device); + } + } + + await _stateChangeSubscription?.cancel(); + _stateChangeSubscription = null; + _initialized = false; + _deviceSnapshots.clear(); + _backend.dispose(); + } +} + +class _WebInputPortSnapshot { + _WebInputPortSnapshot({ + required this.id, + required this.connected, + required this.portId, + }); + + final int id; + final bool connected; + final String portId; +} + +class _WebOutputPortSnapshot { + _WebOutputPortSnapshot({ + required this.id, + required this.connected, + required this.portId, + }); + + final int id; + final bool connected; + final String portId; +} + +class _WebDeviceSnapshot { + _WebDeviceSnapshot({ + required this.id, + required this.name, + required this.inputs, + required this.outputs, + }); + + final String id; + final String name; + final List<_WebInputPortSnapshot> inputs; + final List<_WebOutputPortSnapshot> outputs; +} + +class _WebDeviceSnapshotBuilder { + _WebDeviceSnapshotBuilder({required this.id, required this.name}); + + final String id; + final String name; + final List<_WebInputPortSnapshot> inputs = <_WebInputPortSnapshot>[]; + final List<_WebOutputPortSnapshot> outputs = <_WebOutputPortSnapshot>[]; + + _WebDeviceSnapshot build() { + return _WebDeviceSnapshot( + id: id, + name: name, + inputs: List<_WebInputPortSnapshot>.unmodifiable(inputs), + outputs: List<_WebOutputPortSnapshot>.unmodifiable(outputs), + ); + } +} diff --git a/packages/flutter_midi_command_web/lib/src/web_midi_backend.dart b/packages/flutter_midi_command_web/lib/src/web_midi_backend.dart new file mode 100644 index 00000000..a0495174 --- /dev/null +++ b/packages/flutter_midi_command_web/lib/src/web_midi_backend.dart @@ -0,0 +1,48 @@ +import 'dart:typed_data'; + +class WebMidiPortInfo { + const WebMidiPortInfo({ + required this.id, + required this.name, + required this.manufacturer, + required this.connected, + }); + + final String id; + final String? name; + final String? manufacturer; + final bool connected; +} + +enum WebMidiStateChangeType { connected, disconnected, changed } + +class WebMidiStateChange { + const WebMidiStateChange({required this.type, required this.portId}); + + final WebMidiStateChangeType type; + final String? portId; +} + +typedef WebMidiMessageCallback = void Function(Uint8List data, int timestamp); + +abstract class WebMidiBackend { + Future initialize(); + + Stream get onStateChanged; + + Future> listInputs(); + + Future> listOutputs(); + + Future openInput(String portId, WebMidiMessageCallback onMessage); + + Future closeInput(String portId); + + Future openOutput(String portId); + + Future closeOutput(String portId); + + void send(String outputPortId, Uint8List data, {int? timestamp}); + + void dispose(); +} diff --git a/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory.dart b/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory.dart new file mode 100644 index 00000000..dd01860a --- /dev/null +++ b/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory.dart @@ -0,0 +1,7 @@ +import 'web_midi_backend.dart'; +import 'web_midi_backend_factory_stub.dart' + if (dart.library.html) 'web_midi_backend_factory_web.dart' + as impl; + +WebMidiBackend createDefaultWebMidiBackend() => + impl.createDefaultWebMidiBackend(); diff --git a/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory_stub.dart b/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory_stub.dart new file mode 100644 index 00000000..b2bb4aac --- /dev/null +++ b/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory_stub.dart @@ -0,0 +1,64 @@ +import 'dart:typed_data'; + +import 'web_midi_backend.dart'; + +WebMidiBackend createDefaultWebMidiBackend() => UnsupportedWebMidiBackend(); + +class UnsupportedWebMidiBackend implements WebMidiBackend { + UnsupportedError _unsupported() { + return UnsupportedError( + 'Web MIDI API is unavailable on this platform. ' + 'Use Flutter web in a browser with Web MIDI support.', + ); + } + + @override + Future initialize() async { + throw _unsupported(); + } + + @override + Stream get onStateChanged => + const Stream.empty(); + + @override + Future> listInputs() async { + throw _unsupported(); + } + + @override + Future> listOutputs() async { + throw _unsupported(); + } + + @override + Future openInput( + String portId, + WebMidiMessageCallback onMessage, + ) async { + throw _unsupported(); + } + + @override + Future closeInput(String portId) async { + throw _unsupported(); + } + + @override + Future openOutput(String portId) async { + throw _unsupported(); + } + + @override + Future closeOutput(String portId) async { + throw _unsupported(); + } + + @override + void send(String outputPortId, Uint8List data, {int? timestamp}) { + throw _unsupported(); + } + + @override + void dispose() {} +} diff --git a/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory_web.dart b/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory_web.dart new file mode 100644 index 00000000..497168b9 --- /dev/null +++ b/packages/flutter_midi_command_web/lib/src/web_midi_backend_factory_web.dart @@ -0,0 +1,4 @@ +import 'web_midi_backend.dart'; +import 'web_midi_backend_web.dart'; + +WebMidiBackend createDefaultWebMidiBackend() => BrowserWebMidiBackend(); diff --git a/packages/flutter_midi_command_web/lib/src/web_midi_backend_web.dart b/packages/flutter_midi_command_web/lib/src/web_midi_backend_web.dart new file mode 100644 index 00000000..5602f316 --- /dev/null +++ b/packages/flutter_midi_command_web/lib/src/web_midi_backend_web.dart @@ -0,0 +1,214 @@ +import 'dart:async'; +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; +import 'dart:typed_data'; + +import 'package:web/web.dart' as web; + +import 'web_midi_backend.dart'; + +class BrowserWebMidiBackend implements WebMidiBackend { + web.MIDIAccess? _midiAccess; + final StreamController _stateController = + StreamController.broadcast(); + final Map _inputsById = {}; + final Map _outputsById = {}; + bool _initialized = false; + + @override + Future initialize() async { + if (_initialized) { + return; + } + + final navigatorObject = web.window.navigator as JSObject; + if (!navigatorObject.has('requestMIDIAccess')) { + throw UnsupportedError( + 'Web MIDI API is unavailable in this browser. ' + 'Use Chrome/Edge over HTTPS and allow MIDI access.', + ); + } + + final access = + await web.window.navigator + .requestMIDIAccess(web.MIDIOptions(sysex: true)) + .toDart; + + _midiAccess = access; + _initialized = true; + _bindStateChanges(access); + _refreshPortCache(); + } + + List _collectValues(JSObject mapLike) { + final iterator = mapLike.callMethod('values'.toJS); + final values = []; + + while (true) { + final next = iterator.callMethod('next'.toJS); + final done = (next['done'] as JSBoolean?)?.toDart ?? false; + if (done) { + break; + } + final value = next['value']; + if (value != null) { + values.add(value as T); + } + } + + return values; + } + + void _refreshPortCache() { + final access = _midiAccess; + if (access == null) { + return; + } + + final inputs = _collectValues(access.inputs as JSObject); + final outputs = _collectValues(access.outputs as JSObject); + + _inputsById + ..clear() + ..addEntries(inputs.map((port) => MapEntry(port.id, port))); + _outputsById + ..clear() + ..addEntries(outputs.map((port) => MapEntry(port.id, port))); + } + + void _bindStateChanges(web.MIDIAccess access) { + access.onstatechange = + ((web.Event event) { + final midiEvent = event as web.MIDIConnectionEvent; + _refreshPortCache(); + + final state = midiEvent.port?.state; + final type = switch (state) { + 'connected' => WebMidiStateChangeType.connected, + 'disconnected' => WebMidiStateChangeType.disconnected, + _ => WebMidiStateChangeType.changed, + }; + + _stateController.add( + WebMidiStateChange(type: type, portId: midiEvent.port?.id), + ); + }).toJS; + } + + web.MIDIInput _requireInput(String portId) { + final port = _inputsById[portId]; + if (port != null) { + return port; + } + throw StateError('Unknown MIDI input port: $portId'); + } + + web.MIDIOutput _requireOutput(String portId) { + final port = _outputsById[portId]; + if (port != null) { + return port; + } + throw StateError('Unknown MIDI output port: $portId'); + } + + @override + Stream get onStateChanged => _stateController.stream; + + @override + Future> listInputs() async { + await initialize(); + _refreshPortCache(); + + return _inputsById.values + .map( + (port) => WebMidiPortInfo( + id: port.id, + name: port.name, + manufacturer: port.manufacturer, + connected: port.state == 'connected', + ), + ) + .toList(growable: false); + } + + @override + Future> listOutputs() async { + await initialize(); + _refreshPortCache(); + + return _outputsById.values + .map( + (port) => WebMidiPortInfo( + id: port.id, + name: port.name, + manufacturer: port.manufacturer, + connected: port.state == 'connected', + ), + ) + .toList(growable: false); + } + + @override + Future openInput( + String portId, + WebMidiMessageCallback onMessage, + ) async { + await initialize(); + final input = _requireInput(portId); + + await input.open().toDart; + input.onmidimessage = + ((web.Event event) { + final midiEvent = event as web.MIDIMessageEvent; + final data = midiEvent.data?.toDart ?? Uint8List(0); + onMessage(Uint8List.fromList(data), event.timeStamp.toInt()); + }).toJS; + } + + @override + Future closeInput(String portId) async { + await initialize(); + final input = _requireInput(portId); + + input.onmidimessage = null; + await input.close().toDart; + } + + @override + Future openOutput(String portId) async { + await initialize(); + final output = _requireOutput(portId); + await output.open().toDart; + } + + @override + Future closeOutput(String portId) async { + await initialize(); + final output = _requireOutput(portId); + await output.close().toDart; + } + + @override + void send(String outputPortId, Uint8List data, {int? timestamp}) { + final output = _outputsById[outputPortId]; + if (output == null) { + return; + } + + final payload = data.map((byte) => byte.toJS).toList(growable: false).toJS; + if (timestamp != null) { + output.send(payload, timestamp.toDouble()); + } else { + output.send(payload); + } + } + + @override + void dispose() { + _midiAccess?.onstatechange = null; + _midiAccess = null; + _initialized = false; + _inputsById.clear(); + _outputsById.clear(); + } +} diff --git a/packages/flutter_midi_command_web/melos_flutter_midi_command_web.iml b/packages/flutter_midi_command_web/melos_flutter_midi_command_web.iml new file mode 100644 index 00000000..9fc8ce79 --- /dev/null +++ b/packages/flutter_midi_command_web/melos_flutter_midi_command_web.iml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/flutter_midi_command_web/pubspec.yaml b/packages/flutter_midi_command_web/pubspec.yaml new file mode 100644 index 00000000..eb416c98 --- /dev/null +++ b/packages/flutter_midi_command_web/pubspec.yaml @@ -0,0 +1,37 @@ +name: flutter_midi_command_web +description: Web MIDI browser implementation for flutter_midi_command. +version: 1.0.0 +homepage: https://github.com/InvisibleWrench/FlutterMidiCommand +repository: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_web +issue_tracker: https://github.com/InvisibleWrench/FlutterMidiCommand/issues +documentation: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_web +topics: + - midi + - flutter-plugin + - webmidi + - browser + - web + +environment: + sdk: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" + +dependencies: + flutter: + sdk: flutter + flutter_web_plugins: + sdk: flutter + web: ^1.1.1 + flutter_midi_command_platform_interface: ^1.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + plugin: + implements: flutter_midi_command + platforms: + web: + pluginClass: FlutterMidiCommandWeb + fileName: flutter_midi_command_web.dart diff --git a/packages/flutter_midi_command_web/pubspec_overrides.yaml b/packages/flutter_midi_command_web/pubspec_overrides.yaml new file mode 100644 index 00000000..9252d546 --- /dev/null +++ b/packages/flutter_midi_command_web/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: flutter_midi_command_platform_interface +dependency_overrides: + flutter_midi_command_platform_interface: + path: ../flutter_midi_command_platform_interface diff --git a/packages/flutter_midi_command_web/test/flutter_midi_command_web_test.dart b/packages/flutter_midi_command_web/test/flutter_midi_command_web_test.dart new file mode 100644 index 00000000..07155c87 --- /dev/null +++ b/packages/flutter_midi_command_web/test/flutter_midi_command_web_test.dart @@ -0,0 +1,320 @@ +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:flutter_midi_command_web/flutter_midi_command_web.dart'; +import 'package:flutter_midi_command_web/src/web_midi_backend.dart'; +import 'package:flutter_test/flutter_test.dart'; + +class _SendCall { + _SendCall(this.outputPortId, this.data, this.timestamp); + + final String outputPortId; + final Uint8List data; + final int? timestamp; +} + +class _FakeWebMidiBackend implements WebMidiBackend { + _FakeWebMidiBackend({ + required List inputs, + required List outputs, + this.initializeError, + }) : _inputs = Map.fromEntries( + inputs.map((port) => MapEntry(port.id, port)), + ), + _outputs = Map.fromEntries( + outputs.map((port) => MapEntry(port.id, port)), + ); + + final Object? initializeError; + + final Map _inputs; + final Map _outputs; + final StreamController _stateController = + StreamController.broadcast(); + final Map _inputCallbacks = + {}; + + final List openedInputs = []; + final List openedOutputs = []; + final List closedInputs = []; + final List closedOutputs = []; + final List<_SendCall> sendCalls = <_SendCall>[]; + + bool initialized = false; + int disposeCalls = 0; + + @override + Future initialize() async { + if (initializeError != null) { + throw initializeError!; + } + initialized = true; + } + + @override + Stream get onStateChanged => _stateController.stream; + + @override + Future> listInputs() async => + _inputs.values.toList(growable: false); + + @override + Future> listOutputs() async => + _outputs.values.toList(growable: false); + + @override + Future openInput( + String portId, + WebMidiMessageCallback onMessage, + ) async { + if (!_inputs.containsKey(portId)) { + throw StateError('Unknown input: $portId'); + } + openedInputs.add(portId); + _inputCallbacks[portId] = onMessage; + } + + @override + Future closeInput(String portId) async { + closedInputs.add(portId); + _inputCallbacks.remove(portId); + } + + @override + Future openOutput(String portId) async { + if (!_outputs.containsKey(portId)) { + throw StateError('Unknown output: $portId'); + } + openedOutputs.add(portId); + } + + @override + Future closeOutput(String portId) async { + closedOutputs.add(portId); + } + + @override + void send(String outputPortId, Uint8List data, {int? timestamp}) { + sendCalls.add(_SendCall(outputPortId, data, timestamp)); + } + + @override + void dispose() { + disposeCalls += 1; + } + + void emitStateChange(WebMidiStateChangeType type, {String? portId}) { + _stateController.add(WebMidiStateChange(type: type, portId: portId)); + } + + void emitMessage(String inputPortId, Uint8List data, int timestamp) { + final callback = _inputCallbacks[inputPortId]; + if (callback != null) { + callback(data, timestamp); + } + } +} + +WebMidiPortInfo _port( + String id, { + required String name, + required String manufacturer, + bool connected = true, +}) { + return WebMidiPortInfo( + id: id, + name: name, + manufacturer: manufacturer, + connected: connected, + ); +} + +void main() { + test('devices are mapped as serial MidiDevice with ports', () async { + final backend = _FakeWebMidiBackend( + inputs: [_port('1', name: 'Keys', manufacturer: 'Acme')], + outputs: [ + _port('11', name: 'Keys', manufacturer: 'Acme'), + ], + ); + + final plugin = FlutterMidiCommandWeb(backend: backend); + final devices = await plugin.devices; + + expect(backend.initialized, isTrue); + expect(devices, isNotNull); + expect(devices!.length, 1); + expect(devices.first.type, MidiDeviceType.serial); + expect(devices.first.inputPorts.length, 1); + expect(devices.first.outputPorts.length, 1); + expect(devices.first.inputPorts.first.id, 1); + expect(devices.first.outputPorts.first.id, 11); + }); + + test('state changes are emitted as setup events', () async { + final backend = _FakeWebMidiBackend(inputs: const [], outputs: const []); + final plugin = FlutterMidiCommandWeb(backend: backend); + + await plugin.devices; + final events = []; + final sub = plugin.onMidiSetupChanged!.listen(events.add); + + backend.emitStateChange(WebMidiStateChangeType.connected, portId: '1'); + backend.emitStateChange(WebMidiStateChangeType.disconnected, portId: '1'); + backend.emitStateChange(WebMidiStateChangeType.changed, portId: '1'); + + await Future.delayed(const Duration(milliseconds: 1)); + await sub.cancel(); + + expect( + events, + containsAll([ + 'deviceAppeared', + 'deviceDisappeared', + 'deviceStateChanged', + ]), + ); + }); + + test( + 'connect selects requested ports, receives data and sends to selected output', + () async { + final backend = _FakeWebMidiBackend( + inputs: [ + _port('1', name: 'Synth', manufacturer: 'Acme'), + _port('2', name: 'Synth', manufacturer: 'Acme'), + ], + outputs: [ + _port('11', name: 'Synth', manufacturer: 'Acme'), + _port('12', name: 'Synth', manufacturer: 'Acme'), + ], + ); + + final plugin = FlutterMidiCommandWeb(backend: backend); + final device = (await plugin.devices)!.single; + + final selectedInput = device.inputPorts.firstWhere( + (port) => port.id == 1, + ); + final selectedOutput = device.outputPorts.firstWhere( + (port) => port.id == 12, + ); + + await plugin.connectToDevice( + device, + ports: [selectedInput, selectedOutput], + ); + + expect(device.connected, isTrue); + expect(backend.openedInputs, ['1']); + expect(backend.openedOutputs, ['12']); + + final packets = []; + final sub = plugin.onMidiDataReceived!.listen(packets.add); + + backend.emitMessage('2', Uint8List.fromList([0x90]), 1); + backend.emitMessage('1', Uint8List.fromList([0x90, 0x3C, 0x64]), 42); + + await Future.delayed(const Duration(milliseconds: 1)); + + expect(packets.length, 1); + expect(packets.first.timestamp, 42); + expect(packets.first.device.id, device.id); + expect(packets.first.data, Uint8List.fromList([0x90, 0x3C, 0x64])); + + plugin.sendData( + Uint8List.fromList([0x80, 0x3C, 0x00]), + deviceId: device.id, + timestamp: 99, + ); + + expect(backend.sendCalls.length, 1); + expect(backend.sendCalls.first.outputPortId, '12'); + expect(backend.sendCalls.first.timestamp, 99); + + await sub.cancel(); + }, + ); + + test( + 'disconnect closes connected ports and marks device disconnected', + () async { + final backend = _FakeWebMidiBackend( + inputs: [ + _port('1', name: 'Synth', manufacturer: 'Acme'), + ], + outputs: [ + _port('11', name: 'Synth', manufacturer: 'Acme'), + ], + ); + + final plugin = FlutterMidiCommandWeb(backend: backend); + final device = (await plugin.devices)!.single; + + await plugin.connectToDevice(device); + plugin.disconnectDevice(device); + await Future.delayed(const Duration(milliseconds: 1)); + + expect(device.connected, isFalse); + expect(backend.closedInputs, ['1']); + expect(backend.closedOutputs, ['11']); + }, + ); + + test('teardown disposes backend and disconnects active devices', () async { + final backend = _FakeWebMidiBackend( + inputs: [ + _port('1', name: 'Synth A', manufacturer: 'Acme'), + ], + outputs: [ + _port('11', name: 'Synth A', manufacturer: 'Acme'), + ], + ); + + final plugin = FlutterMidiCommandWeb(backend: backend); + final device = (await plugin.devices)!.single; + + await plugin.connectToDevice(device); + plugin.teardown(); + await Future.delayed(const Duration(milliseconds: 1)); + + expect(backend.disposeCalls, 1); + expect(backend.closedInputs, ['1']); + expect(backend.closedOutputs, ['11']); + }); + + test('connectToDevice throws when no selected ports match', () async { + final backend = _FakeWebMidiBackend( + inputs: [ + _port('1', name: 'Synth', manufacturer: 'Acme'), + ], + outputs: [ + _port('11', name: 'Synth', manufacturer: 'Acme'), + ], + ); + + final plugin = FlutterMidiCommandWeb(backend: backend); + final device = (await plugin.devices)!.single; + + await expectLater( + plugin.connectToDevice( + device, + ports: [MidiPort(999, MidiPortType.IN)], + ), + throwsA(isA()), + ); + }); + + test('unsupported backend surfaces initialization errors', () async { + final backend = _FakeWebMidiBackend( + inputs: const [], + outputs: const [], + initializeError: UnsupportedError('Web MIDI unavailable'), + ); + + final plugin = FlutterMidiCommandWeb(backend: backend); + + await expectLater(plugin.devices, throwsA(isA())); + }); +} diff --git a/packages/flutter_midi_command_windows/.gitignore b/packages/flutter_midi_command_windows/.gitignore new file mode 100644 index 00000000..96486fd9 --- /dev/null +++ b/packages/flutter_midi_command_windows/.gitignore @@ -0,0 +1,30 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ diff --git a/packages/flutter_midi_command_windows/CHANGELOG.md b/packages/flutter_midi_command_windows/CHANGELOG.md new file mode 100644 index 00000000..3d65bf96 --- /dev/null +++ b/packages/flutter_midi_command_windows/CHANGELOG.md @@ -0,0 +1,63 @@ +## 1.0.0 + +* Major release aligned with the federated monorepo architecture. +* Updated to the 1.x platform interface and typed host models. + +## 0.3.0 + +* Updated device_manager package to 0.0.7, which includes the fix for Windows +* Updated UniversalBle package to 0.21.0, with minor API changes + +## 0.2.0 + +* Use device_manager package for USB device detection. + +## 0.1.0 + +* Cleanup + +## 0.0.1-dev.9 + +* Specify UniversalBle git dependecy + + +## 0.0.1-dev.8 + +* Added overrides for network session controls + + +## 0.0.1-dev.7 + +* Added BLE Support + + +## 0.0.1-dev.6 + +* Split into windows_midi_device. +* Better port enumeration +* Better device monitoring. + + +## 0.0.1-dev.5 + +* Added device monitoring, to notify when devices attach/detach + + +## 0.0.1-dev.4 + +* Fixed sending using midiOutLongMsg + + +## 0.0.1-dev.3 + +* Def update + + +## 0.0.1-dev.2 + +* License update + + +## 0.0.1-dev.1 + +* First release. No BLE Support, No Virtual Devices diff --git a/packages/flutter_midi_command_windows/LICENSE b/packages/flutter_midi_command_windows/LICENSE new file mode 100644 index 00000000..1e7e656e --- /dev/null +++ b/packages/flutter_midi_command_windows/LICENSE @@ -0,0 +1,25 @@ +Copyright 2020 InvisibleWrench. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/flutter_midi_command_windows/README.md b/packages/flutter_midi_command_windows/README.md new file mode 100644 index 00000000..a142f347 --- /dev/null +++ b/packages/flutter_midi_command_windows/README.md @@ -0,0 +1,5 @@ +# flutter_midi_command_windows + +[![pub package](https://img.shields.io/pub/v/flutter_midi_command_windows.svg)](https://pub.dev/packages/flutter_midi_command_windows) + +This is the windows specific implementation of [FlutterMidiCommand](https://pub.dev/packages/flutter_midi_command) diff --git a/packages/flutter_midi_command_windows/analysis_options.yaml b/packages/flutter_midi_command_windows/analysis_options.yaml new file mode 100644 index 00000000..a5744c1c --- /dev/null +++ b/packages/flutter_midi_command_windows/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/flutter_midi_command_windows/lib/flutter_midi_command_windows.dart b/packages/flutter_midi_command_windows/lib/flutter_midi_command_windows.dart new file mode 100644 index 00000000..afc2c0e8 --- /dev/null +++ b/packages/flutter_midi_command_windows/lib/flutter_midi_command_windows.dart @@ -0,0 +1,297 @@ +import 'dart:async'; +import 'dart:ffi'; +import 'dart:typed_data'; + +import 'package:device_manager/device_event.dart'; +import 'package:device_manager/device_manager.dart'; +import 'package:ffi/ffi.dart'; +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:flutter_midi_command_windows/windows_midi_device.dart'; +import 'package:win32/win32.dart'; + +class FlutterMidiCommandWindows extends MidiCommandPlatform { + final StreamController _rxStreamController = + StreamController.broadcast(); + late final Stream _rxStream; + + final StreamController _setupStreamController = + StreamController.broadcast(); + late final Stream _setupStream; + + final Map _connectedDevices = + {}; + + factory FlutterMidiCommandWindows() { + if (_instance == null) { + _instance = FlutterMidiCommandWindows._(); + } + return _instance!; + } + + static FlutterMidiCommandWindows? _instance; + + FlutterMidiCommandWindows._() { + _setupStream = _setupStreamController.stream; + _rxStream = _rxStreamController.stream; + _setupDeviceManager(); + } + + Future _setupDeviceManager() async { + await Future.delayed(const Duration(seconds: 3)); + DeviceManager().addListener(() { + final event = DeviceManager().lastEvent; + if (event == null) { + return; + } + if (event.eventType == EventType.add) { + _setupStreamController.add("deviceAppeared"); + } else if (event.eventType == EventType.remove) { + _setupStreamController.add("deviceDisappeared"); + } + }); + } + + static void registerWith() { + MidiCommandPlatform.instance = FlutterMidiCommandWindows(); + } + + @override + Future> get devices async { + final devices = {}; + + final inCaps = malloc(); + var nMidiDeviceNum = midiInGetNumDevs(); + final deviceInputs = {}; + + for (var i = 0; i < nMidiDeviceNum; ++i) { + midiInGetDevCaps(i, inCaps, sizeOf()); + final name = inCaps.ref.szPname; + var id = name; + + if (!deviceInputs.containsKey(name)) { + deviceInputs[name] = 0; + } else { + deviceInputs[name] = deviceInputs[name]! + 1; + } + + if (deviceInputs[name]! > 0) { + id = "$id (${deviceInputs[name]})"; + } + + final isConnected = _connectedDevices.containsKey(id); + devices[id] = WindowsMidiDevice( + id, + name, + _rxStreamController, + _setupStreamController, + _midiCB.nativeFunction.address, + ) + ..addInput(i, inCaps.ref) + ..connected = isConnected; + } + + free(inCaps); + + final outCaps = malloc(); + nMidiDeviceNum = midiOutGetNumDevs(); + final deviceOutputs = {}; + + for (var i = 0; i < nMidiDeviceNum; ++i) { + midiOutGetDevCaps(i, outCaps, sizeOf()); + final name = outCaps.ref.szPname; + var id = name; + + if (!deviceOutputs.containsKey(name)) { + deviceOutputs[name] = 0; + } else { + deviceOutputs[name] = deviceOutputs[name]! + 1; + } + + if (deviceOutputs[name]! > 0) { + id = "$id (${deviceOutputs[name]})"; + } + + if (devices.containsKey(id)) { + devices[id]! as WindowsMidiDevice..addOutput(i, outCaps.ref); + } else { + final isConnected = _connectedDevices.containsKey(id); + devices[id] = WindowsMidiDevice( + id, + name, + _rxStreamController, + _setupStreamController, + _midiCB.nativeFunction.address, + ) + ..addOutput(i, outCaps.ref) + ..connected = isConnected; + } + } + + free(outCaps); + + return devices.values.toList(); + } + + @override + Future connectToDevice(MidiDevice device, + {List? ports}) async { + if (device is! WindowsMidiDevice) { + return; + } + + final success = device.connect(); + if (success) { + _connectedDevices[device.id] = device; + } + } + + @override + void disconnectDevice(MidiDevice device, {bool remove = true}) { + if (device is! WindowsMidiDevice) { + return; + } + + final windowsDevice = _connectedDevices[device.id]; + if (windowsDevice == null) { + return; + } + + final result = windowsDevice.disconnect(); + if (result) { + _connectedDevices.remove(device.id); + _setupStreamController.add("deviceDisconnected"); + } + } + + @override + void teardown() { + _midiCB.close(); + + for (final device in _connectedDevices.values) { + disconnectDevice(device, remove: false); + } + _connectedDevices.clear(); + _setupStreamController.add("deviceDisconnected"); + _rxStreamController.close(); + } + + @override + void sendData(Uint8List data, {int? timestamp, String? deviceId}) { + if (deviceId != null) { + _connectedDevices[deviceId]?.send(data); + return; + } + + for (final device in _connectedDevices.values) { + device.send(data); + } + } + + @override + Stream? get onMidiDataReceived => _rxStream; + + @override + Stream? get onMidiSetupChanged => _setupStream; + + @override + void addVirtualDevice({String? name}) {} + + @override + void removeVirtualDevice({String? name}) {} + + @override + Future get isNetworkSessionEnabled async => false; + + @override + void setNetworkSessionEnabled(bool enabled) {} + + WindowsMidiDevice? findMidiDeviceForSource(int src) { + for (final wmd in _connectedDevices.values) { + if (wmd.containsMidiIn(src)) { + return wmd; + } + } + return null; + } +} + +String midiErrorMessage(int status) { + switch (status) { + case MMSYSERR_ALLOCATED: + return "Resource already allocated"; + case MMSYSERR_BADDEVICEID: + return "Device ID out of range"; + case MMSYSERR_INVALFLAG: + return "Invalid dwFlags"; + case MMSYSERR_INVALPARAM: + return 'Invalid pointer or structure'; + case MMSYSERR_NOMEM: + return "Unable to allocate memory"; + case MMSYSERR_INVALHANDLE: + return "Invalid handle"; + default: + return "Status $status"; + } +} + +final NativeCallable + _midiCB = NativeCallable.listener(_onMidiData); + +const int mHdrDone = 0x00000001; +const int mHdrPrepared = 0x00000002; +const int mHdrInQueue = 0x00000004; + +final List partialSysExBuffer = []; + +void _onMidiData( + int hMidiIn, int wMsg, int dwInstance, int dwParam1, int dwParam2) { + final dev = FlutterMidiCommandWindows().findMidiDeviceForSource(hMidiIn); + final midiHdrPointer = Pointer.fromAddress(dwParam1); + final midiHdr = midiHdrPointer.ref; + + switch (wMsg) { + case MM_MIM_OPEN: + dev?.connected = true; + break; + case MM_MIM_CLOSE: + dev?.connected = false; + break; + case MM_MIM_DATA: + final data = Uint32List.fromList([dwParam1]).buffer.asUint8List(); + dev?.handleData(data, dwParam2); + break; + case MM_MIM_LONGDATA: + if ((midiHdr.dwFlags & mHdrDone) != 0) { + final dataPointer = midiHdr.lpData.cast(); + final messageData = dataPointer.asTypedList(midiHdr.dwBytesRecorded); + + if (messageData.isNotEmpty && messageData.first == 0xF0) { + partialSysExBuffer.clear(); + } + + partialSysExBuffer.addAll(messageData); + + if (partialSysExBuffer.isNotEmpty && partialSysExBuffer.last == 0xF7) { + dev?.handleSysexData(messageData, midiHdrPointer); + partialSysExBuffer.clear(); + } + } else { + if ((midiHdr.dwFlags & mHdrPrepared) != 0) { + print('MHDR_PREPARED is set'); + } + if ((midiHdr.dwFlags & mHdrInQueue) != 0) { + print('MHDR_INQUEUE is set'); + } + } + break; + case MM_MIM_MOREDATA: + print("More data - unhandled!"); + break; + case MM_MIM_ERROR: + print("Error"); + break; + case MM_MIM_LONGERROR: + print("Long error"); + break; + } +} diff --git a/packages/flutter_midi_command_windows/lib/windows_midi_device.dart b/packages/flutter_midi_command_windows/lib/windows_midi_device.dart new file mode 100644 index 00000000..79ca7c06 --- /dev/null +++ b/packages/flutter_midi_command_windows/lib/windows_midi_device.dart @@ -0,0 +1,204 @@ +import 'dart:async'; +import 'dart:ffi'; +import 'dart:typed_data'; + +import 'package:ffi/ffi.dart'; +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:win32/win32.dart'; + +import 'flutter_midi_command_windows.dart'; + +const _numberOfBuffers = 4; + +class WindowsMidiDevice extends MidiDevice { + Map _ins = {}; + Map _outs = {}; + + StreamController _rxStreamCtrl; + StreamController _setupStreamController; + + final hMidiInDevicePtr = malloc(); + final hMidiOutDevicePtr = malloc(); + + int callbackAddress; + + final _bufferSize = 8192; + + List> _midiInHeaders = + List.generate(_numberOfBuffers, (index) => nullptr); + List> _midiInBuffers = + List.generate(_numberOfBuffers, (index) => nullptr); + + Pointer _midiOutHeader = nullptr; + Pointer _midiOutBuffer = nullptr; + + WindowsMidiDevice(String id, String name, this._rxStreamCtrl, + this._setupStreamController, this.callbackAddress) + : super(id, name, MidiDeviceType.serial, false); + + /// Connect to the device, ie. open input and output ports + /// NOTE: Currently only the first input/output port is considered + bool connect() { + // Open input + + var mIn = _ins.entries.firstOrNull; + if (mIn != null) { + var id = mIn.key; + int result = midiInOpen( + hMidiInDevicePtr, id, callbackAddress, 0, CALLBACK_FUNCTION); + if (result != 0) { + print("OPEN ERROR($result): ${midiErrorMessage(result)}"); + return false; + } else { + // Setup buffer + for (int i = 0; i < _numberOfBuffers; i++) { + _midiInBuffers[i] = malloc(_bufferSize); + _midiInHeaders[i] = malloc(); + _midiInHeaders[i].ref.lpData = _midiInBuffers[i] as LPSTR; + _midiInHeaders[i].ref.dwBufferLength = _bufferSize; + _midiInHeaders[i].ref.dwFlags = 0; + _midiInHeaders[i].ref.dwBytesRecorded = 0; + + result = midiInPrepareHeader( + hMidiInDevicePtr.value, _midiInHeaders[i], sizeOf()); + if (result != 0) { + print("HDR PREP ERROR: ${midiErrorMessage(result)}"); + return false; + } + + result = midiInAddBuffer( + hMidiInDevicePtr.value, _midiInHeaders[i], sizeOf()); + if (result != 0) { + print("HDR ADD ERROR: ${midiErrorMessage(result)}"); + return false; + } + } + + result = midiInStart(hMidiInDevicePtr.value); + if (result != 0) { + print("START ERROR: ${midiErrorMessage(result)}"); + return false; + } + } + } + + // Open output + var mOut = _outs.entries.firstOrNull; + if (mOut != null) { + var id = mOut.key; + + int result = midiOutOpen(hMidiOutDevicePtr, id, 0, 0, CALLBACK_NULL); + if (result != 0) { + print("OUT OPEN ERROR: result"); + return false; + } + + _midiOutBuffer = malloc(_bufferSize); + _midiOutHeader = malloc(); + } + connected = true; + _setupStreamController.add("deviceConnected"); + return true; + } + + bool disconnect() { + int result; + if (_ins.length > 0) { + result = midiInReset(hMidiInDevicePtr.value); + if (result != 0) { + print("RESET ERROR($result): ${midiErrorMessage(result)}"); + } + + for (int i = 0; i < _numberOfBuffers; i++) { + if (_midiInHeaders[i] != nullptr) { + midiInUnprepareHeader( + hMidiInDevicePtr.value, _midiInHeaders[i], sizeOf()); + free(_midiInHeaders[i]); + } + if (_midiInBuffers[i] != nullptr) { + free(_midiInBuffers[i]); + } + } + + result = midiInStop(hMidiInDevicePtr.value); + if (result != 0) { + print("STOP ERROR($result): ${midiErrorMessage(result)}"); + } + + result = midiInClose(hMidiInDevicePtr.value); + if (result != 0) { + print("CLOSE ERROR($result): ${midiErrorMessage(result)}"); + } + + free(hMidiInDevicePtr); + } + + if (_outs.length > 0) { + result = midiOutClose(hMidiOutDevicePtr.value); + if (result != 0) { + print("OUT CLOSE ERROR($result): ${midiErrorMessage(result)}"); + } + free(hMidiOutDevicePtr); + } + + free(_midiOutBuffer); + free(_midiOutHeader); + + connected = false; + return true; + } + + addInput(int id, MIDIINCAPS input) { + _ins[id] = input; + inputPorts.add(MidiPort(input.wPid, MidiPortType.IN)); + } + + addOutput(int id, MIDIOUTCAPS output) { + _outs[id] = output; + outputPorts.add(MidiPort(output.wPid, MidiPortType.OUT)); + } + + containsMidiIn(int input) => hMidiInDevicePtr.value == input; + + _resetHeader(Pointer midiHdrPointer) { + midiInAddBuffer(hMidiInDevicePtr.value, midiHdrPointer, sizeOf()); + } + + handleData(Uint8List data, int timestamp) { + // print('handle data $data'); + _rxStreamCtrl.add(MidiPacket(data, timestamp, this)); + } + + handleSysexData(Uint8List data, Pointer midiHdrPointer) { + // print('handle SysEX: $data'); + _rxStreamCtrl.add(MidiPacket(data, 0, this)); + _resetHeader(midiHdrPointer); + } + + send(Uint8List data) async { + // Set data in out buffer + _midiOutBuffer.asTypedList(data.length).setAll(0, data); + _midiOutHeader.ref.lpData = _midiOutBuffer as LPSTR; + _midiOutHeader.ref.dwBytesRecorded = + _midiOutHeader.ref.dwBufferLength = data.length; + _midiOutHeader.ref.dwFlags = 0; + + int result = midiOutPrepareHeader( + hMidiOutDevicePtr.value, _midiOutHeader, sizeOf()); + if (result != 0) { + print("HDR OUT PREP ERROR: ${midiErrorMessage(result)}"); + } + + result = midiOutLongMsg( + hMidiOutDevicePtr.value, _midiOutHeader, sizeOf()); + if (result != 0) { + print("SEND ERROR($result): ${midiErrorMessage(result)}"); + } + + result = midiOutUnprepareHeader( + hMidiOutDevicePtr.value, _midiOutHeader, sizeOf()); + if (result != 0) { + print("OUT UNPREPARE ERROR($result): ${midiErrorMessage(result)}"); + } + } +} diff --git a/packages/flutter_midi_command_windows/pubspec.yaml b/packages/flutter_midi_command_windows/pubspec.yaml new file mode 100644 index 00000000..9b54080d --- /dev/null +++ b/packages/flutter_midi_command_windows/pubspec.yaml @@ -0,0 +1,39 @@ +name: flutter_midi_command_windows +description: FlutterMidiCommand for windows. +version: 1.0.0 +homepage: https://github.com/InvisibleWrench/FlutterMidiCommand +repository: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_windows +issue_tracker: https://github.com/InvisibleWrench/FlutterMidiCommand/issues +documentation: https://github.com/InvisibleWrench/FlutterMidiCommand/tree/main/packages/flutter_midi_command_windows +topics: + - midi + - flutter-plugin + - windows + - winmidi + - serial + +environment: + sdk: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" + +dependencies: + flutter: + sdk: flutter + flutter_midi_command_platform_interface: ^1.0.0 + ffi: ^2.1.4 + win32: ^5.14.0 + device_manager: ^0.0.7 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + + +# The following section is specific to Flutter. +flutter: + plugin: + implements: flutter_midi_command + platforms: + windows: + dartPluginClass: FlutterMidiCommandWindows diff --git a/packages/flutter_midi_command_windows/pubspec_overrides.yaml b/packages/flutter_midi_command_windows/pubspec_overrides.yaml new file mode 100644 index 00000000..9252d546 --- /dev/null +++ b/packages/flutter_midi_command_windows/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: flutter_midi_command_platform_interface +dependency_overrides: + flutter_midi_command_platform_interface: + path: ../flutter_midi_command_platform_interface diff --git a/packages/flutter_midi_command_windows/test/flutter_midi_command_windows_test.dart b/packages/flutter_midi_command_windows/test/flutter_midi_command_windows_test.dart new file mode 100644 index 00000000..2994555e --- /dev/null +++ b/packages/flutter_midi_command_windows/test/flutter_midi_command_windows_test.dart @@ -0,0 +1,21 @@ +import 'package:flutter_midi_command_windows/flutter_midi_command_windows.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:win32/win32.dart'; + +void main() { + test('midiErrorMessage maps known WinMM status codes', () { + expect(midiErrorMessage(MMSYSERR_ALLOCATED), 'Resource already allocated'); + expect(midiErrorMessage(MMSYSERR_BADDEVICEID), 'Device ID out of range'); + expect(midiErrorMessage(MMSYSERR_INVALFLAG), 'Invalid dwFlags'); + expect( + midiErrorMessage(MMSYSERR_INVALPARAM), + 'Invalid pointer or structure', + ); + expect(midiErrorMessage(MMSYSERR_NOMEM), 'Unable to allocate memory'); + expect(midiErrorMessage(MMSYSERR_INVALHANDLE), 'Invalid handle'); + }); + + test('midiErrorMessage falls back for unknown status', () { + expect(midiErrorMessage(-12345), 'Status -12345'); + }); +} diff --git a/pigeons/midi_api.dart b/pigeons/midi_api.dart new file mode 100644 index 00000000..f1bcb05a --- /dev/null +++ b/pigeons/midi_api.dart @@ -0,0 +1,59 @@ +import 'package:pigeon/pigeon.dart'; + +@ConfigurePigeon( + PigeonOptions( + dartOut: + 'packages/flutter_midi_command_platform_interface/lib/src/pigeon/midi_api.g.dart', + dartOptions: DartOptions(), + kotlinOut: + 'packages/flutter_midi_command_android/android/src/main/kotlin/com/invisiblewrench/fluttermidicommand/pigeon/MidiApi.g.kt', + kotlinOptions: KotlinOptions( + package: 'com.invisiblewrench.fluttermidicommand.pigeon', + ), + swiftOut: + 'packages/flutter_midi_command_darwin/ios/Classes/pigeon/MidiApi.g.swift', + swiftOptions: SwiftOptions(), + ), +) +class MidiHostDevice { + String? id; + String? name; + MidiDeviceType? type; + bool? connected; + List? inputs; + List? outputs; +} + +enum MidiDeviceType { serial, ble, virtualDevice, ownVirtual, network, unknown } + +class MidiPort { + int? id; + bool? connected; + bool? isInput; +} + +class MidiPacket { + MidiHostDevice? device; + Uint8List? data; + int? timestamp; +} + +@HostApi() +abstract class MidiHostApi { + List listDevices(); + void connect(MidiHostDevice device, List? ports); + void disconnect(String deviceId); + void teardown(); + void sendData(MidiPacket packet); + void addVirtualDevice(String? name); + void removeVirtualDevice(String? name); + bool? isNetworkSessionEnabled(); + void setNetworkSessionEnabled(bool enabled); +} + +@FlutterApi() +abstract class MidiFlutterApi { + void onSetupChanged(String setupChange); + void onDataReceived(MidiPacket packet); + void onDeviceConnectionStateChanged(String deviceId, bool connected); +} diff --git a/pubspec.yaml b/pubspec.yaml index b612b212..4494673f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,23 +1,39 @@ name: flutter_midi_command -description: A Flutter plugin for sending and receiving MIDI messages between Flutter and physical and virtual MIDI devices. Wraps CoreMIDI and android.media.midi in a thin dart/flutter layer. +description: A Flutter plugin for sending and receiving MIDI messages between Flutter and physical and virtual MIDI devices. -version: 0.5.3 +version: 1.0.0 homepage: https://github.com/InvisibleWrench/FlutterMidiCommand +repository: https://github.com/InvisibleWrench/FlutterMidiCommand +issue_tracker: https://github.com/InvisibleWrench/FlutterMidiCommand/issues +documentation: https://github.com/InvisibleWrench/FlutterMidiCommand#readme +topics: + - midi + - flutter-plugin + - bluetooth + - webmidi + - music-tech environment: - sdk: ">=3.1.0 <4.0.0" - flutter: ">=2.11.0" + sdk: ">=3.7.0 <4.0.0" + flutter: ">=3.24.0" dependencies: flutter: sdk: flutter - flutter_midi_command_platform_interface: ^0.4.1 - flutter_midi_command_linux: ^0.3.0 - flutter_midi_command_windows: ^0.3.0 + async: ^2.12.0 + flutter_midi_command_platform_interface: ^1.0.0 + flutter_midi_command_linux: ^1.0.0 + flutter_midi_command_windows: ^1.0.0 + flutter_midi_command_web: ^1.0.0 + flutter_midi_command_android: ^1.0.0 + flutter_midi_command_darwin: ^1.0.0 dev_dependencies: flutter_test: sdk: flutter + flutter_lints: ^5.0.0 + melos: ^6.3.2 + pigeon: ^22.6.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec @@ -31,13 +47,14 @@ flutter: plugin: platforms: android: - package: com.invisiblewrench.fluttermidicommand - pluginClass: FlutterMidiCommandPlugin + default_package: flutter_midi_command_android ios: - pluginClass: FlutterMidiCommandPlugin + default_package: flutter_midi_command_darwin macos: - pluginClass: SwiftFlutterMidiCommandPlugin + default_package: flutter_midi_command_darwin linux: default_package: flutter_midi_command_linux windows: - default_package: flutter_midi_command_windows \ No newline at end of file + default_package: flutter_midi_command_windows + web: + default_package: flutter_midi_command_web diff --git a/pubspec_overrides.yaml b/pubspec_overrides.yaml new file mode 100644 index 00000000..401500e0 --- /dev/null +++ b/pubspec_overrides.yaml @@ -0,0 +1,14 @@ +# melos_managed_dependency_overrides: flutter_midi_command_android,flutter_midi_command_darwin,flutter_midi_command_linux,flutter_midi_command_platform_interface,flutter_midi_command_web,flutter_midi_command_windows +dependency_overrides: + flutter_midi_command_android: + path: packages/flutter_midi_command_android + flutter_midi_command_darwin: + path: packages/flutter_midi_command_darwin + flutter_midi_command_linux: + path: packages/flutter_midi_command_linux + flutter_midi_command_platform_interface: + path: packages/flutter_midi_command_platform_interface + flutter_midi_command_web: + path: packages/flutter_midi_command_web + flutter_midi_command_windows: + path: packages/flutter_midi_command_windows diff --git a/test/flutter_midi_command_test.dart b/test/flutter_midi_command_test.dart index a5eb0900..03b57bac 100644 --- a/test/flutter_midi_command_test.dart +++ b/test/flutter_midi_command_test.dart @@ -1,4 +1,484 @@ +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:flutter_midi_command/flutter_midi_command.dart'; +import 'package:flutter_midi_command/flutter_midi_command_messages.dart'; +import 'package:flutter_midi_command_platform_interface/flutter_midi_command_platform_interface.dart'; +import 'package:flutter_test/flutter_test.dart'; + +class _FakePlatform extends MidiCommandPlatform { + final _rx = StreamController.broadcast(); + final _setup = StreamController.broadcast(); + final sent = []; + final connected = []; + final disconnected = []; + var teardownCalls = 0; + + @override + Future?> get devices async => [ + MidiDevice('serial-1', 'Serial', MidiDeviceType.serial, false), + ]; + + @override + Future connectToDevice( + MidiDevice device, { + List? ports, + }) async { + connected.add(device.id); + Future.delayed(const Duration(milliseconds: 10), () { + device.connected = true; + }); + } + + @override + void disconnectDevice(MidiDevice device) { + disconnected.add(device.id); + device.connected = false; + } + + @override + void teardown() { + teardownCalls += 1; + } + + @override + void sendData(Uint8List data, {int? timestamp, String? deviceId}) { + sent.add(data); + } + + @override + Stream? get onMidiDataReceived => _rx.stream; + + @override + Stream? get onMidiSetupChanged => _setup.stream; + + void emitPacket(MidiPacket packet) { + _rx.add(packet); + } + + void emitSetup(String value) { + _setup.add(value); + } +} + +class _FakeBleTransport implements MidiBleTransport { + final _rx = StreamController.broadcast(); + final _setup = StreamController.broadcast(); + final _state = StreamController.broadcast(); + + final sent = []; + final connected = []; + final disconnected = []; + var startBluetoothCalls = 0; + var startBluetoothFailures = 0; + var teardownCalls = 0; + + @override + Future bluetoothState() async => 'poweredOn'; + + @override + Future startBluetooth() async { + startBluetoothCalls += 1; + if (startBluetoothFailures > 0) { + startBluetoothFailures -= 1; + throw StateError('bluetoothStartFailed'); + } + _state.add('poweredOn'); + } + + @override + Stream get onBluetoothStateChanged => _state.stream; + + @override + Future startScanningForBluetoothDevices() async {} + + @override + void stopScanningForBluetoothDevices() {} + + @override + Future> get devices async => [ + MidiDevice('ble-1', 'BLE', MidiDeviceType.ble, false), + ]; + + @override + Future connectToDevice( + MidiDevice device, { + List? ports, + }) async { + connected.add(device.id); + Future.delayed(const Duration(milliseconds: 10), () { + device.connected = true; + }); + } + + @override + void disconnectDevice(MidiDevice device) { + disconnected.add(device.id); + device.connected = false; + } + + @override + void sendData(Uint8List data, {int? timestamp, String? deviceId}) { + sent.add(data); + } + + @override + Stream get onMidiDataReceived => _rx.stream; + + @override + Stream get onMidiSetupChanged => _setup.stream; + + @override + void teardown() { + teardownCalls += 1; + } + + void emitPacket(MidiPacket packet) { + _rx.add(packet); + } + + void emitSetup(String value) { + _setup.add(value); + } +} + +class _NeverConnectPlatform extends _FakePlatform { + @override + Future connectToDevice( + MidiDevice device, { + List? ports, + }) async { + connected.add(device.id); + } +} + +class _FailedConnectPlatform extends _FakePlatform { + @override + Future connectToDevice( + MidiDevice device, { + List? ports, + }) async { + connected.add(device.id); + Future.delayed(const Duration(milliseconds: 10), () { + device.connected = false; + }); + } +} + +class _FakePlatformWithBleHost extends _FakePlatform { + @override + Future?> get devices async => [ + MidiDevice('host-ble-1', 'Host BLE', MidiDeviceType.ble, false), + ]; +} void main() { + setUp(() { + MidiCommand.resetForTest(); + }); + + test('BLE APIs require BLE transport implementation', () async { + final platform = _FakePlatform(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(); + + expect(() => midi.startBluetooth(), throwsA(isA())); + }); + + test('BLE policy exclusion blocks BLE operations', () async { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + + final midi = MidiCommand(bleTransport: ble)..configureTransportPolicy( + const MidiTransportPolicy(excludedTransports: {MidiTransport.ble}), + ); + + expect( + () => midi.startScanningForBluetoothDevices(), + throwsA(isA()), + ); + }); + + test( + 'device list combines platform and BLE devices when BLE is enabled', + () async { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + + final midi = MidiCommand(bleTransport: ble); + final devices = await midi.devices; + + expect(devices, isNotNull); + expect(devices!.length, 2); + expect(devices.any((d) => d.type == MidiDeviceType.serial), isTrue); + expect(devices.any((d) => d.type == MidiDeviceType.ble), isTrue); + }, + ); + + test('sendData fans out to both platform and BLE backends', () { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + + final midi = MidiCommand(bleTransport: ble); + final data = Uint8List.fromList([0x90, 0x3C, 0x64]); + midi.sendData(data); + + expect(platform.sent.length, 1); + expect(ble.sent.length, 1); + }); + + test('connectToDevice waits for connection establishment', () async { + final platform = _FakePlatform(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(); + + final device = (await midi.devices)!.first; + expect(device.connected, isFalse); + + await midi.connectToDevice( + device, + awaitConnectionTimeout: const Duration(seconds: 1), + ); + + expect(device.connected, isTrue); + }); + + test('connectToDevice times out when device never connects', () async { + final platform = _NeverConnectPlatform(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(); + + final device = (await midi.devices)!.first; + expect( + () => midi.connectToDevice( + device, + awaitConnectionTimeout: const Duration(milliseconds: 25), + ), + throwsA(isA()), + ); + }); + + test( + 'onMidiDataReceived returns typed events with source metadata', + () async { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(bleTransport: ble); + + final received = []; + final sub = midi.onMidiDataReceived!.listen(received.add); + + platform.emitPacket( + MidiPacket( + Uint8List.fromList([0x90, 0x3C, 0x64]), + 123, + MidiDevice('serial-1', 'Serial', MidiDeviceType.serial, true), + ), + ); + ble.emitPacket( + MidiPacket( + Uint8List.fromList([0x80, 0x3C, 0x00]), + 456, + MidiDevice('ble-1', 'BLE', MidiDeviceType.ble, true), + ), + ); + + await Future.delayed(const Duration(milliseconds: 10)); + await sub.cancel(); + + expect(received.length, 2); + + final serialEvent = received.firstWhere( + (event) => event.transport == MidiTransport.native, + ); + expect(serialEvent.device.id, 'serial-1'); + expect(serialEvent.timestamp, 123); + expect(serialEvent.message, isA()); + + final bleEvent = received.firstWhere( + (event) => event.transport == MidiTransport.ble, + ); + expect(bleEvent.device.id, 'ble-1'); + expect(bleEvent.timestamp, 456); + expect(bleEvent.message, isA()); + }, + ); + + test('onMidiDataReceived emits one event per parsed MIDI message', () async { + final platform = _FakePlatform(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(); + + final received = []; + final sub = midi.onMidiDataReceived!.listen(received.add); + + platform.emitPacket( + MidiPacket( + Uint8List.fromList([0x90, 0x3C, 0x64, 0x80, 0x3C, 0x00]), + 99, + MidiDevice('serial-1', 'Serial', MidiDeviceType.serial, true), + ), + ); + + await Future.delayed(const Duration(milliseconds: 10)); + await sub.cancel(); + + expect(received.length, 2); + expect(received[0].message, isA()); + expect(received[1].message, isA()); + expect(received[0].timestamp, 99); + expect(received[1].timestamp, 99); + }); + + test('onMidiSetupChanged merges platform and BLE streams', () async { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(bleTransport: ble); + + final received = []; + final sub = midi.onMidiSetupChanged!.listen(received.add); + + platform.emitSetup('platform'); + ble.emitSetup('ble'); + + await Future.delayed(const Duration(milliseconds: 10)); + await sub.cancel(); + + expect(received, containsAll(['platform', 'ble'])); + }); + + test('startBluetooth is idempotent', () async { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(bleTransport: ble); + + await midi.startBluetooth(); + await midi.startBluetooth(); + + expect(ble.startBluetoothCalls, 1); + }); + + test('startBluetooth can be retried after failure', () async { + final platform = _FakePlatform(); + final ble = _FakeBleTransport()..startBluetoothFailures = 1; + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(bleTransport: ble); + + await expectLater(midi.startBluetooth(), throwsA(isA())); + await midi.startBluetooth(); + + expect(ble.startBluetoothCalls, 2); + }); + + test('connectToDevice fails fast on explicit disconnection event', () async { + final platform = _FailedConnectPlatform(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(); + + final device = (await midi.devices)!.first; + await expectLater( + midi.connectToDevice( + device, + awaitConnectionTimeout: const Duration(seconds: 1), + ), + throwsA(isA()), + ); + }); + + test('dispose releases singleton and allows creating a new instance', () { + final platform = _FakePlatform(); + MidiCommand.setPlatformOverride(platform); + final midi1 = MidiCommand(); + + midi1.dispose(); + + final midi2 = MidiCommand(); + expect(identical(midi1, midi2), isFalse); + expect(platform.teardownCalls, 1); + }); + + test('configureBleTransport(null) removes BLE devices from list', () async { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(bleTransport: ble); + + expect((await midi.devices)!.length, 2); + + midi.configureBleTransport(null); + + final devices = await midi.devices; + expect(devices!.length, 1); + expect(devices.first.type, MidiDeviceType.serial); + }); + + test('disconnect routes by device type', () async { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(bleTransport: ble); + + final serial = MidiDevice( + 'serial-1', + 'Serial', + MidiDeviceType.serial, + true, + ); + final bleDevice = MidiDevice('ble-1', 'BLE', MidiDeviceType.ble, true); + + midi.disconnectDevice(serial); + midi.disconnectDevice(bleDevice); + + expect(platform.disconnected, contains('serial-1')); + expect(ble.disconnected, contains('ble-1')); + }); + + test( + 'host BLE devices keep ble type and still route via platform backend', + () async { + final platform = _FakePlatformWithBleHost(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(bleTransport: ble); + + final device = (await midi.devices)!.first; + expect(device.type, MidiDeviceType.ble); + + await midi.connectToDevice(device); + expect(platform.connected, contains('host-ble-1')); + expect(ble.connected, isEmpty); + + midi.sendData( + Uint8List.fromList([0x90, 0x3C, 0x64]), + deviceId: device.id, + ); + expect(platform.sent.length, 1); + expect(ble.sent, isEmpty); + + midi.disconnectDevice(device); + expect(platform.disconnected, contains('host-ble-1')); + expect(ble.disconnected, isEmpty); + }, + ); + + test('sendData does not fan out to BLE when BLE transport is excluded', () { + final platform = _FakePlatform(); + final ble = _FakeBleTransport(); + MidiCommand.setPlatformOverride(platform); + final midi = MidiCommand(bleTransport: ble)..configureTransportPolicy( + const MidiTransportPolicy(excludedTransports: {MidiTransport.ble}), + ); + + final data = Uint8List.fromList([0x90, 0x3C, 0x64]); + midi.sendData(data); + expect(platform.sent.length, 1); + expect(ble.sent, isEmpty); + }); } diff --git a/test/midi_message_parser_test.dart b/test/midi_message_parser_test.dart new file mode 100644 index 00000000..72593894 --- /dev/null +++ b/test/midi_message_parser_test.dart @@ -0,0 +1,648 @@ +import 'dart:typed_data'; + +import 'package:flutter_midi_command/flutter_midi_command_messages.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('MidiMessage parser', () { + test('parses Note On', () { + final messages = MidiMessage.parse(Uint8List.fromList([0x90, 60, 100])); + + expect(messages, hasLength(1)); + final message = messages.single as NoteOnMessage; + expect(message.channel, 0); + expect(message.note, 60); + expect(message.velocity, 100); + expect(message.data, Uint8List.fromList([0x90, 60, 100])); + }); + + test('parses Note Off', () { + final messages = MidiMessage.parse(Uint8List.fromList([0x81, 62, 12])); + + expect(messages, hasLength(1)); + final message = messages.single as NoteOffMessage; + expect(message.channel, 1); + expect(message.note, 62); + expect(message.velocity, 12); + expect(message.data, Uint8List.fromList([0x81, 62, 12])); + }); + + test('parses CC', () { + final messages = MidiMessage.parse(Uint8List.fromList([0xB2, 7, 127])); + + expect(messages, hasLength(1)); + final message = messages.single as CCMessage; + expect(message.channel, 2); + expect(message.controller, 7); + expect(message.value, 127); + expect(message.data, Uint8List.fromList([0xB2, 7, 127])); + }); + + test('parses Program Change', () { + final messages = MidiMessage.parse(Uint8List.fromList([0xC3, 10])); + + expect(messages, hasLength(1)); + final message = messages.single as PCMessage; + expect(message.channel, 3); + expect(message.program, 10); + expect(message.data, Uint8List.fromList([0xC3, 10])); + }); + + test('parses Polyphonic Aftertouch', () { + final messages = MidiMessage.parse(Uint8List.fromList([0xA2, 64, 70])); + + expect(messages, hasLength(1)); + final message = messages.single as PolyATMessage; + expect(message.channel, 2); + expect(message.note, 64); + expect(message.pressure, 70); + expect(message.data, Uint8List.fromList([0xA2, 64, 70])); + }); + + test('parses Channel Aftertouch', () { + final messages = MidiMessage.parse(Uint8List.fromList([0xD1, 55])); + + expect(messages, hasLength(1)); + final message = messages.single as ATMessage; + expect(message.channel, 1); + expect(message.pressure, 55); + expect(message.data, Uint8List.fromList([0xD1, 55])); + }); + + test('parses Pitch Bend', () { + final messages = MidiMessage.parse( + Uint8List.fromList([0xE0, 0x00, 0x40]), + ); + + expect(messages, hasLength(1)); + final message = messages.single as PitchBendMessage; + expect(message.channel, 0); + expect(message.bend, closeTo(0.0, 0.001)); + expect(message.data, Uint8List.fromList([0xE0, 0x00, 0x40])); + }); + + test('parses SysEx', () { + final bytes = Uint8List.fromList([0xF0, 0x7D, 0x01, 0x02, 0xF7]); + final messages = MidiMessage.parse(bytes); + + expect(messages, hasLength(1)); + final message = messages.single as SysExMessage; + expect(message.data, bytes); + expect(message.rawData, bytes); + }); + + test('parses NRPN with MSB + LSB data entry', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xB0, 0x63, 0x01, // NRPN param MSB + 0xB0, 0x62, 0x02, // NRPN param LSB + 0xB0, 0x06, 0x03, // Data Entry MSB + 0xB0, 0x26, 0x04, // Data Entry LSB + ]), + ); + + expect(messages, hasLength(1)); + final message = messages.single as NRPN4Message; + expect(message.channel, 0); + expect(message.parameter, 130); + expect(message.value, (3 << 7) | 4); + expect( + message.data, + Uint8List.fromList([ + 0xB0, + 0x63, + 0x01, + 0x62, + 0x02, + 0x06, + 0x03, + 0x26, + 0x04, + ]), + ); + }); + + test('parses NRPN with single data byte (MSB only)', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xB0, 0x63, 0x05, // NRPN param MSB + 0xB0, 0x62, 0x06, // NRPN param LSB + 0xB0, 0x06, 0x40, // Data Entry MSB only + ]), + ); + + expect(messages, hasLength(1)); + final message = messages.single as NRPN3Message; + expect(message.channel, 0); + expect(message.parameter, (0x05 << 7) | 0x06); + expect(message.value, 0x40); + expect( + message.data, + Uint8List.fromList([0xB0, 0x63, 0x05, 0x62, 0x06, 0x06, 0x40]), + ); + }); + + test('parses NRPN null message', () { + final messages = MidiMessage.parse( + Uint8List.fromList([0xB0, 0x63, 0x7F, 0xB0, 0x62, 0x7F]), + ); + + expect(messages, hasLength(1)); + expect(messages.single, isA()); + }); + + test('parses RPN with MSB + LSB data entry', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xB0, 0x65, 0x00, // RPN param MSB + 0xB0, 0x64, 0x01, // RPN param LSB + 0xB0, 0x06, 0x02, // Data Entry MSB + 0xB0, 0x26, 0x03, // Data Entry LSB + ]), + ); + + expect(messages, hasLength(1)); + final message = messages.single as RPNMessage; + expect(message.channel, 0); + expect(message.parameter, 1); + expect(message.value, (2 << 7) | 3); + }); + + test('parses RPN with single data byte (MSB only)', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xB0, + 0x65, + 0x00, + 0xB0, + 0x64, + 0x02, + 0xB0, + 0x06, + 0x11, + ]), + ); + + expect(messages, hasLength(1)); + final message = messages.single as RPNHexMessage; + expect(message.channel, 0); + expect(message.parameterMSB, 0x00); + expect(message.parameterLSB, 0x02); + expect(message.valueMSB, 0x11); + expect(message.valueLSB, -1); + }); + + test('parses RPN null message', () { + final messages = MidiMessage.parse( + Uint8List.fromList([0xB0, 0x65, 0x7F, 0xB0, 0x64, 0x7F]), + ); + + expect(messages, hasLength(1)); + expect(messages.single, isA()); + }); + + test('parses clock realtime messages', () { + final messages = MidiMessage.parse( + Uint8List.fromList([0xF8, 0xFA, 0xFB, 0xFC]), + ); + + expect(messages, hasLength(4)); + expect((messages[0] as ClockMessage).type, ClockType.beat); + expect((messages[1] as ClockMessage).type, ClockType.start); + expect((messages[2] as ClockMessage).type, ClockType.cont); + expect((messages[3] as ClockMessage).type, ClockType.stop); + }); + + test('parses active sensing realtime message', () { + final messages = MidiMessage.parse(Uint8List.fromList([0xFE])); + + expect(messages, hasLength(1)); + expect(messages.single, isA()); + }); + + test('supports running status for note messages', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0x90, 60, 100, // Note On status + first message + 61, 110, // running status Note On + 62, 0, // running status Note On w/ velocity 0 -> Note Off + ]), + ); + + expect(messages, hasLength(3)); + expect(messages[0], isA()); + expect(messages[1], isA()); + expect(messages[2], isA()); + }); + + test('supports running status for one-byte messages (Program Change)', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xC2, 10, // Program Change status + first message + 11, // running status Program Change + 12, // running status Program Change + ]), + ); + + expect(messages, hasLength(3)); + expect((messages[0] as PCMessage).program, 10); + expect((messages[1] as PCMessage).program, 11); + expect((messages[2] as PCMessage).program, 12); + }); + + test('realtime bytes are emitted and do not break channel messages', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0x90, 60, // start Note On + 0xF8, // interleaved realtime clock + 100, // complete Note On + ]), + ); + + expect(messages, hasLength(2)); + expect(messages[0], isA()); + expect(messages[1], isA()); + }); + + test('realtime bytes are emitted and do not break SysEx parsing', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xF0, 0x7D, // start SysEx + 0xF8, // interleaved realtime clock + 0x01, 0xF7, // continue and finish SysEx + ]), + ); + + expect(messages, hasLength(2)); + expect(messages[0], isA()); + final sysEx = messages[1] as SysExMessage; + expect(sysEx.data, Uint8List.fromList([0xF0, 0x7D, 0x01, 0xF7])); + }); + + test('ignores malformed trailing bytes for incomplete channel message', () { + final messages = MidiMessage.parse(Uint8List.fromList([0x90, 60])); + expect(messages, isEmpty); + }); + + test('can complete split channel messages across parser invocations', () { + final parser = MidiMessageParser(); + + final first = parser.parse( + Uint8List.fromList([0x90, 60]), + flushPendingNrpn: false, + ); + final second = parser.parse(Uint8List.fromList([100])); + + expect(first, isEmpty); + expect(second, hasLength(1)); + final message = second.single as NoteOnMessage; + expect(message.note, 60); + expect(message.velocity, 100); + }); + + test('can complete split SysEx messages across parser invocations', () { + final parser = MidiMessageParser(); + + final first = parser.parse( + Uint8List.fromList([0xF0, 0x7D, 0x01]), + flushPendingNrpn: false, + ); + final second = parser.parse(Uint8List.fromList([0x02, 0xF7])); + + expect(first, isEmpty); + expect(second, hasLength(1)); + final message = second.single as SysExMessage; + expect(message.data, Uint8List.fromList([0xF0, 0x7D, 0x01, 0x02, 0xF7])); + }); + + test('ignores stray data bytes when no running status exists', () { + final messages = MidiMessage.parse(Uint8List.fromList([60, 100, 0xFE])); + expect(messages, hasLength(1)); + expect(messages.single, isA()); + }); + + test('ignores stray EOX outside SysEx and recovers', () { + final messages = MidiMessage.parse( + Uint8List.fromList([0xF7, 0x90, 60, 100]), + ); + expect(messages, hasLength(1)); + expect(messages.single, isA()); + }); + + test('ignores unsupported system common events and recovers', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xF2, 0x01, 0x02, // Song Position Pointer (unsupported typed mapping) + 0xF6, // Tune Request (unsupported typed mapping) + 0x90, 60, 100, // Valid note event after unsupported events + ]), + ); + + expect(messages, hasLength(1)); + expect(messages.single, isA()); + }); + + test('system common status clears running status', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0x90, 60, 100, // valid Note On + 0xF1, 0x7F, // system common event (unsupported typed mapping) + 61, 110, // data bytes should not use old Note On running status + ]), + ); + + expect(messages, hasLength(1)); + expect(messages.single, isA()); + }); + + test('ignores undefined realtime bytes and continues parsing', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xF9, // undefined realtime + 0x90, 60, 100, // valid Note On + 0xFD, // undefined realtime + 0xFF, // system reset (currently not typed) + 0xFE, // active sensing + ]), + ); + + expect(messages, hasLength(2)); + expect(messages[0], isA()); + expect(messages[1], isA()); + }); + + test('new status byte aborts incomplete message and starts fresh', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0x90, 60, // incomplete Note On + 0x91, 61, 110, // new status + complete Note On on channel 1 + ]), + ); + + expect(messages, hasLength(1)); + final noteOn = messages.single as NoteOnMessage; + expect(noteOn.channel, 1); + expect(noteOn.note, 61); + expect(noteOn.velocity, 110); + }); + + test('system common events consume payload and parser recovers', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0xF1, 0x7F, // MTC quarter frame + 0xF3, 0x01, // song select + 0xF2, 0x00, 0x20, // song position pointer + 0x90, 60, 100, // valid Note On after system common events + ]), + ); + + expect(messages, hasLength(1)); + expect(messages.single, isA()); + }); + + test('sysex start clears running status after sysex completion', () { + final messages = MidiMessage.parse( + Uint8List.fromList([ + 0x90, 60, 100, // first Note On + 61, 110, // running status Note On + 0xF0, 0x7D, 0xF7, // SysEx start/end clears running status + 62, 120, // stray data should not emit a third Note On + ]), + ); + + expect(messages, hasLength(3)); + expect(messages[0], isA()); + expect(messages[1], isA()); + expect(messages[2], isA()); + }); + + test('reset clears pending parser state', () { + final parser = MidiMessageParser(); + + final first = parser.parse( + Uint8List.fromList([0x90, 60]), + flushPendingNrpn: false, + ); + parser.reset(); + final second = parser.parse(Uint8List.fromList([100])); + + expect(first, isEmpty); + expect(second, isEmpty); + }); + }); + + group('MidiMessage generateData', () { + test('generates Note On bytes', () { + final message = NoteOnMessage(channel: 2, note: 64, velocity: 100); + expect(message.generateData(), Uint8List.fromList([0x92, 64, 100])); + }); + + test('generates Note Off bytes', () { + final message = NoteOffMessage(channel: 3, note: 64, velocity: 0); + expect(message.generateData(), Uint8List.fromList([0x83, 64, 0])); + }); + + test('generates CC bytes', () { + final message = CCMessage(channel: 1, controller: 74, value: 99); + expect(message.generateData(), Uint8List.fromList([0xB1, 74, 99])); + }); + + test('generates Program Change bytes', () { + final message = PCMessage(channel: 5, program: 10); + expect(message.generateData(), Uint8List.fromList([0xC5, 10])); + }); + + test('generates Pitch Bend bytes', () { + final message = PitchBendMessage(channel: 0, bend: 0); + expect(message.generateData(), Uint8List.fromList([0xE0, 0x00, 0x40])); + }); + + test('generates NRPN3 bytes', () { + final message = NRPN3Message(channel: 0, parameter: 130, value: 5); + expect( + message.generateData(), + Uint8List.fromList([0xB0, 0x63, 0x01, 0x62, 0x02, 0x06, 0x05]), + ); + }); + + test('generates NRPN4 bytes', () { + final message = NRPN4Message(channel: 0, parameter: 130, value: 0x0344); + expect( + message.generateData(), + Uint8List.fromList([ + 0xB0, + 0x63, + 0x01, + 0x62, + 0x02, + 0x06, + 0x06, + 0x26, + 0x44, + ]), + ); + }); + + test('generates raw SysEx bytes unchanged', () { + final message = SysExMessage(rawData: [0xF0, 0x7D, 0x10, 0xF7]); + expect( + message.generateData(), + Uint8List.fromList([0xF0, 0x7D, 0x10, 0xF7]), + ); + }); + + test('generates NRPN hex with optional LSB', () { + final withLsb = NRPNHexMessage( + channel: 0, + parameterMSB: 0x01, + parameterLSB: 0x02, + valueMSB: 0x03, + valueLSB: 0x04, + ); + expect( + withLsb.generateData(), + Uint8List.fromList([ + 0xB0, + 0x63, + 0x01, + 0x62, + 0x02, + 0x06, + 0x03, + 0x26, + 0x04, + ]), + ); + + final msbOnly = NRPNHexMessage( + channel: 0, + parameterMSB: 0x01, + parameterLSB: 0x02, + valueMSB: 0x03, + ); + expect( + msbOnly.generateData(), + Uint8List.fromList([0xB0, 0x63, 0x01, 0x62, 0x02, 0x06, 0x03]), + ); + }); + + test('generates NRPN null bytes', () { + final message = NRPNNullMessage(channel: 3); + expect( + message.generateData(), + Uint8List.fromList([0xB3, 0x63, 0x7F, 0xB3, 0x62, 0x7F]), + ); + }); + + test('generates RPN bytes', () { + final message = RPNMessage(channel: 1, parameter: 130, value: 300); + expect( + message.generateData(), + Uint8List.fromList([ + 0xB1, + 0x65, + 0x01, + 0xB1, + 0x64, + 0x02, + 0xB1, + 0x06, + 0x02, + 0xB1, + 0x26, + 0x2C, + ]), + ); + }); + + test('generates RPN hex bytes', () { + final withLsb = RPNHexMessage( + channel: 0, + parameterMSB: 0x00, + parameterLSB: 0x02, + valueMSB: 0x11, + valueLSB: 0x22, + ); + expect( + withLsb.generateData(), + Uint8List.fromList([ + 0xB0, + 0x65, + 0x00, + 0xB0, + 0x64, + 0x02, + 0xB0, + 0x06, + 0x11, + 0xB0, + 0x26, + 0x22, + ]), + ); + + final msbOnly = RPNHexMessage( + channel: 0, + parameterMSB: 0x00, + parameterLSB: 0x02, + valueMSB: 0x11, + ); + expect( + msbOnly.generateData(), + Uint8List.fromList([ + 0xB0, + 0x65, + 0x00, + 0xB0, + 0x64, + 0x02, + 0xB0, + 0x06, + 0x11, + ]), + ); + }); + + test('generates RPN null bytes', () { + final message = RPNNullMessage(channel: 2); + expect( + message.generateData(), + Uint8List.fromList([0xB2, 0x65, 0x7F, 0xB2, 0x64, 0x7F]), + ); + }); + + test('generates PolyAT bytes', () { + final message = PolyATMessage(channel: 4, note: 60, pressure: 99); + expect(message.generateData(), Uint8List.fromList([0xA4, 60, 99])); + }); + + test('generates AT bytes', () { + final message = ATMessage(channel: 3, pressure: 88); + expect(message.generateData(), Uint8List.fromList([0xD3, 88])); + }); + + test('generates Sense bytes', () { + final message = SenseMessage(); + expect(message.generateData(), Uint8List.fromList([0xFE])); + }); + + test('generates Clock bytes', () { + expect( + ClockMessage(type: ClockType.beat).generateData(), + Uint8List.fromList([0xF8]), + ); + expect( + ClockMessage(type: ClockType.start).generateData(), + Uint8List.fromList([0xFA]), + ); + expect( + ClockMessage(type: ClockType.cont).generateData(), + Uint8List.fromList([0xFB]), + ); + expect( + ClockMessage(type: ClockType.stop).generateData(), + Uint8List.fromList([0xFC]), + ); + }); + }); +} diff --git a/test/midi_transport_policy_test.dart b/test/midi_transport_policy_test.dart new file mode 100644 index 00000000..f754a885 --- /dev/null +++ b/test/midi_transport_policy_test.dart @@ -0,0 +1,77 @@ +import 'package:flutter_midi_command/flutter_midi_command.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('MidiTransportPolicy', () { + test('defaults to all supported transports', () { + const policy = MidiTransportPolicy(); + final result = policy.resolveEnabledTransports({MidiTransport.native, MidiTransport.ble}); + + expect(result, {MidiTransport.native, MidiTransport.ble}); + }); + + test('can include only selected transports', () { + const policy = MidiTransportPolicy(includedTransports: {MidiTransport.native}); + + final result = policy.resolveEnabledTransports({MidiTransport.native, MidiTransport.ble}); + + expect(result, {MidiTransport.native}); + }); + + test('excluded transports are always removed', () { + const policy = MidiTransportPolicy(excludedTransports: {MidiTransport.ble}); + + final result = policy.resolveEnabledTransports({MidiTransport.native, MidiTransport.ble}); + + expect(result, {MidiTransport.native}); + }); + + test('unknown transports are ignored', () { + const policy = MidiTransportPolicy(includedTransports: {MidiTransport.native, MidiTransport.network}); + + final result = policy.resolveEnabledTransports({MidiTransport.native}); + + expect(result, {MidiTransport.native}); + }); + }); + + group('MidiCapabilities', () { + test('tracks supported and enabled transports', () { + const capabilities = MidiCapabilities(supportedTransports: {MidiTransport.native, MidiTransport.ble}, enabledTransports: {MidiTransport.native}); + + expect(capabilities.supports(MidiTransport.native), isTrue); + expect(capabilities.supports(MidiTransport.virtual), isFalse); + expect(capabilities.isEnabled(MidiTransport.native), isTrue); + expect(capabilities.isEnabled(MidiTransport.ble), isFalse); + }); + }); + + group('MidiDeviceType', () { + test('maps to and from wire values', () { + expect(MidiDeviceType.serial.wireValue, 'native'); + expect(MidiDeviceType.ble.wireValue, 'BLE'); + + expect(MidiDeviceTypeWire.fromWireValue('native'), MidiDeviceType.serial); + expect(MidiDeviceTypeWire.fromWireValue('BLE'), MidiDeviceType.ble); + expect(MidiDeviceTypeWire.fromWireValue('own-virtual'), MidiDeviceType.ownVirtual); + }); + }); + + group('MidiConnectionState', () { + test('updates per-device state stream', () async { + final device = MidiDevice('serial-1', 'Serial', MidiDeviceType.serial, false); + final states = []; + final sub = device.onConnectionStateChanged.listen(states.add); + + device.connected = true; + device.setConnectionState(MidiConnectionState.disconnecting); + device.connected = false; + + await Future.delayed(const Duration(milliseconds: 10)); + await sub.cancel(); + device.dispose(); + + expect(states, [MidiConnectionState.connected, MidiConnectionState.disconnecting, MidiConnectionState.disconnected]); + }); + }); +}