A code generator to write widgets as function without loosing the benefits of classes.

Overview

Build pub package pub package

Widgets are cool. But classes are quite verbose:

class Foo extends StatelessWidget {
  final int value;
  final int value2;

  const Foo({Key key, this.value, this.value2}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Text('$value $value2');
  }
}

So much code for something that could be done much better using a plain function:

Widget foo(BuildContext context, { int value, int value2 }) {
  return Text('$value $value2');
}

The problem is, using functions instead of classes is not recommended:

... Or is it?


functional_widgets, is an attempt to solve this issue, using a code generator.

Simply write your widget as a function, decorate it with a @swidget, and then this library will generate a class for you to use.

As the added benefit, you also get for free the ability to inspect the parameters passed to your widgets in the devtool

Example

You write:

@swidget
Widget foo(BuildContext context, int value) {
  return Text('$value');
}

It generates:

class Foo extends StatelessWidget {
  const Foo(this.value, {Key key}) : super(key: key);

  final int value;

  @override
  Widget build(BuildContext context) {
    return foo(context, value);
  }

  @override
  void debugFillProperties(DiagnosticPropertiesBuilder properties) {
    super.debugFillProperties(properties);
    properties.add(IntProperty('value', value));
  }
}

And then you use it:

runApp(
  Foo(42)
);

How to use

Install (builder)

There are a few separate packages you need to install:

  • functional_widget_annotation, a package containing decorators. You must install it as dependencies.
  • functional_widget, a code-generator that uses the decorators from the previous packages to generate your widget.
  • build_runner, a dependency that all applications using code-generation should have

Your pubspec.yaml should look like:

dependencies:
  functional_widget_annotation: ^0.8.0

dev_dependencies:
  functional_widget: ^0.8.0
  build_runner: ^1.9.0

That's it!

You can then start the code-generator with:

flutter pub run build_runner watch

Customize the output

It is possible to customize the output of the generator by using different decorators or configuring default values in build.yaml file.

build.yaml change the default behavior of a configuration.

# build.yaml
targets:
  $default:
    builders:
      functional_widget:
        options:
          # Default values:
          debugFillProperties: false
          widgetType: stateless # or 'hook'

FunctionalWidget decorator will override the default behavior for one specific widget.

@FunctionalWidget(
  debugFillProperties: true,
  widgetType: FunctionalWidgetType.hook,
)
Widget foo() => Container();

debugFillProperties override

Widgets can be override debugFillProperties to display custom fields on the widget inspector. functional_widget offer to generate these bits for your, by enabling debugFillProperties option.

For this to work, it is required to add the following import:

import 'package:flutter/foundation.dart';

Example:

(You write)

import 'package:flutter/foundation.dart';

@swidget
Widget example(int foo, String bar) => Container();

(It generates)

class Example extends StatelessWidget {
  const Example(this.foo, this.bar, {Key key}) : super(key: key);

  final int foo;

  final String bar;

  @override
  Widget build(BuildContext _context) => example(foo, bar);
  @override
  void debugFillProperties(DiagnosticPropertiesBuilder properties) {
    super.debugFillProperties(properties);
    properties.add(IntProperty('foo', foo));
    properties.add(StringProperty('bar', bar));
  }
}

Generate different type of widgets

By default, the generated widget by @FunctionalWidget() is a StatelessWidget.

