Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. class _MyHomePageState extends State<MyHomePage> {
  2. bool show = true;
  3. ScrollController _controller = ScrollController();
  4. final AsyncMemoizer _memoizer = AsyncMemoizer();
  5.  
  6. @override
  7. void initState() {
  8. super.initState();
  9. _controller.addListener(listener);
  10. }
  11.  
  12. void listener() {
  13. if (_controller.position.userScrollDirection == ScrollDirection.forward) {
  14. show = true;
  15. } else if (_controller.position.userScrollDirection ==
  16. ScrollDirection.reverse) {
  17. show = false;
  18. }
  19. setState(() {});
  20. }
  21.  
  22. int _counter = 0;
  23. int id = 0;
  24. Future<List<Dog>> _getDogs() async {
  25. // return this._memoizer.(() async {
  26. // return await getDogs();
  27. // });
  28. }
  29.  
  30. void _insertDog() async {
  31. id++;
  32. var fido = Dog(id: id, name: "fido$id", age: id * 3);
  33. await insertDog(fido);
  34. setState(() {});
  35. }
  36.  
  37. void _updateDog(Dog fido) async {
  38. fido = Dog(
  39. id: fido.id,
  40. name: fido.name,
  41. age: fido.age + 7,
  42. );
  43. await updateDog(fido);
  44. setState(() {});
  45. }
  46.  
  47. void _deleteDog(int id) async {
  48. await deleteDog(id);
  49. setState(() {});
  50. }
  51.  
  52. @override
  53. void dispose() {
  54. _controller.removeListener(listener);
  55. super.dispose();
  56. }
  57.  
  58. @override
  59. Widget build(BuildContext context) {
  60. return Scaffold(
  61. appBar: AppBar(
  62. title: Text("Sqflite Demo"),
  63. ),
  64. body: Container(
  65. child: FutureBuilder(
  66. future: getDogs(),
  67. builder: (BuildContext context, AsyncSnapshot snapshot) {
  68. if (snapshot.connectionState == ConnectionState.done) {
  69. return ListView.builder(
  70. controller: _controller,
  71. itemCount: snapshot.data.length,
  72. itemBuilder: (BuildContext context, int index) {
  73. return ListTile(
  74. title: Text(snapshot.data[index].name),
  75. subtitle: Text("Age: ${snapshot.data[index].age}"),
  76. onTap: () => _updateDog(snapshot.data[index]),
  77. onLongPress: () => _deleteDog(snapshot.data[index].id),
  78. );
  79. },
  80. );
  81. } else {
  82. return Container(
  83. child: Center(
  84. child: Text("Loading..."),
  85. ));
  86. }
  87. },
  88. ),
  89. ),
  90. floatingActionButton: Visibility(
  91. visible: show,
  92. child: Stack(
  93. children: <Widget>[
  94. Padding(
  95. padding: EdgeInsets.only(left: 30),
  96. child: Align(
  97. alignment: Alignment.bottomLeft,
  98. child: FloatingActionButton(
  99. onPressed: () {
  100. setState(() {});
  101. },
  102. child: Icon(Icons.refresh),
  103. ),
  104. ),
  105. ),
  106. Align(
  107. alignment: Alignment.bottomRight,
  108. child: FloatingActionButton(
  109. onPressed: _insertDog,
  110. tooltip: 'Increment',
  111. child: Icon(Icons.add),
  112. ),
  113. ),
  114. ],
  115. ),
  116. ));
  117. }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement