This library provides the easiest and powerful Dart/Flutter library for Mastodon API đŸŽ¯

Overview

mastodon_api

The Easiest and Powerful Dart/Flutter Library for Mastodon API đŸŽ¯


GitHub Sponsor GitHub Sponsor

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


1. Guide 🌎

This library provides the easiest way to use Mastodon API in Dart and Flutter apps.

This library was designed and developed by Kato Shinya (@myConsciousness), the author of twitter_api_v2, and many parts are adapted from twitter_api_v2.

Show some ❤ī¸ and star the repo to support the project.

We also provide mastodon_oauth2 for easy OAuth 2.0 when using the Mastodon API!

1.1. Features 💎

✅ The wrapper library for Mastodon API.
✅ Easily integrates with the Dart & Flutter apps.
✅ Provides response objects with a guaranteed safe types.
✅ Well documented and well tested.
✅ Supports the powerful automatic retry.

1.2. Getting Started ⚡

1.2.1. Install Library

With Dart:

 dart pub add mastodon_api

Or With Flutter:

 flutter pub add mastodon_api

1.2.2. Import

import 'package:mastodon_api/mastodon_api';

1.2.3. Implementation

import 'package:mastodon_api/mastodon_api.dart';

Future<void> main() async {
  //! You need to specify mastodon instance (domain) you want to access.
  //! Also you need to get bearer token from your developer page, or OAuth 2.0.
  final mastodon = MastodonApi(
    instance: 'MASTODON_INSTANCE',
    bearerToken: 'YOUR_BEARER_TOKEN',

    //! Automatic retry is available when server error or network error occurs
    //! when communicating with the API.
    retryConfig: RetryConfig(
      maxAttempts: 5,
      jitter: Jitter(
        minInSeconds: 2,
        maxInSeconds: 5,
      ),
      onExecute: (event) => print(
        'Retry after ${event.intervalInSeconds} seconds... '
        '[${event.retryCount} times]',
      ),
    ),

    //! The default timeout is 10 seconds.
    timeout: Duration(seconds: 20),
  );

  try {
    //! Let's Toot from v1 endpoint!
    final response = await mastodon.v1.statuses.createStatus(
      text: 'Toot!',
    );

    print(response.rateLimit);
    print(response.data);
  } on UnauthorizedException catch (e) {
    print(e);
  } on RateLimitExceededException catch (e) {
    print(e);
  } on MastodonException catch (e) {
    print(e.response);
    print(e.body);
    print(e);
  }
}

1.3. Supported Endpoints 👀

1.3.1. Instance Service

1.3.1.1. v1

Endpoint Method Name
GET /api/v1/instance (deprecated) lookupInformation
GET /api/v1/instance/peers lookupConnectedDomains
GET /api/v1/instance/activity lookupWeeklyActivities
GET /api/v1/instance/rules lookupRules
GET /api/v1/instance/domain_block lookupBlockedDomains
GET /api/v1/example lookupExtendedDescription
GET /api/v1/announcements lookupAnnouncements
lookupActiveAnnouncements
POST /api/v1/announcements/:id/dismiss createMarkAnnouncementAsRead
PUT /api/v1/announcements/:id/reactions/:name createReactionToAnnouncement
DELETE /api/v1/announcements/:id/reactions/:name destroyReactionToAnnouncement
GET /api/v1/custom_emojis lookupAvailableEmoji
GET /api/v1/directory lookupAccounts

1.3.1.2. v2

Endpoint Method Name
GET /api/v2/instance lookupInformation

1.3.2. Apps Service

1.3.2.1. v1

Endpoint Method Name
POST /api/v1/apps createApplication
GET /api/v1/apps/verify_credentials verifyOAuthCredentials
POST /api/v1/emails/confirmation createNewConfirmationEmail

1.3.2.2. v2

1.3.3. Search Service

1.3.3.1. v1

1.3.3.2. v2

Endpoint Method Name
GET /api/v2/search searchContents

1.3.4. Accounts Service

1.3.4.1. v1