It is possible to generate a HookWidget instead (from https://github.com/rrousselGit/flutter_hooks)

There are a few ways to do so:

  • Through build.yaml:

    # build.yaml
    targets:
      $default:
        builders:
          functional_widget:
            options:
              widgetType: hook

    then used as:

    @FunctionalWidget()
    Widget example(int foo, String bar) => Container();
  • With parameters on the @FunctionalWidget decorator:

    @FunctionalWidget(widgetType: FunctionalWidgetType.hook)
    Widget example(int foo, String bar) => Container();
  • With the shorthand @hwidget decorator:

    @hwidget
    Widget example(int foo, String bar) => Container();

In any cases, flutter_hooks must be added as a separate dependency in the pubspec.yaml

dependencies:
  flutter_hooks: # some version number

All the potential function prototypes

functional_widget will inject widget specific parameters if you ask for them. You can potentially write any of the following:

Widget foo();
Widget foo(BuildContext context);
Widget foo(Key key);
Widget foo(BuildContext context, Key key);
Widget foo(Key key, BuildContext context);

You can then add however many arguments you like after the previously defined arguments. They will then be added to the class constructor and as a widget field:

  • positional
@swidget
Widget foo(int value) => Text(value.toString());

// USAGE

Foo(42);
  • named:
@swidget
Widget foo({int value}) => Text(value.toString());

// USAGE

Foo(value: 42);
  • A bit of everything:
@swidget
Widget foo(BuildContext context, int value, { int value2 }) {
  return Text('$value $value2');
}

// USAGE

Foo(42, value2: 24);
Comments
  • Bump analyzer needed to mobX compatibility

    Bump analyzer needed to mobX compatibility

    Because mobx_codegen >=0.0.7 depends on analyzer ^0.35.0 and functional_widget 0.5.0 depends on analyzer >=0.32.2 <0.34.0, mobx_codegen >=0.0.7 is incompatible with functional_widget 0.5.0.
    And because no versions of functional_widget match >0.5.0 <0.6.0, mobx_codegen >=0.0.7 is incompatible with functional_widget ^0.5.0.
    
    opened by jaumard 17
  • Functional Widget VS Code Extension

    Functional Widget VS Code Extension

    Hello,

    I was thinking about creating a VS Code extension to refactor Stateless Widgets into Functional Widgets with some quick action. Also I could add extract functionality similar to "Extract Widget" from Flutter extension (obviously I should add another step to choose between @swidget | @hwidget | @hcwidget | @cwidget).

    Do you think it could be useful?

    enhancement 
    opened by MassimoTambu 14
  • VoidCallback parameter yields dynamic

    VoidCallback parameter yields dynamic

    Example:

    @widget
    Widget foo(VoidCallback bar) => Container();
    

    generates

    class Foo extends StatelessWidget {
      const Foo(this.bar, {Key key}) : super(key: key);
    
      final dynamic bar;
    
      @override
      Widget build(BuildContext _context) => foo(bar);
    }
    

    resulting in error:

    The argument type 'dynamic' can't be assigned to the parameter type 'VoidCallbackvoid Function()'.dart(argument_type_not_assignable)
    
    bug 
    opened by derolf 14
  • Option remove leading underscore

    Option remove leading underscore

    Adds an option removeLeadingUnderscore to FunctionalWidget:

      /// If `true` the leading underscore of the function is removed. This way,
      /// a private function can be used to create a public widget class. If the
      /// function does not have a leading underscore, this option is ignored.
      ///
      /// For example, the function `_foo` would generate class `Foo`.
      final bool removeLeadingUnderscore;
    
    opened by derolf 10
  • Unknown types fix

    Unknown types fix

    This patch fixes: https://github.com/rrousselGit/functional_widget/issues/43

    The idea is to walk the "original" AST instead of the resolved view.

    opened by derolf 9
  • Cannot run

    Cannot run "flutter pub pub run build_runner watch" on Flutter dev channel

    I am using functional_widget for a long time (on both dev and master flutter dev channels).

    After upgrading flutter dev channel last week, functional_widget-0.7.2 stops working (0.7.1 works well):

    flutter pub pub run build_runner watch
    [INFO] Generating build script...
    [INFO] Generating build script completed, took 604ms
    
    [INFO] Creating build script snapshot......
    [INFO] Creating build script snapshot... completed, took 7.5s
    
    [SEVERE] Failed to snapshot build script .dart_tool/build/entrypoint/build.dart.
    This is likely caused by a misconfigured builder definition.
    [SEVERE] /C:/Users/pzika/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/functional_widget-0.7.2/lib/function_to_widget_class.dart:216:43: Error: The getter 'isUndefined' isn't defined for the class 'DartType'. - 'DartType' is from 'package:analyzer/dart/element/type.dart' ('/C:/Users/pzika/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/analyzer-0.39.4/lib/dart/element/type.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'isUndefined'.      'DiagnosticsProperty<${element.type.isUndefined ? findBeginToken(element) : element.type.displayName}>';                                          ^^^^^^^^^^^/C:/Users/pzika/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/functional_widget-0.7.2/lib/src/parameters.dart:57:20: Error: The gettePS 
    
    C:\wikibulary\dart\know_how> flutter doctor
    Doctor summary (to see all details, run flutter doctor -v):
    [√] Flutter (Channel dev, v1.15.3, on Microsoft Windows [Version 10.0.18362.657], locale cs-CZ)
    [!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
        X No Java Development Kit (JDK) found; You must have the environment variable JAVA_HOME set and the java
          binary in your PATH. You can download the JDK from
          https://www.oracle.com/technetwork/java/javase/downloads/.
    [√] Chrome - develop for the web
    [!] Android Studio (version 3.5)
        X Flutter plugin not installed; this adds Flutter specific functionality.
        X Dart plugin not installed; this adds Dart specific functionality.
        X Unable to determine bundled Java version.
    [√] VS Code (version 1.42.1)
    [√] Connected device (2 available)
    
    ! Doctor found issues in 2 categories.
    PS C:\wikibulary\dart\know_how>
    
    opened by PavelPZ 7
  • Upgrating `analyzer` version (and fix bugs caused by upgrading)

    Upgrating `analyzer` version (and fix bugs caused by upgrading)

    The mobx.dart requires analyzer: '>=0.38.5 <0.40.0', while this package forces to be lower. Thus, the two cannot be installed without conflict. So I update the version. In addition, there is a bug when updating it, so I also fix two little lines.

    opened by fzyzcjy 7
  • Error with @required arguments with not included types

    Error with @required arguments with not included types

    When using a parameter both @required and with a type not included in the Dart SDK (Color for example), the generation fails.

    Example :

    @widget 
    Widget example(BuildContext context, {@required Color splashColor}) 
    

    Produces :

    line 17, column 7: Expected an identifier.
       ╷
    17 │ final @ splashColor;
       │       ^
       ╵
    line 17, column 7: Expected to find ';'.
       ╷
    17 │ final @ splashColor;
       │       ^
       ╵
    line 17, column 20: Expected a class member.
       ╷
    17 │ final @ splashColor;
       │                    ^
    

    This is due of the access of the first token of the computedNode.

    bug 
    opened by aloisdeniel 7
  • buiding incorrect class with @widget annotation

    buiding incorrect class with @widget annotation

    i think this code:

    @widget
    Widget _loader(BuildContext context, String message) {
      return Center(
          child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          ColorLoader3(
            radius: 25.0,
            dotRadius: 5.0,
          ),
          Padding(
            padding: const EdgeInsets.all(3.0),
            child: Text(
              Strings.pleaseWait,
              style: AppTheme(context).caption().copyWith(color: Colors.red[900]),
            ),
          ),
        ],
      ));
    }
    

    should be build this class:

    class _Loader extends StatelessWidget {
      const _Loader(this.message, {Key key}) : super(key: key);
    
      final String message;
    
      @override
      Widget build(BuildContext _context) => Center(
              child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              ColorLoader3(
                radius: 25.0,
                dotRadius: 5.0,
              ),
              Padding(
                padding: const EdgeInsets.all(3.0),
                child: Text(
                  Strings.pleaseWait,
                  style: AppTheme(_context).caption().copyWith(color: Colors.red[900]),
                ),
              ),
            ],
          ));
    }
    

    but i have:

    class _Loader extends StatelessWidget {
      const _Loader(this.message, {Key key}) : super(key: key);
    
      final String message;
    
      @override
      Widget build(BuildContext _context) => _loader(_context, message);
    }
    
    question 
    opened by pishguy 6
  • Cannot generate widgets

    Cannot generate widgets

    Describe the bug the generator outputs:

    [INFO] ------------------------------------------------------------------------
    
    [INFO] Starting Build
    
    [INFO] Updating asset graph...
    [INFO] Updating asset graph completed, took 1ms
    
    [INFO] Running build...
    [SEVERE] functional_widget:functional_widget on lib/main.dart:
    
    Invalid prototype. The function must be synchronous, top level, and return a Widget
    package:testapp/main.dart:13:8
       ╷
    13 │ Widget myApp(){
       │        ^^^^^
       ╵
    [INFO] Running build completed, took 121ms
    
    [INFO] Caching finalized dependency graph...
    [INFO] Caching finalized dependency graph completed, took 35ms
    
    [SEVERE] Failed after 158ms
    

    it seems that is throwing this error, but i don't see why. https://github.com/rrousselGit/functional_widget/blob/4ffbf96c4298531e570f42881b1b680f24f47d47/packages/functional_widget/lib/function_to_widget_class.dart#L61-L70

    To Reproduce I don't know, i just wrote the functional widget as the documentation says but the generator doesn't work

    Expected behavior generate main.g.dart

    Extra info main.dart (the only file is a simple counter app)

    import 'package:flutter/foundation.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter_hooks/flutter_hooks.dart';
    import 'package:functional_widget_annotation/functional_widget_annotation.dart';
    
    part 'main.g.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    @swidget
    Widget myApp(){
      return MaterialApp(
        title: 'Flutter Demo',
        routes: {
          '/': (context) => MyHomePage(title: 'Rutas lmL')
        },
        theme: ThemeData(
          primarySwatch: Colors.lightGreen,
        ),
      );
    }
    
    
    @hwidget
    Widget myHomePage({String title}){
      final countState = useState(0);
    
      void increment() => countState.value++;
      void decrement() => countState.value--;
    
      return Scaffold(
        appBar: AppBar(
          title: Text(title),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Text('Presionaste ${countState.value} veces', textAlign: TextAlign.center,),
            TextButton.icon(onPressed: increment, label: Text('Incrementar'), icon: Icon(Icons.add)),
            TextButton.icon(onPressed: decrement, label: Text('Decrementar'), icon: Icon(Icons.vertical_align_bottom))
          ],
        ),
      );
    }
    

    Dart version: Dart SDK version: 2.12.2 (stable) (Wed Mar 17 10:30:20 2021 +0100) on "windows_x64" Flutter doctor

    Doctor summary (to see all details, run flutter doctor -v):
    [✓] Flutter (Channel stable, 2.0.4, on Microsoft Windows [Version 10.0.21313.1000], locale es-CL)
    [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    [✓] Chrome - develop for the web
    [✓] Android Studio (version 4.1.0)
    [✓] IntelliJ IDEA Ultimate Edition (version 2019.3)
    [✓] VS Code (version 1.55.1)
    [✓] Connected device (3 available)
    

    pubspec

    name: testapp
    description: A new Flutter project.
    
    # The following line prevents the package from being accidentally published to
    # pub.dev using `pub publish`. This is preferred for private packages.
    publish_to: 'none' # Remove this line if you wish to publish to pub.dev
    
    # The following defines the version and build number for your application.
    # A version number is three numbers separated by dots, like 1.2.43
    # followed by an optional build number separated by a +.
    # Both the version and the builder number may be overridden in flutter
    # build by specifying --build-name and --build-number, respectively.
    # In Android, build-name is used as versionName while build-number used as versionCode.
    # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
    # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
    # Read more about iOS versioning at
    # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
    version: 1.0.0+1
    
    environment:
      sdk: ">=2.7.0 <3.0.0"
    
    dependencies:
      flutter:
        sdk: flutter
      cupertino_icons: ^1.0.2
      flutter_hooks: ^0.16.0
      functional_widget_annotation: ^0.9.0
    
    dev_dependencies:
      flutter_test:
        sdk: flutter
      functional_widget: ^0.9.0
      build_runner: ^1.9.0
    # For information on the generic Dart part of this file, see the
    # following page: https://dart.dev/tools/pub/pubspec
    
    # The following section is specific to Flutter.
    flutter:
    
      # The following line ensures that the Material Icons font is
      # included with your application, so that you can use the icons in
      # the material Icons class.
      uses-material-design: true
    
      # To add assets to your application, add an assets section, like this:
      # assets:
      #   - images/a_dot_burr.jpeg
      #   - images/a_dot_ham.jpeg
    
      # An image asset can refer to one or more resolution-specific "variants", see
      # https://flutter.dev/assets-and-images/#resolution-aware.
    
      # For details regarding adding assets from package dependencies, see
      # https://flutter.dev/assets-and-images/#from-packages
    
      # To add custom fonts to your application, add a fonts section here,
      # in this "flutter" section. Each entry in this list should have a
      # "family" key with the font family name, and a "fonts" key with a
      # list giving the asset and other descriptors for the font. For
      # example:
      # fonts:
      #   - family: Schyler
      #     fonts:
      #       - asset: fonts/Schyler-Regular.ttf
      #       - asset: fonts/Schyler-Italic.ttf
      #         style: italic
      #   - family: Trajan Pro
      #     fonts:
      #       - asset: fonts/TrajanPro.ttf
      #       - asset: fonts/TrajanPro_Bold.ttf
      #         weight: 700
      #
      # For details regarding fonts from package dependencies,
      # see https://flutter.dev/custom-fonts/#from-packages
    
    bug question 
    opened by blackshot 5
  • Version conflict due to build_config

    Version conflict due to build_config

    Hello, I am trying to start using this library, but keep getting the following error:

    generating build script...
    Because build_runner >=1.6.5 <1.7.4 depends on build_config >=0.4.1 <0.4.2 and functional_widget >=0.7.3 depends on build_config ^0.4.2, build_runner >=1.6.5 <1.7.4 is incompatible with functional_widget >=0.7.3.
    So, because flutter_tool depends on both functional_widget ^0.7.3 and build_runner 1.7.1, version solving failed.
    generating build script...                                          2.0s
    Exception: pub get failed (1; So, because flutter_tool depends on both functional_widget ^0.7.3 and build_runner 1.7.1, version solving failed.)
    Exited (1)
    

    It seems that some dependency of flutter_tool pulls a fixed version of build_runner, which depends on an old build_config version.

    Here is my pubspec.yaml:

    environment:
      sdk: ">=2.7.0 <3.0.0"
    
    dependencies:
      google_maps_flutter: ^0.5.28+1
      functional_widget_annotation: ^0.5.1
      geolocator: ^5.3.2+2
      rxdart: ^0.24.1
      flutter:
        sdk: flutter
      openapi:
        path: gen
    
    builders:
      functional_widget: ^0.7.3
    

    I am using latest stable version of Flutter:

    Flutter 1.17.5 • channel stable • https://github.com/flutter/flutter.git
    Framework • revision 8af6b2f038 (5 days ago) • 2020-06-30 12:53:55 -0700
    Engine • revision ee76268252
    Tools • Dart 2.8.4
    

    What I have already tried:

    1. Using dependency_override for build_runner or build_config - doesn't seem work.
    2. Using master branch of Flutter SDK - same behavior.
    3. Adding build_runner: 1.9.0 to flutter_tool - breaks the package.

    Any ideas how to make it work?

    opened by alekseikurnosenko 5
  • Positional optional parameters are not propagated

    Positional optional parameters are not propagated

    For named parameters it is solved in this PR: https://github.com/rrousselGit/functional_widget/pull/45 https://github.com/rrousselGit/functional_widget/issues/44

    But positional paramters' default value still not generated

    bug 
    opened by westito 1
  • @cwidget not generating ConsumerWidget as expected

    @cwidget not generating ConsumerWidget as expected

    Describe the bug updating @swidget to @cwidget to generate a ConsumerWidget instead of StatelessWidget.

    The build_runner is not generating for me for some reason. It's still StatelessWidget. Try to delete the g.dart file still getting the same StatelessWidget.

    flutter_riverpod: ^0.14.0+3 functional_widget_annotation: ^0.9.0 functional_widget: ^0.9.0+1 in my local. Not sure what am I missing

    To Reproduce

    part 'test_widget.g.dart';

    @cwidget Widget testWidget(BuildContext context) { return Container() }

    Expected behavior A clear and concise description of what you expected to happen.

    bug 
    opened by yuhao-nyc 3
  • Throw if annotation is placed on methods instead of static functions

    Throw if annotation is placed on methods instead of static functions

    It simply does not working (nothing generates).

    That's my steps:

    • added part 'checkup_results_screen.g.dart'; (not mentioned in docs but I guess it is needed)
    • annotated my methods with @swidget image I also tried to remove underscore and build word.
    • it's unclear from the docs if I must pass context into function or not (I tried both)
    • run the build_runner

    My pubspec: image I also tried to put functional_widget into dev_dependencies

    enhancement 
    opened by subzero911 3
  • Cannot use parameter with same name as widget function

    Cannot use parameter with same name as widget function

    Example:

    @widget
    Widget foo(String foo) => Text(foo);
    

    functional_widget generates a widget class for this, but it doesn't compile because the field name in the generated class shadows the function.

    I don't think it's possible to fix this issue, so perhaps the best path is to print an error in this case.

    bug 
    opened by mhmdanas 0
Owner
Remi Rousselet
Flutter enthusiast. You'll find me on stackoverflow. Or as a speaker in Flutter meetups
Remi Rousselet
Flutter package: Assorted layout widgets that boldly go where no native Flutter widgets have gone before.

assorted_layout_widgets I will slowly but surely add interesting widgets, classes and methods to this package. Despite the package name, they are not

Marcelo Glasberg 122 Dec 22, 2022
Flutter-useful-widgets - Flutter Useful Widgets

useful_widgets This package makes it easy to build apps by providing a list of simple and useful widgets. import 'package:useful_widgets/useful_widget

Ricardo Crescenti 6 Jun 20, 2022
Widgets beginner - Widgets beginner with flutter

Widgets beginner - Widgets beginner with flutter

Tukhtamurodov Sardorbek 2 Feb 6, 2022
React hooks for Flutter. Hooks are a new kind of object that manages a Widget life-cycles. They are used to increase code sharing between widgets and as a complete replacement for StatefulWidget.

English | Português Flutter Hooks A Flutter implementation of React hooks: https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889 Ho

Remi Rousselet 2.6k Dec 29, 2022
Code generation for Flutter Padding widgets based on your constants

Code generation for Flutter Padding widgets based on your constants

Emanuele 14 Oct 20, 2022
🔍 Code generation for selectors of class fields that helps reduce repetitive code

Code generation for selectors of class fields and enum cases that helps reduce repetitive code.

Yakov K. 7 Oct 3, 2022
A simple particle generator sample written in Flutter

Bubbles A basic particle generator sample written in Flutter. Demo License Copyright 2018 Anup Cowkur Permission is hereby granted, free of charge, t

Anup Cowkur 61 Nov 25, 2022
Flutter ColorFilter generator and presets to use with ColorFiltered widget.

Flutter ColorFilter generator and presets to use with ColorFiltered widget.

null 2 Jun 7, 2022
A provider that passes EventBus down to all the widgets.

A provider that passes EventBus down to all the widgets.

null 0 Jul 9, 2022
Animate SliverAppBar's widgets when scrolling

Animate SliverAppBar's widgets when scrolling

null 6 Oct 2, 2022
This package supports drag & drop widgets inside the GridView.builder for multiplatform

This package supports drag & drop widgets inside the GridView.builder for multiplatform. It provides all the properties which are available in Gridview. builder and easy to implement with the few lines of code.

MindInventory 68 Dec 29, 2022
Flutter widgets and themes implementing the current macOS design language.

macos_ui Flutter widgets and themes implementing the current macOS design language. NOTE: This package depends on the excellent native_context_menu pl

Reuben Turner 1.1k Jan 7, 2023
Flutter Package for Easier Creation of Home Screen Widgets

Home Widget HomeWidget is a Plugin to make it easier to create HomeScreen Widgets on Android and iOS. HomeWidget does not allow writing Widgets with F

Anton Borries 405 Dec 31, 2022
This repo is for anything that can be reusable in flutter like custom widgets 🟥, animations 🌟and more

Flutter Shortcuts This repo is for anything that can be reusable in flutter like custom widgets ?? , animations ?? and more. How to Use Just get the f

Abdelrahman Mostafa Elmarakby 91 Dec 3, 2022
Library Widgets

Library Widgets Installing 1. Depend on it Add this to your package's pubspec.yaml file: dependencies: library_widgets: ^0.0.1 2. Install it You can

Leonardo Serrano 1 Oct 28, 2021
A basic Flutter app that includes some native Widgets like alerts, cards, avatars, animated container, inputs, etc.

Flutter components This project was created with Flutter and some native Widgets like alerts, cards, avatars, animated container, inputs, etc. Getting

Paúl 4 Nov 15, 2021
A Flutter package which provides helper widgets for selecting single or multiple account/user from the given list.

account_selector A Flutter package which provides helper widgets for selecting single or multiple account/user from a list Supported Dart Versions Dar

Harpreet Singh 49 Oct 7, 2021
Custom Flutter widgets that makes Checkbox and Radio Buttons much cleaner and easier.

custom_radio_grouped_button Custom Radio Buttons and Grouped Check Box Button Custom Flutter widgets that makes Checkbox and Radio Buttons much cleane

Ketan Choyal 144 Sep 23, 2022
A collection of widgets for making amazing onboarding experience in your flutter applications

Pal widgets A flutter package for better onboarding. A set of amazing onboarding widgets for your flutter applications. Install package add in your pu

Apparence.io 25 Oct 7, 2022