import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:fixnum/fixnum.dart'; import 'package:grpc/grpc.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:gitjournal/generated/shared_preferences.pb.dart'; import 'package:gitjournal/generated/shared_preferences.pbgrpc.dart'; class SharedPreferencesService extends SharedPreferencesServiceBase { final SharedPreferences pref; SharedPreferencesService(this.pref); @override Future containsKey(ServiceCall _, StringMessage message) async { return BoolMessage()..value = pref.containsKey(message.value); } @override Future getKeys(ServiceCall _, EmptyMessage __) async { return StringListMessage(value: pref.getKeys()); } @override Future getBool(ServiceCall _, StringMessage key) async { return OptionalBool(value: pref.getBool(key.value)); } @override Future getInt(ServiceCall _, StringMessage key) async { var ret = pref.getInt(key.value); if (ret != null) { return OptionalInt(value: Int64(ret)); } return OptionalInt(); } @override Future getDouble(ServiceCall _, StringMessage key) async { return OptionalDouble(value: pref.getDouble(key.value)); } @override Future getString(ServiceCall _, StringMessage key) async { return OptionalString(value: pref.getString(key.value)); } @override Future getStringList( ServiceCall _, StringMessage key) async { return StringListMessage(value: pref.getStringList(key.value)); } @override Future setBool(ServiceCall _, SetBoolRequest req) async { return BoolMessage(value: await pref.setBool(req.key, req.value)); } @override Future setInt(ServiceCall _, SetIntRequest req) async { return BoolMessage(value: await pref.setInt(req.key, req.value.toInt())); } @override Future setDouble(ServiceCall _, SetDoubleRequest req) async { return BoolMessage(value: await pref.setDouble(req.key, req.value)); } @override Future setString(ServiceCall _, SetStringRequest req) async { return BoolMessage(value: await pref.setString(req.key, req.value)); } @override Future setStringList( ServiceCall _, SetStringListRequest req) async { return BoolMessage(value: await pref.setStringList(req.key, req.value)); } @override Future remove(ServiceCall _, StringMessage key) async { return BoolMessage(value: await pref.remove(key.value)); } } Future main(List args) async { return runApp(MyApp()); } // todo: Create some kind of QR code for getting the IP and hostname class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State { @override void initState() { super.initState(); _initAsync(); } void _initAsync() async { var pref = await SharedPreferences.getInstance(); final server = Server( [SharedPreferencesService(pref)], const [], CodecRegistry(codecs: const [GzipCodec(), IdentityCodec()]), ); await server.serve(port: 50052); print('Server listening on port ${server.port}...'); } @override Widget build(BuildContext context) { return MaterialApp( title: 'Welcome to Flutter', home: Scaffold( appBar: AppBar( title: const Text('Welcome to Flutter'), ), body: const Center( child: Text('Hello World'), ), ), ); } }