Endpoint Method Name
POST /api/v1/accounts createAccount
GET /api/v1/accounts/verify_credentials verifyAccountCredentials
PATCH /api/v1/accounts/update_credentials updateAccount
PATCH /api/v1/accounts/update_credentials updateAvatarImage
PATCH /api/v1/accounts/update_credentials updateHeaderImage
GET /api/v1/accounts/:id lookupAccount
GET /api/v1/accounts/:id/statuses lookupStatuses
GET /api/v1/accounts/:id/followers lookupFollowers
GET /api/v1/accounts/:id/following lookupFollowings
GET /api/v1/accounts/:id/featured_tags lookupFeaturedTags
GET /api/v1/accounts/:id/lists lookupContainedLists
POST /api/v1/accounts/:id/follow createFollow
POST /api/v1/accounts/:id/unfollow destroyFollow
POST /api/v1/accounts/:id/remove_from_followers destroyFollower
POST /api/v1/accounts/:id/block createBlock
POST /api/v1/accounts/:id/unblock destroyBlock
POST /api/v1/accounts/:id/mute createMute
POST /api/v1/accounts/:id/unmute destroyMute
POST /api/v1/accounts/:id/pin createFeaturedProfile
POST /api/v1/accounts/:id/unpin destroyFeaturedProfile
POST /api/v1/accounts/:id/note updatePrivateComment
GET /api/v1/accounts/relationships lookupRelationships
GET /api/v1/accounts/familiar_followers lookupFamiliarFollowers
GET /api/v1/accounts/search searchAccounts
GET /api/v1/accounts/lookup lookupAccountFromWebFingerAddress
GET /api/v1/preferences lookupPreferences
GET /api/v1/featured_tags lookupOwnedFeaturedTags
POST /api/v1/featured_tags createFeaturedTag
DELETE /api/v1/featured_tags/:id destroyFeaturedTag
GET /api/v1/featured_tags/suggestions lookupSuggestedTags
GET /api/v1/followed_tags lookupFollowedTags
DELETE /api/v1/suggestions/:account_id destroyFollowSuggestion
GET /api/v1/tags/:id lookupTag
POST /api/v1/tags/:id/follow createFollowingTag
POST /api/v1/tags/:id/unfollow destroyFollowingTag
POST /api/v1/reports createReport
GET /api/v1/endorsements lookupFeaturedProfiles
GET /api/v1/mutes lookupMutedAccounts
GET /api/v1/favourites lookupFavouritedStatuses
GET /api/v1/blocks lookupBlockedAccounts
GET /api/v1/bookmarks lookupBookmarkedStatuses
GET /api/v1/domain_blocks lookupBlockedDomains
POST /api/v1/domain_blocks createBlockedDomain
DELETE /api/v1/domain_blocks destroyBlockedDomain
GET /api/v1/follow_requests lookupFollowRequests
POST /api/v1/follow_requests/:account_id/authorize createFollower
POST /api/v1/follow_requests/:account_id/reject destroyFollowRequest

1.3.4.2. v2

Endpoint Method Name
GET /api/v2/suggestions lookupFollowSuggestions

1.3.5. Timelines Service

1.3.5.1. v1

Endpoint Method Name
GET /api/v1/timelines/public lookupPublicTimeline
GET /api/v1/timelines/tag/:hashtag lookupTimelineByHashtag
GET /api/v1/timelines/home lookupHomeTimeline
GET /api/v1/timelines/list/:list_id lookupListTimeline
GET /api/v1/conversations lookupConversations
DELETE /api/v1/conversations/:id destroyConversation
POST /api/v1/conversations/:id/read createMarkConversationAsRead
GET /api/v1/markers lookupStatusSnapshot
GET /api/v1/markers lookupNotificationSnapshot
POST /api/v1/markers createStatusSnapshot
POST /api/v1/markers createNotificationSnapshot

1.3.6. Statuses Service

1.3.6.1. v1

Endpoint Method Name
POST /api/v1/statuses createStatus
GET /api/v1/polls/:id lookupPollById
POST /api/v1/polls/:id/votes createVote
createVotes
GET /api/v1/statuses/:id lookupStatus
DELETE /api/v1/statuses/:id destroyStatus
GET /api/v1/statuses/:id/context lookupStatusContext
GET /api/v1/statuses/:id/reblogged_by lookupRebloggedUsers
GET /api/v1/statuses/:id/favourited_by lookupFavouritedUsers
POST /api/v1/statuses/:id/favourite createFavourite
POST /api/v1/statuses/:id/unfavourite destroyFavourite
POST /api/v1/statuses/:id/reblog createReblog
POST /api/v1/statuses/:id/unreblog destroyReblog
POST /api/v1/statuses/:id/bookmark createBookmark
POST /api/v1/statuses/:id/unbookmark destroyBookmark
POST /api/v1/statuses/:id/mute createMute
POST /api/v1/statuses/:id/unmute destroyMute
POST /api/v1/statuses/:id/pin createPinnedStatus
POST /api/v1/statuses/:id/unpin destroyPinnedStatus
PUT /api/v1/statuses/:id updateStatus
GET /api/v1/statuses/:id/history lookupEditHistory
GET /api/v1/statuses/:id/source lookupEditableSource
GET /api/v1/scheduled_statuses lookupScheduledStatuses
GET /api/v1/scheduled_statuses/:id lookupScheduledStatus
PUT /api/v1/scheduled_statuses/:id updateScheduledStatus
DELETE /api/v1/scheduled_statuses/:id destroyScheduledStatus

1.3.6.2. v2

1.3.7. Notifications Service

1.3.7.1. v1

