Skip to content
Snippets Groups Projects
Commit 287add39 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Get API status

parent 3818b4f3
Branches
Tags
1 merge request!6Resolve "Add get plotter status"
Pipeline #2621 passed
This commit is part of merge request !6. Comments created here will be created in the context of that merge request.
...@@ -38,4 +38,5 @@ ...@@ -38,4 +38,5 @@
android:name="flutterEmbedding" android:name="flutterEmbedding"
android:value="2" /> android:value="2" />
</application> </application>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest> </manifest>
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.5 app.versionName=0.0.6
app.versionCode=5 app.versionCode=6
Get and display API status
Récupère et affiche le statut de l'API
...@@ -4,11 +4,14 @@ import 'package:shared_preferences/shared_preferences.dart'; ...@@ -4,11 +4,14 @@ import 'package:shared_preferences/shared_preferences.dart';
class Data extends ChangeNotifier { class Data extends ChangeNotifier {
// Application settings // Application settings
String _apiurl = ''; String _apiHost = '';
String _apiStatus = '';
String defaultApiHost = '127.0.0.1';
getParameterValue(String parameterCode) { getParameterValue(String parameterCode) {
switch(parameterCode) { switch(parameterCode) {
case 'apiurl': { return _apiurl; } case 'apiHost': { return _apiHost; }
break; break;
} }
} }
...@@ -16,7 +19,7 @@ class Data extends ChangeNotifier { ...@@ -16,7 +19,7 @@ class Data extends ChangeNotifier {
setParameterValue(String parameterCode, String parameterValue) async { setParameterValue(String parameterCode, String parameterValue) async {
print('set parameter "' + parameterCode + '" to value "' + parameterValue + '"'); print('set parameter "' + parameterCode + '" to value "' + parameterValue + '"');
switch(parameterCode) { switch(parameterCode) {
case 'apiurl': { updateApiUrl(parameterValue); } case 'apiHost': { updateApiHost(parameterValue); }
break; break;
} }
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
...@@ -25,12 +28,19 @@ class Data extends ChangeNotifier { ...@@ -25,12 +28,19 @@ class Data extends ChangeNotifier {
void initParametersValues() async { void initParametersValues() async {
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
setParameterValue('apiurl', prefs.getString('apiurl') ?? 'http://127.0.0.1/plotter'); setParameterValue('apiHost', prefs.getString('apiHost') ?? this.defaultApiHost);
}
String get apiHost => _apiHost;
void updateApiHost(String apiHost) {
_apiHost = apiHost;
notifyListeners();
} }
String get apiurl => _apiurl; String get apiStatus => _apiStatus;
void updateApiUrl(String apiurl) { void updateApiStatus(String apiStatus) {
_apiurl = apiurl; print('new API status: ' + apiStatus);
_apiStatus = apiStatus;
notifyListeners(); notifyListeners();
} }
} }
...@@ -3,6 +3,7 @@ import 'package:provider/provider.dart'; ...@@ -3,6 +3,7 @@ import 'package:provider/provider.dart';
import '../provider/data.dart'; import '../provider/data.dart';
import '../screens/settings.dart'; import '../screens/settings.dart';
import '../utils/api.dart';
class Home extends StatefulWidget { class Home extends StatefulWidget {
static const String id = 'home'; static const String id = 'home';
...@@ -49,7 +50,17 @@ class _HomeState extends State<Home> { ...@@ -49,7 +50,17 @@ class _HomeState extends State<Home> {
), ),
body: SafeArea( body: SafeArea(
child: Center( child: Center(
child: Text('🤖') child: Column(
children: [
FlatButton(
child: Container(
child: Text('get API status'),
),
onPressed: () => Api.updateApiStatus(myProvider),
),
Text(myProvider.apiStatus)
],
)
), ),
) )
); );
......
...@@ -12,11 +12,11 @@ class SettingsPage extends StatefulWidget { ...@@ -12,11 +12,11 @@ class SettingsPage extends StatefulWidget {
} }
class _SettingsPageState extends State<SettingsPage> { class _SettingsPageState extends State<SettingsPage> {
TextEditingController apiUrlFieldController = TextEditingController(); TextEditingController apiHostFieldController = TextEditingController();
@override @override
void dispose() { void dispose() {
apiUrlFieldController.dispose(); apiHostFieldController.dispose();
super.dispose(); super.dispose();
} }
...@@ -24,7 +24,7 @@ class _SettingsPageState extends State<SettingsPage> { ...@@ -24,7 +24,7 @@ class _SettingsPageState extends State<SettingsPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
Data myProvider = Provider.of<Data>(context); Data myProvider = Provider.of<Data>(context);
apiUrlFieldController.text = myProvider.getParameterValue('apiurl'); apiHostFieldController.text = myProvider.getParameterValue('apiHost');
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
...@@ -34,7 +34,7 @@ class _SettingsPageState extends State<SettingsPage> { ...@@ -34,7 +34,7 @@ class _SettingsPageState extends State<SettingsPage> {
IconButton( IconButton(
icon: Icon(Icons.save), icon: Icon(Icons.save),
onPressed: () { onPressed: () {
myProvider.setParameterValue('apiurl', apiUrlFieldController.text); myProvider.setParameterValue('apiHost', apiHostFieldController.text);
Navigator.pop(context); Navigator.pop(context);
}, },
) )
...@@ -49,10 +49,10 @@ class _SettingsPageState extends State<SettingsPage> { ...@@ -49,10 +49,10 @@ class _SettingsPageState extends State<SettingsPage> {
body: Padding( body: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
child: TextFormField( child: TextFormField(
controller: apiUrlFieldController, controller: apiHostFieldController,
decoration: InputDecoration( decoration: InputDecoration(
border: UnderlineInputBorder(), border: UnderlineInputBorder(),
labelText: 'API URL', labelText: 'API Host',
), ),
), ),
), ),
......
import 'dart:convert';
import 'package:http/http.dart' as http;
import '../provider/data.dart';
class Api {
static Future<void> updateApiStatus(Data myProvider) async {
final response = await http.get(
Uri.http(
myProvider.apiHost,
'status'
)
);
String responseData = utf8.decode(response.bodyBytes);
Map<String, dynamic> status = json.decode(responseData);
myProvider.updateApiStatus(status['status']);
}
}
...@@ -79,6 +79,20 @@ packages: ...@@ -79,6 +79,20 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
http:
dependency: "direct main"
description:
name: http
url: "https://pub.dartlang.org"
source: hosted
version: "0.13.4"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
js: js:
dependency: transitive dependency: transitive
description: description:
......
...@@ -11,6 +11,7 @@ dependencies: ...@@ -11,6 +11,7 @@ dependencies:
sdk: flutter sdk: flutter
provider: ^6.0.2 provider: ^6.0.2
shared_preferences: ^2.0.6 shared_preferences: ^2.0.6
http:
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment