Advertisement
Guest User

rxdart sharedprefs

a guest
Apr 19th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 3.20 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import 'package:shared_preferences/shared_preferences.dart';
  3. import 'package:rxdart/rxdart.dart';
  4. import 'dart:async';
  5.  
  6. void main() => runApp(MyApp());
  7.  
  8. class MyApp extends StatelessWidget {
  9.   @override
  10.   Widget build(BuildContext context) {
  11.     return MaterialApp(
  12.       home: Scaffold(
  13.         appBar: AppBar(
  14.           title: Text('Flutter Shared_Prefs Example'),
  15.         ),
  16.         body: Home(),
  17.       ),
  18.     );
  19.   }
  20. }
  21.  
  22. class Home extends StatefulWidget {
  23.   @override
  24.   HomeState createState() => HomeState();
  25. }
  26.  
  27. class HomeState extends State<Home> {
  28.   Future<SharedPreferences> _sPrefs = SharedPreferences.getInstance();
  29.   final TextEditingController controller = TextEditingController();
  30.   List<String> listOne, listTwo;
  31.   final PublishSubject subject = PublishSubject<List<String>>();
  32.  
  33.   @override
  34.   void initState() {
  35.     super.initState();
  36.     clearItems();
  37.     subject.stream.listen(setListener);
  38.   }
  39.  
  40.   @override
  41.   void dispose() {
  42.     subject.close();
  43.     super.dispose();
  44.   }
  45.  
  46.   Future setListener(list) async {
  47.     listTwo = await _sPrefs.then((sprefs) {
  48.       return sprefs.getStringList('list');
  49.     });
  50.   }
  51.  
  52.   Future<Null> addString() async {
  53.     final SharedPreferences prefs = await _sPrefs;
  54.     listOne.add(controller.text);
  55.     subject.add(listOne);
  56.     prefs.setStringList('list', listOne);
  57.     setState(() {
  58.       controller.text = '';
  59.     });
  60.   }
  61.  
  62.   Future<Null> clearItems() async {
  63.     final SharedPreferences prefs = await _sPrefs;
  64.     prefs.clear();
  65.     setState(() {
  66.       listOne = [];
  67.       listTwo = [];
  68.     });
  69.     subject.add(listTwo);
  70.   }
  71.  
  72.   // Future<Null> getStrings() async {
  73.   //   final SharedPreferences prefs = await _sPrefs;
  74.   //   listTwo = prefs.getStringList('list');
  75.   //   setState(() {});
  76.   // }
  77.  
  78.   Future<Null> updateStrings(String str) async {
  79.     final SharedPreferences prefs = await _sPrefs;
  80.     setState(() {
  81.       listOne.remove(str);
  82.       listTwo.remove(str);
  83.     });
  84.     prefs.setStringList('list', listOne);
  85.   }
  86.  
  87.   @override
  88.   Widget build(BuildContext context) {
  89.     // getStrings();
  90.     return Center(
  91.       child: ListView(
  92.         children: <Widget>[
  93.           TextField(
  94.               controller: controller,
  95.               decoration: InputDecoration(
  96.                 hintText: 'Type in something...',
  97.               )),
  98.           RaisedButton(
  99.             child: Text("Submit"),
  100.             onPressed: () {
  101.               addString();
  102.             },
  103.           ),
  104.           RaisedButton(
  105.             child: Text("Clear"),
  106.             onPressed: () {
  107.               clearItems();
  108.             },
  109.           ),
  110.           Flex(
  111.             direction: Axis.vertical,
  112.             children: listTwo == null
  113.                 ? []
  114.                 : listTwo
  115.                     .map((String s) => Dismissible(
  116.                         key: Key(s),
  117.                         onDismissed: (direction) {
  118.                           updateStrings(s);
  119.                         },
  120.                         child: ListTile(
  121.                           title: Text(s),
  122.                         )))
  123.                     .toList(),
  124.           )
  125.         ],
  126.       ),
  127.     );
  128.   }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement