diff options
author | Hritik Chouhan <hritikc3961@gmail.com> | 2022-09-01 21:47:45 +0200 |
---|---|---|
committer | Hritik Chouhan <hritikc3961@gmail.com> | 2022-09-21 12:25:15 +0200 |
commit | 0e820517cbcc6d799cf7f23c7041f3f15b732dc0 (patch) | |
tree | 93b40a2310e867a2bca5a553dbc0b567f65fb62a /lib/config.dart | |
parent | 03bb9f818d8caad2213e93e25f085b8672e5ceed (diff) |
Upload Flutter-Navigation app for IVI
Flutter Navigation app which Shows current location,
Route for destination, search for destination in search bar,
turn by turn navigation,duration and distance for destination.
Used Mapbox api and Flutter_map plugin and integrated with
KUKSA.VAL for current location.
Update UI ,Removed unused code and remove hard coded access token.
Bug-AGL: SPEC-4548
Signed-off-by: Hritik Chouhan <hritikc3961@gmail.com>
Change-Id: I7314285f7b9cdc6940175758761fcc8615c5ab0e
Diffstat (limited to 'lib/config.dart')
-rw-r--r-- | lib/config.dart | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/lib/config.dart b/lib/config.dart new file mode 100644 index 0000000..cda553b --- /dev/null +++ b/lib/config.dart @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:flutter_navigation/kuksa/intial-connection.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:yaml/yaml.dart'; + + +class GetConfig extends ConsumerStatefulWidget { + const GetConfig({Key? key, required this.client}) : super(key: key); + final HttpClient client; + + @override + ConsumerState<GetConfig> createState() => _GetConfigState(); +} + +class _GetConfigState extends ConsumerState<GetConfig> { + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + final configStateProvider = ref.read(ConfigStateprovider.notifier); + + String configFilePath = '/etc/xdg/AGL/nav_config.yaml'; + String mapboxFilePath = '/etc/default/mapboxkey'; + + String keyContent = ""; + + final mapboxKeyFile = File(mapboxFilePath); + + final configFile = File(configFilePath); + configFile.readAsString().then((content) { + final dynamic yamlMap = loadYaml(content); + configStateProvider.update( + hostname: yamlMap['hostname'], + port: yamlMap['port'], + kuksaAuthToken: yamlMap['kuskaAuthToken'], + ); + }); + mapboxKeyFile.readAsString().then((content) { + keyContent = content.split(':')[1].trim(); + if (keyContent.isNotEmpty && keyContent != 'YOU_NEED_TO_SET_IT_IN_LOCAL_CONF') { + configStateProvider.update(mapboxAccessToken: keyContent); + } else { + print("WARNING: Mapbox API Key not found !"); + } + }); + }); + } + + @override + Widget build(BuildContext context) { + final config = ref.watch(ConfigStateprovider); + if (config.hostname == "" || + config.port == 0 || + config.kuksaAuthToken == "" || + config.mapboxAccessToken == "") { + return Scaffold( + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: const [ + Text("ERROR", + style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)), + Text( + "Something Wrong with config file! Check config.yaml file and restart"), + ], + )), + ); + } + return InitialScreen(client: widget.client); + } +} + +class Config { + Config({ + required this.hostname, + required this.port, + required this.kuksaAuthToken, + required this.mapboxAccessToken, + + }); + final String hostname; + final int port; + final String kuksaAuthToken; + final String mapboxAccessToken; + + Config copywith({ + String? hostname, + int? port, + String? kuksaAuthToken, + String? mapboxAccessToken, + }) => + Config( + hostname: hostname ?? this.hostname, + port: port ?? this.port, + kuksaAuthToken: kuksaAuthToken ?? this.kuksaAuthToken, + mapboxAccessToken: mapboxAccessToken ?? this.mapboxAccessToken, + ); +} + +final ConfigStateprovider = +StateNotifierProvider<ConfigStateNotifier, Config>( + (ref) => ConfigStateNotifier()); + +class ConfigStateNotifier extends StateNotifier<Config> { + ConfigStateNotifier() : super(_initialValue); + static final Config _initialValue = Config( + hostname: "", + port: 0, + kuksaAuthToken: "", + mapboxAccessToken: "", + ); + void update({ + String? hostname, + int? port, + String? kuksaAuthToken, + String? mapboxAccessToken, + }) { + state = state.copywith( + hostname: hostname, + port: port, + kuksaAuthToken: kuksaAuthToken, + mapboxAccessToken: mapboxAccessToken, + ); + } +} |