Endpoint Method Name
GET /api/v1/notifications lookupNotifications
GET /api/v1/notification/:id lookupNotification
POST /api/v1/notifications/clear destroyAllNotifications
POST /api/v1/notifications/:id/dismiss destroyNotification

1.3.7.2. v2

1.3.8. OEmbed Service

1.3.8.1. v1

Endpoint Method Name
GET /api/oembed lookupOEmbedMetadata

1.3.8.2. v2

1.3.9. Media Service

1.3.9.1. v1

Endpoint Method Name
POST /api/v1/media (deprecated) uploadMedia
GET /api/v1/media/:id lookupMedia
PUT /api/v1/media/:id updateMedia

1.3.9.2. v2

Endpoint Method Name
POST /api/v2/media uploadMedia

1.4. Tips 🏄

1.4.1. Method Names

mastodon_api uses the following standard prefixes depending on endpoint characteristics. So it's very easy to find the method corresponding to the endpoint you want to use!

Prefix Description
lookup This prefix is attached to endpoints that reference toots, accounts, etc.
search This prefix is attached to endpoints that perform extensive searches.
connect This prefix is attached to endpoints with high-performance streaming.
create This prefix is attached to the endpoint performing the create state such as Toot and Follow.
destroy This prefix is attached to the endpoint performing the destroy state such as Toot and Follow.
update This prefix is attached to the endpoint performing the update state.
upload This prefix is attached to the endpoint performing the media uploading.
verify This prefix is attached to the endpoint performing the verify specific states or values.

1.4.2. Null Parameter at Request

In this library, parameters that are not required at request time, i.e., optional parameters, are defined as nullable. However, developers do not need to be aware of the null parameter when sending requests when using this library.

It means the parameters specified with a null value are safely removed and ignored before the request is sent.

For example, arguments specified with null are ignored in the following request.

import 'package:mastodon_api/mastodon_api.dart';

Future<void> main() async {
  final mastodon = MastodonApi(
    instance: 'MASTODON_INSTANCE',
    bearerToken: 'YOUR_BEARER_TOKEN',
  );

  await mastodon.v1.statuses.createStatus(
    text: 'Toot!',

    //! These parameters are ignored at request because they are null.
    poll: null,
    sensitive: null,
  );
}

1.4.3. OAuth 2.0 Authorization Code Flow

Mastodon API supports authentication methods with OAuth 2.0, and it allows users of apps using Mastodon API to request authorization for the minimum necessary scope of operation.

Since OAuth2.0 authentication requires going through a browser, mastodon_api does not provide this specification for compatibility with CLI applications. Instead, we provide mastodon_oauth2, a library for Flutter apps.

The mastodon_oauth2 is 100% compatible with mastodon_api and can be used. You can see more details from links below.

1.4.4. Change the Timeout Duration

The library specifies a default timeout of 10 seconds for all API communications.

However, there may be times when you wish to specify an arbitrary timeout duration. If there is such a demand, an arbitrary timeout duration can be specified as follows.

import 'package:mastodon_api/mastodon_api.dart';

Future<void> main() {
 final mastodon = MastodonApi(
    instance: 'MASTODON_INSTANCE',
    bearerToken: 'YOUR_TOKEN_HERE',

    //! The default timeout is 10 seconds.
    timeout: Duration(seconds: 20),
  );
}

1.4.5. Automatic Retry

Due to the nature of this library's communication with external systems, timeouts may occur due to inevitable communication failures or temporary crashes of the server to which requests are sent.

When such timeouts occur, an effective countermeasure in many cases is to send the request again after a certain interval. And mastodon_api provides an automatic retry feature as a solution to this problem.

Also, errors subject to retry are as follows.

  • When the status code of the response returned from Mastodon is 500 or 503.
  • When the network is temporarily lost and a SocketException is thrown.
  • When communication times out temporarily and a TimeoutException is thrown

1.4.5.1. Exponential Backoff and Jitter

Although the algorithm introduced earlier that exponentially increases the retry interval is already powerful, some may believe that it is not yet sufficient to distribute the sensation of retries. It's more distributed than equally spaced retries, but retries still occur at static intervals.

This problem can be solved by adding a random number called Jitter, and this method is called the Exponential Backoff and Jitter algorithm. By adding a random number to the exponentially increasing retry interval, the retry interval can be distributed more flexibly.

Similar to the previous example, mastodon_api can be implemented as follows.

import 'package:mastodon_api/mastodon_api.dart';

Future<void> main() async {
  final mastodon = MastodonApi(
    instance: 'MASTODON_INSTANCE',
    bearerToken: 'YOUR_TOKEN_HERE',

    //! Add these lines.
    retryConfig: RetryConfig(
      maxAttempts: 3,
    ),
  );
}

In the above implementation, the interval increases exponentially for each retry count with jitter. It can be expressed by next formula.

(2 ^ retryCount) + jitter(Random Number between 0 ~ 3)

1.4.5.2. Do Something on Retry

