A Dart package to interact with the Meteor framework.
Connect your web or flutter apps, written in Dart, to the Meteor framework.
- Connect to Meteor server
- Use Meteor Subscriptions
- Meteor Authentication
- Call custom Methods on Meteor
- Access underlying databases
Add this to your package's pubspec.yaml
file:
dependencies:
meteorify: ^1.0.7
You can use either the then-catchError
or await
syntax to capture the result of operations and handle errors.
I'll be using the await
syntax in this documentation to keep it short and straight.
You can use either catchError
on Future
object or try/catch
syntax to catch errors.
Using then-catchError
:
import 'package:meteorify/meteorify.dart';
main() async{
Meteor.connect('ws://example.meteor.com/websocket')
.then((status){
// Do something after connection is successful
})
.catchError((error){
print(error);
//Handle error
});
}
Using await
:
import 'package:meteorify/meteorify.dart';
main() async{
try{
var status = await Meteor.connect('ws://example.meteor.com/websocket');
// Do something after connection is successful
}catch(error){
print(error);
//Handle error
}
}
var isConnected = Meteor.isConnected;
Meteor.disconnect();
Meteor.connectionListener = (ConnectionStatus connectionStatus){
print(connectionStatus);
}
var subscriptionId = await Meteor.subscribe(subscriptionName);
var subscriptionId = await Meteor.subscribe(subscriptionName,args:[arg1,arg2]);
await Meteor.unsubscribe(subscriptionId);
SubscribedCollection collection = await Meteor.collection(collectionName);
//collection.find({selectors});
//collection.findAll();
//collection.findOne(id);
var userId = await Accounts.createUser(username,email,password,profileOptions);
-
Login with password
String loginToken = await Meteor.loginWithPassword(emailOrUsername,password);
-
Login with token
String token = await Meteor.loginWithToken(loginToken);
-
Change Password (need to be logged in)
String result = await Accounts.changePassword(oldPassword,newPassword);
-
Forgot Password
String result = await Accounts.forgotPassword(email);
-
Reset Password
String result = await Accounts.resetPassword(resetToken,newPassword);
-
Logout
await Meteor.logout();
-
Get logged in userId
String userId = Meteor.currentUserId;
-
Check if logged in
bool isLoggedIn = Meteor.isLoggedIn();
-
Get current user as map
Map<String,dynamic> currentUser = await Meteor.userAsMap();
export const helloWorld = new ValidatedMethod({
name: 'hello',
validate: new SimpleSchema({
firstname: {type: String},
lastname: {type: String},
}).validator(),
run({ firstname,lastname }) {
const message = "hello "+firstname+" "+lastname;
console.log(message);
return message;
},
});
try{
var result = await Meteor.call('hello',[{'firstname':'Shivam','lastname':'Arora'}]);
print(result);
}catch(error){
print(error);
}
Meteorify uses the mongo_dart
package internally to provide access to actual database.
For more instructions regarding use of mongo_dart
, visit their mongo_dart guide.
import 'package:mongo_dart/mongo_dart.dart';
Db db = await Meteor.getMeteorDatabase();
import 'package:mongo_dart/mongo_dart.dart';
Db db = await Meteor.getCustomDatabase(dbUrl);
await db.open();
import 'package:mongo_dart/mongo_dart.dart';
DbCollection collection = await db.collection('collectionName');