<itemvalue="This configuration invokes the native build for the various target platforms and bundles the binaries in Flutter applications using these FFI plugins. This can be combined with dartPluginClass, such as when FFI is used for the implementation of one platform in a federated plugin:"/>
<itemvalue="Project stucture This template uses the following structure: `src`: Contains the native source code, and a CmakeFile.txt file for building that source code into a dynamic library. `lib`: Contains the Dart code that defines the API of the plugin, and which calls into the native code using `dart:ffi`. platform folders (`android`, `ios`, `windows`, etc.): Contains the build files for building and bundling the native code library with the platform application."/>
<itemvalue="{@template flutter.material.checkbox.fillColor} The color that fills the checkbox, in all [MaterialState]s. Resolves in the following states: [MaterialState.selected]. [MaterialState.hovered]. [MaterialState.focused]. [MaterialState.disabled]. {@endtemplate} If null, then the value of [activeColor] is used in the selected state. If that is also null, the value of [CheckboxThemeData.fillColor] is used. If that is also null, then [ThemeData.disabledColor] is used in the disabled state, [ThemeData.toggleableActiveColor] is used in the selected state, and [ThemeData.unselectedWidgetColor] is used in the default state."/>
<itemvalue="'LayoutBuilder does not support returning intrinsic dimensions.\n' 'Calculating the intrinsic dimensions would require running the layout ' 'callback speculatively, which might mutate the live render object tree.',"/>
<itemvalue="'Calculating the dry layout would require running the layout callback ' 'speculatively, which might mutate the live render object tree.',"/>
<itemvalue="Builds a widget tree that can depend on the parent widget's size. Similar to the [Builder] widget except that the framework calls the [builder] function at layout time and provides the parent widget's constraints. This is useful when the parent constrains the child's size and doesn't depend on the child's intrinsic size. The [LayoutBuilder]'s final size will match its child's size. {@macro flutter.widgets.ConstrainedLayoutBuilder} {@youtube 560 315 https:www.youtube.comwatch?v=IYDVcriKjsw} If the child should be smaller than the parent, consider wrapping the child in an [Align] widget. If the child might want to be bigger, consider wrapping it in a [SingleChildScrollView] or [OverflowBox]. {@tool dartpad} This example uses a [LayoutBuilder] to build a different widget depending on the available width. Resize the DartPad window to see [LayoutBuilder] in action! See code in examplesapilibwidgetslayout_builderlayout_builder.0.dart {@end-tool}"/>
<itemvalue="The following assertion was thrown during performLayout(): Iflutter ( 4647): RenderFlex children have non-zero flex but incoming height constraints are unbounded. Iflutter ( 4647): When a column is in a parent that does not provide a finite height constraint, for example if it is Iflutter ( 4647): in a vertical scrollable, it will try to shrink-wrap its children along the vertical axis. Setting a Iflutter ( 4647): flex on a child (e.g. using Expanded) indicates that the child is to expand to fill the remaining Iflutter ( 4647): space in the vertical direction. Iflutter ( 4647): These two directives are mutually exclusive. If a parent is to shrink-wrap its child, the child Iflutter ( 4647): cannot simultaneously expand to fit its parent. Iflutter ( 4647): Consider setting mainAxisSize to MainAxisSize.min and using FlexFit.loose fits for the flexible Iflutter ( 4647): children (using Flexible rather than Expanded). This will allow the flexible children to size Iflutter ( 4647): themselves to less than the infinite remaining space they would otherwise be forced to take, and Iflutter ( 4647): then will cause the RenderFlex to shrink-wrap the children rather than expanding to fit the maximum Iflutter ( 4647): constraints provided by the parent."/>
<itemvalue="The child is forced to fill the available space. The [Expanded] widget assigns this kind of [FlexFit] to its child."/>
<itemvalue="The child can be at most as large as the available space (but is allowed to be smaller). The [Flexible] widget assigns this kind of [FlexFit] to its child."/>
<itemvalue="Returns a JSON Web Token (JWT) used to identify the user to a Firebase service. Returns the current token if it has not expired. Otherwise, this will refresh the token and return a new one. If [forceRefresh] is `true`, the token returned will be refresh regardless of token expiration."/>
<itemvalue="Deletes and signs out the user. Important: this is a security-sensitive operation that requires the user to have recently signed in. If this requirement isn't met, ask the user to authenticate again and then call [User.reauthenticateWithCredential]. A [FirebaseAuthException] maybe thrown with the following error code: - requires-recent-login: - Thrown if the user's last sign-in time does not meet the security threshold. Use [User.reauthenticateWithCredential] to resolve. This does not apply if the user is anonymous."/>
<itemvalue="The current user's tenant ID. This is a read-only property, which indicates the tenant ID used to sign in the current user. This is `null` if the user is signed in from the parent project."/>
<itemvalue="Returns a JWT refresh token for the user. This property will be an empty string for native platforms (android, iOS & macOS) as they do not support refresh tokens."/>
<itemvalue="Returns additional metadata about the user, such as their creation time."/>
<itemvalue="The authentication time formatted as UTC string. This is the time the user authenticated (signed in) and not the time the token was refreshed."/>
<itemvalue="The time when the ID token expires."/>
<itemvalue="Interface representing ID token result obtained from [getIdTokenResult]. It contains the ID token JWT string and other helper properties for getting different data associated with the token as well as all the decoded payload claims. Note that these claims are not to be trusted as they are parsed client side. Only server side verification can guarantee the integrity of the token claims."/>
<itemvalue="Returns a [IdTokenResult] containing the users JSON Web Token (JWT) and other metadata. Returns the current token if it has not expired. Otherwise, this will refresh the token and return a new one. If [forceRefresh] is `true`, the token returned will be refreshed regardless of token expiration."/>
<itemvalue="Returns a JSON Web Token (JWT) used to identify the user to a Firebase service. Returns the current token if it has not expired. Otherwise, this will refresh the token and return a new one. If [forceRefresh] is `true`, the token returned will be refreshed regardless of token expiration."/>
<itemvalue="If [forceRefresh] is `true`, the token returned will be refreshed regardless of token expiration."/>
<itemvalue="A longer-lived native function, which occupies the thread calling it. Do not call these kind of native functions in the main isolate. They will block Dart execution. This will cause dropped frames in Flutter applications. Instead, call these native functions on a separate isolate."/>
<itemvalue="A very short-lived native function. For very short-lived functions, it is fine to call them on the main isolate. They will block the Dart execution while running the native function, so only do this for native functions which are guaranteed to be short-lived."/>
<itemvalue="[RawKeyboard] is the legacy API, and will be deprecated and removed in the future. It is recommended to always use [HardwareKeyboard] and [KeyEvent] APIs (such as [FocusNode.onKeyEvent]) to handle key events."/>
<itemvalue="Flutter will try to synchronize with the ground truth of keyboard states using synthesized events ([KeyEvent.synthesized]), subject to the availability of the platform. The desynchronization can be caused by non-empty initial state or a change in the focused window or application. For example, if CapsLock is enabled when the application starts, then immediately before the first key event, a synthesized [KeyDownEvent] and [KeyUpEvent] of CapsLock will be dispatched. The resulting event stream does not map one-to-one to the native key event stream. Some native events might be skipped, while some events might be synthesized and do not correspond to native events. Synthesized events will be indicated by [KeyEvent.synthesized]."/>
<itemvalue="When the Flutter application starts, all keys are released, and all lock modes are disabled. Upon key events, [HardwareKeyboard] will update its states, then dispatch callbacks: [KeyDownEvent]s and [KeyUpEvent]s set or reset the pressing state, while [KeyDownEvent]s also toggle lock modes."/>
<itemvalue="Event model Flutter uses a universal event model ([KeyEvent]) and key options ([LogicalKeyboardKey] and [PhysicalKeyboardKey]) regardless of the native platform, while preserving platform-specific features as much as possible. [HardwareKeyboard] guarantees that the key model is "regularized": The key event stream consists of "key tap sequences", where a key tap sequence is defined as one [KeyDownEvent], zero or more [KeyRepeatEvent]s, and one [KeyUpEvent"/>
<itemvalue="Manages key events from hardware keyboards. [HardwareKeyboard] manages all key events of the Flutter application from hardware keyboards (in contrast to on-screen keyboards). It receives key data from the native platform, dispatches key events to registered handlers, and records the keyboard state. To stay notified whenever keys are pressed, held, or released, add a handler with [addHandler]. To only be notified when a specific part of the app is focused, use a [Focus] widget's `onFocusChanged` attribute instead of [addHandler]. Handlers should be removed with [removeHandler] when notification is no longer necessary, or when the handler is being disposed. To query whether a key is being held, or a lock mode is enabled, use [physicalKeysPressed], [logicalKeysPressed], or [lockModesEnabled]. These states will have been updated with the event when used during a key event handler. The singleton [HardwareKeyboard] instance is held by the [ServicesBinding] as [ServicesBinding.keyboard], and can be conveniently accessed using the [HardwareKeyboard.instance] static accessor."/>
<itemvalue="A widget that calls a callback whenever the user presses or releases a key on a keyboard. A [RawKeyboardListener] is useful for listening to raw key events and hardware buttons that are represented as keys. Typically used by games and other apps that use keyboards for purposes other than text entry. For text entry, consider using a [EditableText], which integrates with on-screen keyboards and input method editors (IMEs). The [RawKeyboardListener] is different from [KeyboardListener] in that [RawKeyboardListener] uses the legacy [RawKeyboard] API. Use [KeyboardListener] if possible. See also: [EditableText], which should be used instead of this widget for text entry. [KeyboardListener], a similar widget based on the newer [HardwareKeyboard] API."/>
<itemvalue="Specify that the automatic animation should repeat in a loop (default to true). The property has no effect if [animate] is false or [controller] is not null."/>
<itemvalue="Indicate to automatically add a `RepaintBoundary` widget around the animation. This allows to optimize the app performance by isolating the animation in its own `Layer`. This property is `true` by default."/>
<itemvalue="Some options to enabledisable some feature of Lottie - enableMergePaths: Enable merge path support"/>
<itemvalue="If no controller is specified, this value indicate whether or not the Lottie animation should be played automatically (default to true). If there is an animation controller specified, this property has no effect. See [repeat] to control whether the animation should repeat."/>