entao_hare library

Classes

AbstractSegments<V>
AmplitudeWidget
-160, 0
AmpPainter
AndCond
AppMap
Assets
AsyncWidget<T extends Object>
AttributeProvider
AttributeTransform<T extends Object>
Binder<T>
BoolAttribute
BoolOptional
BottomBarPage
bottoms
BreadItem<T>
ChipChoiceGroup<T>
CollectionPage<T>
ColumnPage
ColumnPageX
ContentDashPage
ContextIndex
ContextIndexItem<T>
DashPage
DataCellY
DataColumnCell<T>
DataColumnY
DataRowY
DataTableDelegate<T>
DataTableSelector<T>
DataTableSortor<E>
DataTableY
DataWidget<T>
DelegatePainter
DesktopDashPage
DesktopScrollBehavior
DialogOptions
Dialogs
Dirs
call prepare() first.
DoubleAttribute
DoubleOptional
DrawerGroup
DType<T>
EntaoApp
FieldCond
FileConfig
FlipCard
FlipCardController
FlipCardState
FormMixin
GridPage<T>
GroupHarePage
HareAppBar
HareAutoCompleteField
HareBuilder
HareDate
HareDateRow
HareDropdown<T>
HareDropdownX<T>
HareEdit
HareLayout
HareListView<T>
HareNavBar
HareOutlinedButton
HarePage
HareParentData
HareRenderBox
HareSegments<V>
HareSingle
HareSlider
HareSliderInt
HareSwitch
HareTabWidget
HareText
HareTextArea
HareTime
HareTimeRow
HareTip
HareWebsocket
HareWidget
HareWidgetState
IconAcions
IndexItem<T>
InputFormats
InputQueryWidget
IntAttribute
IntOptional
IntOptions
IntPair<T>
ItemsPickInt
LimitList<T>
ListIntAttribute
ListIntOptional
ListIntTransform
ListPage<T>
ListStringAttribute
ListStringOptional
ListStringTransform
Loading
LoadingItem
LoginPage
LoginPageX
LogPage
MapAttributeProvider<V>
MemLogPrinter
MobileDashPage
MovableWidget
OptionalAttribute<T extends Object>
OptionalValueListener<T>
OrCond
OverlayContext
OverlayX
PaginationInfo
PaintWidget
Plat
PopMenu<T>
PopMenuState<T>
PositionRetainedScrollPhysics
PreferProvider
PreparePage
QueryCond
QueryOperatorWidget
QuerySort
QuerySort q = QuerySort("id").asc("name").desc("date") http://xxx/list?sort=q.toString()
QuickScrollPhysics
RadioGroupB
RadioGroupX<T>
RequiredAttribute<T extends Object>
RouterDataWidget
ScrollLoading
SegmentBits
SegmentCheck<V>
SegmentQueryWidget<T>
SegmentRadio<V>
SingleSelectQueryWidget<T>
StateHolder
StringAttribute
StringOptional
StringOptions
TabbarPage
TablePage<T>
TablePageX<T>
TableRowInkWellY
TableSinglePage<T>
TabListPage
TagColor
TextAction
ThemePalette
ThemeState
ThemeWidget
TipMessage
TipText
Toast
ToastItem
ToastPanWidget
ToggleIcon
ToggleText
TreePath<T>
UpdatableContext
ValueListener<T extends Object>
WsDelegate
XAction
XDataTable<T>
XGridDelegate
XGridTile
XPagination

Properties

dialogs Dialogs
final
elevatedButtonStyle ButtonStyle
no setter
elevatedButtonStyleLarge ButtonStyle
no setter
FloatTextInputFormater FilteringTextInputFormatter
no setter
globalContext BuildContext
no setter
globalTheme ThemeData
no setter
HareApp EntaoApp
getter/setter pair
IntTextInputFormater FilteringTextInputFormatter
no setter
lastPhonePrefer StringAttribute
getter/setter pair
MORE_ICON IconData
final
moreArrow Icon
final
numberOnlyInpuFormater TextInputFormatter
getter/setter pair
onGlobalContext BuildContext Function()
getter/setter pair
SegStyle ButtonStyle
getter/setter pair
themePrefer StringOptional
final

Functions

