This library provides the optimized and easiest way to authenticate with Mastodon's OAuth 2.0 in your Flutter app 🎯

Overview

mastodon_oauth2

The Optimized and Easiest Way to Integrate OAuth 2.0 with Mastodon API in Flutter 🎯


GitHub Sponsor GitHub Sponsor

pub package Dart SDK Version Test Analyzer Issues Pull Requests Stars Code size Last Commits License Contributor Covenant


1. Guide 🌎

This library provides the easiest way to authenticate with OAuth 2.0 for Mastodon API in Flutter apps.

Show some ❤️ and star the repo to support the project.

1.1. Getting Started

1.1.1. Install Library

 flutter pub add mastodon_oauth2

1.1.2. Import

import 'package:mastodon_oauth2/mastodon_oauth2.dart';

1.1.3. Setup

1.1.3.1. Android

On Android you must first set the minSdkVersion in the build.gradle file:

defaultConfig {
   ...
   minSdkVersion 18
   ...

Then, to test with this library, let's set org.example.oauth://callback/ as a callback URI in your developer page.

You can see developer page of mastodon in the link like below.

And then, specify your redirect uri like below.

Set Callback URI

Also it's necessary to add the following definitions to AndroidManifest.xml.

<activity android:name="com.linusu.flutter_web_auth_2.CallbackActivity" android:exported="true">
    <intent-filter android:label="flutter_web_auth_2">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="org.example.oauth" android:host="callback" />
    </intent-filter>
</activity>

Finally you need to set this redirect url for MastodonOAuth2Client.

final oauth2 = MastodonOAuth2Client(
  // Specify mastodon instance like "mastodon.social"
  instance: 'MASTODON_INSTANCE'
  clientId: 'YOUR_CLIENT_ID',
  clientSecret: 'YOUR_CLIENT_SECRET',
  redirectUri: 'org.example.oauth://callback/',
  customUriScheme: 'org.example.oauth',
);

You can see details here.

1.1.3.2. iOS

On iOS you need to set the platform in the ios/Podfile file:

platform :ios, '11.0'

The usage of MastodonOAuth2Client is the same as for Android above.

1.1.3.3. Web

For Web, the implementation method for using this package is the same as for Android and iOS above, but it's necessary to separately create HTML for the destination to be redirected to after authentication.

First, you will need to create the following HTML directly under your web folder in preparation for OAuth authentication in your web browser. Then, let's save this HTML file with the name auth.html.

<!DOCTYPE html>
<title>Authentication complete</title>
<p>
  Authentication is complete. If this does not happen automatically, please
  close the window.
  <script>
    window.opener.postMessage(window.location.href, window.location.origin);
    window.close();
  </script>
</p>

And now your web folder should look like this.

Set auth.html

And then, unlike Android and iOS, the redirect URL should refer to this created auth.html. So, now let's set it to http://localhost:5555/auth.html for example.

Set redirect uri for Web

Finally, you need to set this redirect url for MastodonOAuth2Client.

final oauth2 = MastodonOAuth2Client(
  // Specify mastodon instance like "mastodon.social"
  instance: 'MASTODON_INSTANCE'
  clientId: 'YOUR_CLIENT_ID',
  clientSecret: 'YOUR_CLIENT_SECRET',
  redirectUri: 'http://localhost:5555/auth.html',
  customUriScheme: 'http://localhost:5555/auth.html',
);

1.1.4. Implementation

Now all that's left is to launch the following example Flutter app and press the button to start the authentication process with OAuth 2.0!

After pressing the Authorize button, a redirect will be performed and you will see that you have obtained your bearer token.

import 'package:flutter/material.dart';

import 'package:mastodon_oauth2/mastodon_oauth2.dart';

void main() {
  runApp(const MaterialApp(home: Example()));
}

class Example extends StatefulWidget {
  const Example({Key? key}) : super(key: key);

  @override
  State<Example> createState() => _ExampleState();
}

class _ExampleState extends State<Example> {
  String? _accessToken;
  String? _refreshToken;

  @override
  Widget build(BuildContext context) => Scaffold(
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Text('Access Token: $_accessToken'),
              ElevatedButton(
                onPressed: () async {
                  final oauth2 = MastodonOAuth2Client(
                    // Specify mastodon instance like "mastodon.social"
                    instance: 'MASTODON_INSTANCE'
                    clientId: 'YOUR_CLIENT_ID',
                    clientSecret: 'YOUR_CLIENT_SECRET',

                    // Replace redirect url as you need.
                    redirectUri: 'org.example.oauth://callback/',
                    customUriScheme: 'org.example.oauth',
                  );

                  final response = await oauth2.executeAuthCodeFlow(
                    scopes: [
                      Scope.read,
                      Scope.write,
                    ],
                  );

                  super.setState(() {
                    _accessToken = response.accessToken;
                  });
                },
                child: const Text('Push!'),
              )
            ],
          ),
        ),
      );
}

1.2. Contribution 🏆

If you would like to contribute to mastodon-oauth2, please create an issue or create a Pull Request.

There are many ways to contribute to the OSS. For example, the following subjects can be considered:

  • There are scopes that are not implemented.
  • Documentation is outdated or incomplete.
  • Have a better way or idea to achieve the functionality.
  • etc...

You can see more details from resources below:

Or you can create a discussion if you like.

Feel free to join this development, diverse opinions make software better!

1.3. Contributors

Thanks goes to these wonderful people (emoji key):

Shinya Kato / 加藤 真也
Shinya Kato / 加藤 真也

💻 📖 🎨 💡 🚧 ⚠️
Mark O'Sullivan
Mark O'Sullivan

🤔
Abraham Williams
Abraham Williams

💻 📖 ⚠️
YeongJun
YeongJun

📖 🤔

This project follows the all-contributors specification. Contributions of any kind welcome!

1.4. Support ❤️

The simplest way to show us your support is by giving the project a star at GitHub and Pub.dev.

You can also support this project by becoming a sponsor on GitHub:

1.5. License 🔑

All resources of mastodon_oauth2 is provided under the BSD-3 license.

Copyright 2022 Kato Shinya. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided the conditions.

Note
License notices in the source are strictly validated based on .github/header-checker-lint.yml. Please check header-checker-lint.yml for the permitted standards.

1.6. More Information 🧐

mastodon_oauth2 was designed and implemented by Kato Shinya (@myConsciousness).

