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

Merge branch '2-add-get-plotter-status' into 'master'

Resolve "Add get plotter status"

Closes #2

See merge request !6
parents 3818b4f3 287add39
No related branches found
No related tags found
1 merge request!6Resolve "Add get plotter status"
Pipeline #2624 passed
......@@ -38,4 +38,5 @@
android:name="flutterEmbedding"
android:value="2" />
</application>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.5
app.versionCode=5
app.versionName=0.0.6
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';
class Data extends ChangeNotifier {
// Application settings
String _apiurl = '';
String _apiHost = '';
String _apiStatus = '';
String defaultApiHost = '127.0.0.1';
getParameterValue(String parameterCode) {
switch(parameterCode) {
case 'apiurl': { return _apiurl; }
case 'apiHost': { return _apiHost; }
break;
}
}
......@@ -16,7 +19,7 @@ class Data extends ChangeNotifier {
setParameterValue(String parameterCode, String parameterValue) async {
print('set parameter "' + parameterCode + '" to value "' + parameterValue + '"');
switch(parameterCode) {
case 'apiurl': { updateApiUrl(parameterValue); }
case 'apiHost': { updateApiHost(parameterValue); }
break;
}
final prefs = await SharedPreferences.getInstance();
......@@ -25,12 +28,19 @@ class Data extends ChangeNotifier {
void initParametersValues() async {
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;
void updateApiUrl(String apiurl) {
_apiurl = apiurl;
String get apiStatus => _apiStatus;
void updateApiStatus(String apiStatus) {
print('new API status: ' + apiStatus);
_apiStatus = apiStatus;
notifyListeners();
}
}
......@@ -3,6 +3,7 @@ import 'package:provider/provider.dart';
import '../provider/data.dart';
import '../screens/settings.dart';
import '../utils/api.dart';
class Home extends StatefulWidget {
static const String id = 'home';
......@@ -49,7 +50,17 @@ class _HomeState extends State<Home> {
),
body: SafeArea(
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 {
}
class _SettingsPageState extends State<SettingsPage> {
TextEditingController apiUrlFieldController = TextEditingController();
TextEditingController apiHostFieldController = TextEditingController();
@override
void dispose() {
apiUrlFieldController.dispose();
apiHostFieldController.dispose();
super.dispose();
}
......@@ -24,7 +24,7 @@ class _SettingsPageState extends State<SettingsPage> {
Widget build(BuildContext context) {
Data myProvider = Provider.of<Data>(context);
apiUrlFieldController.text = myProvider.getParameterValue('apiurl');
apiHostFieldController.text = myProvider.getParameterValue('apiHost');
return Scaffold(
appBar: AppBar(
......@@ -34,7 +34,7 @@ class _SettingsPageState extends State<SettingsPage> {
IconButton(
icon: Icon(Icons.save),
onPressed: () {
myProvider.setParameterValue('apiurl', apiUrlFieldController.text);
myProvider.setParameterValue('apiHost', apiHostFieldController.text);
Navigator.pop(context);
},
)
......@@ -49,10 +49,10 @@ class _SettingsPageState extends State<SettingsPage> {
body: Padding(
padding: const EdgeInsets.all(16.0),
child: TextFormField(
controller: apiUrlFieldController,
controller: apiHostFieldController,
decoration: InputDecoration(
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:
description: flutter
source: sdk
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:
dependency: transitive
description:
......
......@@ -11,6 +11,7 @@ dependencies:
sdk: flutter
provider: ^6.0.2
shared_preferences: ^2.0.6
http:
dev_dependencies:
flutter_test:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment