A material theme editor and generator for Flutter to configure and preview the overall visual theme of your material app

Overview

logo

A material theme editor and generator for Flutter to configure and preview the overall visual theme of your material app.

GitHub tag (latest by date) Website GitHub license GitHub Actions codecov style: flutter_lints

Appainter Screenshot

Usage

Appainter is developed and built with Flutter, and is available for both Web and Desktop.

Disclaimer: I've only tested the app on Web and MacOS as I don't have a Windows or Linux machine. The app may not work on those platforms.

For Web, you can access it through here.

For Mac, Windows and Linux, you can be download it from here.

Using the Generated Theme

See USAGE.md for instructions on how to use the generated theme.

Development

Fork and clone the repository, then install the dependencies:

flutter pub get

Run the following to launch the code generation:

flutter pub run build_runner build --delete-conflicting-outputs

Start the app:

flutter run
Comments
  • Extended colors

    Extended colors

    What kind of feature are you missing?

    Adding extended colors to the themes colorscheme. A feature like https://material-foundation.github.io/material-theme-builder/#/custom

    Additional context

    No response

    enhancement question stale 
    opened by benjaminschreck 4
  • [FEATURE] Add an option to set a global font

    [FEATURE] Add an option to set a global font

    What kind of feature are you missing?

    Thank you for this nice package.

    To my mind, it would be very nice if one can set a global font. Right now one has to change all entries from "Segoe UI" which is kind of annoying. It also seems like it has no effect to remove all FontFamily-entries.

    Additional context

    No response

    enhancement 
    opened by CaptainDario 4
  • Input decoration theme UI is not working

    Input decoration theme UI is not working

    Platform

    Web

    Steps To Reproduce

    1. Open link https://zeshuaro.github.io/flutter_theme/#/
    2. Go to advanced tab
    3. Change input decoration theme UI

    Expected Behavior All reflected both in theme config UI as well as preview UI

    Actual behavior

    Nothing got reflected and no impact on changed theme in preview UI of inputs

    bug 
    opened by suv12345 4
  • [BUG] Decoding using flutter_theme throws cast error

    [BUG] Decoding using flutter_theme throws cast error

    Platform

    MacOS / Flutter 2.5.3

    Steps To Reproduce

    1. Clone the example flutter project and start it in debug mode
    2. Enable catching uncaught exceptions in VS Code

    Expected Behavior

    The theme should be decoded without throwing an exception.

    Actual behaviour The application waits when decoding the theme and throws an Cast Error exception: "Null check operator used on a null value"

    Screenshots image

    image

    Additional Context

    Add any other context about the problem here.

    bug 
    opened by pauli2406 4
  • chore(flutter): update dependency flutter to v3.3.10

    chore(flutter): update dependency flutter to v3.3.10

    Mend Renovate

    This PR contains the following updates:

    | Package | Update | Change | |---|---|---| | flutter (source) | patch | 3.3.9 -> 3.3.10 |


    Release Notes

    flutter/flutter

    v3.3.10

    Compare Source


    Configuration

    πŸ“… Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    fluttersdk 
    opened by renovate[bot] 3
  • chore(flutter): update dependency flutter to v3.1.0 - autoclosed

    chore(flutter): update dependency flutter to v3.1.0 - autoclosed

    Mend Renovate

    This PR contains the following updates:

    | Package | Update | Change | |---|---|---| | flutter | minor | 3.0.1 -> 3.1.0 |


    Release Notes

    flutter/flutter

    v3.1.0

    Compare Source


    Configuration

    πŸ“… Schedule: "after 6pm every weekday,every weekend" in timezone Australia/Sydney.

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    fluttersdk 
    opened by renovate[bot] 3
  • [BUG] Advanced theme export does not output correct ColorScheme

    [BUG] Advanced theme export does not output correct ColorScheme

    Platform

    Web

    Steps to Reproduce

    1. Go to appainter.dev
    2. Go to advance and edit
    3. Press export

    Expected behaviour

    Export advanced configured theme as appainter_theme.json

    Actual behaviour

    export basic theme

    Additional Context

    No context

    bug 
    opened by kirinnee 3
  • Package your app with flutter_distributor.

    Package your app with flutter_distributor.

    What kind of feature are you missing?

    flutter_distributor It is a packaging and publishing tool specially developed for flutter. Can it be used for packaging in this project?

    Additional context

    No response

    enhancement wontfix 
    opened by lijy91 3
  • fix(deps): update dependency firebase_auth to v4.2.5

    fix(deps): update dependency firebase_auth to v4.2.5

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | firebase_auth (source) | dependencies | patch | 4.2.4 -> 4.2.5 |


    Release Notes

    firebase/flutterfire

    v4.2.5

    • FIX: fix a null pointer exception that could occur when removing an even listener (#​10210). (72d2e973)

    Configuration

    πŸ“… Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
  • fix(deps): update dependency firebase_auth to v4.2.5

    fix(deps): update dependency firebase_auth to v4.2.5

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | firebase_auth (source) | dependencies | patch | 4.2.4 -> 4.2.5 |


    Release Notes

    firebase/flutterfire

    v4.2.5

    • FIX: fix a null pointer exception that could occur when removing an even listener (#​10210). (72d2e973)

    Configuration

    πŸ“… Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
  • fix(deps): update firebase dependencies

    fix(deps): update firebase dependencies

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | firebase_analytics (source) | dependencies | minor | 10.0.8 -> 10.1.0 | | firebase_auth (source) | dependencies | patch | 4.2.3 -> 4.2.4 | | firebase_core (source) | dependencies | patch | 2.4.0 -> 2.4.1 |


    Release Notes

    firebase/flutterfire (firebase_analytics)

    v10.1.0

    • FEAT: update logEvent() & setDefaultParameters() to assert input types. (#​9520). (bac87e96)
    firebase/flutterfire (firebase_auth)

    v4.2.4

    • Update a dependency to the latest release.
    firebase/flutterfire (firebase_core)

    v2.4.1

    • Update a dependency to the latest release.

    Configuration

    πŸ“… Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ‘» Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
  • chore(deps): lock file maintenance

    chore(deps): lock file maintenance

    Mend Renovate

    This PR contains the following updates:

    | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed |

    πŸ”§ This Pull Request updates lock files to use the latest dependency versions.


    Configuration

    πŸ“… Schedule: Branch creation - "before 5am on monday" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ‘» Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
  • fix(deps): update dependency collection to v1.17.0

    fix(deps): update dependency collection to v1.17.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | collection | dependencies | minor | 1.16.0 -> 1.17.0 |


    Release Notes

    dart-lang/collection

    v1.17.0

    Compare Source

    • Add Iterable.elementAtOrNull and List.elementAtOrNull extension methods.
    • Add a top-level lastBy() function that converts an Iterable to a Map by grouping its elements using a function, keeping the last element for each computed key. Also available as an extension method on Iterable.

    Configuration

    πŸ“… Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
  • chore(deps): update dependency build_runner to v2.3.3

    chore(deps): update dependency build_runner to v2.3.3

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | build_runner | dev_dependencies | patch | 2.3.0 -> 2.3.3 |


    Release Notes

    dart-lang/build

    v2.3.3

    Compare Source

    • Remove references to NullThrownError.

    v2.3.2

    Compare Source

    • Add supported platforms to pubspec.

    v2.3.1

    • Upgrade to frontend_service_client version 3.

    Configuration

    πŸ“… Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
  • fix(deps): update dependency intl to v0.18.0

    fix(deps): update dependency intl to v0.18.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | intl | dependencies | minor | 0.17.0 -> 0.18.0 |


    Release Notes

    dart-lang/intl

    v0.18.0

    • Add support for minimumSignificantDigits / maximumSignificantDigits in NumberFormat.
    • Add support for plural in NumberFormat.compact() ('2 milliards').
    • Fix negative number formatting / parsing in NumberFormat.compact().
    • Add optional parameter to NumberFormat.compact() to explicitly add sign even for positive values.
    • Add decimalPatternDigits to NumberFormat which supports specifying the number of decimal digits in a decimal pattern.
    • Update to cldr 40.
    • Migrate to package:lints/recommended.yaml.
    • Remove some instances of dynamic types from the API.
    • Fix a bug caused by a typo in the plural rules calculation.
    • Unify IntlStream and StringIterator into StringStack.
    • Update to CLDR v41.
    • Add new locales: as, bm, en_NZ, fur, mg, nyn.
    • Remove unimplemented formatDuration and formatDurationFrom.
    • Make shortLocale and canonicalizedLocale implementations smarter.

    Configuration

    πŸ“… Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
  • [FEATURE] Define Font-Family for every component

    [FEATURE] Define Font-Family for every component

    What kind of feature are you missing?

    I would like to use a custom Font. At the moment you can only assign a font under text theme. This results in an generated theme where only the text theme uses the custom font.

    However i cannot set the font-family for buttonTheme and typography. These will be generated with a default font-family of Segoe UI

    Update for currently supported components:

    • [x] App bar
    • [x] Tab bar
    • [x] Bottom navigation bar
    • [ ] Elevated button
    • [ ] Outlined button
    • [ ] Text button
    • [ ] Input decoration
    • [ ] Slider

    Additional context

    Example of a json generated with the font-family set to Nunito:

    Example JSON
    {
      "appBarTheme": {
        "titleTextStyle": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Nunito",
          "fontWeight": "w500",
          "fontSize": 20,
          "inherit": true,
          "letterSpacing": 0.15,
          "textBaseline": "alphabetic"
        },
        "toolbarTextStyle": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Nunito",
          "fontWeight": "w400",
          "fontSize": 14,
          "inherit": true,
          "letterSpacing": 0.25,
          "textBaseline": "alphabetic"
        }
      },
      "applyElevationOverlayColor": false,
      "backgroundColor": "#fffffbff",
      "bottomAppBarColor": "#fffffbff",
      "brightness": "light",
      "buttonTheme": {
        "alignedDropdown": false,
        "colorScheme": {
          "background": "#fffffbff",
          "brightness": "light",
          "error": "#ffba1a1a",
          "errorContainer": "#ffffdad6",
          "inversePrimary": "#ffffb4a9",
          "inverseSurface": "#ff362f2e",
          "onBackground": "#ff201a19",
          "onError": "#ffffffff",
          "onErrorContainer": "#ff410002",
          "onInverseSurface": "#fffbeeec",
          "onPrimary": "#ffffffff",
          "onPrimaryContainer": "#ff410001",
          "onSecondary": "#ffffffff",
          "onSecondaryContainer": "#ff2c1512",
          "onSurface": "#ff201a19",
          "onSurfaceVariant": "#ff534341",
          "onTertiary": "#ffffffff",
          "onTertiaryContainer": "#ff261a00",
          "outline": "#ff857370",
          "primary": "#ffbb1614",
          "primaryContainer": "#ffffdad5",
          "secondary": "#ff775652",
          "secondaryContainer": "#ffffdad5",
          "shadow": "#ff000000",
          "surface": "#fffffbff",
          "surfaceTint": "#ffbb1614",
          "surfaceVariant": "#fff5ddda",
          "tertiary": "#ff705c2e",
          "tertiaryContainer": "#fffcdfa6"
        },
        "height": 36,
        "layoutBehavior": "padded",
        "minWidth": 88,
        "padding": {
          "bottom": 0,
          "left": 16,
          "right": 16,
          "top": 0
        },
        "shape": {
          "borderRadius": {
            "bottomLeft": {
              "type": "elliptical",
              "x": 2,
              "y": 2
            },
            "bottomRight": {
              "type": "elliptical",
              "x": 2,
              "y": 2
            },
            "topLeft": {
              "type": "elliptical",
              "x": 2,
              "y": 2
            },
            "topRight": {
              "type": "elliptical",
              "x": 2,
              "y": 2
            },
            "type": "only"
          },
          "side": {
            "color": "#ff000000",
            "style": "none",
            "width": 0
          },
          "type": "rounded"
        },
        "textTheme": "normal"
      },
      "canvasColor": "#fffffbff",
      "cardColor": "#fffffbff",
      "colorScheme": {
        "background": "#fffffbff",
        "brightness": "light",
        "error": "#ffba1a1a",
        "errorContainer": "#ffffdad6",
        "inversePrimary": "#ffffb4a9",
        "inverseSurface": "#ff362f2e",
        "onBackground": "#ff201a19",
        "onError": "#ffffffff",
        "onErrorContainer": "#ff410002",
        "onInverseSurface": "#fffbeeec",
        "onPrimary": "#ffffffff",
        "onPrimaryContainer": "#ff410001",
        "onSecondary": "#ffffffff",
        "onSecondaryContainer": "#ff2c1512",
        "onSurface": "#ff201a19",
        "onSurfaceVariant": "#ff534341",
        "onTertiary": "#ffffffff",
        "onTertiaryContainer": "#ff261a00",
        "outline": "#ff857370",
        "primary": "#ffbb1614",
        "primaryContainer": "#ffffdad5",
        "secondary": "#ff775652",
        "secondaryContainer": "#ffffdad5",
        "shadow": "#ff000000",
        "surface": "#fffffbff",
        "surfaceTint": "#ffbb1614",
        "surfaceVariant": "#fff5ddda",
        "tertiary": "#ff705c2e",
        "tertiaryContainer": "#fffcdfa6"
      },
      "dialogBackgroundColor": "#fffffbff",
      "disabledColor": "#61000000",
      "dividerColor": "#1f201a19",
      "errorColor": "#ffba1a1a",
      "focusColor": "#1f000000",
      "highlightColor": "#66bcbcbc",
      "hintColor": "#99000000",
      "hoverColor": "#0a000000",
      "iconTheme": {
        "color": "#dd000000"
      },
      "indicatorColor": "#ffffffff",
      "inputDecorationTheme": {
        "alignLabelWithHint": false,
        "filled": false,
        "floatingLabelAlignment": "start",
        "floatingLabelBehavior": "auto",
        "isCollapsed": false,
        "isDense": false
      },
      "materialTapTargetSize": "shrinkWrap",
      "platform": "windows",
      "primaryColor": "#ffbb1614",
      "primaryColorDark": "#ff1976d2",
      "primaryColorLight": "#ffbbdefb",
      "primaryIconTheme": {
        "color": "#ffffffff"
      },
      "primaryTextTheme": {
        "bodyLarge": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "bodyMedium": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "bodySmall": {
          "color": "#b3ffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "displayLarge": {
          "color": "#b3ffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "displayMedium": {
          "color": "#b3ffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "displaySmall": {
          "color": "#b3ffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "headlineLarge": {
          "color": "#b3ffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "headlineMedium": {
          "color": "#b3ffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "headlineSmall": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "labelLarge": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "labelMedium": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "labelSmall": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "titleLarge": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "titleMedium": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        },
        "titleSmall": {
          "color": "#ffffffff",
          "decoration": "none",
          "fontFamily": "Segoe UI",
          "inherit": true
        }
      },
      "scaffoldBackgroundColor": "#fffffbff",
      "secondaryHeaderColor": "#ffe3f2fd",
      "selectedRowColor": "#fff5f5f5",
      "shadowColor": "#ff000000",
      "splashColor": "#66c8c8c8",
      "splashFactory": "splash",
      "textTheme": {
        "bodyLarge": {
          "color": "#dd000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w400",
          "fontSize": 16,
          "inherit": true,
          "letterSpacing": 0.5,
          "textBaseline": "alphabetic"
        },
        "bodyMedium": {
          "color": "#dd000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w400",
          "fontSize": 14,
          "inherit": true,
          "letterSpacing": 0.25,
          "textBaseline": "alphabetic"
        },
        "bodySmall": {
          "color": "#8a000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w400",
          "fontSize": 12,
          "inherit": true,
          "letterSpacing": 0.4,
          "textBaseline": "alphabetic"
        },
        "displayLarge": {
          "color": "#8a000000",
          "decoration": "none",
          "fontFamily": "Nunito_300",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w300",
          "fontSize": 96,
          "inherit": true,
          "letterSpacing": -1.5,
          "textBaseline": "alphabetic"
        },
        "displayMedium": {
          "color": "#8a000000",
          "decoration": "none",
          "fontFamily": "Nunito_300",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w300",
          "fontSize": 60,
          "inherit": true,
          "letterSpacing": -0.5,
          "textBaseline": "alphabetic"
        },
        "displaySmall": {
          "color": "#8a000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w400",
          "fontSize": 48,
          "inherit": true,
          "letterSpacing": 0,
          "textBaseline": "alphabetic"
        },
        "headlineLarge": {
          "color": "#8a000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "inherit": true
        },
        "headlineMedium": {
          "color": "#8a000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w400",
          "fontSize": 34,
          "inherit": true,
          "letterSpacing": 0.25,
          "textBaseline": "alphabetic"
        },
        "headlineSmall": {
          "color": "#dd000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w400",
          "fontSize": 24,
          "inherit": true,
          "letterSpacing": 0,
          "textBaseline": "alphabetic"
        },
        "labelLarge": {
          "color": "#dd000000",
          "decoration": "none",
          "fontFamily": "Nunito_500",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w500",
          "fontSize": 14,
          "inherit": true,
          "letterSpacing": 1.25,
          "textBaseline": "alphabetic"
        },
        "labelMedium": {
          "color": "#ff000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "inherit": true
        },
        "labelSmall": {
          "color": "#ff000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w400",
          "fontSize": 10,
          "inherit": true,
          "letterSpacing": 1.5,
          "textBaseline": "alphabetic"
        },
        "titleLarge": {
          "color": "#dd000000",
          "decoration": "none",
          "fontFamily": "Nunito_500",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w500",
          "fontSize": 20,
          "inherit": true,
          "letterSpacing": 0.15,
          "textBaseline": "alphabetic"
        },
        "titleMedium": {
          "color": "#dd000000",
          "decoration": "none",
          "fontFamily": "Nunito_regular",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w400",
          "fontSize": 16,
          "inherit": true,
          "letterSpacing": 0.15,
          "textBaseline": "alphabetic"
        },
        "titleSmall": {
          "color": "#ff000000",
          "decoration": "none",
          "fontFamily": "Nunito_500",
          "fontFamilyFallback": [
            "Nunito"
          ],
          "fontWeight": "w500",
          "fontSize": 14,
          "inherit": true,
          "letterSpacing": 0.1,
          "textBaseline": "alphabetic"
        }
      },
      "toggleableActiveColor": "#ff775652",
      "typography": {
        "black": {
          "bodyLarge": {
            "color": "#dd000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "bodyMedium": {
            "color": "#dd000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "bodySmall": {
            "color": "#8a000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "displayLarge": {
            "color": "#8a000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "displayMedium": {
            "color": "#8a000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "displaySmall": {
            "color": "#8a000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "headlineLarge": {
            "color": "#8a000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "headlineMedium": {
            "color": "#8a000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "headlineSmall": {
            "color": "#dd000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "labelLarge": {
            "color": "#dd000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "labelMedium": {
            "color": "#ff000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "labelSmall": {
            "color": "#ff000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "titleLarge": {
            "color": "#dd000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "titleMedium": {
            "color": "#dd000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "titleSmall": {
            "color": "#ff000000",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          }
        },
        "dense": {
          "bodyLarge": {
            "fontWeight": "w500",
            "fontSize": 15,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "bodyMedium": {
            "fontWeight": "w400",
            "fontSize": 15,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "bodySmall": {
            "fontWeight": "w400",
            "fontSize": 13,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "displayLarge": {
            "fontWeight": "w100",
            "fontSize": 112,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "displayMedium": {
            "fontWeight": "w400",
            "fontSize": 56,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "displaySmall": {
            "fontWeight": "w400",
            "fontSize": 45,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "headlineLarge": {
            "fontWeight": "w400",
            "fontSize": 40,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "headlineMedium": {
            "fontWeight": "w400",
            "fontSize": 34,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "headlineSmall": {
            "fontWeight": "w400",
            "fontSize": 24,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "labelLarge": {
            "fontWeight": "w500",
            "fontSize": 15,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "labelMedium": {
            "fontWeight": "w400",
            "fontSize": 12,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "labelSmall": {
            "fontWeight": "w400",
            "fontSize": 11,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "titleLarge": {
            "fontWeight": "w500",
            "fontSize": 21,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "titleMedium": {
            "fontWeight": "w400",
            "fontSize": 17,
            "inherit": false,
            "textBaseline": "ideographic"
          },
          "titleSmall": {
            "fontWeight": "w500",
            "fontSize": 15,
            "inherit": false,
            "textBaseline": "ideographic"
          }
        },
        "englishLike": {
          "bodyLarge": {
            "fontWeight": "w500",
            "fontSize": 14,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "bodyMedium": {
            "fontWeight": "w400",
            "fontSize": 14,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "bodySmall": {
            "fontWeight": "w400",
            "fontSize": 12,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "displayLarge": {
            "fontWeight": "w100",
            "fontSize": 112,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "displayMedium": {
            "fontWeight": "w400",
            "fontSize": 56,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "displaySmall": {
            "fontWeight": "w400",
            "fontSize": 45,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "headlineLarge": {
            "fontWeight": "w400",
            "fontSize": 40,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "headlineMedium": {
            "fontWeight": "w400",
            "fontSize": 34,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "headlineSmall": {
            "fontWeight": "w400",
            "fontSize": 24,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "labelLarge": {
            "fontWeight": "w500",
            "fontSize": 14,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "labelMedium": {
            "fontWeight": "w400",
            "fontSize": 12,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "labelSmall": {
            "fontWeight": "w400",
            "fontSize": 10,
            "inherit": false,
            "letterSpacing": 1.5,
            "textBaseline": "alphabetic"
          },
          "titleLarge": {
            "fontWeight": "w500",
            "fontSize": 20,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "titleMedium": {
            "fontWeight": "w400",
            "fontSize": 16,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "titleSmall": {
            "fontWeight": "w500",
            "fontSize": 14,
            "inherit": false,
            "letterSpacing": 0.1,
            "textBaseline": "alphabetic"
          }
        },
        "tall": {
          "bodyLarge": {
            "fontWeight": "w700",
            "fontSize": 15,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "bodyMedium": {
            "fontWeight": "w400",
            "fontSize": 15,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "bodySmall": {
            "fontWeight": "w400",
            "fontSize": 13,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "displayLarge": {
            "fontWeight": "w400",
            "fontSize": 112,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "displayMedium": {
            "fontWeight": "w400",
            "fontSize": 56,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "displaySmall": {
            "fontWeight": "w400",
            "fontSize": 45,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "headlineLarge": {
            "fontWeight": "w400",
            "fontSize": 40,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "headlineMedium": {
            "fontWeight": "w400",
            "fontSize": 34,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "headlineSmall": {
            "fontWeight": "w400",
            "fontSize": 24,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "labelLarge": {
            "fontWeight": "w700",
            "fontSize": 15,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "labelMedium": {
            "fontWeight": "w400",
            "fontSize": 12,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "labelSmall": {
            "fontWeight": "w400",
            "fontSize": 11,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "titleLarge": {
            "fontWeight": "w700",
            "fontSize": 21,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "titleMedium": {
            "fontWeight": "w400",
            "fontSize": 17,
            "inherit": false,
            "textBaseline": "alphabetic"
          },
          "titleSmall": {
            "fontWeight": "w500",
            "fontSize": 15,
            "inherit": false,
            "textBaseline": "alphabetic"
          }
        },
        "white": {
          "bodyLarge": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "bodyMedium": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "bodySmall": {
            "color": "#b3ffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "displayLarge": {
            "color": "#b3ffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "displayMedium": {
            "color": "#b3ffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "displaySmall": {
            "color": "#b3ffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "headlineLarge": {
            "color": "#b3ffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "headlineMedium": {
            "color": "#b3ffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "headlineSmall": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "labelLarge": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "labelMedium": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "labelSmall": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "titleLarge": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "titleMedium": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          },
          "titleSmall": {
            "color": "#ffffffff",
            "decoration": "none",
            "fontFamily": "Segoe UI",
            "inherit": true
          }
        }
      },
      "unselectedWidgetColor": "#8a000000",
      "useMaterial3": false,
      "visualDensity": "compact"
    }
    
    enhancement 
    opened by ynnob 2
  • fix(deps): update dependency material_color_utilities to v0.2.0

    fix(deps): update dependency material_color_utilities to v0.2.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | material_color_utilities | dependencies | minor | 0.1.5 -> 0.2.0 |


    Release Notes

    material-foundation/material-color-utilities

    v0.2.0

    • Add support for content color
    • Correct repository in pubspec
    • Rename CamSolver to HctSolver
    • Add outlineVariant and scrim colors

    Configuration

    πŸ“… Schedule: Branch creation - "after 6pm every weekday,every weekend" in timezone Australia/Sydney, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
Releases(v1.5.1)
FFI binding generator

Binding generator for FFI bindings. Note: ffigen only supports parsing C headers. Example For some header file example.h: int sum(int a, int b); Add c

Dart 288 Dec 22, 2022
My Notes is an app to create simple notes and add 3 levels of tags to them. The uniqueness of the app lies in its design and dark theme

?? My Notes | Simple & Beautiful Note Taking App ?? About The App ?? My Notes is an app to create simple notes and add 3 levels of tags to them. The u

null 4 Apr 27, 2022
A tutorial for creating an Ubuntu Linux Flutter app, using the yaru theme

Building a Yaru app with Flutter Summary URL https://github.com/ubuntu/user_manager Category Environment Linux Status Feedback Link Author Frederik Fe

Ubuntu 22 Dec 21, 2022
A web dashboard that allows you to monitor your Chia farm and sends notifications when blocks are found and new plots are completed through a discord bot. It can link multiple farmers/harvesters to your account.

farmr A web dashboard that allows you to monitor your Chia farm and sends notifications when blocks are found and new plots are completed through a di

Gil Nobrega 261 Nov 10, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.

bitsdojo_window A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux. Watch the

Bits Dojo 607 Jan 4, 2023
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.

system_tray A Flutter package that that enables support for system tray menu for desktop flutter apps. on Windows, macOS and Linux. Features: - Modify

AnTler 140 Dec 30, 2022
A simple flutter input widget to add @ mentions functionality to your app

?? Flutter Mentions A simple flutter input widget to add @ mentions functionality to your app Install ?? To use this package, add flutter_mentions as

Fayeed Pawaskar 95 Nov 4, 2022
An app to monitor linux PC stats directly from your phone.

L I N U X M O N An app to monitor linux PC stats such as CPU, Battery, RAM etc. on your phone. Installation Install the server on your PC LINUX Downlo

Ayush Singh 20 Dec 21, 2022
Build installers for your Flutter applications with Squirrel

squirrel A new Flutter package project. Getting Started This project is a starting point for a Dart package, a library module containing code that can

Ani Betts 44 Dec 28, 2022
A flutter application to monitor your Linux PC statistic.

Linux Stats App A flutter application to monitor your Linux PC statistic. Screenshots Installation Download or clone the repository: $ git clone https

Malte2036 7 Dec 17, 2022
A tool for debugging your Flutter apps.

anyinspect_app A tool for debugging your Flutter apps. Platform Support Linux macOS Windows βž– βœ”οΈ βž– Installation Downloads are available on the Release

AnyInspect 40 Nov 11, 2022
A universal clipboard for all your devices.

?? ClipIo A Universal clipboard for all your devices! It's often difficult to move some data from one device to another especially when we have to mov

Krishnendu Bera 14 Sep 30, 2021
Serverpod is a next-generation app and web server, explicitly built for the Flutter and Dart ecosystem.

Serverpod Serverpod is a next-generation app and web server, explicitly built for the Flutter and Dart ecosystem. It allows you to write your server-s

Serverpod 1k Jan 8, 2023
Biyi (ζ―”θ―‘) is a convenient translation and dictionary app written in dart / Flutter.

biyi_app Biyi is a convenient translation and dictionary app written in dart / Flutter. View document "Biyi" (ζ―”θ―‘) is the Chinese word for "Comparison

biyidev 894 Jan 1, 2023
A platform adaptive Flutter app for desktop, mobile and web.

Flutter Folio A demo app showcasing how Flutter can deliver a great multi-platform experience, targeting iOS, Android, MacOS, Windows, Linux, and web.

gskinner team 3.5k Jan 2, 2023
A cross-platform app ecosystem, bringing iMessage to Android, PC (Windows, Linux, & even macOS), and Web!

BlueBubbles Android App BlueBubbles is an open-source and cross-platform ecosystem of apps aimed to bring iMessage to Android, Windows, Linux, and mor

BlueBubbles 318 Jan 8, 2023
Fluttern is a web app made with Flutter to list Flutter internships/jobs for the community.

Fluttern Fluttern is a web app made with Flutter to list Flutter internships/jobs for the community. It uses Google Sheet as a backend, simplifying th

Aditya Thakur 3 Jan 5, 2022
Unofficial Ubuntu Desktop Settings App made with Flutter

Unofficial Ubuntu Desktop Settings App made with Flutter - WIP The goal of this project is to build a feature complete settings app for the Ubuntu des

Frederik Feichtmeier 239 Jan 1, 2023
Create Desktop app with Flutter

Flutter Desktop Codelab Slides Créer votre première appli Desktop avec Flutter App Design Dribble YoPro Setup Linux MacOs Windows Generate executable

Flutter Togo 24 Nov 18, 2022