Simple to use yet powerfull style widgets with syntax inspired by CSS.

Overview

Division


Buy Me A Coffee

Simple to use yet powerfull style widgets with syntax inspired by CSS.

Please check out styled_widget which is a replacement of Division!

The true power of this package is a combination of its features. Flutter widgets are designed to combine both the styling widgets and the structural widgets together when building apps. This package tries to decouple style from structure. This results in much more readable code. Another strong point of this package is the ease of animations.

⚠️ If you encounter an issue or have any feedback which you think could improve Division, please open an issue here

Built with Division

App designer, Code Code

Getting Started

This is the two main widgets included in Division

Parent(
  child: Widget,
  style: ParentStyle, 
  gesture: Gestures,
);
Txt(
  String,
  style: TxtStyle,
  gesture: Gestures,
);

Basic example

Import

import 'package:division/division.dart';

Code

bool pressed = false;

final buttonStyle = (pressed) => TxtStyle()
  ..alignment.center()
  ..background.color(pressed ? Colors.orange : Colors.white)
  ..textColor(pressed ? Colors.white : Colors.orange)
  ..borderRadius(all: 5)
  ..border(all: 3, color: Colors.orange)
  ..padding(vertical: 10, horizontal: 15)
  ..ripple(true)
  ..animate(150, Curves.easeOut);

Gestures buttonGestures() =>
    Gestures()..isTap((isPressed) => setState(() => pressed = isPressed));

@override
Widget build(BuildContext context) {
  return Txt(
    'Styled button!',
    style: buttonStyle(pressed),
    gesture: buttonGestures(),
  );
}

Result

Documentation

All current and future Division widgets share a common style base.

Core style methods

Animate
..animate([int duration, Curve curve = Curves.linear])

A powerful style method. Whenever a style property changes, the widget will animate between the two states (given the style property is compatibel with animations). duration in ms

Alignment
..alignment.[alignment] // alignment.topCenter()

The widget alignment

Content alignment
..alignmentContent.[alignment] // alignment.topCenter()

Alignment of the child.

Padding
..padding({double all, 
      double horizontal, 
      double vertical, 
      double top, 
      double bottom, 
      double left, 
      double right})

All properties work together. padding(all: 10, top: 30) is equivilent to padding(top: 30, bottom: 10, left: 10, right: 10)

Margin
..margin({double all,
      double horizontal,
      double vertical,
      double top,
      double bottom,
      double left,
      double right})

All properties work together. margin(all: 10, top: 30) is equivilent to margin(top: 30, bottom: 10, left: 10, right: 10)

Background color
..background.color(Color)
..background.hex(xxxxxx)
..background.rgba(int, int, int, [double])

color format options: hex('#xxxxxx'), rgba(int, int, int, double) or [Color].

Background image
..background.image(
      {String url, 
      String path, 
      ColorFilter colorFilter, 
      ImageProvider<dynamic> imageProveder,
      BoxFit fit, 
      AlignmentGeometry alignment = Alignment.center, 
      ImageRepeat repeat = ImageRepeat.noRepeat})

Eighter the [url] or the [path] has to be specified. [url] is for network images and [path] is for local images.

Background blur
..background.blur(double blur)

Blurs the background. Can be used for example to achieve a "frosted glass" effect:

StyleClass()
  ..background.blur(10)
  ..background.rgba(255,255,255,0.15)

Does not work together with rotate().

Background blend mode
..background.blendMode(BlendMode blendMode)

Algorithms for blending background

Linear gradient
..linearGradient({AlignmentGeometry begin = Alignment.left,
      AlignmentGeometry end = Alignment.right,
      @required List<Color> colors,
      TileMode tileMode = TileMode.clamp,
      List<double> stops})
Radial gradient
..radialGradient(
    {AlignmentGeometry center = Alignment.center,
    @required double radius,
    @required List<Color> colors,
    TileMode tileMode = TileMode.clamp,
    List<double> stops})
