Skip to content

Commit b69ab5b

Browse files
committed
update main.dart
1 parent d240678 commit b69ab5b

File tree

1 file changed

+1
-152
lines changed

1 file changed

+1
-152
lines changed

mobile_app/lib/main.dart

+1-152
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import 'dart:async';
2-
import 'dart:convert';
3-
import 'dart:io';
4-
5-
import 'package:chopper/chopper.dart';
61
import 'package:flutter/material.dart';
72
import 'package:mobile_app/generated_api/client_index.dart';
83

@@ -36,13 +31,9 @@ class MyHomePage extends StatefulWidget {
3631
}
3732

3833
class _MyHomePageState extends State<MyHomePage> {
39-
int _counter = 0;
4034
String _text = "";
4135

4236
void _incrementCounter() {
43-
setState(() {
44-
_counter++;
45-
});
4637
_test();
4738
}
4839

@@ -56,11 +47,10 @@ class _MyHomePageState extends State<MyHomePage> {
5647

5748
final Openapi api = Openapi.create(
5849
baseUrl: Uri.parse("http://localhost:5800"),
59-
errorConverter: const JsonConverter(),
6050
);
6151

6252
try {
63-
final data1 = await api.helloGet(name: "Olly");
53+
final data1 = await api.helloGet(name: "Json");
6454
setState(() {
6555
_text = data1.body!; // << Is string, or can be complex object.
6656
});
@@ -80,14 +70,7 @@ class _MyHomePageState extends State<MyHomePage> {
8070
child: Column(
8171
mainAxisAlignment: MainAxisAlignment.center,
8272
children: <Widget>[
83-
const Text(
84-
'You have pushed the button this many times:',
85-
),
8673
Text(_text),
87-
Text(
88-
'$_counter',
89-
style: Theme.of(context).textTheme.headlineMedium,
90-
),
9174
],
9275
),
9376
),
@@ -99,137 +82,3 @@ class _MyHomePageState extends State<MyHomePage> {
9982
);
10083
}
10184
}
102-
103-
class MyAuthenticator extends Authenticator {
104-
String token = "";
105-
106-
@override
107-
FutureOr<Request?> authenticate(
108-
Request request,
109-
Response response, [
110-
Request? originalRequest,
111-
]) async {
112-
if (response.statusCode == HttpStatus.unauthorized) {
113-
String? newToken = await refreshToken();
114-
115-
final Map<String, String> updatedHeaders = Map<String, String>.of(request.headers);
116-
117-
if (newToken != null) {
118-
newToken = 'Bearer $newToken';
119-
updatedHeaders.update('Authorization', (String _) => newToken!, ifAbsent: () => newToken!);
120-
return request.copyWith(headers: updatedHeaders);
121-
}
122-
}
123-
return null;
124-
}
125-
126-
Future<String?> refreshToken() async {
127-
return token;
128-
}
129-
}
130-
131-
@immutable
132-
class JsonConverter implements Converter, ErrorConverter {
133-
const JsonConverter();
134-
135-
@override
136-
Request convertRequest(Request request) => encodeJson(
137-
applyHeader(
138-
request,
139-
contentTypeKey,
140-
jsonHeaders,
141-
override: false,
142-
),
143-
);
144-
145-
Request encodeJson(Request request) {
146-
final String? contentType = request.headers[contentTypeKey];
147-
148-
if ((contentType?.contains(jsonHeaders) ?? false) && (request.body.runtimeType != String || !isJson(request.body))) {
149-
return request.copyWith(body: json.encode(request.body));
150-
}
151-
152-
return request;
153-
}
154-
155-
FutureOr<Response> decodeJson<BodyType, InnerType>(Response response) async {
156-
final List<String> supportedContentTypes = [jsonHeaders, jsonApiHeaders];
157-
158-
if (response.statusCode != 200) {
159-
// Convert body to json
160-
JsonDecoder decoder = const JsonDecoder();
161-
var body = decoder.convert(response.body);
162-
throw ApiError(status: body['status'], message: body['message']);
163-
}
164-
165-
final String? contentType = response.headers[contentTypeKey];
166-
var body = response.body;
167-
168-
if (supportedContentTypes.contains(contentType)) {
169-
body = utf8.decode(response.bodyBytes);
170-
}
171-
172-
body = await tryDecodeJson(body);
173-
if (isTypeOf<BodyType, Iterable<InnerType>>()) {
174-
body = body.cast<InnerType>();
175-
} else if (isTypeOf<BodyType, Map<String, InnerType>>()) {
176-
body = body.cast<String, InnerType>();
177-
}
178-
179-
return response.copyWith<BodyType>(body: body);
180-
}
181-
182-
@override
183-
FutureOr<Response<BodyType>> convertResponse<BodyType, InnerType>(
184-
Response response,
185-
) async =>
186-
(await decodeJson<BodyType, InnerType>(response)) as Response<BodyType>;
187-
188-
@protected
189-
FutureOr<dynamic> tryDecodeJson(String data) {
190-
try {
191-
return json.decode(data);
192-
} catch (e) {
193-
chopperLogger.warning(e);
194-
195-
return data;
196-
}
197-
}
198-
199-
@override
200-
FutureOr<Response> convertError<BodyType, InnerType>(
201-
Response response,
202-
) async =>
203-
await decodeJson(response);
204-
205-
static FutureOr<Response<BodyType>> responseFactory<BodyType, InnerType>(
206-
Response response,
207-
) =>
208-
const JsonConverter().convertResponse<BodyType, InnerType>(response);
209-
210-
static Request requestFactory(Request request) => const JsonConverter().convertRequest(request);
211-
212-
@visibleForTesting
213-
static bool isJson(dynamic data) {
214-
try {
215-
json.decode(data);
216-
return true;
217-
} catch (_) {
218-
return false;
219-
}
220-
}
221-
}
222-
223-
class ApiError {
224-
final String status;
225-
final String message;
226-
227-
ApiError({required this.status, required this.message});
228-
229-
factory ApiError.fromJson(Map<String, dynamic> json) {
230-
return ApiError(
231-
status: json['status'],
232-
message: json['message'],
233-
);
234-
}
235-
}

0 commit comments

Comments
 (0)