diff --git a/lib/widgets/components/tutorials/step2.dart b/lib/widgets/components/tutorials/step2.dart index 51b68e8..0f9fec9 100644 --- a/lib/widgets/components/tutorials/step2.dart +++ b/lib/widgets/components/tutorials/step2.dart @@ -9,17 +9,6 @@ class Step2 extends StatelessWidget { final TextEditingController _clientIdController = TextEditingController(); final TextEditingController _clientSecretController = TextEditingController(); - Widget buildFieldDescription(String field, String description) { - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text(field, style: const TextStyle(fontWeight: FontWeight.bold)), - const Text(' : '), - Text(description) - ], - ); - } - Widget buildContent(BuildContext context) { return Column(children: [ const Padding( diff --git a/lib/widgets/components/tutorials/step3.dart b/lib/widgets/components/tutorials/step3.dart new file mode 100644 index 0000000..84ec0dd --- /dev/null +++ b/lib/widgets/components/tutorials/step3.dart @@ -0,0 +1,72 @@ +import 'dart:io'; +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +class Step3 extends StatelessWidget { + const Step3({Key? key}) : super(key: key); + + Widget buildContent(BuildContext context, SharedPreferences prefs) { + return Column(children: [ + const Padding( + padding: EdgeInsets.symmetric(vertical: 20), + child: Text('Étape 3:Authorisation de l\'application', + style: TextStyle(fontSize: 20)), + ), + const Text( + 'Pour pouvoir utiliser l\'application, il faut récupérer les clefs associées à l\'application créée juste avant.'), + ]); + } + + Future waitAuthorizationCallback() async { + var server = await HttpServer.bind(InternetAddress.loopbackIPv4, 1214); + var request = await server.first; + + var uri = Uri.dataFromString(request.requestedUri.toString()); + var query = uri.queryParameters; + var code = query['code']; + + if (code != null) { + var prefs = await SharedPreferences.getInstance(); + prefs.setString('code', code); + } + + request.response + ..headers.contentType = ContentType.text + ..write('You can close tab now') + ..close(); + } + + @override + Widget build(BuildContext context) { + waitAuthorizationCallback(); + return Column( + children: [ + Expanded( + child: FutureBuilder( + future: SharedPreferences.getInstance(), + builder: (BuildContext context, + AsyncSnapshot snapshot) { + if (snapshot.hasData) { + final prefs = snapshot.data!; + return buildContent(context, prefs); + } else { + return const Center(child: CircularProgressIndicator()); + } + })), + Padding( + padding: const EdgeInsets.symmetric(vertical: 20), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + TextButton( + onPressed: () {}, child: const Text('Étape précédente')), + TextButton(onPressed: () {}, child: const Text('Étape suivante')) + ], + ), + ) + ], + ); + } +} diff --git a/lib/widgets/pages/tutorial.dart b/lib/widgets/pages/tutorial.dart index 99b5eba..995599c 100644 --- a/lib/widgets/pages/tutorial.dart +++ b/lib/widgets/pages/tutorial.dart @@ -1,5 +1,6 @@ import 'package:desktopapp/widgets/components/tutorials/step1.dart'; import 'package:desktopapp/widgets/components/tutorials/step2.dart'; +import 'package:desktopapp/widgets/components/tutorials/step3.dart'; import 'package:flutter/material.dart'; class TutorialPage extends StatelessWidget { @@ -7,6 +8,6 @@ class TutorialPage extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold(body: Step2()); + return Scaffold(body: Step3()); } }