the-Jinxist / neo-reusables

The repository of the neo-reusables package.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Neo Reusables

This package contains most of the reusables I use when starting a fresh flutter project

Features

Widget Reusables

  • SizeConfig: Used for making sure your UI elements/widgets scale for every screen size
  • NeoText: A fancy wrapper around the normal Text widget. Improves the accessibility of the regular Text widget
  • NeoButton: Another wrapper class, allows developers to create flexible buttons
  • XMargin and YMargin: Provides spaces between elements, in a clear, concise way
  • Navigator: All your navigation needs in one place

Data Reusables

  • Resource: A wrapper that contains the data model, status and error of any network operation done

Getting started

You just need to import:

import 'package:neo_reusables/neo_reusables.dart';

Usage

Note: The examples folder will provider more use-cases and more complex uses

Resource

    //First create the Resource and specify the type, in this case UserModel will be our hypothetical model
    //Here, we'll set the resource to it's initial state, IDLE
    Resource<UserModel> resource = Resource.idle();

    //To show the loading state of your operation
    resource = Resource.loading();

    // To show the error state of your operation
    resource = Resource.failed("Error message goes here");

    //To show success state of your operation
    final UserModel userModel = UserModel.fromJson(json);
    resource = Resource.success(userModel);

SizeConfig

  • First initialize the SizeConfig file in your main file like this:
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Builder(builder: (context) {
        final Size size = MediaQuery.of(context).size;
        SizeConfig.init(context,
            width: size.width, height: size.height, allowFontScaling: true);

        return const MyHomePage(title: 'Flutter Demo Home Page');
      }),
    );
  }
}
  • Then use it to generate scalable heights and widths like so
    final SizeConfig sizeConfig = SizeConfig();

    //Scalable height
    sizeConfig.sh(20).toDouble()

    //Scalable width
    sizeConfig.sw(20).toDouble()

NeoButton

The onClick and text fields are required

    NeoButton(
        onClick: () {},
        text: 'Tap',
    )

NeoText

The text field is required

    NeoText(
        text: "Your text",
    )

YMargin

Provides vertical spacing in your UI

    YMargin(height: 10)

XMargin

Provides horizontal spacing in your UI

    XMargin(height: 10)

About

The repository of the neo-reusables package.

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Dart 80.5%Language:HTML 17.0%Language:Swift 1.8%Language:Kotlin 0.5%Language:Objective-C 0.2%