Examples showing how to use Rid in order to build Dart/Flutter apps integrated with Rust.

Overview

rid-examples

Examples showing how to use Rid in order to build Dart/Flutter apps integrated with Rust.

What is Rid?

Rid stands for Rust integrates Dart and is a tool I am working on that allows to call Rust functions from Dart and Flutter applications by simply annotating them. Its main goal is to make it super easy to implement your UI in Flutter and the logic in Rust.

This in turn allows you to benefit from the respective strength of each platform.

Learn more by following the Getting Started guide.

How does Rid work?

Rid consumes the annotations added to your Rust code to generate all the FFI boilerplate to interact with them from Dart /Flutter.

Additionally it generates extension methods on entities, such as models in order to expose an API on the Dart/Flutter end that is super fun to work with.

Learn more rids application architecture.

Examples

Flutter

Dart Only

Is Rid open sourced?

Rid is Sponsorware and thus not open sourced yet.

Please learn more here about how you can sponsor rid via a monthly contribution and when rid will be fully open sourced.

LICENSE

MIT

Comments
  • wasm example todo app

    wasm example todo app

    Even though rid doesn't fully support WASM yet, this example shows how in conjunction with the wasmjsgen library I created WASM support is possible.

    I added a live version of this example on the gh-pages branch of this repo.

    I'll publish a blog post detailing shortcomings + challenges, mainly threads are difficult to make work + sending anything that is not held onto in Rust is tricky (I couldn't make it work). Instead I'm sending a JSON string to transmit filtered Todos.

    Interested what @MGlolenstine and @lucaszanella think .. will merge this soon to be ready for the blog post. Please LMK also if you find issues with this.

    opened by thlorenz 5
  • adds linux script

    adds linux script

    I forgot to use the linux script. I made one and it works. I also made it copy the libraries to the right place, and I also made the flutter binary link against libtodo.a, but I don't know if it's possible to access libtodo.a from Flutter's FFI, so I still pass the .so name through LD_LIBRARY_PATH. Hope you like it.

    opened by lattice0 3
  • reddit_ticker: example app

    reddit_ticker: example app

    This is the implementation I went through in a tutorial commit by commit.

    The tutorial demonstrates how to build a reddit ticker app which makes requests to the network and stores data in a sqlite database. All this is done on the Rust end.

    The interaction from Flutter to Rust is handled via cubits.

    Developers watching the tutorial should use the detailed commits in this pull request in order to review the code added in each part of the screencast.

    The app was tested to work on macOS on an Android device and inside an iPhone emulator.

    opened by thlorenz 1
  • todo example build failing on macOS without additional steps

    todo example build failing on macOS without additional steps

    (Apologies if this is not the place to report this, and awesome work on rid – super happy to be sponsoring your efforts!)

    I'm successful at building and running the todo example on Linux with the provided steps, but failing at it on a M1 based Mac on macOS 11.3. rid-build and rid-ffi in the rid repo itself build happily (I have nightly rust toolchain installed), flutter doctor reports success, etc.

    ./sh/bindgen in flutter/todo however fails thusly:

    2021-09-26 16:20:26,839 DEBUG [rid_build::ffigen::run_ffigen] Running '"dart" "run" "ffigen" "--config" "/var/folders/h0/dgzvb85s2v719b_p2mxggkyr0000gn/T/.tmp6WxOrH/ffigen_config.yaml"' from: '"/Users/mz2/Developer/rid-examples/flutter/todo"'
    thread 'main' panicked at 'Build failed: 
    'dart run ffigen' failed to run successfully
    stderr: 
    stdout: Running in Directory: '/Users/mz2/Developer/rid-examples/flutter/todo'
    [SEVERE] : Couldn't find dynamic library in default locations.
    [SEVERE] : Please supply one or more path/to/llvm in ffigen's config under the key 'llvm-path'.
    

    I have tried providing llvm-path via the pubspec.yaml (I thought it's the pubspec.yaml in flutter/todo/plugin?) by adding

    ffigen:
      llvm-path: /Users/mz2/homebrew/opt/llvm
    

    (I installed llvm via homebrew, also tried the version I have via Xcode 13 with no luck)

    Given there indeed exists /Users/mz2/homebrew/opt/llvm/include and /Users/mz2/homebrew/opt/llvm/lib under that path, I must be providing the LLVM path somehow incorrectly, or to the wrong context? Also tried passing the actual path to libclang.dylib with DYLD_LIBRARY_PATH ./sh/bindgen but that didn't make a difference either.

    Again, thanks for your work and sorry if this is not the place this issue should be reported.

    opened by mz2 1
  • chore: adapting examples to latest rid build API

    chore: adapting examples to latest rid build API

    Recent work on rid broke the examples build setup. Overall things got simpler. Mainly no ffigen config needs to be provided anymore. Dart >= 2.13.0 is required in order to make typedefs work.

    The dart todo example was entirely broken and was updated to match the test example included with rid.

    • todo-dart: adapted to latest rid build API
    • todo: adapted to latest rid build API
    • todo-cubit: adapted to latest rid build API
    opened by thlorenz 1
  • Linux support for examples

    Linux support for examples

    I made all examples compile on Linux. I added desktop support for todo_cubit.

    I still can't get Dart example to build, though. The compilation complains about a lot of redefinitions and conflicting implementations.

    Compilation errors

    It seems like some parts of the code are duplicated.

    ❯ cargo run rid_build
       Compiling rid_dart_todo v0.1.0 (/home/life/rustProjects/rid-examples/dart/todo)
    error[E0252]: the name `RidStore` is defined multiple times
       --> src/app.rs:137:5
        |
    3   | use rid::RidStore;
        |     ------------- previous import of the trait `RidStore` here
    ...
    137 | use rid::RidStore;
        |     ^^^^^^^^^^^^^ `RidStore` reimported here
        |
        = note: `RidStore` must be defined only once in the type namespace of this module
    
    error: rid::model attribute can only be applied to structs and c-style enums
       --> src/app.rs:135:1
        |
    135 | use std::fmt::Display;
        | ^^^^^^^^^^^^^^^^^^^^^^
    
    error[E0428]: the name `__rid_Store_dart_mod` is defined multiple times
       --> src/app.rs:146:12
        |
    12  | pub struct Store {
        |            ----- previous definition of the module `__rid_Store_dart_mod` here
    ...
    146 | pub struct Store {
        |            ^^^^^ `__rid_Store_dart_mod` redefined here
        |
        = note: `__rid_Store_dart_mod` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `__rid_mod_rid_rawstore_debug` is defined multiple times
       --> src/app.rs:142:1
        |
    8   | #[rid::store]
        | ------------- previous definition of the module `__rid_mod_rid_rawstore_debug` here
    ...
    142 | #[rid::store]
        | ^^^^^^^^^^^^^ `__rid_mod_rid_rawstore_debug` redefined here
        |
        = note: `__rid_mod_rid_rawstore_debug` must be defined only once in the type namespace of this module
        = note: this error originates in the attribute macro `rid::store` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0428]: the name `store` is defined multiple times
       --> src/app.rs:146:12
        |
    12  | pub struct Store {
        |            ----- previous definition of the module `store` here
    ...
    146 | pub struct Store {
        |            ^^^^^ `store` redefined here
        |
        = note: `store` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `__rid_store_ffi` is defined multiple times
       --> src/app.rs:142:1
        |
    8   | #[rid::store]
        | ------------- previous definition of the module `__rid_store_ffi` here
    ...
    142 | #[rid::store]
        | ^^^^^^^^^^^^^ `__rid_store_ffi` redefined here
        |
        = note: `__rid_store_ffi` must be defined only once in the type namespace of this module
        = note: this error originates in the attribute macro `rid::store` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0428]: the name `Store_field_wrappers` is defined multiple times
       --> src/app.rs:146:12
        |
    12  | pub struct Store {
        |            ----- previous definition of the module `Store_field_wrappers` here
    ...
    146 | pub struct Store {
        |            ^^^^^ `Store_field_wrappers` redefined here
        |
        = note: `Store_field_wrappers` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `Store` is defined multiple times
       --> src/app.rs:146:1
        |
    12  | pub struct Store {
        | ---------------- previous definition of the type `Store` here
    ...
    146 | pub struct Store {
        | ^^^^^^^^^^^^^^^^ `Store` redefined here
        |
        = note: `Store` must be defined only once in the type namespace of this module
    
    error: custom attribute panicked
       --> src/app.rs:219:1
        |
    219 | #[rid::export]
        | ^^^^^^^^^^^^^^
        |
        = help: message: use-after-free in `proc_macro` handle
    
    error[E0428]: the name `__rid_Todo_dart_mod` is defined multiple times
       --> src/app.rs:246:12
        |
    112 | pub struct Todo {
        |            ---- previous definition of the module `__rid_Todo_dart_mod` here
    ...
    246 | pub struct Todo {
        |            ^^^^ `__rid_Todo_dart_mod` redefined here
        |
        = note: `__rid_Todo_dart_mod` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `__rid_mod_rid_rawtodo_debug` is defined multiple times
       --> src/app.rs:244:1
        |
    110 | #[rid::model]
        | ------------- previous definition of the module `__rid_mod_rid_rawtodo_debug` here
    ...
    244 | #[rid::model]
        | ^^^^^^^^^^^^^ `__rid_mod_rid_rawtodo_debug` redefined here
        |
        = note: `__rid_mod_rid_rawtodo_debug` must be defined only once in the type namespace of this module
        = note: this error originates in the attribute macro `rid::model` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0428]: the name `__rid_todo_ffi` is defined multiple times
       --> src/app.rs:244:1
        |
    110 | #[rid::model]
        | ------------- previous definition of the module `__rid_todo_ffi` here
    ...
    244 | #[rid::model]
        | ^^^^^^^^^^^^^ `__rid_todo_ffi` redefined here
        |
        = note: `__rid_todo_ffi` must be defined only once in the type namespace of this module
        = note: this error originates in the attribute macro `rid::model` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0428]: the name `Todo` is defined multiple times
       --> src/app.rs:246:1
        |
    112 | pub struct Todo {
        | --------------- previous definition of the type `Todo` here
    ...
    246 | pub struct Todo {
        | ^^^^^^^^^^^^^^^ `Todo` redefined here
        |
        = note: `Todo` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `__rid_mod_rid_rawtodo_display` is defined multiple times
       --> src/app.rs:245:44
        |
    111 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                                            ------------ previous definition of the module `__rid_mod_rid_rawtodo_display` here
    ...
    245 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                                            ^^^^^^^^^^^^ `__rid_mod_rid_rawtodo_display` redefined here
        |
        = note: `__rid_mod_rid_rawtodo_display` must be defined only once in the type namespace of this module
        = note: this error originates in the derive macro `rid::Display` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0428]: the name `Filter` is defined multiple times
       --> src/app.rs:324:1
        |
    270 | pub enum Filter {
        | --------------- previous definition of the type `Filter` here
    ...
    324 | pub enum Filter {
        | ^^^^^^^^^^^^^^^ `Filter` redefined here
        |
        = note: `Filter` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `__rid_mod_rid_filter_display` is defined multiple times
       --> src/app.rs:323:24
        |
    269 | #[derive(Clone, Debug, rid::Display)]
        |                        ------------ previous definition of the module `__rid_mod_rid_filter_display` here
    ...
    323 | #[derive(Clone, Debug, rid::Display)]
        |                        ^^^^^^^^^^^^ `__rid_mod_rid_filter_display` redefined here
        |
        = note: `__rid_mod_rid_filter_display` must be defined only once in the type namespace of this module
        = note: this error originates in the derive macro `rid::Display` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0428]: the name `__rid_msg_ffi` is defined multiple times
       --> src/app.rs:346:10
        |
    292 | pub enum Msg {
        |          --- previous definition of the module `__rid_msg_ffi` here
    ...
    346 | pub enum Msg {
        |          ^^^ `__rid_msg_ffi` redefined here
        |
        = note: `__rid_msg_ffi` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `__rid_ensuring_Reply_is_defined` is defined multiple times
       --> src/app.rs:343:1
        |
    289 | #[rid::message(Reply)]
        | ---------------------- previous definition of the module `__rid_ensuring_Reply_is_defined` here
    ...
    343 | #[rid::message(Reply)]
        | ^^^^^^^^^^^^^^^^^^^^^^ `__rid_ensuring_Reply_is_defined` redefined here
        |
        = note: `__rid_ensuring_Reply_is_defined` must be defined only once in the type namespace of this module
        = note: this error originates in the attribute macro `rid::message` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0428]: the name `Msg` is defined multiple times
       --> src/app.rs:346:1
        |
    292 | pub enum Msg {
        | ------------ previous definition of the type `Msg` here
    ...
    346 | pub enum Msg {
        | ^^^^^^^^^^^^ `Msg` redefined here
        |
        = note: `Msg` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `Reply` is defined multiple times
       --> src/app.rs:364:1
        |
    310 | pub enum Reply {
        | -------------- previous definition of the type `Reply` here
    ...
    364 | pub enum Reply {
        | ^^^^^^^^^^^^^^ `Reply` redefined here
        |
        = note: `Reply` must be defined only once in the type namespace of this module
    
    error[E0428]: the name `__rid_reply_mod` is defined multiple times
       --> src/app.rs:364:10
        |
    310 | pub enum Reply {
        |          ----- previous definition of the module `__rid_reply_mod` here
    ...
    364 | pub enum Reply {
        |          ^^^^^ `__rid_reply_mod` redefined here
        |
        = note: `__rid_reply_mod` must be defined only once in the type namespace of this module
    
    warning: unused import: `rid::RidStore`
       --> src/app.rs:137:5
        |
    137 | use rid::RidStore;
        |     ^^^^^^^^^^^^^
        |
        = note: `#[warn(unused_imports)]` on by default
    
    error[E0119]: conflicting implementations of trait `std::clone::Clone` for type `Filter`
       --> src/app.rs:323:10
        |
    269 | #[derive(Clone, Debug, rid::Display)]
        |          ----- first implementation here
    ...
    323 | #[derive(Clone, Debug, rid::Display)]
        |          ^^^^^ conflicting implementation for `Filter`
        |
        = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::cmp::PartialEq` for type `Todo`
       --> src/app.rs:245:17
        |
    111 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                 --------- first implementation here
    ...
    245 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                 ^^^^^^^^^ conflicting implementation for `Todo`
        |
        = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::cmp::Eq` for type `Todo`
       --> src/app.rs:245:28
        |
    111 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                            -- first implementation here
    ...
    245 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                            ^^ conflicting implementation for `Todo`
        |
        = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::cmp::Ord` for type `Todo`
       --> src/app.rs:252:1
        |
    118 | impl Ord for Todo {
        | ----------------- first implementation here
    ...
    252 | impl Ord for Todo {
        | ^^^^^^^^^^^^^^^^^ conflicting implementation for `Todo`
    
    error[E0119]: conflicting implementations of trait `std::cmp::PartialOrd` for type `Todo`
       --> src/app.rs:245:32
        |
    111 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                                ---------- first implementation here
    ...
    245 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                                ^^^^^^^^^^ conflicting implementation for `Todo`
        |
        = note: this error originates in the derive macro `PartialOrd` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::marker::StructuralPartialEq` for type `Todo`
       --> src/app.rs:245:17
        |
    111 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                 --------- first implementation here
    ...
    245 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                 ^^^^^^^^^ conflicting implementation for `Todo`
        |
        = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::marker::StructuralEq` for type `Todo`
       --> src/app.rs:245:28
        |
    111 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                            -- first implementation here
    ...
    245 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |                            ^^ conflicting implementation for `Todo`
        |
        = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::fmt::Debug` for type `Store`
       --> src/app.rs:145:10
        |
    11  | #[derive(Debug)]
        |          ----- first implementation here
    ...
    145 | #[derive(Debug)]
        |          ^^^^^ conflicting implementation for `Store`
        |
        = note: this error originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::fmt::Debug` for type `Todo`
       --> src/app.rs:245:10
        |
    111 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |          ----- first implementation here
    ...
    245 | #[derive(Debug, PartialEq, Eq, PartialOrd, rid::Display)]
        |          ^^^^^ conflicting implementation for `Todo`
        |
        = note: this error originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::fmt::Debug` for type `Filter`
       --> src/app.rs:323:17
        |
    269 | #[derive(Clone, Debug, rid::Display)]
        |                 ----- first implementation here
    ...
    323 | #[derive(Clone, Debug, rid::Display)]
        |                 ^^^^^ conflicting implementation for `Filter`
        |
        = note: this error originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::fmt::Debug` for type `Msg`
       --> src/app.rs:345:10
        |
    291 | #[derive(Debug)]
        |          ----- first implementation here
    ...
    345 | #[derive(Debug)]
        |          ^^^^^ conflicting implementation for `Msg`
        |
        = note: this error originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    error[E0119]: conflicting implementations of trait `std::fmt::Display` for type `Todo`
       --> src/app.rs:258:1
        |
    124 | impl Display for Todo {
        | --------------------- first implementation here
    ...
    258 | impl Display for Todo {
        | ^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Todo`
    
    error[E0119]: conflicting implementations of trait `std::fmt::Display` for type `Filter`
       --> src/app.rs:330:1
        |
    276 | impl Display for Filter {
        | ----------------------- first implementation here
    ...
    330 | impl Display for Filter {
        | ^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Filter`
    
    error[E0119]: conflicting implementations of trait `rid::RidStore<Msg>` for type `Store`
       --> src/app.rs:152:1
        |
    18  | impl RidStore<Msg> for Store {
        | ---------------------------- first implementation here
    ...
    152 | impl RidStore<Msg> for Store {
        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Store`
    
    error[E0119]: conflicting implementations of trait `rid::allo_isolate::IntoDart` for type `Reply`
       --> src/app.rs:364:10
        |
    310 | pub enum Reply {
        |          ----- first implementation here
    ...
    364 | pub enum Reply {
        |          ^^^^^ conflicting implementation for `Reply`
    
    error: aborting due to 36 previous errors; 1 warning emitted
    
    Some errors have detailed explanations: E0119, E0252, E0428.
    For more information about an error, try `rustc --explain E0119`.
    error: could not compile `rid_dart_todo`
    
    To learn more, run the command again with --verbose.
    
    opened by MGlolenstine 1
Owner
Thorsten Lorenz
Open sourcerer with focus on TypeScript/JavaScript, Rust and Flutter/Dart. Thanks for your support! 🙏 ❤️
Thorsten Lorenz
Flutter project integrated with Supabase, the Firebase open source alternative

This is a Flutter project integrated with Supabase, the Firebase open source alternative. This project is a sandbox for playground for Flutter & Supabase integration.

anegrete 13 Oct 18, 2022
On making this project I learned using Getx to change between dark mode to light mode, learned about the time zone and schedule notification , That I have Integrated in this small app, This is the small section of making a todo app.

On making this project I learned using Getx to change between dark mode to light mode, learned about the time zone and schedule notification , That I have Integrated in this small app, This is the small section of making a todo app.

Pawan Kumar 1 Aug 22, 2022
A flutter app helps to keep track of what money is spent in order to help save

HaslTy This application helps to keep track of what money is spent in order to help save. Tools State management (BLoC). Local database (sqflite packa

Ahmed Khairy 4 Oct 29, 2021
To keep track of dogs food every day in order to prevent overlaps and double feeding

This application is just a demo on how to use StreamBuilders with Firebase. Brief Description: All the people having this application, can see changes

Kamand Shayegan 1 May 4, 2022
Flutter_firebase_uber - An Uber like application to order a ride or share one. t

An Uber-like application to order a ride or share one. the main goal of this application is to teach young refugee communities in Iraq, to develop an MVP themselves. We've used Flutter, Firebase Auth, Google Maps, Firebase Firestore, Firebase Database

Hooshyar 11 Sep 29, 2022
Check out the new style for App Design aims for the Vegetable Order Service using jetpack compose

VegetableOrderUI-Android Check out the new style for App Design aims for the Vegetable Order Service using jetpack compose... ?? ?? ?? ?? Screenshots

Shashank Singhal 329 Dec 29, 2022
🛒 A simple Shop App to browse, add your own products, add products to cart and later order them.

?? A simple Shop App to browse, add your own products, add products to cart and later order them.

Hemant Rajput 2 Jun 8, 2022
Several live code examples I've shown during my live streams.

Live Code Examples Several live code examples I've shown during my live sessions on Twitch (in french only, sorry...). 001 - Sticky Headers The idea o

Aloïs Deniel 4 Sep 24, 2021
An Example project showing usage of drupal_linkset_menu flutter package

drupal_menu_flutter An Example project showing usage of drupal_linkset_menu flutter package Getting Started This project is a starting point for a Flu

Aqib Gatoo 4 May 11, 2021
An example showing how to handle common scrolling gesture conflicts in Flutter.

scroll_master An example showing how to handle common scrolling gesture conflicts in Flutter.

null 11 Nov 11, 2022
A simple recipe showing application made using Flutter , using card Views MaterialPageRoute etc.

recipes A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

Akash Srivastava 1 Oct 31, 2021
Quiz app contains flutter questions only and showing result what you got.kind of mcq pattern

quiz A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is

jagadeesh 2 Jan 24, 2022
A flutter musical app showing different sounds in the app

Xylophone_App_With_BuildKeyFunc A new Flutter project. A musical app showing different sounds in the app. Build key function is made in this app to si

Avinandan Bose 1 Mar 22, 2022
A musical Flutter app showing different sounds in the app

Xylophone_App A new Flutter project. A musical app showing different sounds in the app. Getting Started This project is a starting point for a Flutter

Avinandan Bose 2 Sep 9, 2022
A flutter clean architecture series, the way we build clean apps.

Flutter Clean Archeticture Series ?? "Making the world a better place" ✅ Full Articles You can check out the full Medium articles on devmuaz ✅ Branche

AbdulMuaz Aqeel 267 Jan 4, 2023
fl_heatmap - A heatmap build for Flutter apps

fl_heatmap - A heatmap build for Flutter apps

Timo Bähr 6 Sep 19, 2022
A collection of sample apps that use Stream

Flutter samples Quick Links Register to get an API key for Stream Chat Flutter Chat Tutorial Chat UI Kit Flutter SDK Repo What is Stream? Stream allow

Stream 247 Dec 21, 2022
Use dynamic and beautiful card view pagers (horizontal direction) to help you create great apps.

Use dynamic and beautiful card view pagers (horizontal direction) to help you create great apps. Preview Mobile Vertical Card Pager Web Web Link Insta

Jeongtae Kim 27 Dec 9, 2022
A simple Todo app designed to simply use GraphQL as backend and provide an easy to use UI/UX.

simple_todo_app A simple Todo app designed to simply use GraphQL as backend and provide an easy to use UI/UX. A breakdown of the project and explanati

Emir Halıcı 2 Oct 9, 2022