Comments (2)
Well, I'd be happy to hear any additional advice (especially how I may improve this), but I did make some progress. Using my generated models, I was able to dig a bit into the code and figure out how to send random queries and map that to my models. Here's the result, maybe it will help someone!
Query Function:
Future<Customer?> getCustomer() async {
try {
const document = '''
query GetCustomer(\$customerId: ID!) {
getCustomer(customerId: \$customerId) {
id
email
status
}
}
''';
const variables = {"customerId": "abcdefg"};
final call = await Amplify.API
.query(
request: GraphQLRequest<dynamic>(
document: document,
variables: variables,
))
.response;
final responseRaw = call.data;
print(responseRaw);
final customerDynamic = jsonDecode(responseRaw)['getCustomer'];
print(customerDynamic);
final customer = Customer.fromJson(customerDynamic);
return customer;
} on ApiException catch (e) {
safePrint('Query failed: $e');
return null;
}
}
Result (in console):
{"getCustomer":{"id":"abcdefg,"email":"[email protected]","status":"ACTIVE"}}
{id: abcdefg, email: [email protected], status: ACTIVE}
Customer {id=abcdefg, [email protected], status=ACTIVE, createdAt=null, updatedAt=null, queryResultsCustomerResultsId=null}
Next up.. figure out how to do subscriptions 😂
from amplify-flutter.
Subscriptions!
StreamSubscription<GraphQLResponse<String>>? subscription;
void subscribe() {
const document = '''
subscription SubscribeToRealtimeEvent(\$channel: String!) {
subscribeToRealtimeEvent(channel: \$channel) {
channel
data
date
}
}
''';
const variables = {"channel": "123456"};
final subscriptionRequest = GraphQLRequest<String>(document: document, variables: variables);
final Stream<GraphQLResponse<String>> operation = Amplify.API.subscribe(
subscriptionRequest,
onEstablished: () => safePrint('Subscription established'),
);
subscription = operation.listen(
(event) {
safePrint('Subscription event data received: ${event.data}');
},
onError: (Object e) => safePrint('Error in subscription stream: $e'),
);
}
Output:
Subscription event data received:
{"subscribeToRealtimeEvent":{"channel":"123456","data":"{\"action\":\"ACT_ON_RESPONSE_RECEIVED\",\"params\":{\"itemId\":\"000000001\"}}","date":"2024-03-21T18:45:30.343Z"}}
I tried mapping these to the RealtimeEvent
model, but I got this error message so I just moved it to String
, easy enough to handle:
Error: ApiOperationException {
"message": "Decoding of the response type provided is currently unsupported",
"recoverySuggestion": "Please provide a Model Type or type 'String'"
}
from amplify-flutter.
Related Issues (20)
- How to set Public Read while uploading to files to aws. HOT 3
- [amplify_auth_cognito] type 'FetchAuthSessionFetching' is not a subtype of type 'FetchAuthSessionSuccess' in type cast HOT 3
- Feature Request: Sharing authentication state between apps from the same developer HOT 9
- How to call Admin Queries API with authorization? HOT 1
- S3 access denied when making the API call. HOT 2
- No way to send unconfirmed user confirmation email when they restart the app HOT 5
- DataStore sync on Android physical devices takes very long time HOT 7
- Initial DataStore Sync Slow for Android Devices HOT 4
- fetchUserAttributes function cause toomanyrequestexception HOT 8
- AmplifyPushNotificationsPinpoint doesn't support offline configuration HOT 3
- Stuck in WebUI after authenticating with a certificate in iOS HOT 16
- Type comparison with UnderlyingExceptions might not be working as expected. HOT 5
- Update device_info_plus dependency HOT 2
- Update connectivity_plus dependency HOT 1
- Datastore without Cloud sync - Android build failing HOT 6
- Unable to get local issuer certificate when configure Amplify on Windows Devices HOT 8
- User cancelled OAuth flow error from signInWithRedirect
- Amplify confirm sign in with custom authentication flow timing out HOT 1
- Unauthorized error when Data-specific Authorization with AppSync (Datastore/GraphQL) HOT 6
- Flutter Web AmplifyAuthCognito SignOut not working HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from amplify-flutter.