FaaS (Function as a service) framework for writing portable Dart functions

Overview

Functions Framework for Dart

This is a community-supported project, meaning there is no official level of support. The code is not covered by any SLA or deprecation policy.

Feel free to start a discussion to share thoughts or open issues for bugs and feature requests.

Functions Framework Unit Tests Lint Test Conformance Tests
Dart

An open source FaaS (Function as a Service) framework for writing portable Dart functions, brought to you by the Google Dart and Cloud Functions teams.

The Functions Framework lets you write lightweight functions that run in many different environments, including:

Google Cloud Functions does not currently provide an officially supported Dart language runtime, but we're working to make running on Google Cloud Run as seamless and symmetric an experience as possible for your Dart Functions Framework projects.

The framework allows you to go from:

examples/hello/lib/functions.dart

import 'package:functions_framework/functions_framework.dart';
import 'package:shelf/shelf.dart';

@CloudFunction()
Response function(Request request) => Response.ok('Hello, World!');

To:

curl https://<your-app-url>
# Output: Hello, World!

All without needing to worry about writing an HTTP server or request handling logic.

See more demos under the examples directory.

Features

  • Invoke a function in response to a request
  • Automatically unmarshal events conforming to the CloudEvents spec
  • Portable between serverless platforms

Quickstart

From the Dart quickstart on your local machine:

$ cd examples/hello
$ docker build -t app .
...

$ docker run -it -p 8080:8080 --name demo --rm app
Listening on :8080

In another terminal:

$ curl localhost:8080
Hello, World!

See more quickstarts.

Contributing changes

See CONTRIBUTING.md for details on how to contribute to this project, including how to build and test your changes as well as how to properly format your code.

Licensing

Apache 2.0; see LICENSE for details.

Comments
  • Cloud Run + Cloud SQL hanging issue

    Cloud Run + Cloud SQL hanging issue

    Hello, we have been migrating our infra to Cloud Run + Cloud SQL Postgres + Shelf, and while everything worked great with HTTP handlers, once we've added Cloud SQL, we've encountered a roadblock. It seems like when the Cloud SQL is opened via the Unix socket on Cloud Run, the HTTP server hangs, and connections afterwards don't work. Locally, if the app uses the Unix socket created by the Cloud SQL proxy, it works ok. It's just in the Cloud Run environment where we are experiencing this issue.

    We are also unsure where this issue belongs, because Unix socket connections work with the Postgres library. Could it be possible that is an issue in the Dart SDK?

    Here is a very simple demo that deploys a Cloud Run function that uses a Cloud SQL instance. To test the issue one only needs to connect to the root of the host and then refresh the page.

    https://github.com/davidmartos96/cloud-run-dart-pg-issue

    opened by davidmartos96 25
  • Using a custom shelf server

    Using a custom shelf server

    Add customization capability of shelf http server by a custom function created by user.

    How to

    1. Make a file lib/shelf_custom.dart
    2. Make a function named shelfServer, this function receive three parameters
      • FunctionConfig config: Environment configuration
      • Handler handler: the functions framework handler.
        • Run selected function by FUNCTION_TARGET argument or default function in lib/functions.dart
      • FutureOr shutdownSignal: Is a signal for shutdownSignal server used by default shelf server.
    3. In a shelfServer function add your self code, example bellow
    4. Run build runner
    import 'dart:async';
    import 'dart:io';
    import 'package:functions_framework/functions_framework.dart';
    import 'package:shelf/shelf.dart';
    import 'package:shelf/shelf_io.dart';
    
    void shelfServer(FunctionConfig config, Handler handler,
        FutureOr<bool> shutdownSignal) async {
      final pipeline = const Pipeline()
          .addMiddleware(logRequests())
          .addHandler(handler);
    
      final server = await serve(
        pipeline,
        InternetAddress.anyIPv4,
        config.port,
      );
    
      print('Listening on ${server.address.host}:${server.port}');
    
      final force = await shutdownSignal;
      await server.close(force: force);
    }
    
    opened by skay1994 9
  • Cannot regenerate server file like described in the docs

    Cannot regenerate server file like described in the docs

    Observed result

    Following the steps in the Dart quickstart, I am geting an error message on the attempt to re-generate the server.dart file.

    $ dart run build_runner build --delete-conflicting-outputs
    Could not find the implicit file to run: bin/hello.dart.
    

    Expected result

    It should be possible to follow the example command in the project documentation without running into errors.

    Steps to reproduce

    git clone [email protected]:GoogleCloudPlatform/functions-framework-dart.git
    cd functions-framework-dart/examples/hello
    pub get
    dart run build_runner build --delete-conflicting-outputs
    

    Environment

    $ dart --version
    Dart SDK version: 2.10.5 (stable) (Tue Jan 19 13:05:37 2021 +0100) on "macos_x64"
    
    kind/question 
    opened by jmewes 9
  • Docker build failing

    Docker build failing

    Having an issue with the docker build on the hello world example, getting the following feedback:

    #9 5.446 Downloading vm_service 7.2.0... #9 125.7 Connection closed before full header was received

    executor failed running [/bin/sh -c dart pub get]: exit code: 69

    Any suggestions on a fix?

    kind/question 
    opened by DavoSwain 8
  • Update examples/raw_cloudevent to use official image

    Update examples/raw_cloudevent to use official image

    Will need to take a look at builder framework internals for 'Iterable<Object?>', which does not match the return type, 'Iterable<Object>', of the overridden method, 'StructuredSerializer.serialize'

    kind/bug 
    opened by subfuzion 8
  • Fix pub warnings for tool package before publishing

    Fix pub warnings for tool package before publishing

    Draft PR while I fix issues:

    Just discovered pub warnings while working on the docs and realizing we hadn't published to pub.dev yet:

    Package validation found the following errors:
    * You must have a LICENSE file in the root directory.
      An open-source license helps ensure people can legally use your code.
    * line 15, column 1 of lib/src/builder/builder.dart: source_gen is in the `dev_dependencies` section of `pubspec.yaml`. Packages used in lib/ must be declared in the `dependencies` section.
         ╷
      15 │ import 'package:source_gen/source_gen.dart';
         │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         ╵
    * line 16, column 1 of lib/src/builder/builder.dart: build is in the `dev_dependencies` section of `pubspec.yaml`. Packages used in lib/ must be declared in the `dependencies` section.
         ╷
      16 │ import 'package:build/build.dart';
         │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         ╵
    * line 19, column 1 of lib/src/builder/src/code_generator.dart: build is in the `dev_dependencies` section of `pubspec.yaml`. Packages used in lib/ must be declared in the `dependencies` section.
         ╷
      19 │ import 'package:build/build.dart';
         │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         ╵
    * line 21, column 1 of lib/src/builder/src/code_generator.dart: glob is in the `dev_dependencies` section of `pubspec.yaml`. Packages used in lib/ must be declared in the `dependencies` section.
         ╷
      21 │ import 'package:glob/glob.dart';
         │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         ╵
    * line 22, column 1 of lib/src/builder/src/code_generator.dart: source_gen is in the `dev_dependencies` section of `pubspec.yaml`. Packages used in lib/ must be declared in the `dependencies` section.
         ╷
      22 │ import 'package:source_gen/source_gen.dart';
         │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         ╵
    Package validation found the following potential issue:
    * ./CHANGELOG.md doesn't mention current version (0.3.0-dev).
      Consider updating it with notes on this version prior to publication.
    Sorry, your package is missing some requirements and can't be published yet.
    For more information, see: https://dart.dev/tools/pub/cmd/pub-lish.
    
    opened by subfuzion 8
  • Multiple functions/endpoints per project fails with 'There is no handler configured for FUNCTION_TARGET

    Multiple functions/endpoints per project fails with 'There is no handler configured for FUNCTION_TARGET "function"'

    Hey, I assumed I could have multiple function endpoints with a functions.dart looking something like this:

    
    @CloudFunction()
    void cloud_event(CloudEvent event, RequestContext context) {
      // ...
    }
    
    @CloudFunction()
    Response simple_request(Request request) => Response.ok('Hey!');
    
    // more cloud functions listed here...
    
    

    But when my app compiles I get the error message: "There is no handler configured for FUNCTION_TARGET 'function'."

    It appears in the Makefile you need to specify a function target, how does this work for projections with multiple functions?

    My Makefile: (taken from one of the examples)

    .PHONY: clean
    
    FUNCTION_TARGET = function
    PORT = 8080
    
    # bin/server.dart is the generated target for lib/functions.dart
    bin/server.dart:
    	dart run build_runner build --delete-conflicting-outputs
    
    build: bin/server.dart
    
    test: clean build
    	dart test
    
    clean:
    	dart run build_runner clean
    	rm -rf bin/server.dart
    
    run: build
    	dart run bin/server.dart --port=$(PORT) --target=$(FUNCTION_TARGET)
    
    kind/question 
    opened by jimmyff 7
  • Cannot resolve local dependencies from mono repo in Cloud Build docker image creation

    Cannot resolve local dependencies from mono repo in Cloud Build docker image creation

    I am using functions-framwork-dart in a mono repo. It has its own dedicated project. I am sharing code between projects by using other projects which include the shared code. I am referencing the project as a dependency like this in the pubspec.yaml of the functions project:

    dependencies:
      domain:
        path: ./../../domain
    

    Locally everything can be resolved properly but as soon as I deploy with gcloud beta run deploy it fails executing the docker file.

    ---> 61f398c71af6
    Step 2/12 : WORKDIR /app
     ---> Running in 4eea5b3c3ec4
    Removing intermediate container 4eea5b3c3ec4
     ---> 652a0d1dd253
    Step 3/12 : COPY pubspec.yaml /app/pubspec.yaml
     ---> 0825cd012304
    Step 4/12 : RUN dart pub get
     ---> Running in 05d05694046c
    Resolving dependencies...
    Because functions depends on domain from path which doesn't exist (could not find package domain at "../../domain"), version solving failed.
    The command '/bin/sh -c dart pub get' returned a non-zero code: 66
    ERROR
    ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 66
    

    I assume I need to also upload the dependency project folders. But how to do this? And how to then specify the Dockerfile path?

    opened by blaueeiner 6
  • Example not working on Windows 😁

    Example not working on Windows 😁

    This is what I did, also tried running build_runner command but no luck.

    I use Flutter so does that make some problem for the environment?

    PS C:\Users\yazee\Desktop\hello> dart run .\bin\server.dart
    Unhandled exception:
    SignalException: Failed to listen for SIGTERM, osError: OS Error: The request is not supported.
    , errno = 50
    

    Dart Version

    PS C:\Users\yazee> dart --version
    Dart SDK version: 2.12.0-141.0.dev (dev) (Thu Dec 10 06:04:48 2020 -0800) on "windows_x64"
    
    opened by YazeedAlKhalaf 6
  • Add Firebase SDK

    Add Firebase SDK

    Feature Add Firebase SDK to Functions Framework so native Dart in GCP can call Firebase/Firestore.

    Use Case Flutter developers using Firestore would be much more productive if they used Dart in their backend with calls to a Firestore API. Stack would be Dart/Flutter on the front end and Dart/Firestore on the backend.

    When debugging backend code, the ability to add breakpoints and step through Dart code while observing the Firestore emulator would be a game changer.

    Prior Online Discussions Reddit 11/2020 Reddit 7/2021

    opened by buttonsrtoys 5
  • Cloudevent example use official image

    Cloudevent example use official image

    This example updates examples/raw_cloudevent. It also addresses an issue I noted because we weren't committing pubspec.lock files with the sample apps. It removes the top level .gitignore and .dockerignore files and places them individually tailored for the library packages and sample applications.

    Closes #229

    opened by subfuzion 5
  • build(deps): bump actions/cache from 3.0.11 to 3.2.2

    build(deps): bump actions/cache from 3.0.11 to 3.2.2

    Bumps actions/cache from 3.0.11 to 3.2.2.

    Release notes

    Sourced from actions/cache's releases.

    v3.2.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/cache/compare/v3.2.1...v3.2.2

    v3.2.1

    What's Changed

    Full Changelog: https://github.com/actions/cache/compare/v3.2.0...v3.2.1

    v3.2.0

    What's Changed

    New Contributors

    ... (truncated)

    Changelog

    Sourced from actions/cache's changelog.

    Releases

    3.0.0

    • Updated minimum runner version support from node 12 -> node 16

    3.0.1

    • Added support for caching from GHES 3.5.
    • Fixed download issue for files > 2GB during restore.

    3.0.2

    • Added support for dynamic cache size cap on GHES.

    3.0.3

    • Fixed avoiding empty cache save when no files are available for caching. (issue)

    3.0.4

    • Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. (issue)

    3.0.5

    • Removed error handling by consuming actions/cache 3.0 toolkit, Now cache server error handling will be done by toolkit. (PR)

    3.0.6

    • Fixed #809 - zstd -d: no such file or directory error
    • Fixed #833 - cache doesn't work with github workspace directory

    3.0.7

    • Fixed #810 - download stuck issue. A new timeout is introduced in the download process to abort the download if it gets stuck and doesn't finish within an hour.

    3.0.8

    • Fix zstd not working for windows on gnu tar in issues #888 and #891.
    • Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 60 minutes.

    3.0.9

    • Enhanced the warning message for cache unavailablity in case of GHES.

    3.0.10

    • Fix a bug with sorting inputs.
    • Update definition for restore-keys in README.md

    3.0.11

    • Update toolkit version to 3.0.5 to include @actions/core@^1.10.0
    • Update @actions/cache to use updated saveState and setOutput functions from @actions/core@^1.10.0

    3.1.0-beta.1

    • Update @actions/cache on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. (issue)

    3.1.0-beta.2

    • Added support for fallback to gzip to restore old caches on windows.

    3.1.0-beta.3

    ... (truncated)

    Commits
    • 4723a57 Revert compression changes related to windows but keep version logging (#1049)
    • d1507cc Merge pull request #1042 from me-and/correct-readme-re-windows
    • 3337563 Merge branch 'main' into correct-readme-re-windows
    • 60c7666 save/README.md: Fix typo in example (#1040)
    • b053f2b Fix formatting error in restore/README.md (#1044)
    • 501277c README.md: remove outdated Windows cache tip link
    • c1a5de8 Upgrade codeql to v2 (#1023)
    • 9b0be58 Release compression related changes for windows (#1039)
    • c17f4bf GA for granular cache (#1035)
    • ac25611 docs: fix an invalid link in workarounds.md (#929)
    • 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)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump actions/checkout from 3.1.0 to 3.2.0

    build(deps): bump actions/checkout from 3.1.0 to 3.2.0

    Bumps actions/checkout from 3.1.0 to 3.2.0.

    Release notes

    Sourced from actions/checkout's releases.

    v3.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3...v3.2.0

    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)
    dependencies 
    opened by dependabot[bot] 0
  • Added customMiddleware to allow for easy request intercepting

    Added customMiddleware to allow for easy request intercepting

    • feat: Exposes autoCompress via serve so it can be passed to the created server
    • feat: Exposes a customMiddleware attribute via serve for CORS support
    • fix: Fixed fullstack/frontend when running on Flutter Web as it was previously failing due to lack of CORS support
    opened by jpeiffer 6
  • dartfn-generated project fails tests locally

    dartfn-generated project fails tests locally

    I just tried creating a project with dartfn, and I can't get the generated code to pass its included tests:

    ~/source/hellow> dartfn generate helloworld
    project: hellow
    Creating helloworld application `hellow`:
      /Users/redbrogdon/source/hellow/.gitignore
      /Users/redbrogdon/source/hellow/Dockerfile
      /Users/redbrogdon/source/hellow/Makefile
      /Users/redbrogdon/source/hellow/README.md
      /Users/redbrogdon/source/hellow/analysis_options.yaml
      /Users/redbrogdon/source/hellow/bin/server.dart
      /Users/redbrogdon/source/hellow/lib/functions.dart
      /Users/redbrogdon/source/hellow/pubspec.yaml
      /Users/redbrogdon/source/hellow/test/function_test.dart
    9 files written.
    
    --> to provision required packages, run 'pub get'
    
    ~/source/hellow> dart pub get
    Resolving dependencies... (1.3s)
    + _fe_analyzer_shared 29.0.0
    + analyzer 2.6.0
    + args 2.3.0
    + async 2.8.2
    + boolean_selector 2.1.0
    + build 2.1.1
    + build_config 1.0.0
    + build_daemon 3.0.1
    + build_resolvers 2.0.4
    + build_runner 2.1.4
    + build_runner_core 7.2.2
    + built_collection 5.1.1
    + built_value 8.1.2
    + charcode 1.3.1
    + checked_yaml 2.0.1
    + cli_util 0.3.5
    + code_builder 4.1.0
    + collection 1.15.0
    + convert 3.0.1
    + coverage 1.0.3
    + crypto 3.0.1
    + dart_style 2.2.0
    + file 6.1.2
    + fixnum 1.0.0
    + frontend_server_client 2.1.2
    + functions_framework 0.4.1
    + functions_framework_builder 0.4.4
    + glob 2.0.2
    + graphs 2.1.0
    + http 0.13.4
    + http_multi_server 3.0.1
    + http_parser 4.0.0
    + io 1.0.3
    + js 0.6.3
    + json_annotation 4.3.0
    + logging 1.0.2
    + matcher 0.12.11
    + meta 1.7.0
    + mime 1.0.0
    + node_preamble 2.0.1
    + package_config 2.0.2
    + path 1.8.0
    + pool 1.5.0
    + pub_semver 2.1.0
    + pubspec_parse 1.1.0
    + shelf 1.2.0
    + shelf_packages_handler 3.0.0
    + shelf_static 1.1.0
    + shelf_web_socket 1.0.1
    + source_gen 1.1.1
    + source_helper 1.3.0
    + source_map_stack_trace 2.1.0
    + source_maps 0.10.10
    + source_span 1.8.1
    + stack_trace 1.10.0
    + stream_channel 2.1.0
    + stream_transform 2.0.0
    + string_scanner 1.1.0
    + term_glyph 1.2.0
    + test 1.18.2
    + test_api 0.4.5
    + test_core 0.4.5
    + test_process 2.0.2
    + timing 1.0.0
    + typed_data 1.3.0
    + vm_service 7.3.0
    + watcher 1.0.1
    + web_socket_channel 2.1.0
    + webkit_inspection_protocol 1.0.0
    + yaml 3.1.0
    Changed 70 dependencies!
    
    ~/source/hellow> dart test --chain-stack-traces
    Building package executable... (5.1s)
    Built test:test.
    00:02 +0 -1: test/function_test.dart: defaults [E]
      Expected: <0>
        Actual: <-15>
      Process `dart bin/server.dart` had an unexpected exit code.
    
      package:test_api                              expect
      package:test_process/test_process.dart 228:5  TestProcess.shouldExit
    
    
    Process `dart bin/server.dart` exited with exitCode -15. Output:
        Listening on :8080
        2021-10-16T15:58:22.530506  0:00:00.005658 GET     [200] /
    00:02 +0 -1: Some tests failed.
    

    Any idea what might be going wrong for me? Have I missed a step somewhere?

    My Dart version is:

    Dart SDK version: 2.14.4 (stable) (Wed Oct 13 11:11:32 2021 +0200) on "macos_x64"
    
    opened by RedBrogdon 9
  • Prepare or Initialise hook?

    Prepare or Initialise hook?

    I'm using GetIt for dependency injection. Is there a prepare/initialise method I could hook in to configure the DI or should I do this in the function body of each @CloudFunction()?

    Thanks

    kind/enhancement 
    opened by jimmyff 4
  • Parsing pub sub messages

    Parsing pub sub messages

    Hi, I'm moving over some of my Pub Sub endpoints to functions_framework (from firebase_functions_interop), I've just started with the package so still finding my way around. I've seen support for CloudEvent (which are new to me) and I'm wondering if I can use those to parse pub sub messages ?

    I see a mention of parsing the pub sub message data structure as a CloudEvent here: https://github.com/GoogleCloudPlatform/functions-framework-dart/issues/1#issuecomment-740127873

    There is a CloudEvent class included in this package, do I need to make a new similar class for PubSubMessage? I think doing that I might be complicating the situation as I might be able to use the existing CloudEvent class (perhaps with like the schema for pub sub messages)

    If this is feasible, this might be a really cool thing to include an example for?

    kind/enhancement 
    opened by jimmyff 22
Releases(functions_framework-v0.3.1)
  • functions_framework-v0.3.1(Dec 29, 2020)

    • functions_framework.dart
      • RequestContext
        • Added request property to access original request.
        • Deprecated headers and headersAll - use request instead.
    • Fix exception on Windows due to SIGTERM handler (#153).
    Source code(tar.gz)
    Source code(zip)
  • dartfn-v0.3.1(Dec 24, 2020)

    This adds an early version of a tool (dartfn) that you can use to generate sample projects from templates. Currently there are three templates:

    • helloworld - a basic HTTP handler function
    • json - a simple function handler that accepts and sends JSON
    • cloudevent - a simple cloudevent function handler
    Source code(tar.gz)
    Source code(zip)
Volt is a wrapper over the Revolt API for easily writing bots using the Dart language.

Volt is a wrapper over the Revolt API for easily writing bots using the Dart language. It is currently in active development so not all of the functionality has yet been implemented.

null 8 Dec 13, 2022
A pure dart package to apply useful rate limiting strategies on regular functions.

Rate limiting is a strategy for limiting an action. It puts a cap on how often someone can repeat an action within a certain timeframe. Using rate_limiter we made it easier than ever to apply these strategies on regular dart functions.

Stream 24 Dec 14, 2022
Contains utility functions and classes in the style of dart:collection to make working with collections easier

The collection package for Dart contains a number of separate libraries with utility functions and classes that makes working with collections easier.

Dart 273 Dec 27, 2022
The diozz package helps you to deal with APIs easily and speed up the process of writing code.

Diozz The diozz package helps you to deal with APIs easily and speed up the process of writing code. Installation Diozz Use that command in the termin

Mohamed Abu.elezz 4 Nov 13, 2022
Extension functions on ValueListenable that allows you to work with them almost as if it was a synchronous stream.

functional_listener Extension functions on ValueListenable that allows you to work with them almost as if it was a synchronous stream. Each extension

null 54 Oct 9, 2022
For test background service try to run ios

workmanager_example Demonstrates how to use the workmanager plugin. Getting Started This project is a starting point for a Flutter application. A few

Taylan YILDIZ 2 Sep 20, 2021
Coneectivity Service is for checking the internet connection using provider

Features Coneectivity Service is for checking the internet connection using provider. Installation Add the latest version of package to your pubspec.y

Mahmudul Hasan Shifat 0 Nov 28, 2021
This is a simple class to package up and send requests to the Kroki.io web service.

Kroki.dart This is a simple class to package up and send requests to the Kroki.io web service. A live editor to editing diagrams that Kroki supports c

Tim Maffett 1 Jun 8, 2022
Auto is a Flutter automated testing framework developed for testers.

Auto Auto-A simpler Flutter UI automation test solution. No need to write any code Recording test scripts is very simple Mult

null 19 Oct 12, 2022
An extensible flutter-framework

dart_board An extensible flutter-framework Dart Board allows you to break your app into features and then integration cleanly and consistently. It's e

Adam Hammer 56 Dec 19, 2022
Rocket is a parsing framework for parsing binary data structures using efficient parsing algorithms

rocket Version 0.1.10 (BETA) Rocket is a parsing framework for parsing binary data structures using efficient parsing algorithms. Breaking change: The

null 5 Dec 5, 2021
Official CLI for the GetX framework

Official CLI for the GetX framework

Shahanul Haque Shawon 0 Nov 23, 2021
Mustang: A framework to build Flutter applications

Mustang A framework to build Flutter applications. Following features are available out of the box. State Management Persistence Cache File layout and

null 10 Oct 26, 2022
A Dart build script that downloads the Protobuf compiler and Dart plugin to streamline .proto to .dart compilation.

A Dart build script that downloads the Protobuf compiler and Dart plugin to streamline .proto to .dart compilation.

Julien Scholz 10 Oct 26, 2022
Dart wrapper via dart:ffi for https://github.com/libusb/libusb

libusb Dart wrapper via dart:ffi for https://github.com/libusb/libusb Environment Windows(10) macOS Linux(Ubuntu 18.04 LTS) Usage Checkout example Fea

Woodemi Co., Ltd 28 Dec 20, 2022
Extensible Dart interpreter for Dart with full interop

dart_eval is an extensible interpreter for the Dart language, written in Dart. It's powered under the hood by the Dart analyzer, so it achieves 100% c

Ethan 169 Dec 28, 2022
Quiver is a set of utility libraries for Dart that makes using many Dart libraries easier and more convenient, or adds additional functionality.

Quiver is a set of utility libraries for Dart that makes using many Dart libraries easier and more convenient, or adds additional functionality.

Google 905 Jan 2, 2023
AOP for Flutter(Dart)

AspectD Salute to AspectJ. AspectD is an AOP(aspect oriented programming) framework for dart. Like other traditional aop framework, AspectD provides c

null 1k Jan 7, 2023
Environment specific config generator for Dart and Flutter applications during CI/CD builds

Environment Config Generator Environment specific config generator. Allows to specify env configuration during CI/CD build. Primarily created to simpl

Denis Beketsky 86 Dec 2, 2022