addAction(VoidCallback onTap, {String? tooltip}) Widget
AsyncBuilder<T>({required Future<T> future, required Widget builder(BuildContext, T), Widget waiting(BuildContext)?, Widget failed(BuildContext)?, T? initValue}) Widget
builderWidget(WidgetBuilder b, {Key? key}) Builder
ButtonGroup(BuildContext context, {required List<String> items, String? selected, required void onChange(String item)}) Widget
CheckboxB(Binder<bool?> binder, {Key? key, bool tristate = false, MouseCursor? mouseCursor, Color? activeColor, WidgetStateProperty<Color?>? fillColor, Color? checkColor, Color? focusColor, Color? hoverColor, WidgetStateProperty<Color?>? overlayColor, double? splashRadius, MaterialTapTargetSize? materialTapTargetSize, VisualDensity? visualDensity, FocusNode? focusNode, bool autofocus = false, OutlinedBorder? shape, BorderSide? side, bool isError = false, String? semanticLabel}) Checkbox
ChipAction(String label, Icon? icon, VoidCallback onPressed) Widget
ChipCheckGroupB<T>(Binder<Set<T>> binder, {required Iterable<T> items, required OnWidget<T> onLabel, bool allowEmpty = true, Axis direction = Axis.horizontal, WrapAlignment alignment = WrapAlignment.start, double spacing = 8, WrapAlignment runAlignment = WrapAlignment.start, double runSpacing = 8, WrapCrossAlignment crossAxisAlignment = WrapCrossAlignment.start, TextDirection? textDirection, VerticalDirection verticalDirection = VerticalDirection.down, Clip clipBehavior = Clip.none, Widget? avatar, TextStyle? labelStyle, EdgeInsetsGeometry? labelPadding, double? pressElevation, Color? selectedColor = Colors.blueAccent, Color? disabledColor, String? tooltip, BorderSide? side, OutlinedBorder? shape, FocusNode? focusNode, bool autofocus = false, WidgetStateProperty<Color?>? color, Color? backgroundColor, EdgeInsetsGeometry? padding, VisualDensity? visualDensity}) Wrap
ChipRadioGroupB<T>(Binder<T?> binder, {required Iterable<T> items, required OnWidget<T> onLabel, bool allowEmpty = true, Axis direction = Axis.horizontal, WrapAlignment alignment = WrapAlignment.start, double spacing = 8, WrapAlignment runAlignment = WrapAlignment.start, double runSpacing = 8, WrapCrossAlignment crossAxisAlignment = WrapCrossAlignment.start, TextDirection? textDirection, VerticalDirection verticalDirection = VerticalDirection.down, Clip clipBehavior = Clip.none, Widget? avatar, TextStyle? labelStyle, EdgeInsetsGeometry? labelPadding, double? pressElevation, Color? selectedColor = Colors.blueAccent, Color? disabledColor, String? tooltip, BorderSide? side, OutlinedBorder? shape, FocusNode? focusNode, bool autofocus = false, WidgetStateProperty<Color?>? color, Color? backgroundColor, EdgeInsetsGeometry? padding, VisualDensity? visualDensity}) Wrap
CirclePoint({required double size, required Color color, String? text, Color? textColor, double? fontSize}) Widget
ColumnMax(List<Widget> children, {MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, TextBaseline? textBaseline, double spacing = 0.0}) Column
ColumnMaxStretch(List<Widget> children, {MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start}) Column
ColumnMin(List<Widget> children, {MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, TextBaseline? textBaseline, double spacing = 0.0}) Column
ColumnMinStretch(List<Widget> children, {MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, double spacing = 0.0}) Column
DarkThemeData({required Color seed, bool useMaterial3 = false}) ThemeData
deleteAction(VoidCallback onTap, {String? tooltip}) Widget
DeleteChipAction(VoidCallback onPressed) Widget
DoubleValidator({double? minValue, double? maxValue, bool allowEmpty = true, String? message}) TextValidator
edges({double? left, double? top, double? right, double? bottom, double? hor, double? ver, double? all}) EdgeInsets
EditArea({Key? key, TextEditingController? controller, String? initialValue, String? label, String? hint, int? minLength, int maxLength = 256, bool allowEmpty = true, OnValue<String>? onSubmitted, Widget? prefixIcon, String? helperText, String? errorText, Widget? suffixIcon, Color? cursorColor, TextValidator? validator, List<TextInputFormatter>? inputFormatters, FocusNode? focusNode, bool autofocus = false, int? maxLines = 6, int? minLines = 3, bool readonly = false, InputDecoration? decoration, void onChanged(String)?, void onTapOutside(PointerDownEvent)?}) TextFormField
EditDouble({Key? key, TextEditingController? controller, OptionalValueListener<double>? valueListener, double? initialValue, double? minValue, double? maxValue, bool signed = true, bool allowEmpty = true, void onSubmitted(String)?, void onChanged(String)?, String? label, String? hint, Widget? prefixIcon, String? helperText, String? errorText, int? maxLength, bool clear = false, Widget? suffixIcon, FocusNode? focusNode, Color? cursorColor, TextInputType? keyboardType, TextInputAction? textInputAction = TextInputAction.next, InputDecoration? decoration, InputBorder? border}) Widget
EditInt({Key? key, OptionalValueListener<int>? valueListener, TextEditingController? controller, int? initialValue, int? minValue, int? maxValue, bool signed = true, bool allowEmpty = true, void onSubmitted(String)?, void onChanged(String)?, String? label, String? hint, Widget? prefixIcon, String? helperText, String? errorText, int? maxLength, bool clear = false, Widget? suffixIcon, FocusNode? focusNode, Color? cursorColor, TextInputType? keyboardType, TextInputAction? textInputAction = TextInputAction.next, InputDecoration? decoration, InputBorder? border}) Widget
EditPassword({Key? key, required ValueListener<bool> eyeListener, ValueListener<String>? valueListener, TextEditingController? controller, String? initialValue, int minLength = 1, int maxLength = 128, String? label = "密码", String? errorText, String? hint, OnValue<String>? onChanged, OnValue<String>? onSubmitted, List<TextInputFormatter>? inputFormatters, FocusNode? focusNode, Color? cursorColor, Widget? prefixIcon = const Icon(Icons.lock), TextInputAction? textInputAction = TextInputAction.done}) Widget
EditText({Key? key, TextEditingController? controller, ValueListener<String>? valueListener, String? initialValue, String? label, String? hint, int? minLength, int maxLength = 256, bool allowEmpty = true, OnValue<String>? onSubmitted, Widget? prefixIcon, String? helperText, String? errorText, bool clear = false, Widget? suffixIcon, Color? cursorColor, TextValidator? validator, List<TextInputFormatter>? inputFormatters, TextInputType? keyboardType = TextInputType.text, TextInputAction? textInputAction = TextInputAction.next, FocusNode? focusNode, TextAlign textAlign = TextAlign.start, bool autofocus = false, int? maxLines, int? minLines, bool readonly = false, InputDecoration? decoration, void onChanged(String)?, void onTapOutside(PointerDownEvent)?}) TextFormField
ExpandTile(Widget title, List<Widget> children, {Widget? leading, Widget? subtitle, void onExpansionChanged(bool)?, Widget? trailing, bool showTrailingIcon = true, bool initiallyExpanded = false, bool maintainState = false, EdgeInsetsGeometry? tilePadding, CrossAxisAlignment? expandedCrossAxisAlignment = CrossAxisAlignment.start, Alignment? expandedAlignment = Alignment.centerLeft, EdgeInsetsGeometry? childrenPadding = const Edges.symmetric(horizontal: 12, vertical: 4), Color? backgroundColor, Color? collapsedBackgroundColor, Color? textColor, Color? collapsedTextColor, Color? iconColor, Color? collapsedIconColor, ShapeBorder? shape, ShapeBorder? collapsedShape, Clip? clipBehavior, ListTileControlAffinity? controlAffinity = ListTileControlAffinity.leading, ExpansibleController? controller, bool? dense, VisualDensity? visualDensity, double? minTileHeight, bool? enableFeedback = true, bool enabled = true, AnimationStyle? expansionAnimationStyle}) ExpansionTile
ExportChipAction(VoidCallback onPressed) Widget
FillOrScrollX({required Widget child, required double width, ScrollController? controller}) Widget
getClipboardText() Future<String?>
iconAction(Icon icon, VoidCallback onTap, {String? tooltip}) Widget
iconPopActions(IconData icon, List<XAction> callback(BuildContext c)) Widget
insets({double? left, double? top, double? right, double? bottom, double? hor, double? ver, double? all}) EdgeInsets
IntValidator({int? minValue, int? maxValue, bool allowEmpty = true, String? message}) TextValidator
LabelWidget(Widget label, Widget widget) Widget
LeftRight(List<Widget> left, List<Widget> right) Widget
LeftRightExpanded(List<Widget> left, Widget right) Widget
LengthValidator({int maxLength = 256, int minLength = 0, bool allowEmpty = true, bool trim = false, String? message}) TextValidator
LightThemeData({required Color seed, bool useMaterial3 = false}) ThemeData
ListDrawer(List<Widget> items, {double? width = 200, List<Widget>? tailItems}) Drawer
ListValidator(List<TextValidator> list) TextValidator
ListViewByItems<T>(List<T> items, Widget itemBuilder(T), {bool seprator = false}) ListView
ListViewByWidgets(List<Widget> items, {bool seprator = false, EdgeInsetsGeometry? padding}) ListView
makeDropList(List<String> items) List<DropdownMenuItem<String>>
makeSeparatorBuilder({double? height, Color? color, double? indent, double? endIndent, double? thickness = 0}) IndexedWidgetBuilder
moreActions(List<XAction> callback(BuildContext c)) Widget
NotEmptyValidator({bool trim = true, String message = "不可为空"}) TextValidator
NumValidator({num? minValue, num? maxValue, bool allowEmpty = true, String? message}) TextValidator
packageInfo() Future<PackageInfo>
PickDateButton(BuildContext context, {required DateTime firstDate, DateTime? lastDate, DateTime? date, void onChange(DateTime date)?}) Widget
postFrame(VoidCallback callback) → void
RadioGroupHor<T>(List<LabelValue<T>> items, OptionalValueListener<T> listener, {MainAxisAlignment mainAxisAlignment = MainAxisAlignment.spaceAround}) RadioGroup<T>
RadioGroupVer<T>(List<LabelValue<T>> items, OptionalValueListener<T> listener, {MainAxisAlignment mainAxisAlignment = MainAxisAlignment.center, CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.start}) RadioGroup<T>
refreshAction(VoidCallback onTap, {String? tooltip}) Widget
RefreshChipAction(VoidCallback onPressed) Widget
RegexValidator({required RegExp regex, MatchType matchType = MatchType.Entire, bool trim = false, bool allowEmpty = true, String message = "格式不符"}) TextValidator
RoundRectBox({Widget? child, Color? color, BorderRadius? borderRadius, double radius = 8, BoxShadow? shadow}) DecoratedBox
RowMax(List<Widget> children, {MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, double spacing = 0, TextBaseline? textBaseline}) Row
RowMin(List<Widget> children, {MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, TextDirection? textDirection, TextBaseline? textBaseline, double spacing = 0, VerticalDirection verticalDirection = VerticalDirection.down}) Row
saveAction(VoidCallback onTap, {String? tooltip}) Widget
SegmentsBind<T>(Binder<Set<T>> binder, {Key? key, required List<LabelValue<T>> items, bool multi = false, bool allowEmpty = true}) SegmentedButton<T>
SegmentsBindSingle<T>(Binder<T?> binder, {Key? key, required List<LabelValue<T>> items, bool allowEmpty = true}) SegmentedButton<T>
SegmentsBitsB(Binder<int> binder, {Key? key, required List<ButtonSegment<int>> segments, bool emptySelectionAllowed = true, ButtonStyle? style, bool showSelectedIcon = false, Widget? selectedIcon}) SegmentedButton<int>
SegmentsCheckB<T>(Binder<Set<T>> binder, {Key? key, required List<ButtonSegment<T>> segments, bool emptySelectionAllowed = true, ButtonStyle? style, bool showSelectedIcon = false, Widget? selectedIcon}) SegmentedButton<T>
SegmentsRadioB<T>(Binder<T?> binder, {Key? key, required List<ButtonSegment<T>> segments, bool emptySelectionAllowed = true, ButtonStyle? style, bool showSelectedIcon = false, Widget? selectedIcon}) SegmentedButton<T>
separator({double? height, Color? color, double? indent, double? endIndent, double? thickness = 1, double? hor}) Widget
separatorBuilder(BuildContext context, int index) Widget
setClipboardText(String text) → void
showOverlayX(OverlayBuilder builder, {BuildContext? context, bool canSizeOverlay = false}) OverlayX
showSearchDialog<T>({required Future<List<T>> onItems(String input), Widget onItemView(T item)?, String? searchText, String? title}) Future<T?>
space({double? width, double? height, EdgeInsets? margin}) Widget
StadiumButton({required Widget child, VoidCallback? onPressed, Color? borderColor, Color? backColor, bool outlined = false}) Widget
StadiumElevatedButton({required Widget child, VoidCallback? onPressed, Color? fillColor}) Widget
高度 比 FilledButton 小
StadiumOutlinedButton({required Widget child, VoidCallback? onPressed}) Widget
SwitchB(Binder<bool> binder, {Color? activeColor, Color? activeTrackColor, Color? inactiveThumbColor, Color? inactiveTrackColor, ImageProvider<Object>? activeThumbImage, void onActiveThumbImageError(Object, StackTrace?)?, ImageProvider<Object>? inactiveThumbImage, void onInactiveThumbImageError(Object, StackTrace?)?, WidgetStateProperty<Color?>? thumbColor, WidgetStateProperty<Color?>? trackColor, WidgetStateProperty<Color?>? trackOutlineColor, WidgetStateProperty<double?>? trackOutlineWidth, WidgetStateProperty<Icon?>? thumbIcon, MaterialTapTargetSize? materialTapTargetSize, DragStartBehavior dragStartBehavior = DragStartBehavior.start, MouseCursor? mouseCursor, Color? focusColor, Color? hoverColor, WidgetStateProperty<Color?>? overlayColor, double? splashRadius, FocusNode? focusNode, void onFocusChange(bool)?, bool autofocus = false}) Switch
TagText(String title, {Color? color = Colors.pinkAccent, Color? textColor = Colors.white, double fontSize = 11, double radius = 2, EdgeInsets? padding = tagPadding}) Widget
testAction(VoidCallback onTap, {String? tooltip}) Widget
TextFieldB(Binder<String> binder, {TextEditingController? controller, FocusNode? focusNode, UndoHistoryController? undoController, InputDecoration? decoration = const InputDecoration(), TextInputType? keyboardType, TextInputAction? textInputAction, TextCapitalization textCapitalization = TextCapitalization.none, TextStyle? style, StrutStyle? strutStyle, TextAlign textAlign = TextAlign.start, TextAlignVertical? textAlignVertical, TextDirection? textDirection, bool readOnly = false, bool? showCursor, bool autofocus = false, String obscuringCharacter = '•', bool obscureText = false, bool autocorrect = true, SmartDashesType? smartDashesType, SmartQuotesType? smartQuotesType, bool enableSuggestions = true, int? maxLines = 1, int? minLines, bool expands = false, int? maxLength, MaxLengthEnforcement? maxLengthEnforcement, void onChanged(String)?, void onEditingComplete()?, void onSubmitted(String)?, void onAppPrivateCommand(String, Map<String, dynamic>)?, List<TextInputFormatter>? inputFormatters, bool? enabled, double cursorWidth = 2.0, double? cursorHeight, Radius? cursorRadius, bool? cursorOpacityAnimates, Color? cursorColor, BoxHeightStyle selectionHeightStyle = BoxHeightStyle.tight, BoxWidthStyle selectionWidthStyle = BoxWidthStyle.tight, Brightness? keyboardAppearance, EdgeInsets scrollPadding = const EdgeInsets.all(20.0), DragStartBehavior dragStartBehavior = DragStartBehavior.start, bool? enableInteractiveSelection, TextSelectionControls? selectionControls, void onTap()?, void onTapOutside(PointerDownEvent)?, MouseCursor? mouseCursor, Widget? buildCounter(BuildContext, {required int currentLength, required bool isFocused, required int? maxLength})?, ScrollController? scrollController, ScrollPhysics? scrollPhysics, Iterable<String>? autofillHints = const <String>[], ContentInsertionConfiguration? contentInsertionConfiguration, Clip clipBehavior = Clip.hardEdge, String? restorationId, bool enableIMEPersonalizedLearning = true, Widget contextMenuBuilder(BuildContext, EditableTextState)? = _defaultContextMenuBuilder, bool canRequestFocus = true, SpellCheckConfiguration? spellCheckConfiguration, TextMagnifierConfiguration? magnifierConfiguration}) TextField
TitleBar(BuildContext context, {required Widget title, List<Widget>? actions, double padX = 16}) Widget
TitleValueView(BuildContext context, {required List<Widget> left, List<Widget>? right, double itemSpace = 8, double minHeight = 48, double padX = 16, VoidCallback? onTap, VoidCallback? onDoubleTap}) Widget
typeError(Type t, Object? value) → Never
WrapRow(List<Widget> children, {Axis direction = Axis.horizontal, WrapAlignment alignment = WrapAlignment.start, WrapAlignment runAlignment = WrapAlignment.start, WrapCrossAlignment crossAxisAlignment = WrapCrossAlignment.center, double spacing = 8, double runSpacing = 8, TextDirection? textDirection, VerticalDirection verticalDirection = VerticalDirection.down, Clip clipBehavior = Clip.none}) Wrap
XGridView<T>({List<T>? items, Widget itemView(ContextIndexItem<T>)?, NullableIndexedWidgetBuilder? itemBuilder, bool shrinkWrap = false, int? itemCount, Key? key, Axis scrollDirection = Axis.vertical, bool reverse = false, ScrollController? controller, bool? primary, ScrollPhysics? physics, EdgeInsetsGeometry? padding, int? columnCount, int? crossAxisCount, double crossAxisExtent = 80, double flexPercent = 0.15, double mainAxisSpacing = 0.0, double crossAxisSpacing = 0.0, double childAspectRatio = 1.0, double? mainAxisExtent, bool addAutomaticKeepAlives = true, bool addRepaintBoundaries = true, bool addSemanticIndexes = true, double? cacheExtent, ChildIndexGetter? findChildIndexCallback, int? semanticChildCount, DragStartBehavior dragStartBehavior = DragStartBehavior.start, ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, String? restorationId, Clip clipBehavior = Clip.hardEdge}) GridView
XListView<T>({Key? key, List<T>? items, Widget itemView(ContextIndexItem<T>)?, Widget? lastItemView(BuildContext)?, NullableIndexedWidgetBuilder? itemBuilder, int? itemCount, IndexedWidgetBuilder? separatorBuilder, bool reverse = false, Axis scrollDirection = Axis.vertical, bool separator = false, double separatorIndentStart = 0, double separatorIndentEnd = 0, ScrollController? controller, bool? primary, ScrollPhysics? physics, bool shrinkWrap = false, EdgeInsetsGeometry? padding, double? itemExtent, double? itemExtentBuilder(int, SliverLayoutDimensions)?, Widget? prototypeItem, int? findChildIndexCallback(Key)?, bool addAutomaticKeepAlives = true, bool addRepaintBoundaries = true, bool addSemanticIndexes = true, double? cacheExtent, int? semanticChildCount, DragStartBehavior dragStartBehavior = DragStartBehavior.start, ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, String? restorationId, Clip clipBehavior = Clip.hardEdge, HitTestBehavior hitTestBehavior = HitTestBehavior.opaque}) ListView
xy(double x, [double y = 0]) EdgeInsets

Typedefs

BinderCallback<T> = OnValue<Binder<T>>
DataColumnSortAction = void Function(int column, bool asc)
DataTableSelectAction = void Function(bool?)
Edges = EdgeInsets
ListWidget = List<Widget>
LoginCallback = Future<XResult<Widget>> Function(String phone, String pwd)
OnChildren<T> = List<T> Function(T value)
OnItemView<T> = Widget Function(T value)
OnLogin = Future<XResult<String>> Function(String phone, String pwd)
return token
OnLoginPrepare = Future<XResult<Widget>> Function()
return main page
OnWebSocketBinary = void Function(Uint8List data)
OnWebSocketClose = void Function(int? code, String reason)
OnWebSocketError = void Function(WebSocketException e)
OnWebSocketText = void Function(String text)
OnWidget<T> = Widget Function(T value)
OnWidgetOpt<T> = Widget? Function(T value)
OverlayBuilder = Widget Function(OverlayContext)
QueryConditionChange = void Function(QueryCond? condition)
TextValidator = FormFieldValidator<String>
TypeWidgetBuilder<T> = T Function(BuildContext context)
UpdableBuilder = Widget Function(UpdatableContext)
XActionCallback = void Function(XAction)
XActionDisplay = Widget Function(XAction)