Я пытаюсь использовать sharedprefs, чтобы упростить постоянство данных на разных страницах / фрагментах (игнорируйте «json», написанный здесь и там), и, прежде чем вы спросите, это только для одноразовых данных, приложение будет построено поверхSQL.
, поэтому я создал класс для обработки sharedprefs
import 'dart:async';
import 'package:shared_preferences/shared_preferences.dart';
class JsonHelper {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
getJson(String _key) async {
final SharedPreferences prefs = await _prefs;
final String _json = prefs.getString('$_key');
return _json;
}
setJson(String _key, String _json) async {
final SharedPreferences prefs = await _prefs;
prefs.setString('$_key', _json);
}
delJson(String _key) async {
final prefs = await SharedPreferences.getInstance();
prefs.remove('$_key');
}
}
и "простой" домашней страницы, настолько простой, что не работает
import 'package:flutter/material.dart';
import 'package:flutter_3/DATABASE/JsonHelper.dart';
class LandingPage extends StatefulWidget {
@override
_LandingPageState createState() => _LandingPageState();
}
class _LandingPageState extends State<LandingPage> {
JsonHelper _jHelp;
String _localKey = 'test';
TextEditingController _textCTRL;
@override
void initState() {
_jHelp.setJson(_localKey, "start");
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text(_jHelp.getJson(_localKey)),
),
body: Center(
child: Column(
children: [
TextField(
controller: _textCTRL,
decoration: InputDecoration(labelText: 'write here'),
),
RaisedButton(onPressed:_pressButton)
],
),
),
),
);
}
void _pressButton () {
_jHelp.setJson(_localKey, _textCTRL.toString());
Navigator.of(context).pop();
}
}
Чтоя делаю не так?заранее благодарю за помощь