Sweep gradient
..sweepGradient(
    {AlignmentGeometry center = Alignment.center,
    double startAngle = 0.0,
    @required double endAngle,
    @required List<Color> colors,
    TileMode tileMode = TileMode.clamp,
    List<double> stops})

In the style widget constructor, specify what angle calculation format you want to use.

Opacity
..opacity(double opacity)

Opacity applied on the whole widget.

Value must not be negative.

Border
..border(
      {double all,
      double left,
      double right,
      double top,
      double bottom,
      Color color = const Color(0xFF000000),
      BorderStyle style = BorderStyle.solid})

Choose between all, left, right, top and bottom. all works together with the other properties. color format options: hex('#xxxxxx'), rgb(int, int, int), rgba(int, int, int, double) or [Color].

Border radius
..borderRadius(
      {double all,
      double topLeft,
      double topRight,
      double bottomLeft,
      double bottomRight})

It is valid to use all together with single sided properties. Single sided properties will trump over the all property.

See also [circle] for creating circular widgets.

Circle
..circle([bool enable = true])

Makes the widget circular

Box shadow
..boxShadow(
      {Color color = const Color(0x33000000),
      double blur = 0.0,
      Offset offset = Offset.zero,
      double spread = 0.0})

See [elevation] for a different way of defining a box shadow.

Elevation
..elevation(
      double elevation,
      {double angle = 0.0,
      Color color = const Color(0x33000000),
      double opacity = 1.0})

Elevates the widget with a boxShadow. [opacity] is a relative constant

Scale
..scale(double ratio)

Scale the widget

Offset
..offset([double dx, double dy])

Offsets the widget

Rotate
..rotate(double angle)

Rotates the widget. By default one turn equals the value 1.0. To change to radians: StyleClass(useRadians: true).

Ripple
..ripple(bool enable, {dynamic splashColor, dynamic highlightColor})

Material ripple effect applied on tap.

Overflow
..overflow.visible({Axis direction = Axis.vertical})
..overflow.scrollable({Axis direction = Axis.vertical})
..overflow.hidden()

Change child overflow behaviour. Choose the overflow direction with the [direction] parameter.

Width, minWidth, maxWidth, Height, minHeight, maxHeight
..[type](double dimension)

Parent

Parent(
  style: ParentStyle,
  gesture: Gestures,
  child: Widget
)

As the name suggests this widget is a simple styled widget which takes a child.

ParentStyle

// format
ParentStyle()
  ..[style method]

// example
ParentStyle()
  ..width(100)
  ..padding(all: 10)
  ..elevation(5)
Add
..add(ParentStyle parentStyle, {bool override = false})

Combines style from two styled widgets.

Clone
..ParentStyle().clone()

This will clone the ParentStyle widget. This is usefull if you for example want to add more style to a widget without modifying the initial style.

Txt

Txt(
  String,
  style: TxtStyle,
  gesture: Gestures,
)

As the name suggests this widget is a simple styled widget which takes a String as its child. This widget enables text styling with the TxtStyle widget. This also has the possibility to make the widget editable.

TxtStyle

// format
TxtStyle()
  ..[style method]

// example
TxtStyle()
  ..width(100)
  ..padding(all: 10)
  ..textColor(Colors.blue)
  ..bold()
Editable
..editable(bool enable,
      {TextInputType keyboardType,
      String placeholder,
      bool obscureText = false,
      int maxLines,
      void Function(String) onChange,
      void Function(bool focus) onFocusChange,
      void Function(TextSelection, SelectionChangedCause) onSelectionChanged,
      void Function() onEditingComplete,
      FocusNode focusNode})

This makes the widget editable, just like a TextField, its just much easier to style

Text align
..textAlign.center()
Font weight
..fontWeight(FontWeight fontWeight)

A shorthand to make the text bold:

..bold([bool enable])
Italic
..italic([bool enable])
Font family
..fontFamily(String font, {List<String> fontFamilyFallback})
Text color
..textColor(Color textColor)
Max lines
..maxLines(int maxLines)
Letter spacing
..letterSpacing(double space)
Word spacing
..wordSpacing(double space)
Text decoration
..textDecoration(TextDecoration decoration)
Text shadow
..textShadow({Color color = const Color(0x33000000),
    double blur = 0.0,
    Offset offset = Offset.zero})
Text elevation
..textElevation(double elevation,
    {double angle = 0.0,
    Color color = const Color(0x33000000),
    double opacity = 1.0})
Add
..add(TxtStyle txtStyle, {bool override = false})

This adds together two TxtStyles. The override property specifies if already defined properties should be overrided.

Clone
..TxtStyle().clone()

This will clone the TxtStyle widget. This is usefull if you for example want to add more style to a widget without modifying the initial style.

Gestures

isTap
..isTap((isTapped) => setState(() => pressed = isTapped))

Called whenever the tap state on the widget changes. This replaces the use of onTapDown, onTapUp and onTapCancel together.

Other
..onTap()
..onTapUp()
..onTapCancel()
..onDoubleTap()
..onTapDown()
..onLongPress()
..onLongPressStart()
..onLongPressEnd()
..onLongPressMoveUpdate()
..onLongPressUp()
..onVerticalDragStart()
..onVerticalDragEnd()
..onVerticalDragDown()
..onVerticalDragCancel()
..onVerticalDragUpdate()
..onHorizontalDragStart()
..onHorizontalDragEnd()
..onHorizontalDragCancel()
..onHorizontalDragUpdate()
..onHorizontalDragDown()
..onForcePressStart()
..onForcePressEnd()
..onForcePressPeak()
..onForcePressUpdate()
..onPanStart()
..onPanEnd()
..onPanCancel()
..onPanDown()
..onPanUpdate()
..onScaleStart()
..onScaleEnd()
..onScaleUpdate()

Examples and best practices

Decoupling style from structure

final ParentStyle cardStyle = ParentStyle()
  ..height(175)
  ..padding(horizontal: 20.0, vertical: 10)
  ..alignment.center()
  ..background.hex('#3977FF')
  ..borderRadius(all: 20.0)
  ..elevation(10, color: hex('#3977FF'));

Widget build(BuildContext context) {
  return Parent(
    style: cardStyle,
    child: Widget,
  );
}

Variable dependent style

final Color color = Colors.blue;

final cardStyle = (color) => ParentStyle()
  ..height(175)
  ..padding(horizontal: 20.0, vertical: 10)
  ..alignment.center()
  ..background.color(color)
  ..borderRadius(all: 20.0)
  ..elevation(10, color: color);

Widget build(BuildContext context) {
  return Parent(
    style: cardStyle(color),
    child: Widget,
  );
}

Animated widgets

bool pressed = false;

final cardStyle = (pressed) => ParentStyle()
  ..height(175)
  ..padding(horizontal: 20.0, vertical: 10)
  ..alignment.center()
  ..borderRadius(all: 20.0)
  ..animate(200, Curves.easeOut)
  ..background.color(pressed ? Colors.white : Colors.black)
  ..elevation(pressed ? 10 : 20);

Widget build(BuildContext context) {
  return Parent(
    style: cardStyle(pressed),
    gesture: Gestures()
      ..isTap((isPressed) => setState(() => pressed = isPressed)),
    child: Widget,
  );
}

or

bool pressed = false;

final cardStyle = (pressed) => ParentStyle()
  ..height(175)
  ..padding(horizontal: 20.0, vertical: 10)
  ..alignment.center()
  ..borderRadius(all: 20.0)
  ..animate(200, Curves.easeOut)
  ..background.color(pressed ? Colors.white : Colors.black)
  ..elevation(pressed ? 10 : 20);

Gestures cardGesture() => Gestures()
  ..isTap((isPressed) => setState(() => pressed = isPressed));

Widget build(BuildContext context) {
  return Parent(
    style: cardStyle(pressed),
    gesture: cardGesture(),
    child: Widget,
  );
}
Comments
  • Support null safety

    Support null safety

    This is a request to add support for null safety to package:division We depend on your awesome package, so would be great to have null safety enabled.

    The Dart/Flutter team already encourages publishing the migrated packages: See this blog post.

    See the migration guide for details about enabling null safety.

    opened by nehal076 10
  • New widgets and naming scheme

    New widgets and naming scheme

    Hi, congratz on the library, its a great start.

    Are there any plans for future improvements? It seems that the next thing to do is to make more Styled widgets like Row -> StyledRow and Col -> StyledCol. Also if you find this to be a logic next step I would also advise you to use a new naming scheme for the widget classes Parent -> StyledContainer and Txt -> StyledText.

    Discussion 
    opened by moraispgsi 7
  • Height on TxtStyle

    Height on TxtStyle

    TxtStyle..height doesn't work as expected. TextStyle(height) works like line-height in css but TxtStyle..height is the container height I believe... Is there a way to set line-height?

    enhancement 
    opened by cocacrave 5
  • overflow.hidden() late Initialization error

    overflow.hidden() late Initialization error

    when using overflow.hidden() console print LateInitializationError: Field '_direction@1189196404' has not been initialized. flutter 2.2.3 and here my flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 2.2.3, on Mac OS X 10.15.7 19H1323 darwin-x64, locale en-SA) [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] Android Studio (version 4.1) [✓] VS Code (version 1.59.0) [✓] Connected device (3 available) ! Error: Elmobark’s iPhone is not connected. Xcode will continue when Elmobark’s iPhone is connected. (code -13) • No issues found!

    opened by elmobark 4
  • how to add condition on ..border

    how to add condition on ..border

    Hi, I followed the example on youtube, but how to do the animation on the border? I get this code:

    style: containerStyle.clone()
              ..elevation(isBeingTapped ? 4 : 8)
              ..scale(isBeingTapped ? 0.975 : 1),
    

    but I don't know how to do this for changing the border

    style: containerStyle.clone()
              ..elevation(isBeingTapped ? 4 : 8)
              ..scale(isBeingTapped ? 0.975 : 1)
              ..border(isBeingTapped ? ....),
    

    this gives me: Too many positional arguments: 0 expected, but 1 found. Try removing the extra positional arguments, or specifying the name for named ##arguments.dart(extra_positional_arguments_could_be_named)

    opened by vervorm 4
  • onTap gesture doesn't work together with ripple

    onTap gesture doesn't work together with ripple

    When using ripple effect with onTap/onTapDown/onTapUp gesture, the function from onTap is never called on division 0.7.0. On changelog says it was fixed on version 0.6.4 for all gestures, and it works with every gesture but onTap ones.

    Example:

    Division(
    	style: S()
    	  ..background.color(Colors.red)
    	  ..height(32)
    	  ..ripple(true)
    	  ..width(32),
    	gesture: G()..onTap(() => print('Hello')),
    	child: Container(),
    ),
    

    It never prints Hello when ripple is true.

    flutter doctor

    [√] Flutter (Channel stable, v1.7.8+hotfix.4, on Microsoft Windows [Version 10.0.18362.239], locale en-US)
        • Flutter version 1.7.8+hotfix.4 at C:\src\flutter
        • Framework revision 20e59316b8 (3 weeks ago), 2019-07-18 20:04:33 -0700
        • Engine revision fee001c93f
        • Dart version 2.4.0
    
     
    [√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
        • Android SDK at C:\Users\jeanl\AppData\Local\Android\sdk
        • Android NDK location not configured (optional; useful for native profiling support)
        • Platform android-28, build-tools 28.0.3
        • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
        • All Android licenses accepted.
    
    [√] Android Studio (version 3.4)
        • Android Studio at C:\Program Files\Android\Android Studio
        • Flutter plugin version 38.1.1
        • Dart plugin version 183.6270
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    
    [√] VS Code (version 1.36.1)
        • VS Code at C:\Users\jeanl\AppData\Local\Programs\Microsoft VS Code
        • Flutter extension version 3.3.0
    
    [√] Connected device (1 available)
        • SNE LX3 • DVR0218A08000797 • android-arm64 • Android 9 (API 28)
    
    • No issues found
    
    bug 
    opened by Jeanlo 4
  • Missing possibility to customize gesture behavior

    Missing possibility to customize gesture behavior

    Normally, to detect a gesture on a container that does not have a background color, one would need to set GestureDetector(behavior: HitTestBehavior.opaque)

    (for example, you could need a transparent background on a tappable region because it is contained inside a rounded widget and you don't want to cover the rounded border with the color of the tappable rectangular region).

    It would be cool to add that property to GestureClass

    enhancement 
    opened by MasiaVittorio 4
  • Added support for text overflow

    Added support for text overflow

    Hello I love your library, but I needed suport for text overflow in Txt Widget, so I added a few line of code to make it posible, I hope you find it useful.

    opened by cgalvar 3
  • Hot reload is not working

    Hot reload is not working

    Not sure if I miss something. But hot reload is not working for me. for example. changing ..textColor(Colors.black) and save. Nothing happens to the UI. I need to reload manually

    opened by yuhao-nyc 2
  • Autofocus Text Element whenn editable is set to true

    Autofocus Text Element whenn editable is set to true

    Hello,

    I struggeling a bit with trying to autofocus an element as soon as i toggle the enable variable.

    This is my code:

    txt(
       widget.category.name,
       style: TxtStyle()
          ..fontSize(26)
          ..fontWeight(FontWeight.w500)
          ..padding(left: 16)
          ..editable(
              enable: _editCategoryName,
              maxLines: 1,
              onChange: (name) {
                    widget.category.name = name;
                    widget.category.save();
               },
       },
    ),
    

    In the second example (https://github.com/ReinBentdal/division/blob/master/example/example/example_form.dart) is one property called autoFocus: true, but when i use this property. I get an error:

    Compiler message:
    lib/pages/todoListe.dart:66:25: Error: No named parameter with the name 'autoFocus'.
                            autoFocus: true,
    

    I also tried using the focus node but i think I did it wrong.

    It would be great if someone could show me how to accomplish that.

    opened by muellercornelius 2
  • The clone() function modifies the initial style !

    The clone() function modifies the initial style !

    Version

    The following issue was found on the version 0.8.7+2 of division package

    The issue

    Let's say I want to style a button and add tow state styles (active and inactive). I would create a parent button style the holds all the dimensions specs and then add tow additional styles for active and inactive states. I tried to achieve this with the clone function but it seems to override the parent style. That is all the buttons will sync and get the same style! Here is an example:

    Example

    final rootButtonStyle = ParentStyle() 
      ..width(32)
      ..height(32)
      ..borderRadius(all: 16)
      ..border(all: 1)
      ..alignmentContent.center()
    
    final activeButtonStyle = rootButtonStyle()
      ..clone()
      ..background.hex("#0D8E5D");
    
    final disabledButtonStyle = rootButtonStyle()
      ..clone()
      ..background.hex("#919191");
    

    In the above example, all the buttons will be ether in the active or disabled style, depending if I set override to ture or not!

    Hint

    I explored a bit the source code and found that the clone() function is simply calling the add() function which is simply replacing the styles!

    opened by yaitmou 2
  • About division future

    About division future

    I was thinking about using this in tom one of my next projects but was worried about its future is it going to skipped in favor of styled_widgets as one of core maintainers is working on it and also in git repo there is statement written that styled widget is replacement so will you guys stop supporting this package?

    opened by keinagae 3
  • [Feature Request] google_fonts package integration?

    [Feature Request] google_fonts package integration?

    Even though the current way to set up fonts it's pretty straightforward, I believe that adding the possibility of setting your font to one of the google_fonts package would be cool, and the many possible missing font error could be solved by this

    opened by Novvan 0
  • [Feature Request] Default input value

    [Feature Request] Default input value

    While it is currently possible to set a default input value by directly setting the positional argument of the Txt widget, the default value only appears after the field is selected, causing a weird jump from an empty to a filled field.

    Related but not part of the request, it would also be nice to have a way to have a value implementation alongside the defaultValue, which is similar to HTML's implementation of value and defaultValue.

    opened by VKBobyr 0
  • Failed assertion: line 742 pos 12: 'attached': is not true.

    Failed assertion: line 742 pos 12: 'attached': is not true.

    the error and the stack trace

    'package:flutter/src/services/text_input.dart': Failed assertion: line 742 pos 12: 'attached': is not true.
    

    The following assertion was thrown building TxtBuildEditable(state: _TxtBuildEditableState#e1377): 'package:flutter/src/services/text_input.dart': Failed assertion: line 742 pos 12: 'attached': is not true.

    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=BUG.md

    The relevant error-causing widget was: Txt file:///C:/workspace/flutter/smart_school/lib/widgets/app_text_field.dart:25:14 When the exception was thrown, this was the stack: #2 TextInputConnection.setStyle (package:flutter/src/services/text_input.dart:742:12) #3 EditableTextState.didUpdateWidget (package:flutter/src/widgets/editable_text.dart:1162:29) #4 StatefulElement.update (package:flutter/src/widgets/framework.dart:4396:58) #5 Element.updateChild (package:flutter/src/widgets/framework.dart:2977:15) #6 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)

    here is the code i use as a textField widget in my app. now it works fine but i get this error when i'm using multiple instances of this widget in a page. when i tap first field keyboard pops up and the i tap on another field suddenly error happens. and that only happens if the first field (or any other ) still has the focus.

    class AppTextField extends StatefulWidget {
      final StringCallback onChange;
      final String hint;
      final TextInputType inputType;
    
      AppTextField(this.onChange, {this.hint,this.inputType});
    
      @override
      State<StatefulWidget> createState() => _AppTextField();
    }
    
    class _AppTextField extends State<AppTextField> {
      String value = '';
    
      @override
      Widget build(BuildContext context) {
        return Container(
          decoration: BoxDecoration(color: AppColors.THEME_GREY, borderRadius: BorderRadius.circular(6)),
          child: Txt(
            '',
            style: TxtStyle()
              ..fontSize(14)
              ..fontFamily(Fonts.SAMIM)
              ..padding(horizontal: 10,vertical: 5)
              ..editable(
                placeholder: widget.hint,
                maxLines: 1,
                onChange: widget.onChange,
                keyboardType: widget.inputType ?? TextInputType.text
              ),
          ),
        );
      }
    }
    
    opened by easazade 0
  • Elevation shadow

    Elevation shadow

    Hi @ReinBentdal, I was wondering why you don't use the Material boxshadows that are already on flutter when using elevation with the default color? that would make it look just like the first-party elevation. This is mostly because they use a combination of 3 shadows "Umbra Penumbra and Ambient Shadow."

    https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/material/shadows.dart

    enhancement help wanted Discussion 
    opened by lalmanzar 1
Releases(0.8.6)
Owner
Rein Gundersen Bentdal
Student at NTNU and co-founder of Hybelkaninene ANS
Rein Gundersen Bentdal
A collection of loading indicators animated with CSS

SpinKit Simple loading spinners animated with CSS. See demo. SpinKit only uses (transform and opacity) CSS animations to create smooth and easily cust

Tobias Ahlin 19k Dec 26, 2022
Delightful, performance-focused pure css loading animations.

Loaders.css Delightful and performance-focused pure css loading animations. What is this? See the demo A collection of loading animations written enti

Connor Atherton 10.2k Jan 2, 2023
A Flutter package with a selection of simple yet very customizable set of loading animations.

Flutter Loading Animations A simple yet very customizable set of loading animations for Flutter projects. Installation Add the following to your pubsp

Andre Cytryn 171 Sep 23, 2022
Widgets for creating Hero-like animations between two widgets within the same screen.

flutter_sidekick Widgets for creating Hero-like animations between two widgets within the same screen. Features Hero-like animations. Allow you to spe

Romain Rastel 291 Oct 21, 2022
This repository demonstrates use of various widgets in flutter and tricks to create beautiful UI elements in flutter for Android and IOS

AwesomeFlutterUI The purpose of this repository is to demonstrate the use of different widgets and tricks in flutter and how to use them in your proje

Subir Chakraborty 132 Nov 13, 2022
A customizable and easy to use UI widgets to help develop apps faster

Lenore UI Beautiful, customizable and easy to use UI widgets to help me (or maybe you) develop my (or maybe your) apps faster. This is my personal pac

Lenore 3 Nov 4, 2022
✨ A collection of loading indicators animated with flutter. Heavily Inspired by http://tobiasahlin.com/spinkit.

✨ Flutter Spinkit A collection of loading indicators animated with flutter. Heavily inspired by @tobiasahlin's SpinKit. ?? Installing dependencies:

Jeremiah Ogbomo 2.7k Dec 30, 2022
Inspired by Reflectly App Made in Flutter ❤️

Inspired By Reflectly App ?? Gif ?? Screenshots Download the Following App for Preview ?? Flutter Tutorial All Flutter Tutorials plus additional Code

Sagar Shende 214 Nov 16, 2022
Writing custom Widgets in Flutter

Flutter - Custom Widgets Part 1 - EllipsizedText / LeafRenderObjectWidget Writing custom Widgets in Flutter (Part 1) — EllipsizedText Part 2 - ChildSi

Rostyslav Lesovyi 23 Dec 9, 2022
This package helps you daily usable function and ready-made Widgets with ease.

Show some love and like to support the project Documentation API Docs are available. Platform Support Android iOS MacOS Web Linux Windows ✔️ ✔️ ✔️ ✔️

Bhoomin Naik 51 Dec 23, 2022
A Flutter package that two widgets switch with clipper.

Flutter Switch Clipper A Flutter package that two widgets switch with clipper. 使用 使用FillClipper并自定义相关参数 View code SwitchCipper( initSelect: true,

FlutterCandies 23 Jan 3, 2023
Clip your widgets with custom shapes provided.

clippy_flutter Clip your widgets with custom shapes provided. #Arc, #Arrow, #Bevel, #ButtCheek, #Chevron, #Diagonal, #Label, #Message, #Paralellogram,

Figen Güngör 238 Dec 11, 2022
Loading widget based on a Flare animation, allow you to create beautiful custom loading widgets or dialogs

flare_loading Loading widget based on a Flare animation, allow you to create custom loading widgets or dialogs If you're using Rive instead of Flare p

Jimmy Aumard 25 Apr 16, 2021
Flutter ListView and GridView that shows Loading Widgets before the real data is loaded.

loadinglistview This package provide an easy way to show loading indicator(Widget) in a listview or a gridview while the app is still fetching the rea

null 3 Dec 8, 2021
A growing collection of cool, elegant, efficient and performance-optimized animation widgets.

im_animations About A growing collection of cool, elegant, efficient and performance-optimized animation widgets. Feedback For any feedback please fil

iMujtaba Nazki 17 Nov 13, 2022
Flutter Login interface using basic widgets such as Row, Column

Login UI - Flutter Descrição do Projeto ?? Interface de login utilizando widgets

null 2 Oct 25, 2022
A Flutter package allows you to Showcase/Highlight your widgets step by step.

ShowCaseView A Flutter package allows you to Showcase/Highlight your widgets step by step. Preview Installing Add dependency to pubspec.yaml Get the l

kirill 0 Dec 8, 2022
Flexible and easy to use page transitions.

flutter_villains What are heroes without villains? (Profile image from: https://unsplash.com/photos/pAs4IM6OGWI) Check out the article. What are villa

Norbert Kozsir 356 Dec 12, 2022
✨A clean and lightweight loading/toast widget for Flutter, easy to use without context, support iOS、Android and Web

Flutter EasyLoading English | 简体中文 Live Preview ?? https://nslog11.github.io/flutter_easyloading Installing Add this to your package's pubspec.yaml fi

nslog11 1k Jan 9, 2023