mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-15 07:56:11 +08:00
133 lines
3.6 KiB
Dart
133 lines
3.6 KiB
Dart
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<BoolMessage> containsKey(ServiceCall _, StringMessage message) async {
|
|
return BoolMessage()..value = pref.containsKey(message.value);
|
|
}
|
|
|
|
@override
|
|
Future<StringListMessage> getKeys(ServiceCall _, EmptyMessage __) async {
|
|
return StringListMessage(value: pref.getKeys());
|
|
}
|
|
|
|
@override
|
|
Future<OptionalBool> getBool(ServiceCall _, StringMessage key) async {
|
|
return OptionalBool(value: pref.getBool(key.value));
|
|
}
|
|
|
|
@override
|
|
Future<OptionalInt> getInt(ServiceCall _, StringMessage key) async {
|
|
var ret = pref.getInt(key.value);
|
|
if (ret != null) {
|
|
return OptionalInt(value: Int64(ret));
|
|
}
|
|
return OptionalInt();
|
|
}
|
|
|
|
@override
|
|
Future<OptionalDouble> getDouble(ServiceCall _, StringMessage key) async {
|
|
return OptionalDouble(value: pref.getDouble(key.value));
|
|
}
|
|
|
|
@override
|
|
Future<OptionalString> getString(ServiceCall _, StringMessage key) async {
|
|
return OptionalString(value: pref.getString(key.value));
|
|
}
|
|
|
|
@override
|
|
Future<StringListMessage> getStringList(
|
|
ServiceCall _, StringMessage key) async {
|
|
return StringListMessage(value: pref.getStringList(key.value));
|
|
}
|
|
|
|
@override
|
|
Future<BoolMessage> setBool(ServiceCall _, SetBoolRequest req) async {
|
|
return BoolMessage(value: await pref.setBool(req.key, req.value));
|
|
}
|
|
|
|
@override
|
|
Future<BoolMessage> setInt(ServiceCall _, SetIntRequest req) async {
|
|
return BoolMessage(value: await pref.setInt(req.key, req.value.toInt()));
|
|
}
|
|
|
|
@override
|
|
Future<BoolMessage> setDouble(ServiceCall _, SetDoubleRequest req) async {
|
|
return BoolMessage(value: await pref.setDouble(req.key, req.value));
|
|
}
|
|
|
|
@override
|
|
Future<BoolMessage> setString(ServiceCall _, SetStringRequest req) async {
|
|
return BoolMessage(value: await pref.setString(req.key, req.value));
|
|
}
|
|
|
|
@override
|
|
Future<BoolMessage> setStringList(
|
|
ServiceCall _, SetStringListRequest req) async {
|
|
return BoolMessage(value: await pref.setStringList(req.key, req.value));
|
|
}
|
|
|
|
@override
|
|
Future<BoolMessage> remove(ServiceCall _, StringMessage key) async {
|
|
return BoolMessage(value: await pref.remove(key.value));
|
|
}
|
|
}
|
|
|
|
Future<void> main(List<String> 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<MyApp> {
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
|
|
_initAsync();
|
|
}
|
|
|
|
void _initAsync() async {
|
|
var pref = await SharedPreferences.getInstance();
|
|
final server = Server(
|
|
[SharedPreferencesService(pref)],
|
|
const <Interceptor>[],
|
|
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'),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|