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

Merge branch '3-add-parameters-page' into 'master'

Resolve "Add parameters page"

Closes #3

See merge request !2
parents 2017f5f7 69a43736
No related branches found
No related tags found
1 merge request!2Resolve "Add parameters page"
Pipeline #2027 passed
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.2
app.versionCode=2
app.versionName=0.0.3
app.versionCode=3
Add parameters page with API URL
Ajout d'une page de paramétrage avec l'url de l'API
......@@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
import 'provider/data.dart';
import 'screens/home.dart';
import 'screens/settings.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
......@@ -26,6 +27,7 @@ class MyApp extends StatelessWidget {
home: Home(),
routes: {
Home.id: (context) => Home(),
SettingsPage.id: (context) => SettingsPage(),
},
);
}),
......
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
class Data extends ChangeNotifier {
// Application settings
String _apiurl = '';
getParameterValue(String parameterCode) {
switch(parameterCode) {
case 'apiurl': { return _apiurl; }
break;
}
}
setParameterValue(String parameterCode, String parameterValue) async {
print('set parameter "' + parameterCode + '" to value "' + parameterValue + '"');
switch(parameterCode) {
case 'apiurl': { updateApiUrl(parameterValue); }
break;
}
final prefs = await SharedPreferences.getInstance();
prefs.setString(parameterCode, parameterValue);
}
void initParametersValues() async {
final prefs = await SharedPreferences.getInstance();
setParameterValue('apiurl', prefs.getString('apiurl') ?? 'http://127.0.0.1/plotter');
}
String get apiurl => _apiurl;
void updateApiUrl(String apiurl) {
_apiurl = apiurl;
notifyListeners();
}
}
......@@ -2,10 +2,24 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../provider/data.dart';
import '../screens/settings.dart';
class Home extends StatelessWidget {
class Home extends StatefulWidget {
static const String id = 'home';
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
void initState() {
super.initState();
Data myProvider = Provider.of<Data>(context, listen: false);
myProvider.initParametersValues();
}
@override
Widget build(BuildContext context) {
Data myProvider = Provider.of<Data>(context);
......@@ -15,8 +29,19 @@ class Home extends StatelessWidget {
title: new Text('Stepper plotter assistant'),
actions: [
IconButton(
icon: Icon(Icons.settings),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return SettingsPage();
}),
);
},
)
],
leading: IconButton(
icon: Image.asset('assets/icons/application.png'),
onPressed: () { },
......
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../provider/data.dart';
class SettingsPage extends StatefulWidget {
static const String id = 'settings';
const SettingsPage({Key? key}) : super(key: key);
@override
_SettingsPageState createState() => _SettingsPageState();
}
class _SettingsPageState extends State<SettingsPage> {
TextEditingController apiUrlFieldController = TextEditingController();
@override
void dispose() {
apiUrlFieldController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
Data myProvider = Provider.of<Data>(context);
apiUrlFieldController.text = myProvider.getParameterValue('apiurl');
return Scaffold(
appBar: AppBar(
title: new Text('Stepper - settings'),
actions: [
IconButton(
icon: Icon(Icons.save),
onPressed: () {
myProvider.setParameterValue('apiurl', apiUrlFieldController.text);
Navigator.pop(context);
},
)
],
leading: IconButton(
icon: Image.asset('assets/icons/application.png'),
onPressed: () { },
),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: TextFormField(
controller: apiUrlFieldController,
decoration: InputDecoration(
border: UnderlineInputBorder(),
labelText: 'API URL',
),
),
),
);
}
}
......@@ -7,7 +7,7 @@ packages:
name: async
url: "https://pub.dartlang.org"
source: hosted
version: "2.7.0"
version: "2.8.1"
boolean_selector:
dependency: transitive
description:
......@@ -50,6 +50,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
ffi:
dependency: transitive
description:
name: ffi
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.2"
file:
dependency: transitive
description:
name: file
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.2"
flutter:
dependency: "direct main"
description: flutter
......@@ -60,6 +74,18 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
js:
dependency: transitive
description:
name: js
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.3"
matcher:
dependency: transitive
description:
......@@ -88,6 +114,48 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
platform:
dependency: transitive
description:
name: platform
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
process:
dependency: transitive
description:
name: process
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.3"
provider:
dependency: "direct main"
description:
......@@ -95,6 +163,48 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.0"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
sky_engine:
dependency: transitive
description: flutter
......@@ -141,7 +251,7 @@ packages:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.1"
version: "0.4.2"
typed_data:
dependency: transitive
description:
......@@ -156,6 +266,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
win32:
dependency: transitive
description:
name: win32
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.5"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0"
sdks:
dart: ">=2.12.0 <3.0.0"
flutter: ">=1.16.0"
dart: ">=2.13.0 <3.0.0"
flutter: ">=2.0.0"
......@@ -4,12 +4,13 @@ publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
provider: ^5.0.0
shared_preferences: ^2.0.6
dev_dependencies:
flutter_test:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment