- Notifications
You must be signed in to change notification settings - Fork0
srthkpthk/splitwise_api
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A Dart wrapper for theSplitwise API v3.0. Easily integrate Splitwise functionality into your Dart or Flutter applications.
- ✅ OAuth 1.0 authentication
- ✅ Full null-safety support
- ✅ Complete API coverage (users, groups, friends, expenses, comments, notifications)
- ✅ Simple and intuitive interface
- ✅ Lightweight with minimal dependencies
Add this to yourpubspec.yaml:
dependencies:splitwise_api:^2.0.3
Then run:
dart pub get
Get yourconsumerKey andconsumerSecret fromSplitwise Apps.
import'package:splitwise_api/splitwise_api.dart';
The package uses OAuth 1.0 for authentication. Here's the complete flow:
// Initialize the serviceSplitWiseService splitWiseService=SplitWiseService.initialize('YOUR_CONSUMER_KEY','YOUR_CONSUMER_SECRET',);// Step 1: Get authorization URLvar authURL=await splitWiseService.validateClient();print('Please authorize at: $authURL');// Step 2: After user authorizes, exchange verifier for tokensTokensHelper tokens=await splitWiseService.validateClient( verifier:'VERIFIER_CODE_FROM_USER',);// Save tokens for future use (see Token Persistence section)awaitsaveTokens(tokens);// Step 3: Use the authenticated clientvar currentUser=await splitWiseService.getCurrentUser();print(currentUser);
For users who have already authenticated:
// Initialize serviceSplitWiseService splitWiseService=SplitWiseService.initialize('YOUR_CONSUMER_KEY','YOUR_CONSUMER_SECRET',);// Load saved tokensTokensHelper savedTokens=awaitloadTokens();// Validate with saved tokensawait splitWiseService.validateClient(tokens: savedTokens);// Ready to make API callsvar user=await splitWiseService.getCurrentUser();
You must implement token storage yourself. Here's an example usingshared_preferences:
import'package:shared_preferences/shared_preferences.dart';import'package:splitwise_api/splitwise_api.dart';classTokenStorage {staticconst _tokenKey='splitwise_token';staticconst _tokenSecretKey='splitwise_token_secret';Future<void>saveTokens(TokensHelper tokens)async {final prefs=awaitSharedPreferences.getInstance();await prefs.setString(_tokenKey, tokens.token??'');await prefs.setString(_tokenSecretKey, tokens.tokenSecret??''); }Future<TokensHelper?>loadTokens()async {final prefs=awaitSharedPreferences.getInstance();final token= prefs.getString(_tokenKey);final tokenSecret= prefs.getString(_tokenSecretKey);if (token==null|| tokenSecret==null)returnnull;returnTokensHelper(token, tokenSecret); }Future<void>clearTokens()async {final prefs=awaitSharedPreferences.getInstance();await prefs.remove(_tokenKey);await prefs.remove(_tokenSecretKey); }}
await splitWiseService.getCurrentUser();await splitWiseService.getUser(userId);await splitWiseService.updateUser(userId, options);
await splitWiseService.getGroups();await splitWiseService.getGroup(groupId);await splitWiseService.createGroup(options);await splitWiseService.deleteGroup(groupId);await splitWiseService.addUserToGroup(options);await splitWiseService.removeUserFromGroup(options);
await splitWiseService.getFriends();await splitWiseService.getFriend(friendId);await splitWiseService.createFriend(options);await splitWiseService.createFriends(options);await splitWiseService.deleteFriend(friendId);
await splitWiseService.getExpenses(options: filters);await splitWiseService.getExpense(expenseId);await splitWiseService.createExpense(options);await splitWiseService.updateExpense(expenseId, options);await splitWiseService.deleteExpense(expenseId);
await splitWiseService.getComments(expenseId);await splitWiseService.createComment(options);await splitWiseService.deleteComment(commentId);
await splitWiseService.getNotifications(options: filters);await splitWiseService.getCurrencies();await splitWiseService.getCategories();await splitWiseService.parseSentence(options);
- No Data Models: This package returns raw JSON responses. You'll need to parse them yourself or create your own model classes.
- OAuth 1.0: This package uses OAuth 1.0, not OAuth 2.0.
- Error Handling: Methods return status codes on failure. Implement proper error handling in your application.
See theexample directory for a complete working example.
Contributions are welcome! Please feel free to submit a Pull Request or open an Issue.
This project is licensed under the MIT License - see theLICENSE file for details.
About
Splitwise API for Dart
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.