Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dreamsoftin/flutter_wordpress
Flutter WordPress API
https://github.com/dreamsoftin/flutter_wordpress
dart dartlang flutter flutter-plugin flutter-plugins wordpress wordpress-api
Last synced: 7 days ago
JSON representation
Flutter WordPress API
- Host: GitHub
- URL: https://github.com/dreamsoftin/flutter_wordpress
- Owner: dreamsoftin
- License: mit
- Created: 2019-02-11T05:30:18.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-08-08T14:31:24.000Z (over 1 year ago)
- Last Synced: 2024-12-30T21:11:40.430Z (14 days ago)
- Topics: dart, dartlang, flutter, flutter-plugin, flutter-plugins, wordpress, wordpress-api
- Language: Dart
- Homepage: https://pub.dartlang.org/packages/flutter_wordpress
- Size: 770 KB
- Stars: 198
- Watchers: 19
- Forks: 122
- Open Issues: 37
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Flutter Wordpress
[pub.dev](https://pub.dev/packages/flutter_wordpress)
This library uses [WordPress REST API V2](https://developer.wordpress.org/rest-api/) to provide a way for your application to interact with your WordPress website.
[Tutorial - by Ritesh Sharma](https://medium.com/flutter-community/building-flutter-apps-with-wordpress-backend-part-1-e56414a4a79b)
## Screenshots
## Requirements
For authentication and usage of administrator level REST APIs, you need to use either of the two popular authentication plugins in your WordPress site:
1. [Application Passwords](https://wordpress.org/plugins/application-passwords/)
2. [JWT Authentication for WP REST API](https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/) (recommended)## Getting Started
### 1. Import library
#### First:
Find your pubspec.yaml in the root of your project and add flutter_wordpress: ^0.2.0 under dependencies:
#### Second:
```dart
import 'package:flutter_wordpress/flutter_wordpress.dart' as wp;
```### 2. Instantiate WordPress class
```dart
wp.WordPress wordPress;// adminName and adminKey is needed only for admin level APIs
wordPress = wp.WordPress(
baseUrl: 'http://localhost',
authenticator: wp.WordPressAuthenticator.JWT,
adminName: '',
adminKey: '',
);
```### 3. Authenticate User
```dart
Future response = wordPress.authenticateUser(
username: 'ChiefEditor',
password: 'chiefeditor@123',
);response.then((user) {
createPost(user);
}).catchError((err) {
print('Failed to fetch user: $err');
});
```### 4. Fetch Posts
```dart
Future> posts = wordPress.fetchPosts(
postParams: wp.ParamsPostList(
context: wp.WordPressContext.view,
pageNum: 1,
perPage: 20,
order: wp.Order.desc,
orderBy: wp.PostOrderBy.date,
),
fetchAuthor: true,
fetchFeaturedMedia: true,
fetchComments: true,
postType: 'post'
);
```### 5. Fetch Users
```dart
Future> users = wordPress.fetchUsers(
params: wp.ParamsUserList(
context: wp.WordPressContext.view,
pageNum: 1,
perPage: 30,
order: wp.Order.asc,
orderBy: wp.UsersOrderBy.name,
roles: ['subscriber'],
),
);
```### 6. Fetch Comments
```dart
Future> comments = wordPress.fetchComments(
params: wp.ParamsCommentList(
context: wp.WordPressContext.view,
pageNum: 1,
perPage: 30,
includePostIDs: [1],
),
);
```### 7. Create User
```dart
Future createUser({@required String email, @required String username, @required String password, @required List roles}) async {
await widget.wordPress.createUser(
user: wp.User(
email: email,
password: password,
username: username,
roles: roles
)
).then((p) {
print('User created successfully ${p}');
}).catchError((err) {
print('Failed to create user: $err');
});
}
```### 8. Create Post
```dart
void createPost({@required wp.User user}) {
final post = widget.wordPress.createPost(
post: new wp.Post(
title: 'First post as a Chief Editor',
content: 'Blah! blah! blah!',
excerpt: 'Discussion about blah!',
authorID: user.id,
commentStatus: wp.PostCommentStatus.open,
pingStatus: wp.PostPingStatus.closed,
status: wp.PostPageStatus.publish,
format: wp.PostFormat.standard,
sticky: true,
),
);post.then((p) {
print('Post created successfully with ID: ${p.id}');
}).catchError((err) {
print('Failed to create post: $err');
});
}
```### 9. create Comment
```dart
void createComment({@required int userId, @required int postId}) {
final comment = widget.wordPress.createComment(
comment: new wp.Comment(
author: userId,
post: postId,
content: "First!",
parent: 0,
),
);comment.then((c) {
print('Comment successfully posted with ID: ${c.id}');
}).catchError((err) {
print('Failed to comment: $err');
});
}
```### 10. Update Comment
```dart
Future updateComment({@required int id, @required int postId, @required wp.User user}) async {
await widget.wordPress.updateComment(
comment: new wp.Comment(
content: "Comment Updated2!",
author: user.id,
post: postId,
),
id: id,
).then((c) {
print('Comment updated successfully "$c"');
}).catchError((err) {
print('Failed to update Comment: $err');
});
}
```### 11. Update Post
```dart
Future updatePost({@required int id, @required int userId}) async {
await widget.wordPress.updatePost(
post: new wp.Post(
title: 'First post as a Chief Editor',
content: 'Blah! blah! blah!',
excerpt: 'Discussion about blah!',
authorID: userId,
commentStatus: wp.PostCommentStatus.open,
pingStatus: wp.PostPingStatus.closed,
status: wp.PostPageStatus.publish,
format: wp.PostFormat.standard,
sticky: true,
),
id: id, //
).then((p) {
print('Post updated successfully with ID ${p}');
}).catchError((err) {
print('Failed to update post: $err');
});
}
```### 12. Update User
```dart
Future updateUser({@required int id, @required String username, @required String email}) async {
await widget.wordPress.updateUser(
user: new wp.User(
description: "This is description for this user",
username: username,
id: id,
email: email
),
id: id,
).then((u) {
print('User updated successfully $u');
}).catchError((err) {
print('Failed to update User: $err');
});
}
```### 13. Delete Comment
```dart
Future deleteComment({@required int id}) async {
await widget.wordPress.deleteComment(id: id).then((c) {
print('Comment Deleted successfully: $c');
}).catchError((err) {
print('Failed to Delete comment: $err');
});
}
```### 14. Delete Post
```dart
Future deletePost({@required int id}) async {
await widget.wordPress.deletePost(id: id).then((p) {
print('Post Deleted successfully: $p');
}).catchError((err) {
print('Failed to Delete post: $err');
});
}
```### 15. Delete User
```dart
Future deleteUser({@required int id, @required int reassign}) async {
await widget.wordPress.deleteUser(id: id, reassign: reassign).then((u) {
print('User Deleted successfully: $u');
}).catchError((err) {
print('Failed to Delete user: $err');
});
}
```### 16. Upload Media
```dart
uploadMedia(File image) async {
var media = await wordPress.uploadMedia(image).then((m) {
print('Media uploaded successfully: $m');
}).catchError((err) {
print('Failed to upload Media: $err');
});
int mediaID = media['id'];
}
```## Future Work
1. Implementing OAuth 2.0 authentication.
## Contributors
- [Suraj Shettigar](https://github.com/SurajShettigar)
- [Sachin Ganesh](https://github.com/SachinGanesh)
- [Harm-Jan Roskam](https://github.com/harmjanr)
- [Yahya Makarim](https://github.com/ymakarim)
- [Garv Maggu](https://github.com/GarvMaggu)