It would be useful to output logging on retries and a popup notifying the user that a retry has been executed. So mastodon_api provides callbacks that can perform arbitrary processing when retries are executed.

It can be implemented as follows.

import 'package:mastodon_api/mastodon_api.dart';

Future<void> main() async {
  final mastodon = MastodonApi(
    instance: 'MASTODON_INSTANCE',
    bearerToken: 'YOUR_TOKEN_HERE',
    retryConfig: RetryConfig(
      maxAttempts: 3,

      //! Add this line.
      onExecute: (event) => print('Retrying... ${event.retryCount} times.'),
    ),
  );
}

The RetryEvent passed to the callback contains information on retries.

1.4.6. Thrown Exceptions

mastodon_api provides a convenient exception object for easy handling of exceptional responses and errors returned from Mastodon API.

Exception Description
MastodonException The most basic exception object. For example, it can be used to search for posts that have already been deleted, etc.
UnauthorizedException Thrown when authentication fails with the specified access token.
RateLimitExceededException Thrown when the request rate limit is exceeded.
DataNotFoundException Thrown when response has no body or data field in body string, or when 404 status is returned.

Also, all of the above exceptions thrown from the mastodon_api process extend MastodonException. This means that you can take all exceptions as MastodonException or handle them as certain exception types, depending on the situation.

However note that, if you receive an individual type exception, be sure to define the process so that the individual exception type is cached before MastodonException. Otherwise, certain type exceptions will also be caught as MastodonException.

Therefore, if you need to catch a specific type of exception in addition to MastodonException, be sure to catch MastodonException in the bottom catch clause as in the following example.

import 'package:mastodon_api/mastodon_api.dart';

Future<void> main() async {
  final mastodon = MastodonApi(
    instance: 'MASTODON_INSTANCE',
    bearerToken: 'YOUR_TOKEN_HERE',
  );

  try {
    final response = await mastodon.v1.statuses.createStatus(text: 'Toot!');

    print(response);
  } on UnauthorizedException catch (e) {
    print(e);
  } on RateLimitExceededException catch (e) {
    print(e);
  } on MastodonException catch (e) {
    print(e);
  }
}

1.5. Contribution 🏆

If you would like to contribute to mastodon_api, 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 request parameters or response fields 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.6. Contributors ✨

Thanks goes to these wonderful people (emoji key):

KATO, Shinya / åŠ č—¤ įœŸäšŸ
KATO, Shinya / åŠ č—¤ įœŸäšŸ

đŸ’ģ 📖 🎨 💡 🔍 🤔 🚧 🛡ī¸ ⚠ī¸ ✅
Mark O'Sullivan
Mark O'Sullivan

📖 🤔 đŸ’Ŧ
Mike Sheldon
Mike Sheldon

🤔 🖋 đŸ’ģ 🐛 ⚠ī¸
YeongJun
YeongJun

🤔 đŸ’ģ
alevinetx
alevinetx

đŸ’ģ đŸ’Ŧ 🐛
Igor
Igor

đŸ’ģ ⚠ī¸ 📖 🐛

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

1.7. 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:

You can also show on your repository that your app is made with mastodon_api by using one of the following badges:

Powered by mastodon_api Powered by mastodon_api Powered by mastodon_api

[![Powered by mastodon_api](https://img.shields.io/badge/Powered%20by-mastodon_api-00acee.svg)](https://github.com/mastodon-dart/mastodon-api)
[![Powered by mastodon_api](https://img.shields.io/badge/Powered%20by-mastodon_api-00acee.svg?style=flat-square)](https://github.com/mastodon-dart/mastodon-api)
[![Powered by mastodon_api](https://img.shields.io/badge/Powered%20by-mastodon_api-00acee.svg?style=for-the-badge)](https://github.com/mastodon-dart/mastodon-api)

1.8. License 🔑

All resources of mastodon_api 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.9. More Information 🧐

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

Comments
  • Improve Suggestion: build is not deterministic

    Improve Suggestion: build is not deterministic

    1. What could be improved

    freeze package, which is being used for generating model classes, could produces different outputs within the versions with the same major version (check commit history for that file). With current version constraints, auto generated codes are not deterministic since different versions of freezed package could be used.

    You may reproduce this by playing with follwing commands - dart pub upgrade, dart pub downgrade, dart run build_runner build, dart run build_runner clean

    2. Why should this be improved

    Contributors may override exiting auto generated codes with auto generated codes in their environment.

    3. Any risks?

    You may need to manually upgrade freeze package.

    4. More information

    enhancement 
    opened by SkywaveTM 9
  • fix: list value for GET search params

    fix: list value for GET search params

    1. Description

    SearchParams for GET request should support list values. Expected: /request?id[]=123&id[]=456

    Current implementation use these params into uri string as text. But then dart Uri.https() will add extra "?"(querstion mark sign) at end. That URL breaks API and server respond with 404 error.

    Actual:

    /request?id[]=123&id[]=456? 
    __________________________^
    

    Added special parsing for list query params. Changed types to support list params. Added extra tests to check response URL.

    Example: https://stackoverflow.com/questions/69633989/dart-how-to-send-query-parameter-array-with-brackets

    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 ///.
    • [ ] I have updated/added relevant examples in examples.

    1.2. Breaking Change

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

    1.3. Related Issues

    opened by Kraigo 7
  • feat: fixed for the issue (#6)

    feat: fixed for the issue (#6)

    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

    service/apps v1 test 
    opened by myConsciousness 7
  • fix: fixed for the issue (#94)

    fix: fixed for the issue (#94)

    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 6
  • fix: Provide client scopes as a space delimited string instead of a json list

    fix: Provide client scopes as a space delimited string instead of a json list

    1. Description

    The currently existing behaviour sends scopes as a json encoded list (e.g. ["read", "write", "follow"]), however, Mastodon expects a space-separated string ("read write follow"). This PR corrects that behaviour so that apps are assigned the correct scopes by the Mastodon server.

    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.
    • [ ] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
    • [ ] 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

    Fixes #78

    opened by Elleo 6
  • docs: Removed mention of tweets

    docs: Removed mention of tweets

    1. Description

    A simple one word change - instead of using tweets in the README, it's been updated to posts.

    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

    Issue #57

    opened by MarkOSullivan94 6
  • docs: fixed for the pr (#136)

    docs: fixed for the pr (#136)

    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 5
  • fix: fixed for the issue (#91)

    fix: fixed for the issue (#91)

    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

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

    1.3. Related Issues

    service/instance v1 test 
    opened by myConsciousness 5
  • refactor: renamed methods

    refactor: renamed methods

    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

    service/statuses v1 test 
    opened by myConsciousness 5
  • Increase visibility to items in lib/src

    Increase visibility to items in lib/src

    mastodon_api: ^0.2.2

    Example:

    Future<MastodonResponse<List<Rule>>> server.v1.instance.lookupRules()

    lookupRules() is contained in InstanceV1Service, which doesn't appear in the documentation. Rule doesn't appear in the documentation. IDE cannot find Rule to understand its data type unless I explicitly import package:mastodon_api/src/service/entities/rule.dart

    2. Why should this be improved

    Beyond improving IDE interaction, this should help improve the generated documentation; there are currently missing items.

    3. Any risks?

    ?

    enhancement 
    opened by alevinetx 5
  • feat: fixed for the issue (#19)

    feat: fixed for the issue (#19)

    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

    service/accounts v1 test 
    opened by myConsciousness 5
  • Bug Report: `Visibility` isn't JSON encodable

    Bug Report: `Visibility` isn't JSON encodable

    1. Current bug behavior

    Unhandled exception:
    Converting object to an encodable object failed: Instance of 'Visibility'
    #0      _JsonStringifier.writeObject (dart:convert/json.dart:793:7)
    #1      _JsonStringifier.writeMap (dart:convert/json.dart:874:7)
    #2      _JsonStringifier.writeJsonValue (dart:convert/json.dart:829:21)
    #3      _JsonStringifier.writeObject (dart:convert/json.dart:784:9)
    #4      _JsonStringStringifier.printOn (dart:convert/json.dart:982:17)
    #5      _JsonStringStringifier.stringify (dart:convert/json.dart:967:5)
    #6      JsonEncoder.convert (dart:convert/json.dart:345:30)
    #7      JsonCodec.encode (dart:convert/json.dart:231:45)
    #8      jsonEncode (dart:convert/json.dart:114:10)
    #9      ServiceHelper.post (package:mastodon_api/src/core/service_helper.dart:167:23)
    #10     BaseService.post (package:mastodon_api/src/service/base_service.dart:166:21)
    #11     _StatusesV1Service.createStatus (package:mastodon_api/src/service/v1/statuses/statuses_v1_service.dart:876:21)
    #12     main (redacted.dart)
    #13     _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:294:33)
    #14     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:189:12)
    

    2. Expected behavior

    The code should just work (i.e. post a toot)

    3. Steps to reproduce

    import 'package:mastodon_api/mastodon_api.dart';
    
    // the bulk of this is straight copy-paste from the example in the readme
    void main(List<String> args) async {
      final mastodon = MastodonApi(
        instance: args[0],
        bearerToken: args[1],
    
        retryConfig: RetryConfig(
          maxAttempts: 5,
          jitter: Jitter(
            minInSeconds: 2,
            maxInSeconds: 5,
          ),
          onExecute: (event) => print(
            'Retry after ${event.intervalInSeconds} seconds... '
            '[${event.retryCount} times]',
          ),
        ),
      );
    
      try {
        final response = await mastodon.v1.statuses.createStatus(
          text: 'Toot!',
          visibility: Visibility.private,
        );
    
        print(response.rateLimit);
        print(response.data);
      } on UnauthorizedException catch (e) {
        print(e);
      } on RateLimitExceededException catch (e) {
        print(e);
      } on MastodonException catch (e) {
        print(e.response);
        print(e.body);
        print(e);
      }
    }
    
      mastodon_api: ^0.6.1
    
    bug untriaged 
    opened by pixelcmtd 1
  • Bug Report: Status Language Enum

    Bug Report: Status Language Enum

    1. Current bug behavior

    Failed type checking for Language property of Status Screenshot 2023-03-16 at 15 06 09

    2. Expected behavior

    Should allow any language and do not throw error

    3. Steps to reproduce

    Check status id 109875153124589927

    4. Flutter doctor output

    Output of: flutter doctor -v
    

    5. More environment information

    6. Log information

    [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: CheckedFromJsonException
    Could not create `_$_Status`.
    There is a problem with "language".
    `pt-br` is not one of the supported values: aa, ab, ae, af, ak, am, an, ar, as, av, ay, az, ba, be, bg, bh, bi, bm, bn, bo, br, bs, ca, ce, ch, co, cr, cs, cu, cv, cy, da, de, dv, dz, ee, el, en, en-us, eo, es, et, eu, fa, ff, fi, fj, fo, fr, fy, ga, gd, gl, gu, gv, ha, he, hi, ho, hr, ht, hu, hy, hz, ia, id, ie, ig, ii, ik, io, is_, it, iu, ja, jv, ka, kg, ki, kj, kk, kl, km, kn, ko, kr, ks, ku, kv, kw, ky, la, lb, lg, li, ln, lo, lt, lu, lv, mg, mh, mi, mk, ml, mn, mr, ms, mt, my, na, nb, nd, ne, ng, nl, nn, no, nr, nv, ny, oc, oj, om, or, os, pa, pi, pl, ps, pt, qu, rm, rn, ro, ru, rw, sa, sc, sd, se, sg, si, sk, sl, sn, so, sq, sr, ss, st, su, sv, sw, ta, te, tg, th, ti, tk, tl, tn, to, tr, ts, tt, tw, ty, ug, uk, ur, uz, ve, vi, vo, wa, wo, xh, yi, yo, za, zh, zu`
    

    7. More information

    bug untriaged 
    opened by Kraigo 0
  • Feature Request: retention API methods

    Feature Request: retention API methods

    1. Problem to solve

    • [ ] POST https://mastodon.example/api/v1/admin/retention

    2. Proposal

    3. More information

    https://docs.joinmastodon.org/methods/admin/retention/

    help wanted service/admin v1 untriaged feat 
    opened by myConsciousness 1
  • Feature Request: measures API methods

    Feature Request: measures API methods

    1. Problem to solve

    • [ ] POST https://mastodon.example/api/v1/admin/measures

    2. Proposal

    3. More information

    https://docs.joinmastodon.org/methods/admin/measures/

    help wanted service/admin v1 untriaged feat 
    opened by myConsciousness 1
  • Feature Request: ip_blocks API methods

    Feature Request: ip_blocks API methods

    1. Problem to solve

    • [ ] GET https://mastodon.example/api/v1/admin/ip_blocks
    • [ ] GET https://mastodon.example/api/v1/admin/ip_blocks/:id
    • [ ] POST https://mastodon.example/api/v1/admin/ip_blocks
    • [ ] UT https://mastodon.example/api/v1/admin/ip_blocks/:id
    • [ ] DELETE https://mastodon.example/api/v1/admin/ip_blocks/:id

    2. Proposal

    3. More information

    https://docs.joinmastodon.org/methods/admin/ip_blocks/

    help wanted service/admin v1 untriaged feat 
    opened by myConsciousness 1
  • Feature Request: email_domain_blocks API methods

    Feature Request: email_domain_blocks API methods

    1. Problem to solve

    • [ ] GET https://mastodon.example/api/v1/admin/email_domain_blocks
    • [ ] GET https://mastodon.example/api/v1/admin/email_domain_blocks/:id
    • [ ] POST https://mastodon.example/api/v1/admin/email_domain_blocks
    • [ ] DELETE https://mastodon.example/api/v1/admin/email_domain_blocks/:id

    2. Proposal

    3. More information

    https://docs.joinmastodon.org/methods/admin/email_domain_blocks/

    help wanted service/admin v1 untriaged feat 
    opened by myConsciousness 1
Releases(v0.6.1)
  • v0.6.1(Mar 6, 2023)

    What's Changed

    • feat: fixed for the issue (#144) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/145
    • docs: fixed for the issue (#146) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/147
    • Update README.md by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/148

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Feb 19, 2023)

    What's Changed

    • feat: fixed for the issue (#37) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/140
    • feat: fixed for the issue (#26) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/142
    • [Scheduled] dart pub upgrade --null-safety by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/141
    • feat: fixed for the issue (#24) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/143

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.5.2...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Feb 15, 2023)

    What's Changed

    • [Scheduled] dart pub upgrade --null-safety by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/137
    • fix: list value for GET search params by @Kraigo in https://github.com/mastodon-dart/mastodon-api/pull/136
    • docs: add Kraigo as a contributor for doc, and bug by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/139
    • docs: fixed for the pr (#136) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/138

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.5.1...v0.5.2

    Source code(tar.gz)
    Source code(zip)
  • v0.5.1(Feb 8, 2023)

    What's Changed

    • feat: fixed for the issue (#16) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/133
    • [Scheduled] dart pub upgrade --null-safety by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/134
    • feat: fixed for the issue (#51) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/135

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.5.0...v0.5.1

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Feb 6, 2023)

    What's Changed

    • feat: fixed for the issue (#12) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/124
    • fix: fixed for the issue (#125) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/129
    • feat: fixed for the issue (#128) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/130
    • feat: fixed for the issue (#126) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/131
    • feat: fixed for the issue (#127) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/132

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.4.0...v0.5.0

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Feb 4, 2023)

    What's Changed

    • feat: fixed for the issue (#38) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/111
    • [Scheduled] dart pub upgrade --null-safety by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/112
    • [Scheduled] dart pub upgrade --null-safety by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/113
    • feat: add statuses api #23 by @Kraigo in https://github.com/mastodon-dart/mastodon-api/pull/114
    • refactor: renamed methods by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/116
    • docs: add Kraigo as a contributor for code, and test by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/117
    • [Scheduled] dart pub upgrade --null-safety by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/115
    • feat: fixed for the issue (#118) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/119
    • fix: fixed for the issue (#91) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/121
    • Kraigo notifications by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/122
    • feat: add notifications api #32 by @Kraigo in https://github.com/mastodon-dart/mastodon-api/pull/120
    • docs: add change log by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/123

    New Contributors

    • @Kraigo made their first contribution in https://github.com/mastodon-dart/mastodon-api/pull/114

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.3.2...v0.4.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.2(Jan 1, 2023)

    What's Changed

    • docs: add links by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/108
    • Update .all-contributorsrc by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/109
    • Update README.md by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/110

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.3.1...v0.3.2

    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Jan 1, 2023)

    What's Changed

    • 10 feature request mutes api methods by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/104
    • feat: fixed for the issue (#9) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/105
    • feat: fixed for the issue (#11) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/106
    • feat: fixed for the issue (#8) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/107

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.3.0...v0.3.1

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Dec 31, 2022)

    What's Changed

    • feat: fixed for the issue (#21) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/85
    • feat: fixed for the issue (#28) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/86
    • dart pub upgrade --null-safety by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/87
    • Create upgrade_dependencies.yml by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/88
    • docs: add SkywaveTM as a contributor for ideas by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/89
    • feat: add and fix attributes on Status model by @SkywaveTM in https://github.com/mastodon-dart/mastodon-api/pull/90
    • fix: Skywave tm update status model by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/92
    • docs: add SkywaveTM as a contributor for code by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/93
    • feat:Added additional exports for IDE and documentation visibility by @alevinetx in https://github.com/mastodon-dart/mastodon-api/pull/95
    • fix: fixed for the issue (#94) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/97
    • docs: add alevinetx as a contributor for code, question, and bug by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/98
    • feat: fixed for the issue (#22) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/99
    • feat: fixed for the issue (#15) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/100
    • fix: fixed for the issue (#101) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/102
    • feat: fixed for the issue (#17) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/103
    • feat: fixed for the issue (#30) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/96

    New Contributors

    • @SkywaveTM made their first contribution in https://github.com/mastodon-dart/mastodon-api/pull/90
    • @alevinetx made their first contribution in https://github.com/mastodon-dart/mastodon-api/pull/95

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.2.2...v0.3.0

    Source code(tar.gz)
    Source code(zip)
  • v0.2.2(Dec 26, 2022)

    What's Changed

    • Update stale.yml by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/75
    • feat: fixed for the issue (#19) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/76
    • docs: add Elleo as a contributor for ideas, and content by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/77
    • fix: Provide client scopes as a space delimited string instead of a json list by @Elleo in https://github.com/mastodon-dart/mastodon-api/pull/79
    • docs: add Elleo as a contributor for code, bug, and test by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/80
    • fix: fixed for the issue (#18) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/81
    • fix: fixed for the issue (#20) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/82
    • Update CHANGELOG.md by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/83

    New Contributors

    • @Elleo made their first contribution in https://github.com/mastodon-dart/mastodon-api/pull/79

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.2.1...v0.2.2

    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Dec 17, 2022)

    What's Changed

    • docs: add links by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/74

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.2.0...v0.2.1

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Dec 15, 2022)

    What's Changed

    • feat: fixed for the issue (#25) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/67
    • 36 feature request trends api methods by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/68
    • feat: fixed for the issue (#39) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/69
    • Update .all-contributorsrc by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/70
    • feat: fixed for the issue (#7) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/71
    • Update .all-contributorsrc by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/72
    • Update README.md by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/73

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.1.0...v0.2.0

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

    What's Changed

    • feat: fixed for the issue (#34) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/55
    • feat: fixed for the issue (#27) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/56
    • docs: Removed mention of tweets by @MarkOSullivan94 in https://github.com/mastodon-dart/mastodon-api/pull/58
    • feat: fixed for the issue (#4) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/59
    • Update labeler.yml by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/60
    • feat: fixed for the issue (#35) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/61
    • feat: fixed for the issue (#6) by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/62
    • docs: update supported endpoints by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/63
    • docs: add myConsciousness as a contributor for code, content, and 17 more by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/64
    • docs: add MarkOSullivan94 as a contributor for doc, ideas, and question by @allcontributors in https://github.com/mastodon-dart/mastodon-api/pull/65
    • fix: v0.1.0 by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/66

    New Contributors

    • @MarkOSullivan94 made their first contribution in https://github.com/mastodon-dart/mastodon-api/pull/58
    • @allcontributors made their first contribution in https://github.com/mastodon-dart/mastodon-api/pull/64

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

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

    What's Changed

    • feat: add essential processes by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/2
    • docs: add infra docs by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/3
    • Update 01_feature.md by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/5
    • feat: support basic toot by @myConsciousness in https://github.com/mastodon-dart/mastodon-api/pull/54

    New Contributors

    • @myConsciousness made their first contribution in https://github.com/mastodon-dart/mastodon-api/pull/2

    Full Changelog: https://github.com/mastodon-dart/mastodon-api/compare/v0.0.0...v0.0.1

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

This library provides the easiest way to integrate Twitter Cards in Flutter web apps đŸĻ

The Easiest Way to Integrate Twitter Cards into Your Flutter Web App ?? 1. Guide ?? 1.1. Features ?? 1.2. Getting Started ⚡ 1.2.1. Install Library 1.2

Twitter.dart 3 Aug 7, 2022
A client for Pleroma and Mastodon instances written using Flutter

Fedi for Pleroma and Mastodon Fedi is open-source client for Pleroma and Mastodon social networks written using Flutter. Pleroma and Mastodon are part

null 99 Dec 24, 2022
Feathr - A Mastodon client built in Flutter (in development).

feathr A Mastodon client built in Flutter (in development). Contributing Pull requests are welcome. For major changes, please open an issue first to d

feathr.space 8 Nov 25, 2022
The lightweight and powerful wrapper library for Twitter Ads API written in Dart and Flutter đŸĻ

TODO: Put a short description of the package here that helps potential users know whether this package might be useful for them. Features TODO: List w

Twitter.dart 2 Aug 26, 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
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
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
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
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
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
Rules - Powerful and feature-rich validation library for both Dart and Flutter.

Introduction Rules - Powerful and feature-rich validation library for both Dart and Flutter. Rules is a simple yet powerful and feature-rich validatio

Ganesh Rathinavel 24 Dec 12, 2022
A lightweight and powerful batch library written in Dart

A lightweight and powerful batch library written in Dart. You can easily develop a job schedule and batch program in Dart with this library.

Kato Shinya 24 Dec 13, 2022
FLUTTER API: It's powerful navigation by gestures and taps. You can scroll from left to right or tap on the navigation icons.

scroll_navigation My other APIs Video Viewer Video Editor Helpers Features Fancy animations. Customizable colors. Works with the back button. Scrollin

Luis Felipe Murguia Ramos 14 Jun 14, 2022
Powerful, helpfull, extensible and highly customizable API's that wrap http client to make communication easier with Axelor server with boilerplate code free.

flutter_axelor_sdk Powerful, helpful, extensible and highly customizable API's that wrap http client to make communication easier with Axelor server w

Abd al-Rahman al-Ktefane 5 Dec 25, 2022
Win32 registry - A package that provides a friendly Dart API for accessing the Windows registry

A package that provides a friendly Dart API for accessing the Windows registry.

Tim Sneath 20 Dec 23, 2022
A powerful official extension library of Tab/TabBar/TabView, which support to scroll ancestor or child Tabs when current is overscroll, and set scroll direction and cache extent.

extended_tabs Language: English | 中文įŽ€äŊ“ A powerful official extension library of Tab/TabBar/TabView, which support to scroll ancestor or child Tabs whe

FlutterCandies 185 Dec 13, 2022
Zerker is a lightweight and powerful flutter graphic animation library

What is Zerker Zerker is a flexible and lightweight flutter canvas graphic animation library. With Zerker, you can create a lot of seemingly cumbersom

FlutterKit 519 Dec 31, 2022