Lite version of smart_select package, zero dependencies, an easy way to provide a single or multiple choice chips.

Overview

Pub Version GitHub

Buy Me A Coffee

Lite version of smart_select package, zero dependencies, an easy way to provide a single or multiple choice chips.

What's New in Version 2.x.x

  • Added parameter ChipsChoice.choiceloader to easily load async choice items
  • Easily configure unselected and selected choice style using ChipsChoice.choiceStyle and ChipsChoice.choiceActiveStyle
  • Individual choice style using C2Choice.style and C2Choice.activeStyle
  • Added scroll and text direction configuration
  • Added more custom builder
  • And many more configurations that can be seen in the API Reference and example

Migration from 1.4.1 to 2.0.0

  • The options parameter is changed to choiceItems
  • The ChipsChoiceOption class is changed to C2Choice,
  • Removed the avatar parameter from choice item class, instead use ChipsChoice.choiceAvatarBuilder
  • The ChipsChoice.isWrapped parameter is changed to ChipsChoice.wrapped
  • The ChipsChoice.itemBuilder parameter is changed to ChipsChoice.choiceBuilder
  • The ChipsChoice.wrapAlignment parameter is changed to ChipsChoice.alignment
  • The ChipsChoice.itemConfig parameter and ChipsChoiceItemConfig class is removed, instead use C2ChoiceStyle class with ChipsChoice.choiceStyle and ChipsChoice.choiceActiveStyle

Demo

Preview

Demo Preview

Download

Demo App

Features

  • Select single or multiple choice
  • Display in scrollable or wrapped list
  • Build choice items from any List
  • Customizable choice widget

Usage

For a complete usage, please see the example.

To read more about classes and other references used by chips_choice, see the API Reference.

Single Choice

// available configuration for single choice
ChipsChoice<T>.single({

  // The current value of the single choice widget.
  @required T value,

  // Called when single choice value changed
  @required C2Changed<T> onChanged,

  // choice item list
  @required List<C2Choice<T>> choiceItems,

  // Async loader of choice items
  C2ChoiceLoader<T> choiceLoader,

  // other available configuration
  // explained below
  ...,
  ...,

})

Simple usage

int tag = 1;
List<String> options = [
  'News', 'Entertainment', 'Politics',
  'Automotive', 'Sports', 'Education',
  'Fashion', 'Travel', 'Food', 'Tech',
  'Science',
];

@override
Widget build(BuildContext context) {
  return ChipsChoice<int>.single(
    value: tag,
    onChanged: (val) => setState(() => tag = val),
    choiceItems: C2Choice.listFrom<int, String>(
      source: options,
      value: (i, v) => i,
      label: (i, v) => v,
    ),
  );
}

Multiple Choice

// available configuration for multiple choice
ChipsChoice<T>.multiple({

  // The current value of the multiple choice widget.
  @required List<T> value,

  // Called when multiple choice value changed
  @required C2Changed<List<T>> onChanged,

  // choice item list
  @required List<C2Choice<T>> choiceItems,

  // Async loader of choice items
  C2ChoiceLoader<T> choiceLoader,

  // other available configuration
  // explained below
  ...,
  ...,

})

Simple usage

List<String> tags = [];
List<String> options = [
  'News', 'Entertainment', 'Politics',
  'Automotive', 'Sports', 'Education',
  'Fashion', 'Travel', 'Food', 'Tech',
  'Science',
];

@override
Widget build(BuildContext context) {
  return ChipsChoice<String>.multiple(
    value: tags,
    onChanged: (val) => setState(() => tags = val),
    choiceItems: C2Choice.listFrom<String, String>(
      source: options,
      value: (i, v) => v,
      label: (i, v) => v,
    ),
  );
}

Style Configuration

// available configuration for single and multiple choice
ChipsChoice<T>.[single|multiple]({

  // other available configuration
  // explained below
  ...,
  ...,

  // Choice unselected item style
  C2ChoiceStyle choiceStyle,

  // Choice selected item style
  C2ChoiceStyle choiceActiveStyle,

  // other available configuration
  // explained below
  ...,
  ...,

})
// Choice item style configuration
C2ChoiceStyle( {

  // Item color
  Color color,

  // choice item margin
  EdgeInsetsGeometry margin,

  // The padding between the contents of the chip and the outside [shape].
  //
  // Defaults to 4 logical pixels on all sides.
  EdgeInsetsGeometry padding,

  // Chips elevation
  double elevation,

  // Longpress chips elevation
  double pressElevation,

  // whether the chips use checkmark or not
  bool showCheckmark,

  // Chip label style
  TextStyle labelStyle,

  // Chip label padding
  EdgeInsetsGeometry labelPadding,

  // Chip brightness
  Brightness brightness,

  // Chip border color
  Color borderColor,

  // Chip border opacity,
  // only effect when [brightness] is [Brightness.light]
  double borderOpacity,

  // The width of this side of the border, in logical pixels.
  double borderWidth,

  // The radii for each corner.
  BorderRadiusGeometry borderRadius,

  // The style of this side of the border.
  //
  // To omit a side, set [style] to [BorderStyle.none].
  // This skips painting the border, but the border still has a [width].
  BorderStyle borderStyle,

  // Chips shape border
  ShapeBorder borderShape;

  // Chip border color
  Color avatarBorderColor,

  // The width of this side of the border, in logical pixels.
  double avatarBorderWidth,

  // The radii for each corner.
  BorderRadiusGeometry avatarBorderRadius,

  // The style of this side of the border.
  //
  // To omit a side, set [style] to [BorderStyle.none].
  // This skips painting the border, but the border still has a [width].
  BorderStyle avatarBorderStyle,

  // Chips shape border
  ShapeBorder avatarBorderShape,

  // Chips clip behavior
  Clip clipBehavior,

  // Configures the minimum size of the tap target.
  MaterialTapTargetSize materialTapTargetSize,

  // Color to be used for the chip's background indicating that it is disabled.
  //
  // It defaults to [Colors.black38].
  Color disabledColor,

})

Custom Builder

// available configuration for single and multiple choice
ChipsChoice<T>.[single|multiple]({

  // other available configuration
  // explained below
  ...,
  ...,

  // Builder for custom choice item label
  C2Builder<T> choiceLabelBuilder,

  /// Builder for custom choice item label
  C2Builder<T> choiceAvatarBuilder,

  // Builder for custom choice item
  C2Builder<T> choiceBuilder,

  // Builder for spinner widget
  WidgetBuilder spinnerBuilder,

  /// Builder for placeholder widget
  WidgetBuilder placeholderBuilder,

  // Builder for error widget
  WidgetBuilder errorBuilder,

  // other available configuration
  // explained below
  ...,
  ...,

})

Container Configuration

// available configuration for single and multiple choice
ChipsChoice<T>.[single|multiple]({

  // other available configuration
  // explained below
  ...,
  ...,

  // Whether the chips is wrapped or scrollable
  bool wrapped,

  // Container padding
  EdgeInsetsGeometry padding,

  // The direction to use as the main axis.
  Axis direction,

  // Determines the order to lay children out vertically and how to interpret start and end in the vertical direction.
  VerticalDirection verticalDirection,

  // Determines the order to lay children out horizontally and how to interpret start and end in the horizontal direction.
  TextDirection textDirection,

  // if [wrapped] is [false], How the scroll view should respond to user input.
  ScrollPhysics scrollPhysics,

  // if [wrapped] is [false], How much space should be occupied in the main axis.
  MainAxisSize mainAxisSize,

  // if [wrapped] is [false], How the children should be placed along the main axis.
  MainAxisAlignment mainAxisAlignment,

  // if [wrapped] is [false], How the children should be placed along the cross axis.
  CrossAxisAlignment crossAxisAlignment,

  // if [wrapped] is [true], how the children within a run should be aligned relative to each other in the cross axis.
  WrapCrossAlignment wrapCrossAlignment,

  // if [wrapped] is [true], determines how wrap will align the objects
  WrapAlignment alignment,

  // if [wrapped] is [true], how the runs themselves should be placed in the cross axis.
  WrapAlignment runAlignment,

  // if [wrapped] is [true], how much space to place between children in a run in the main axis.
  double spacing,

  // if [wrapped] is [true], how much space to place between the runs themselves in the cross axis.
  double runSpacing,

  // Clip behavior
  Clip clipBehavior,

  // String to display when choice items is empty
  String placeholder,

  // placeholder text style
  TextStyle placeholderStyle,

  // placeholder text align
  TextAlign placeholderAlign,

  // error text style
  TextStyle errorStyle,

  // error text align
  TextAlign errorAlign,

  // spinner size
  double spinnerSize,

  // spinner color
  Color spinnerColor,

  // spinner thickness
  double spinnerThickness,

  // other available configuration
  // explained below
  ...,
  ...,

})

Build Choice List

choiceItems property is List<C2Choice<T>>, it can be input directly as in the example below, more info about C2Choice can be found on the API Reference

ChipsChoice<T>.[single|multiple](
  ...,
  ...,
  choiceItems: <C2Choice<T>>[
    C2Choice<T>(value: 1, label: 'Entertainment'),
    C2Choice<T>(value: 2, label: 'Education'),
    C2Choice<T>(value: 3, label: 'Fashion'),
  ],
);

choiceItems also can be created from any list using helper provided by this package, like the example below

List<Map<String, String>> days = [
  { 'value': 'mon', 'title': 'Monday' },
  { 'value': 'tue', 'title': 'Tuesday' },
  { 'value': 'wed', 'title': 'Wednesday' },
  { 'value': 'thu', 'title': 'Thursday' },
  { 'value': 'fri', 'title': 'Friday' },
  { 'value': 'sat', 'title': 'Saturday' },
  { 'value': 'sun', 'title': 'Sunday' },
];

ChipsChoice<T>.[single|multiple](
  ...,
  ...,
  choiceItems: C2Choice.listFrom<T, Map<String, String>>(
    source: days,
    value: (index, item) => item['value'],
    label: (index, item) => item['title'],
  ),
);

Use choiceLoader to easily load choice items from async function

import 'package:dio/dio.dart';

String value;

Future<List<C2Choice<String>>> getChoices() async {
  String url = "https://randomuser.me/api/?inc=gender,name,nat,picture,email&results=25";
  Response res = await Dio().get(url);
  return C2Choice.listFrom<String, dynamic>(
    source: res.data['results'],
    value: (index, item) => item['email'],
    label: (index, item) => item['name']['first'] + ' ' + item['name']['last'],
    meta: (index, item) => item,
  )..insert(0, C2Choice<String>(value: 'all', label: 'All'));
}

@override
Widget build(BuildContext context) {
  return ChipsChoice<String>.single(
    value: value,
    onChanged: (val) => setState(() => value = val),
    choiceItems: null,
    choiceLoader: getChoices,
  );
}

License

