rapido 0.0.13

  • README.md
  • Example
  • Installing
  • Versions
  • new78


Rapido brings Rapid Application Development principles to mobile development, currently available for Flutter.


Rapido makes it simple to build document centric applications by:

  1. Providing DocumentList and Document classes that makes it wasy to manage user data, including persistence.
  2. Provides many of the UI elements that you need to work with DocumentList, including ListViews, Forms, Maps, and other widgets. They know how to work with DocumentList so provide a ton of functionality with almost no additional coding.
  3. The ability to easily customize the core widgets provided.

Show Me

Create a DocumentList and defining labels for fields, and then create a DocumentListScaffold like this:

class _MyHomePageState extends State<MyHomePage> {
  DocumentList taskList = DocumentList("Tarea",
      labels: {"Date": "date", "Task": "task", "Priority": "pri count"});

  Widget build(BuildContext context) {
    return DocumentListScaffold(taskList);

The rapido widgets infer what kind data is in each field based on the field name. Basic CRUD functionality is automatically created: add button, forms, listview, edit and delete, sorting

Rapido also handles specialized data types: pickers, and mapss

You can replace any widget with your own widget, or you can use built in customization hooks to quickly create your own look and feel.

Rapido Online

A Closer Look

Overview of Using DocumentList

DocumentList lies at the core of the R.A.D. experience. By simply using a list, you get:

  1. Local persistence of objects.
  2. Default CRUD UI that your users can use for displaying, creating, editing, and deleting documents in the list.


Everything you need is in documents.dart:

import 'package:rapido/documents.dart';

This import includes DocumentList itself, and all of the UI elements that work on it.


To create a DocumentList, all that is required is to include a "documentType" string. This string is used by DocumentList to organize its documents. Then you can add documents to it by simply passing in maps of type Map<String, dynamic>.

DocumentList taskList = DocumentList("tasks");
taskList.add(Document(initialValues: {"name":"grocery shopping", "priority": 1, "done": false}));

Notice that the maps use a string of a key, but the values are dynamic. You can store anything you like in the DocumentList.

You can modify and delete documents using normal list functionality.

taskList[0]  = Document(initialValues: {"name":"grocery shopping", "priority": 1, "done": true});

You can delete them:


Note that all changes to the DocumentList are automatically persisted to the user's phone! The user can close the app, and when they reopen them, the data is still right there.

UI Elements

After creating a DocumentList, you can use it in a variety of UI elements supplied by Rapido. By simply passing in a DocumentList, the widgets can figure out themselves what functionality to display to users.

For exampe, if you want to easily create an application that supports adding, removing, and editing documents, you can use the DocumentListScaffold class.

DocumentListScaffold(taskList, title:"Task List");

DocumentListView will create a ListView to display and edit the items in the list. It also offers several custimazation options, but the defautls "just work."


DocumentListMapView will display any documents with a field called "map_point" on a map:


DocumentForm allows easy creation of new documents, or editing of existing ones.

To create a new document:


To edit an existing one:

DocumentForm(taskList, index: 0);

Feedback Welcome

Rapido is undergoing rapid development. Please visit our Github repo to log any issues or features requests. Of course, pull requests are most welcome.


More TypedInputFields

DocumentForm works by creating input fields based on the name of the field in the document. Our current plan is to add more typed input fields, such as:

  • Switches
  • Favorite
  • Time and DateTime
  • Long Text

Cloud Storage and Syncing

We plan to make storing and syncing documents with DocumentList incredibly easy.

Camera Widget

We need to dramatically simplify using a camera in your application.

[0.0.13] - 2018-12-09

  • Changed DocumentListMapView to set it's starting camera based on the Documents in the list, unless the developer supplied explicit coordinates.
  • Use numbered keyboard with map points.
  • Fixed a bug with location form.

[0.0.12] - 2018-12-08

  • Changed DocumentListView so that a field named "subtitle" is automatically used as a subtitle.
  • Small updates to API documentation.
  • Wrote and posted tutorial documentation.

[0.0.11] - 2018-12-02

  • Added DocumentListMapView which displays a DocumentList on a map.
  • Added a DocumentPage which renders a readonly pageview of a Document.

[0.0.10] - 2018-11-24

  • Add a specific Document class that inherits from MapBase<String, dynamic>. Most code should not be effected by this, but this is a breaking change for many of the functions on DocumentList. For example, DocumentList.add and DocumentList.addAll must be updated to create a Docuent: documentList.add(Document(initialValues: {"field1":"value1})). This change is in preparation to improve the usability of working with Documents and DocumentLists.
  • Changed "document_list.dart" to just "documents.dart". this is a breaking change. You must now import 'package:rapido/documents.dart' instead of 'package:rapido/document_list.dart'.
  • Changed the interface for DocumentListView.customItemBuilder to include the document itself, and the build context.
  • Some small bug fixes

[0.0.9] - 2018-11-24

  • Added datetime field support in TypedInputField. Requires that the string be in a specific format ("EEE, MMM d, y H:mm:s"). This can be overridden by passing in a custom dateTimeFormat string when creating the TypedInputField. Date field now supports custom date formats as well. More work is required to enhance the usability of this part of the API, but the current API is

[0.0.8] - 2018-11-23

  • Updated README with a more clear explanation of the project
  • Add the ability to include a label with the add document fab

[0.0.7] - 2018-11-20

  • Removed required title parameter from DocumentListScaffold

[0.0.6] - 2018-11-19

  • Adding a sorting button widget

[0.0.5] - 2018-11-19

  • Added more examples to example/
  • added DocumentList.sortByField() to simplify sorting

[0.0.4] - 2018-11-17

[0.0.1] - 2018-11-14

  • Initial relese with DocumentList and related classes
  • Document persistence handled by writing json files as first implementation


import 'package:flutter/material.dart';
import 'package:rapido/documents.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Rapido Demo',
      home: RapidoExample(title: 'Rapdio'),

class RapidoExample extends StatefulWidget {
  RapidoExample({Key key, this.title}) : super(key: key);
  final String title;

  _RapidoExampleState createState() => _RapidoExampleState();

class _RapidoExampleState extends State<RapidoExample> {
  // Create a Document with a documentType string of your choice.
  // Include a map of lables for the fields in the document type.
  final DocumentList documentList = DocumentList(
    "task list",
    labels: {"Date": "date", "Title": "task", "Priorty": "pri count"},

  // Build a DocumentListScaffold to provide the UI for users to
  // create, edit, and delete documents
  Widget build(BuildContext context) {
    return DocumentListScaffold(
      title: "Tasks",

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  rapido: ^0.0.13

2. Install it

You can install packages from the command line:

with Flutter:

$ flutter packages get

Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:rapido/documents.dart';
Version Uploaded Documentation Archive
0.0.13 Dec 10, 2018 Go to the documentation of rapido 0.0.13 Download rapido 0.0.13 archive
0.0.12 Dec 8, 2018 Go to the documentation of rapido 0.0.12 Download rapido 0.0.12 archive
0.0.11 Dec 2, 2018 Go to the documentation of rapido 0.0.11 Download rapido 0.0.11 archive
0.0.10 Nov 26, 2018 Go to the documentation of rapido 0.0.10 Download rapido 0.0.10 archive
0.0.9 Nov 24, 2018 Go to the documentation of rapido 0.0.9 Download rapido 0.0.9 archive
0.0.8 Nov 23, 2018 Go to the documentation of rapido 0.0.8 Download rapido 0.0.8 archive
0.0.7 Nov 20, 2018 Go to the documentation of rapido 0.0.7 Download rapido 0.0.7 archive
0.0.6 Nov 20, 2018 Go to the documentation of rapido 0.0.6 Download rapido 0.0.6 archive
0.0.5 Nov 19, 2018 Go to the documentation of rapido 0.0.5 Download rapido 0.0.5 archive
0.0.4 Nov 18, 2018 Go to the documentation of rapido 0.0.4 Download rapido 0.0.4 archive

All 12 versions...

Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Dec 10, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.1.0
  • pana: 0.12.7
  • Flutter: 1.0.0


Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Maintenance suggestions

Package is pre-v0.1 release. (-10 points)

While there is nothing inherently wrong with versions of 0.0.*, it usually means that the author is still experimenting with the general direction of the API.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.68.0 <3.0.0
datetime_picker_formfield ^0.1.4 0.1.7
flutter 0.0.0
google_maps_flutter ^0.0.3+3 0.0.3+3
location ^1.4.1 1.4.1
path_provider ^0.4.1 0.4.1
Transitive dependencies
collection 1.14.11
intl 0.15.7
meta 1.1.6
path 1.6.2
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
test ^1.5.1