- Bump all dependencies to latest versions
-
Fix for issue related to https: CERTIFICATE_VERIFY_FAILED https CERTIFICATE_VERIFY_FAILED is handled by suppressing error and showing necessary information in logs. A warning log will be printed stating the same
-
Customize HTTP client by overriding
IOClient get http
-
String Resources now supports placeholders
search=Search among {0}
is a valid string property, and can be accessed using r.getString("search", placeholders=["CPUs"])
- Fetching image issue fixed
- throw error if resource is un available
- Breaking change. Migrate from the deprecated original Android Support Library to AndroidX. This shouldn't result in any functional changes, but it requires any Android apps using this plugin to also migrate if they're using the original support library.
- dart:core lower limit raised from 2.0.0 to 2.1.0
- return type added for
r.getString
- Dev mode issue for fast actions while fetch resources
- default for string resources can be provided with the new signature...
getString(key, {String defaultValue, bool suppressErrors: false})
if suppressErrors is set to true, errors related to key not found will not be thrown even in strict mode
- Introducing
setData(key,value)
andgetData(key)
in Adhara event - Event emitters can await for handler execution and get handler return value by using event.getData(tag)
- loading indicator update
- Bug fixes for offlineProvider response type (changed Map to dynamic)
- Asset file loader is now released of restrictions to read JSONArray from .json files. return type is made dynamic from Map
-
Data mock can be stored in assets/data/<API_URL_AS_PATH_SEPARATED_BY_HYPHEN>-.json file
For example:
Network Provider(Online) calls GET '/api/v1/items', Using Offline provider one can mock the data by creating '/assets/data/api-v1-items-get.json' (or) Network Provider(Online) calls DELETE '/api/v1/items/1', Using Offline provider one can mock the data by creating '/assets/data/api-v1-items-1-delete.json' (or) Network Provider(Online) calls PUT '/api/v1/items/?status=available', Using Offline provider one can mock the data by creating '/api/v1/items--status=available'
Note that
/
and?
will eb replaced by-
. This behavior can be overridden by overriding OfflineProvider and configuring the same on Config class
-
expanding network provider to an abstract classes data provider and 2 implementation classes network and offline
-
Offline provider can be helpful for data mocking in development Data mock can be stored in assets/data/<API_URL_AS_PATH>/.json file
For example:
Network Provider(Online) calls GET '/api/v1/items', Using Offline provider one can mock the data by creating '/assets/data/api/v1/items/get.json' (or) Network Provider(Online) calls DELETE '/api/v1/items/1', Using Offline provider one can mock the data by creating '/assets/data/api/v1/items/1/delete.json'
Note that method name must be lowercase Offline provider greatly helps in integrated testing with data
- Introducing few commonly used widgets: Fetching, NoData, Paginator, PullToRefresh
- Introducing few commonly used widgets: Fetching, NoData, Paginator, PullToRefresh
- AdharaStatefulWidget~isFirstLoadComplete was returning wrong status, issue fixed.
- code optimization
- removing fragile socket.io dependency thereby removing support for webSockets.
- new getter fromFile in Config. Using this configuration json variables can be accessed
- Bug Fix for filter and exclude combinations in dataInterface.query
- Optimize setData in KeyValueStorageProvider
- isFirstLoadComplete getter to know if the widget has completed loading for the very first time in app lifecycle
registerSocketEvents
removed. addedget eventHandlers => {};
this should return event-handler map.- Example:
get eventHandlers => {
'app:new-notification': this.refreshNotificationIcon
};
registerSocketEvents
signature changed toFuture registerSocketEvents(SocketIO socket);
- Introducing socket connections using socket.io
- Override registerSocketEvents from NetworkProvider and use instance level
socket
field to listen to events - Usage
//example Future registerSocketEvents() async { await socket.on('message', (greeting) { print('Hello, $greeting'); }); await socket.emit('init', [ {'Hello': 'world!'}, ]); }
- Optimized/Enhanced event handler. Introducing Event object
- Introducing event handler. Register and trigger events across widgets.
- Usage:
inside State class extending AdharaState,
on("eventName", handlerFn); //to register off("eventName") //to de-register trigger("someOtherEvent") //to trigger event across all mounted stateful widgets
- Removed HTTPStorageProvider support. Use KeyValue storage provider if required, or create a HTTPStorage provider extending KeyValueStorage.
- Removed storage provider schema configurations. Only fields can be configured now using storage_classes
- Dart 2.0 Support.
- KeyValueStorageProvider - value was Unique, now changed to non unique
- printing preload errors
- Enforcing usage of
- Config can now configure config configFile field which returns a file from assets - config file. this eases up development files...
- flutter's presky setState error in development for "setState called after dispose" is suppressed by performing a check in adhara's stateful_widget
- Enhanced logging for network calls
- Bug Fix for constraints in Schema Columns
- Enhancements in bean.dart
- Bug Fixes in 0.1.0
- Storage Field classes introduced. table schema can now be declared easily with introduced classes by making field types mandatory
- Storage Field classes will support storing boolean/json fields - serialization and deserialization will be taken care by these classes
- Adding examples
- Adding shared preferences in Resources. User r.preferences to access shared_preferences API's
- Reverting to previous
- Upgrade all dependencies to latest
- Resources made available in DataInterface by public field
r
.
- Router's getRoute function's argument urlPatterns now accepts kwargs, ex:
{"pattern": "^posts/{{postId}}([0-9]+)/edit\$", "router": NewPost.router, "kwargs": {"edit": true}},
- Storage provider create table error handled for IOS
- Sentry ignore strings introduced.
List<String> get sentryIgnoreStrings
inConfig
- Adding sentry. use Config.sentryDSN to configure sentry data source name
- NetworkProvider enhanced. Interceptors introduced.
- single instance database referred from resources. It is expected to be auto closed on app closing...
- loadLanguage introduced. Can call this to load new languages whenever required
- clearResources introduced. This can be called on logout from the application.
- clearResources by default clear's AppState and calls DataInterface's clearDataStores method.
- dataStores getter introduced in DataInterface. This must return all data stores whose creation and truncation will be handled with easy utils.
- Mode utilities added
- Introducing tag for AdharaState to manage state related unique variables
- Dart 2 support
- All calling functions enhanced with same signature
- StorageProvider methods relating to get list now accepts all arguments supported by sqflite
- StorageProvider delete operation Signature changes
- Introducing Batch Udpate.
- Created time and Updated time for all beans and storage's.
- Introducing AdharaStatelessWidget. Use buildWithResources(BuildContext context, Resources r) to access resources.
- Network provider failure responses now throw error
- App state scope get and set method names changed to getValue setValue.
- default value made optional for getValue
- providing r as a getter in adhara stateful widget
- Introducing remove in KeyValueStorageProvider
- Adding option for custom data interface in config.dart
- Adding URL launcher as a single function call which abstracts checks for canLaunch
- AdharaStatefulWidget and AdharaSState to manage lifecycle events for data
- Resource Handling for languages
- Router to handle URL's by path
- SQFLite integrated for database interactions
- Bean (~ POJO classes from Java) based storage handlers
- KeyValue stores in database
- http storage for URL based storage