Copyright (c) 2020 Irfan Vigma Taufik

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Comments
  • C2ChoiceStyle borderColor is ignored by C2Chip.build()

    C2ChoiceStyle borderColor is ignored by C2Chip.build()

    Currently:

    final Color effectiveBorderColor = data.selected
            ? secondaryColor.withOpacity(effectiveBorderOpacity)
            : primaryColor.withOpacity(effectiveBorderOpacity);
    

    Where is style?.borderColor processing? So the following code is doing nothing:

    choiceStyle: C2ChoiceStyle(borderColor: Colors.red, borderWidth: 2, borderOpacity: 0.5);
    
    opened by slavap 2
  • Add A ScrollController

    Add A ScrollController

    Add ScrollController to The SingleChildScrollView with the option to control the scrolling this will help improve the scrolling in the web because the web has issues with scrolling horizontally using the mouse.

    opened by iliyass-zamouri 1
  • How to set the initial value

    How to set the initial value

    Hello, I have a question,How to set the initial value?When I want to create multiple, I select several options by default。 my code is : ChipsChoice.multiple( value: widget.route._tags, onChanged: (val) { if (val.length < 7) { setState(() { widget.route._tags = val; }); } }, choiceItems: null, choiceLoader: getChoices, wrapped: true, padding: EdgeInsets.only(top: 10, bottom: 10), spacing: 10, choiceBuilder: (item) { return CustomChip( label: item.label, margin: const EdgeInsets.symmetric(vertical: 5), width: (MediaQuery.of(context).size.width - 20 - 30) / 4, height: 35, selected: item.selected, onSelect: item.select); }, ))

    opened by Small-World 1
  • unexpected null value when running simple usage example

    unexpected null value when running simple usage example

    Tried the small snippet and didnt work in my project. Then tried the example code from this repository and it's not upgraded to null safety standards so can't run without some work.

    opened by mrgithub 1
  • How to Fetch API Data to Multiple Select Chips but Don't Want horizontal Chips

    How to Fetch API Data to Multiple Select Chips but Don't Want horizontal Chips

    I am using choice chips. how to fetch API data in Works with FormField and Validator Section

    Please refer to the image below I want to fetch API Data to the green Rectangle Section.. I don't want a red rectangle model.. How to do it.... WhatsApp Image 2021-03-20 at 6 24 51 PM

    opened by NavinRiyaz 1
  • RawChip doesn't work within CupertinoApp

    RawChip doesn't work within CupertinoApp

    When using ChipsChoice in a CupertinoApp, Flutter generates a runtime exception, even when the ChipsChoice constructor is inside a Material Widget.

    Here is the exception I see in my app: ════════ Exception caught by widgets library ═══════════════════════════════════════════════════════ The following assertion was thrown building RawChip(dirty, dependencies: [_LocalizationsScope-[GlobalKey#f1873], _EffectiveTickerMode], state: _RawChipState#ff9ed(tickers: tracking 4 tickers)): No MaterialLocalizations found.

    RawChip widgets require MaterialLocalizations to be provided by a Localizations widget ancestor. The material library uses Localizations to generate messages, labels, and abbreviations.

    To introduce a MaterialLocalizations, either use a MaterialApp at the root of your application to include them automatically, or add a Localization widget with a MaterialLocalizations delegate.

    The specific widget that could not find a MaterialLocalizations ancestor was: RawChip dirty dependencies: [_LocalizationsScope-[GlobalKey#f1873], _EffectiveTickerMode] state: _RawChipState#ff9ed(tickers: tracking 4 tickers) The ancestors of this widget were: : ChipsChoice dependencies: [_InheritedTheme, _LocalizationsScope-[GlobalKey#f1873]] state: ChipsChoiceState#1ac60 : Material type: canvas dependencies: [_InheritedTheme, _LocalizationsScope-[GlobalKey#f1873], _EffectiveTickerMode] state: _MaterialState#da9a7 : Flexible flex: 1 : Column direction: vertical mainAxisAlignment: start mainAxisSize: min crossAxisAlignment: start dependencies: [Directionality] renderObject: RenderFlex#5c948 relayoutBoundary=up13 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE : Card dependencies: [_InheritedTheme, _LocalizationsScope-[GlobalKey#f1873]] : Material type: canvas dependencies: [_InheritedTheme, _LocalizationsScope-[GlobalKey#f1873], _EffectiveTickerMode] state: _MaterialState#10a52 : Content dependencies: [_InheritedTheme, _LocalizationsScope-[GlobalKey#f1873]] state: _ContentState#8e5eb : ListView scrollDirection: vertical primary: using primary controller AlwaysScrollableScrollPhysics dependencies: [PrimaryScrollController, MediaQuery] : Padding padding: EdgeInsets.all(5.0) dependencies: [Directionality] renderObject: RenderPadding#b8b0c relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE : CupertinoPageScaffold dependencies: [MediaQuery, CupertinoUserInterfaceLevel, _InheritedCupertinoTheme] state: _CupertinoPageScaffoldState#bcfea : FilterPage dependencies: [_InheritedTheme, _LocalizationsScope-[GlobalKey#f1873]] state: _FilterPageState#93526 : CupertinoApp state: _CupertinoAppState#d6f28 : Theme ThemeData#202cb : MyApp

    opened by nylipton 1
  • choiceLoader: getUsers(

    choiceLoader: getUsers("element") ????. Why can not use Future Function with parameter.

    I have code:

    Future<List<C2Choice>> getChildHashTags(String element) async { ..... }

    then:

    choiceLoader: getChildHashTags("cat")

    => show error: The argument type 'Future<List<C2Choice>>' can't be assigned to the parameter type 'Future<List<C2Choice>> Function()'.

    Thanks.

    opened by tuemaytinh1981 1
  • Disabled color stays to the default black?

    Disabled color stays to the default black?

    The disabled color, which is the background color of the chip doesn't change, even if changed to a different color, both in choiceStyle and choiceActiveStyle , using C2ChoiceStyle.

    Here's the code snippet:

    ChipsChoice<int>.single(
                  value: tag,
                  onChanged: (val) => setState(() => tag = val),
                  choiceItems: C2Choice.listFrom<int, String>(
                    source: options,
                    value: (i, v) => i,
                    label: (i, v) => v,
                    tooltip: (i, v) => v,
                  ),
                  
                  wrapped: true,
                  choiceStyle: C2ChoiceStyle(
                    color: Colors.grey[400],
                    disabledColor: Colors.white,
                    borderRadius: BorderRadius.all(
                      Radius.circular(5),
                    ),
                  ),
                  choiceActiveStyle: C2ChoiceStyle(
                    color: Colors.white,
                    disabledColor: Colors.blue[200],
                  ),
                ),
    
    opened by singlesoup 1
  • Tooltip not show

    Tooltip not show

    I have code: ... choiceItems: C2Choice.listFrom<String, String>( source: options, value: (i, v) => v, label: (i, v) => v, tooltip: (i, v) => v, ), ... tooltip not show ???

    opened by tuemaytinh1981 1
  • Bugfix + support for materialTapTargetSize

    Bugfix + support for materialTapTargetSize

    Hi Irfan,

    Thank you for creating this library. Changes in this PR:

    • Fixed a small bug preventing us from setting a custom margin
    • Added support for setting materialTapTargetSize on chips - directly affecting the ability to reduce padding of chips when using flutter_chips_choice.

    Thanks, Noam

    opened by noliran 1
  • Error when setting margin

    Error when setting margin

    I get the error:

    type 'EdgeInsets' is not a subtype of type 'bool'

    if I set a margin like this: margin: EdgeInsets.all(10)

    the problem is found here:

    padding: config.margin ?? isWrapped ? const EdgeInsets.all(0) : const EdgeInsets.all(5)

    opened by dr0-dev 1
  • C2ChipStyle selectedStyle and hoveredStyle

    C2ChipStyle selectedStyle and hoveredStyle

    With upgrading to version 3 I cannot figure out how to make hoveredStyle dynamic - I need to have different hovered color depending on which item I'm hovering on - one color for selected and another for non-selected chips.

    opened by slavap 0
  • implement with model class

    implement with model class

    hi, cloud you give me an example how to implement with model class ?

    my model class :

    import 'package:flutter/material.dart';
    import 'package:json_annotation/json_annotation.dart';
    import '../utils/icon_model_converter.dart';
    part 'option_model.g.dart';
    
    @JsonSerializable()
    class OptionModel {
      @JsonKey(
          disallowNullValue: true,
          fromJson: IconModelConverter.fromJson,
          toJson: IconModelConverter.toJson)
      final IconData? icon;
      final String label;
      late dynamic value;
    
    
      OptionModel(
          {this.icon,
          required this.label,
          required this.value
    });
    
      factory OptionModel.fromJson(Map<String, dynamic> json) =>
          _$OptionModelFromJson(json);
      Map<String, dynamic> toJson() => _$OptionModelToJson(this);
    }
    
    
    opened by YouSour 0
  • Error: Method 'addPostFrameCallback' cannot be called on 'WidgetsBinding?'

    Error: Method 'addPostFrameCallback' cannot be called on 'WidgetsBinding?'

    This package is giving this error during build.

    Error: Method 'addPostFrameCallback' cannot be called on 'WidgetsBinding?' because it is potentially null.
     - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../Development/flutter/packages/flutter/lib/src/widgets/binding.dart').
    Try calling using ?. instead.
        WidgetsBinding.instance.addPostFrameCallback((_) {
                                ^^^^^^^^^^^^^^^^^^^^
    
    
    FAILURE: Build failed with an exception.
    

    ChangingWidgetsBinding.instance.addPostFrameCallback to WidgetsBinding.instance?.addPostFrameCallback solves the issue.

    flutter doctor

    [✓] Flutter (Channel stable, 2.10.5, on macOS 12.6 21G115 darwin-x64, locale en-IN)
    [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    [✓] Xcode - develop for iOS and macOS (Xcode 14.0)
    [✓] Chrome - develop for the web
    [✓] Android Studio (version 2021.2)
    [✓] VS Code (version 1.71.2)
    [✓] Connected device (2 available)
    [✓] HTTP Host Availability
    
    opened by arnabonetraker 0
  • C2Chip text color is not adjustable

    C2Chip text color is not adjustable

    Currently there is the following code in C2Chip.build():

        final TextStyle defaultLabelStyle =
            TextStyle().merge(chipTheme.labelStyle).merge(style?.labelStyle);
    
        final TextStyle primaryLabelStyle =
            defaultLabelStyle.copyWith(color: foregroundColor);
    
        final TextStyle selectedLabelStyle = defaultLabelStyle.copyWith(
          color:
              isElevated ? Colors.white : secondaryColor.withAlpha(foregroundAlpha),
        );
    

    So there is no way to specify font color for chips, because labelStyle color is just ignored. That leads to strange color combinations, for example blue background with opacity 0.12 and blue text with opacity 0.87 on it, which is barely readable. Currently the following code is not working, though it definitely should:

    choiceActiveStyle: C2ChoiceStyle(color: Colors.blue, opacity: 1, labelStyle: TextStyle().copyWith(color: Colors.yellow));
    
    opened by slavap 2
Releases(v1.2.0)
  • v1.2.0(Apr 5, 2020)

  • v1.1.0(Mar 7, 2020)

    • Improve performance, since Theme.of(context) in default choice widget is moved outside, so this only fired once
    • ChipsChoiceBuilder parameter select function now only need one parameter bool selected
    • Add meta to ChipsChoiceOption, this useful with custom choice widget
    • Add more option to ChipsChoiceItemConfig
    • Add more usage example
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Mar 7, 2020)

    • Initial release
    • Select single or multiple choice
    • Display in scrollable or wrapped List
    • Customizable choice input
    • Build choice option from any List
    Source code(tar.gz)
    Source code(zip)
🎨 An opinionated, effective and correct way to provide multiple themes to your app.

theming This is an opinionated and effective way to provide multi-theme choice for your app. theming depends on provider and shared_preference for sta

Chinyeaka Chinonso 3 Nov 28, 2022
[Flutter package] An easy and quick way to check if the local app is updated with the same version in their respective stores (Play Store / Apple Store ).

Retrieve version and url for local app update against store app Android and iOS Features Using as reference packages like in_app_update , version_chec

Kauê Murakami 11 Nov 9, 2022
Flutter-sorted-chips-row - Flutter library for rendering a row of Material "Chip" buttons that gets sorted according to the given function

sorted_chips_row A Flutter Widget displaying a row of Material Chips, sorted according to the provided comparison function. How to use Adding dependen

Callstack Incubator 29 Jul 29, 2021
Flutter-Week-Plans - Make Flutter Weekly plans with workout plans acc. to your choice.

Getting Started Flutter-Plans in a Workout Gym App with weekly added favourite plans. Images and Gif are taken randomly from Internet and are not arra

Yashu Agrawal 0 Jan 3, 2022
Lite-graphql - A light way implementation of GraphQL client in dart language

lite GraphQL client A light way implementation of GraphQL client in dart languag

Vincenzo Palazzo 3 Mar 17, 2022
AI Library to create efficient Artificial Neural Networks. Computation uses SIMD (Single Instruction Multiple Data) to improve performance.

eneural_net eNeural.net / Dart is an AI Library for efficient Artificial Neural Networks. The library is portable (native, JS/Web, Flutter) and the co

null 21 Dec 29, 2022
Integration Test Preview allows tests on multiple screen sizes in a single e2e test run.

Integration Test Preview has pre-configured methods that allow for faster test deployment for end to end (e2e) test coverage (using Android and iOS pl

The Mobile Applications Community 3 Aug 23, 2022
A zero-dependency web framework for writing web apps in plain Dart.

Rad Rad is a frontend framework for creating fast and interactive web apps using Dart. It's inspired from Flutter and shares same programming paradigm

null 70 Dec 13, 2022
End to end flutter series for zero to hero flutter devloper.( lang of videos is turkish)

flutter_full_learn A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you start

Veli Bacik 191 Dec 24, 2022
German From Zero To Hero

Having troubles trying to learn Deutsch (German)? I had those too... That's why I made an app that will help you with. You don't need previous knowledge about German or learning languages. What you need is a couple of minutes, lost the fear to talk in front of other in German, and just have fun!

Kevin Arce 6 Dec 8, 2022
A flutter package to cache network image fastly without native dependencies.

Fast Cached Network Image A flutter package to cache network image fastly without native dependencies, with loader, error builder, and smooth fade tra

CHRISTO 3 Sep 22, 2022
Flutter starter project - boilerPlate for Clean Architecture with Domain-Driven-Design with commonly used dependencies

flutter_starter_project A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you

MJ Montes 0 Jan 2, 2022
Protofu is a Dart Command Line tool for generating your protobufs and included dependencies in one command.

ProtoFu - let me compile that for you ProtoFu exists to make working with protobufs easier. Gone are the days of downloading protoc and the dart proto

John McDole 5 Oct 27, 2022
flutter_thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.

中文文档 英文文档 问题集 原仓库不再维护,代码已经很老了 最近版本更新会很快,主要是增加新特性,涉及到混合栈的稳定性的问题应该不多,可放心升级,发现问题加 QQ 群号码:1014085473,我会尽快解决。 不打算好好看看源码的使用者可以放弃这个库了,因为很多设定是比较死的,而我本人不打算花时间写

null 290 Dec 29, 2022
A Flutter sensor plugin which provide easy access to the Pitch and Roll on Android and iOS devices.

Flutter Aeyrium Sensor Plugin Aeyrium Sensor Plugin A Flutter sensor plugin which provide easy access to the Pitch and Roll on Android and iOS devices

Aeyrium 58 Nov 3, 2022
flutter_thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.

本仓库不再维护,可移步新仓库 https://github.com/flutter-thrio/flutter_thrio 中文文档 问题集 QQ 群号码:1014085473 The Navigator for iOS, Android, Flutter. Version 0.2.2 requir

Hellobike 732 Dec 5, 2022
A Flutter package providing an easy way to add floating ribbon to images.

Floating Ribbon A new Flutter package for creating floating ribbons on images. Dependency dependencies: floating_ribbon: any How To Use In order to

101Loop 12 Sep 26, 2022
A package provides an easy way to add shimmer effect in Flutter project

flutter_shimmer_widget A package provides an easy way to add shimmer effect in Flutter project Getting Started Animation Example Project There is a ex

Le Anh Tuan 4 Jun 29, 2022