Comments
  • fix: prepare v0.1.0

    fix: prepare v0.1.0

    1. Description

    1.1. Checklist

    • [x] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
    • [x] I have read the Contributor Guide and followed the process outlined for submitting PRs.
    • [x] I have updated/added tests for ALL new/updated/fixed functionality.
    • [x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
    • [x] I have updated/added relevant examples in examples.

    1.2. Breaking Change

    • [ ] Yes, this is a breaking change.
    • [x] No, this is not a breaking change.

    1.3. Related Issues

    opened by myConsciousness 8
  • build(deps): bump actions/stale from 6 to 7

    build(deps): bump actions/stale from 6 to 7

    Bumps actions/stale from 6 to 7.

    Release notes

    Sourced from actions/stale's releases.

    v7.0.0

    ⚠️ This version contains breaking changes ⚠️

    What's Changed

    Breaking Changes

    • In this release we prevent this action from managing the stale label on items included in exempt-issue-labels and exempt-pr-labels
    • We decided that this is outside of the scope of this action, and to be left up to the maintainer

    New Contributors

    Full Changelog: https://github.com/actions/stale/compare/v6...v7.0.0

    v6.0.1

    Update @​actions/core to 1.10.0 #839

    Full Changelog: https://github.com/actions/stale/compare/v6.0.0...v6.0.1

    Changelog

    Sourced from actions/stale's changelog.

    Changelog

    [7.0.0]

    :warning: Breaking change :warning:

    [6.0.1]

    Update @​actions/core to v1.10.0 (#839)

    [6.0.0]

    :warning: Breaking change :warning:

    Issues/PRs default close-issue-reason is now not_planned(#789)

    [5.1.0]

    Don't process stale issues right after they're marked stale [Add close-issue-reason option]#764#772 Various dependabot/dependency updates

    4.1.0 (2021-07-14)

    Features

    4.0.0 (2021-07-14)

    Features

    Bug Fixes

    • dry-run: forbid mutations in dry-run (#500) (f1017f3), closes #499
    • logs: coloured logs (#465) (5fbbfba)
    • operations: fail fast the current batch to respect the operations limit (#474) (5f6f311), closes #466
    • label comparison: make label comparison case insensitive #517, closes #516
    • filtering comments by actor could have strange behavior: "stale" comments are now detected based on if the message is the stale message not who made the comment(#519), fixes #441, #509, #518

    Breaking Changes

    ... (truncated)

    Commits
    • 6f05e42 draft release for v7.0.0 (#888)
    • eed91cb Update how stale handles exempt items (#874)
    • 10dc265 Merge pull request #880 from akv-platform/update-stale-repo
    • 9c1eb3f Update .md files and allign build-test.yml with the current test.yml
    • bc357bd Update .github/workflows/release-new-action-version.yml
    • 690ede5 Update .github/ISSUE_TEMPLATE/bug_report.md
    • afbcabf Merge branch 'main' into update-stale-repo
    • e364411 Update name of codeql.yml file
    • 627cef3 fix print outputs step (#859)
    • 975308f Merge pull request #876 from jongwooo/chore/use-cache-in-check-dist
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot GitHub Actions 
    opened by dependabot[bot] 5
  • docs: fixed for the issue (#17)

    docs: fixed for the issue (#17)

    1. Description

    1.1. Checklist

    • [x] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
    • [x] I have read the Contributor Guide and followed the process outlined for submitting PRs.
    • [x] I have updated/added tests for ALL new/updated/fixed functionality.
    • [x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
    • [x] I have updated/added relevant examples in examples.

    1.2. Breaking Change

    • [ ] Yes, this is a breaking change.
    • [x] No, this is not a breaking change.

    1.3. Related Issues

    opened by myConsciousness 4
  • build(deps): bump actions/stale from 7 to 8

    build(deps): bump actions/stale from 7 to 8

    Bumps actions/stale from 7 to 8.

    Release notes

    Sourced from actions/stale's releases.

    v8.0.0

    :warning: This version contains breaking changes :warning:

    What's Changed

    Breaking Changes

    • In this release we prevent scenarios when the build is not interrupted on some exceptions, which led to successful builds when they are supposed to fail

    Example

    name: 'Remove labels when the issue or PR becomes stale'
    on:
      schedule:
        - cron: '30 1 * * *'
    

    permissions: pull-request: write

    jobs: stale: runs-on: ubuntu-latest steps: - uses: actions/stale@v8 with: labels-to-remove-when-stale: 'label1,label2'

    Changelog

    Sourced from actions/stale's changelog.

    Changelog

    [7.0.0]

    :warning: Breaking change :warning:

    [6.0.1]

    Update @​actions/core to v1.10.0 (#839)

    [6.0.0]

    :warning: Breaking change :warning:

    Issues/PRs default close-issue-reason is now not_planned(#789)

    [5.1.0]

    Don't process stale issues right after they're marked stale [Add close-issue-reason option]#764#772 Various dependabot/dependency updates

    4.1.0 (2021-07-14)

    Features

    4.0.0 (2021-07-14)

    Features

    Bug Fixes

    • dry-run: forbid mutations in dry-run (#500) (f1017f3), closes #499
    • logs: coloured logs (#465) (5fbbfba)
    • operations: fail fast the current batch to respect the operations limit (#474) (5f6f311), closes #466
    • label comparison: make label comparison case insensitive #517, closes #516
    • filtering comments by actor could have strange behavior: "stale" comments are now detected based on if the message is the stale message not who made the comment(#519), fixes #441, #509, #518

    Breaking Changes

    ... (truncated)

    Commits
    • 1160a22 Merge pull request #965 from actions/dependabot/npm_and_yarn/prettier-2.8.6
    • 5f7b396 build(deps-dev): bump prettier from 2.8.4 to 2.8.6
    • b002e7e Merge pull request #941 from panticmilos/vmpantic/rebuild-dist-vercel-bump
    • 5290373 Rebuild dist after rebase
    • b006677 Merge pull request #962 from actions/dependabot/npm_and_yarn/jest-and-types/j...
    • 4f29769 Merge pull request #961 from actions/dependabot/npm_and_yarn/typescript-5.0.2
    • 83453dd build(deps-dev): bump jest and @​types/jest
    • 79e8c04 Merge pull request #960 from actions/dependabot/npm_and_yarn/types/node-18.15.3
    • 75d4d95 Remove labels on stale (#959)
    • fac2d41 build(deps-dev): bump typescript from 4.9.4 to 5.0.2
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot GitHub Actions Stale 
    opened by dependabot[bot] 3
  • build(deps): bump subosito/flutter-action from 2.8.0 to 2.10.0

    build(deps): bump subosito/flutter-action from 2.8.0 to 2.10.0

    Bumps subosito/flutter-action from 2.8.0 to 2.10.0.

    Release notes

    Sourced from subosito/flutter-action's releases.

    v2.10.0

    No release notes provided.

    v2.9.1

    No release notes provided.

    v2.9.0

    • Rewrite to make simpler
    • Drop master channel
    • Drop searching for a version with a v-prefix query, use, e.g, 0.11.9 instead of v0.11.9
    • Support restore keys for cache
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependabot GitHub Actions Stale 
    opened by dependabot[bot] 3
  • documentation for `Web` should be updated

    documentation for `Web` should be updated

    1. What could be improved

    An documentation about web client is just referring that of flutter_web_auth_2. However, the example used in the referring one is not suitable for mastodon-oauth2 since expected message payload is different.

    // ❌
    window.opener.postMessage({
        'flutter-web-auth-2': window.location.href
      }, window.location.origin);
    
    // ⭕️
    window.opener.postMessage(window.location.href, window.location.origin);
    

    2. Why should this be improved

    Developers might fail to use web clients.

    3. Any risks?

    Not much, I believe.

    4. More information

    nope

    enhancement 
    opened by SkywaveTM 3
  • feat: add push scope

    feat: add push scope

    1. Description

    Add push scope.

    Ref https://github.com/mastodon-dart/mastodon-oauth2/issues/6

    1.1. Checklist

    • [x] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
    • [x] I have read the Contributor Guide and followed the process outlined for submitting PRs.
    • [x] I have updated/added tests for ALL new/updated/fixed functionality.
    • [x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
    • [x] I have updated/added relevant examples in examples.

    1.2. Breaking Change

    • [ ] Yes, this is a breaking change.
    • [x] No, this is not a breaking change.

    1.3. Related Issues

    opened by abraham 3
  • refactor: renamed auth.html

    refactor: renamed auth.html

    1. Description

    1.1. Checklist

    • [x] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
    • [x] I have read the Contributor Guide and followed the process outlined for submitting PRs.
    • [x] I have updated/added tests for ALL new/updated/fixed functionality.
    • [x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
    • [x] I have updated/added relevant examples in examples.

    1.2. Breaking Change

    • [ ] Yes, this is a breaking change.
    • [x] No, this is not a breaking change.

    1.3. Related Issues

    opened by myConsciousness 2
  • fix: fixed for the issue (#14)

    fix: fixed for the issue (#14)

    1. Description

    1.1. Checklist

    • [x] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
    • [x] I have read the Contributor Guide and followed the process outlined for submitting PRs.
    • [x] I have updated/added tests for ALL new/updated/fixed functionality.
    • [x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
    • [x] I have updated/added relevant examples in examples.

    1.2. Breaking Change

    • [ ] Yes, this is a breaking change.
    • [x] No, this is not a breaking change.

    1.3. Related Issues

    opened by myConsciousness 2
  • docs: fix typo

    docs: fix typo

    1. Description

    1.1. Checklist

    • [x] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
    • [x] I have read the Contributor Guide and followed the process outlined for submitting PRs.
    • [x] I have updated/added tests for ALL new/updated/fixed functionality.
    • [x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
    • [x] I have updated/added relevant examples in examples.

    1.2. Breaking Change

    • [ ] Yes, this is a breaking change.
    • [x] No, this is not a breaking change.

    1.3. Related Issues

    opened by myConsciousness 2
  • test: add unit test

    test: add unit test

    1. Description

    1.1. Checklist

    • [x] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
    • [x] I have read the Contributor Guide and followed the process outlined for submitting PRs.
    • [x] I have updated/added tests for ALL new/updated/fixed functionality.
    • [x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
    • [x] I have updated/added relevant examples in examples.

    1.2. Breaking Change

    • [ ] Yes, this is a breaking change.
    • [x] No, this is not a breaking change.

    1.3. Related Issues

    opened by myConsciousness 2
  • updated http dependency

    updated http dependency

    1. Description

    Updated the http dependency. Have made a similar PR for mastodon-api. This will make it easier to use this lib with other libs that have http dependencies.

    opened by OlleEkberg 0
Releases(v1.0.0)
  • v1.0.0(Feb 6, 2023)

    What's Changed

    • docs: add SkywaveTM as a contributor for doc, and ideas by @allcontributors in https://github.com/mastodon-dart/mastodon-oauth2/pull/19
    • build(deps): bump actions/stale from 6 to 7 by @dependabot in https://github.com/mastodon-dart/mastodon-oauth2/pull/18
    • docs: fixed for the issue (#17) by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/20
    • refactor: renamed auth.html by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/21

    Full Changelog: https://github.com/mastodon-dart/mastodon-oauth2/compare/v0.1.1...v1.0.0

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Dec 14, 2022)

    What's Changed

    • fix: fixed for the issue (#14) by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/15
    • Update CHANGELOG.md by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/16

    Full Changelog: https://github.com/mastodon-dart/mastodon-oauth2/compare/v0.1.0...v0.1.1

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Dec 10, 2022)

    What's Changed

    • feat: add push scope by @abraham in https://github.com/mastodon-dart/mastodon-oauth2/pull/8
    • fix: prepare v0.1.0 by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/9
    • docs: add myConsciousness as a contributor for code, doc, and 5 more by @allcontributors in https://github.com/mastodon-dart/mastodon-oauth2/pull/10
    • docs: add MarkOSullivan94 as a contributor for ideas by @allcontributors in https://github.com/mastodon-dart/mastodon-oauth2/pull/11
    • fix: fixed all-contributors by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/13

    New Contributors

    • @abraham made their first contribution in https://github.com/mastodon-dart/mastodon-oauth2/pull/8
    • @allcontributors made their first contribution in https://github.com/mastodon-dart/mastodon-oauth2/pull/10

    Full Changelog: https://github.com/mastodon-dart/mastodon-oauth2/compare/v0.0.1...v0.1.0

    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Nov 17, 2022)

    What's Changed

    • test: add unit test by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/3
    • Bump actions/stale from 5 to 6 by @dependabot in https://github.com/mastodon-dart/mastodon-oauth2/pull/1
    • Update pubspec.yaml by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/4
    • docs: fix typo by @myConsciousness in https://github.com/mastodon-dart/mastodon-oauth2/pull/5

    New Contributors

    • @myConsciousness made their first contribution in https://github.com/mastodon-dart/mastodon-oauth2/pull/3
    • @dependabot made their first contribution in https://github.com/mastodon-dart/mastodon-oauth2/pull/1

    Full Changelog: https://github.com/mastodon-dart/mastodon-oauth2/commits/v0.0.1

    Source code(tar.gz)
    Source code(zip)
The easiest way to create your animated splash screen in a fully customizable way.

Animated Splash Screen Check it out at Pub.Dev Do it your way Assets image Custom Widget Url image IconData Or just change PageTransition and/or Splas

Clean Code 104 Nov 10, 2022
This library provides the easiest and powerful Dart/Flutter library for Mastodon API 🎯

The Easiest and Powerful Dart/Flutter Library for Mastodon API ?? 1. Guide ?? 1.1. Features ?? 1.2. Getting Started ⚡ 1.2.1. Install Library 1.2.2. Im

Mastodon.dart 55 Jul 27, 2023
Easiest way to add support for light and dark theme in your flutter app.

Adaptive Theme Easiest way to add support for light and dark theme in your Flutter app. It allows to manually set light or dark theme and also lets yo

Birju Vachhani 287 Dec 27, 2022
The Simplest way to Authenticate and make Rest API calls in .Net

Simple Auth Every API needs authentication, yet no developer wants to deal with authentication. Simple Auth embeds authentication into the API so you

James Clancey 166 Dec 22, 2022
Flutter ui boilerplate is easiest way to create new flutter project with clean code and well organized file folder.

Flutter UI Boilerplate "Sharing for fun" Flutter ui boilerplate is easiest way to create new flutter project with clean code and well organized file f

Dimas Ibnu Malik 122 Dec 1, 2022
The easiest way to use navigation, context less and useful methods.

Starlight Utils The easiest way to use navigation, context less and useful methods. Features Name Status Context Less Navigation Service ✅ Context Les

Ye Myo Aung 5 Jul 10, 2022
The easiest way to style custom text snippets in flutter

Super Rich Text Check it out at Pub.Dev The easiest way to style custom text snippets Help Maintenance I've been maintaining quite many repos these da

Woton Sampaio 14 Nov 4, 2022
Use the easiest way to create a dotted line view 👀!

fdottedline Use the easiest way to create a dotted line view ?? ! [FDottedLine] provides developers with the ability to create dashed lines. It also s

Fliggy Mobile 122 Jul 17, 2022
A flutter OAuth package for Slack with Firebase Authentication integration.

flutter_slack_oauth_firebase Extension for our flutter_slack_oauth library which adds support for Firebase Authentication and Cloud Firestore. Usage T

Kunstmaan | Accenture Interactive 11 May 18, 2021
changelog.dart provides a library and a command-line application to manage in the correct way the git metadata to build the changelog between two release

changelog.dart ?? changelog.dart: a collection of tools to manages in a fashion way a repository as maintainer. ?? Project Homepage Table of Content I

Vincenzo Palazzo 7 Dec 18, 2022
Flutter The lightest, easiest and most convenient route management!

Language: English | 中文简体 nav_router nav_router is the simplest / lightweight / convenient routing management solution for flutter. It supports various

FlutterCandies 104 Jan 3, 2023
EasiestSqlFlutter - The Easiest and the Laziest approach to Flutter SQL Database.

The Easiest and the Laziest approach to Flutter SQL Database for Flutter. • How to use • Contribution • License • Support • Share Sharing with your fr

Fayaz Bin Salam 15 Jul 27, 2022
A package provides an easy way to add shimmer effect in Flutter project

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

Le Anh Tuan 4 Jun 29, 2022
The EasyRichText widget provides an easy way to use RichText.

easy_rich_text The EasyRichText widget makes the RichText widget easy. You do not have to split the string manually. This widget use regular expressio

hans.huang 55 Jan 4, 2023
Deepak Sharma 149 Dec 10, 2022
The deta-dart library is the simple way to interact with the services of the free clud on the Deta plataform.

Deta A Dart package to interact with the HTTP API of the free services of the Deta plataform. ?? WARNING ?? This client should only be used on the ser

Yeikel Uriarte Arteaga 6 May 2, 2022
🎨 An opinionated, effective and correct way to provide multiple themes to your app.

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

Chinyeaka Chinonso 3 Nov 28, 2022
A Flutter package that provides a WYSIWYG editor backed by flutter_inappwebview and the Summernote library.

Flutter Html Editor - Enhanced Flutter HTML Editor Enhanced is a text editor for Android, iOS, and Web to help write WYSIWYG HTML code with the Summer

Tanay Neotia 200 Dec 31, 2022