diff --git a/lib/main.dart b/lib/main.dart
index 170493e70ac06ad4af289b7878138f6726301fa0..5fb57a8a349245b171e2ee1e82134264f6a2a28c 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -96,28 +96,36 @@ class Gecko extends StatelessWidget {
     );
 
     DubpRust.setup();
-    return MultiProvider(
-        providers: [
-          Provider(create: (context) => HistoryProvider()),
-          Provider(create: (context) => MyWalletsProvider()),
-        ],
-        child: MaterialApp(
-          title: 'Äžecko',
-          theme: ThemeData(
-            primaryColor: Color(0xffFFD58D),
-            accentColor: Colors.grey[850],
-            textTheme: TextTheme(
-              bodyText1: TextStyle(),
-              bodyText2: TextStyle(),
-            ).apply(
-              bodyColor: Color(0xff855F2D),
-              // displayColor: Colors.blue,
+    return
+        // MultiProvider(
+        //     providers: [
+        //       Provider(create: (context) => HistoryProvider()),
+        //       Provider(create: (context) => MyWalletsProvider()),
+        //     ],
+        //     child:
+        MaterialApp(
+            title: 'Äžecko',
+            theme: ThemeData(
+              primaryColor: Color(0xffFFD58D),
+              accentColor: Colors.grey[850],
+              textTheme: TextTheme(
+                bodyText1: TextStyle(),
+                bodyText2: TextStyle(),
+              ).apply(
+                bodyColor: Color(0xff855F2D),
+                // displayColor: Colors.blue,
+              ),
             ),
-          ),
-          home: GraphQLProvider(
-            client: _client,
-            child: HomeScreen(),
-          ),
-        ));
+            home: MultiProvider(
+              providers: [
+                // Provider(create: (context) => HistoryProvider()),
+                Provider(create: (context) => MyWalletsProvider()),
+                ChangeNotifierProvider(create: (_) => HistoryProvider(''))
+              ],
+              child: GraphQLProvider(
+                client: _client,
+                child: HomeScreen(),
+              ),
+            ));
   }
 }
diff --git a/lib/models/history.dart b/lib/models/history.dart
index 099ddfd927a3bb8956db3fb69d0f6ca435c1a730..f3361232a45c06f4615e8b09c9f5bb233a4036df 100644
--- a/lib/models/history.dart
+++ b/lib/models/history.dart
@@ -5,10 +5,13 @@ import 'package:sentry/sentry.dart' as sentry;
 import 'package:qrscan/qrscan.dart' as scanner;
 
 class HistoryProvider with ChangeNotifier {
-  final TextEditingController _outputPubkey = new TextEditingController();
   String pubkey = '';
+  HistoryProvider(this.pubkey);
+  final TextEditingController _outputPubkey = new TextEditingController();
+  // String pubkey = 'D2meevcAHFTS2gQMvmRW5Hzi25jDdikk4nC4u1FkwRaU'; // For debug
 
-  ScrollController scrollController = new ScrollController();
+  // FetchMoreOptions opts;
+  // ScrollController scrollController = new ScrollController();
 
   Future scan() async {
     await Permission.camera.request();
@@ -56,4 +59,13 @@ class HistoryProvider with ChangeNotifier {
 
     return '';
   }
+
+  // scrollListener() {
+  //   if (scrollController.offset >= scrollController.position.maxScrollExtent &&
+  //       !scrollController.position.outOfRange) {
+  //     print('On est en bas !!');
+  //     // fetchMore(opts);
+  //     notifyListeners();
+  //   }
+  // }
 }
diff --git a/lib/ui/historyScreen.dart b/lib/ui/historyScreen.dart
index d1ebcd6842bc9f552dfa0dbbe7b52493d217d205..214139be91f6c3bfe07ee66a0fd24ce853a3aa47 100644
--- a/lib/ui/historyScreen.dart
+++ b/lib/ui/historyScreen.dart
@@ -3,41 +3,35 @@ import 'package:gecko/query.dart';
 import 'package:gecko/models/history.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/foundation.dart';
-import 'dart:typed_data';
 import 'dart:ui';
 import 'package:graphql_flutter/graphql_flutter.dart';
+import 'package:provider/provider.dart';
 import 'package:truncate/truncate.dart';
 
 //ignore: must_be_immutable
 class HistoryScreen extends StatelessWidget with ChangeNotifier {
-  Widget currentScreen;
-
-  Uint8List bytes = Uint8List(0);
   final TextEditingController _outputPubkey = new TextEditingController();
+  ScrollController scrollController = new ScrollController();
   final nRepositories = 20;
-
-  // String pubkey = 'D2meevcAHFTS2gQMvmRW5Hzi25jDdikk4nC4u1FkwRaU'; // For debug
-  String pubkey = '';
-  bool isBuilding = true;
-
-  HistoryProvider historyProvider = HistoryProvider();
-
-  scrollListener() {
-    if (historyProvider.scrollController.offset >=
-            historyProvider.scrollController.position.maxScrollExtent &&
-        !historyProvider.scrollController.position.outOfRange) {
-      notifyListeners();
-    }
-  }
+  HistoryProvider _historyProvider;
+
+  FetchMore fetchMore;
+  FetchMoreOptions opts;
+  // scrollListener() {
+  //   if (scrollController.offset >= scrollController.position.maxScrollExtent &&
+  //       !scrollController.position.outOfRange) {
+  //     print('On est en bas !!');
+  //     print(opts.document);
+  //     fetchMore(opts);
+  //     notifyListeners();
+  //   }
+  // }
 
   @override
   Widget build(BuildContext context) {
-    print('Build pubkey : ' + pubkey);
-    print('Build this.pubkey : ' + this.pubkey);
-    print('isBuilding: ' + isBuilding.toString());
-    historyProvider.scrollController.addListener(scrollListener);
-    historyProvider.scrollController = ScrollController();
-
+    _historyProvider = Provider.of<HistoryProvider>(context);
+    print('Build pubkey : ' + _historyProvider.pubkey);
+    // scrollController.addListener(scrollListener);
     return Scaffold(
         floatingActionButton: Container(
           height: 80.0,
@@ -46,11 +40,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
             child: FloatingActionButton(
               heroTag: "buttonScan",
               onPressed: () async {
-                await historyProvider.scan();
-                // print(resultScan);
-                // if (resultScan != 'false') {
-                //   onTabTapped(0);
-                // }
+                await _historyProvider.scan();
               },
               child: Container(
                   height: 40.0,
@@ -67,8 +57,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
               // Entrée de la pubkey
               onChanged: (text) {
                 print("Clé tappxé: $text");
-                this.pubkey = text;
-                historyProvider.isPubkey(text);
+                _historyProvider.isPubkey(text);
               },
               controller: this._outputPubkey,
               maxLines: 1,
@@ -85,7 +74,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                 disabledBorder: InputBorder.none,
               ),
               style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold)),
-          if (this.pubkey != '') historyQuery(),
+          if (_historyProvider.pubkey != '') historyQuery(),
         ]));
   }
 
@@ -99,13 +88,13 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
           options: QueryOptions(
             document: gql(getHistory),
             variables: <String, dynamic>{
-              'pubkey': this.pubkey,
+              'pubkey': _historyProvider.pubkey,
               'number': nRepositories,
               // set cursor to null so as to start at the beginning
               'cursor': null
             },
           ),
-          builder: (QueryResult result, {refetch, FetchMore fetchMore}) {
+          builder: (QueryResult result, {refetch, fetchMore}) {
             if (result.isLoading && result.data == null) {
               return const Center(
                 child: CircularProgressIndicator(),
@@ -138,7 +127,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
             final num balance =
                 removeDecimalZero(result.data['balance']['amount'] / 100);
 
-            FetchMoreOptions opts = FetchMoreOptions(
+            opts = FetchMoreOptions(
               variables: {'cursor': fetchMoreCursor},
               updateQuery: (previousResultData, fetchMoreResultData) {
                 final List<dynamic> repos = [
@@ -184,43 +173,57 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
             List _transBC = parseHistory(blockchainTX);
 
             // Build history list
-            return Expanded(
-                child: ListView(
-              controller: historyProvider.scrollController,
-              children: <Widget>[
-                SizedBox(height: 7),
-                if (this.pubkey != '')
-                  Text(balance.toString() + ' Äž1',
-                      textAlign: TextAlign.center,
-                      style: TextStyle(fontSize: 30.0)),
-                SizedBox(height: 12),
-                for (var repository in _transBC)
-                  ListTile(
-                      contentPadding: const EdgeInsets.all(5.0),
-                      leading:
-                          Text(repository[3], style: TextStyle(fontSize: 14.0)),
-                      title: Text(
-                          repository[1].toString() +
-                              '\n' +
-                              truncate(repository[2], 17,
-                                  omission: "...",
-                                  position: TruncatePosition.end),
-                          style: TextStyle(fontSize: 14.0)),
-                      subtitle:
-                          Text(repository[5], style: TextStyle(fontSize: 14.0)),
-                      dense: true,
-                      onTap: () {
-                        historyProvider.isPubkey(repository[2]);
-                      }),
-                if (result.isLoading)
-                  Row(
-                    mainAxisAlignment: MainAxisAlignment.center,
-                    children: <Widget>[
-                      CircularProgressIndicator(),
-                    ],
-                  ),
-              ],
-            ));
+            return NotificationListener(
+                child: Expanded(
+                    child: ListView(
+                  controller: scrollController,
+                  children: <Widget>[
+                    SizedBox(height: 7),
+                    if (_historyProvider.pubkey != '')
+                      Text(balance.toString() + ' Äž1',
+                          textAlign: TextAlign.center,
+                          style: TextStyle(fontSize: 30.0)),
+                    SizedBox(height: 12),
+                    for (var repository in _transBC)
+                      ListTile(
+                          contentPadding: const EdgeInsets.all(5.0),
+                          leading: Text(repository[3],
+                              style: TextStyle(fontSize: 14.0)),
+                          title: Text(
+                              repository[1].toString() +
+                                  '\n' +
+                                  truncate(repository[2], 17,
+                                      omission: "...",
+                                      position: TruncatePosition.end),
+                              style: TextStyle(fontSize: 14.0)),
+                          subtitle: Text(repository[5],
+                              style: TextStyle(fontSize: 14.0)),
+                          dense: true,
+                          onTap: () {
+                            this._outputPubkey.text = repository[2];
+                            _historyProvider.isPubkey(repository[2]);
+                            // notifyListeners();
+                          }),
+                    if (result.isLoading)
+                      Row(
+                        mainAxisAlignment: MainAxisAlignment.center,
+                        children: <Widget>[
+                          CircularProgressIndicator(),
+                        ],
+                      ),
+                  ],
+                )),
+                onNotification: (t) {
+                  // print(scrollController.position.pixels);
+                  // print(scrollController.position.maxScrollExtent);
+                  if (t is ScrollEndNotification &&
+                      scrollController.position.pixels >=
+                          scrollController.position.maxScrollExtent * 0.8) {
+                    fetchMore(opts);
+                    // notifyListeners();
+                  }
+                  return true;
+                });
           },
         ),
       ],
diff --git a/pubspec.yaml b/pubspec.yaml
index 2ce03824d0e42e7a9808d0f302ad1f9246b53d58..c8723919b700d2060541533f3d496d87547dc81d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -5,7 +5,7 @@ description: A new Flutter project.
 # pub.dev using `pub publish`. This is preferred for private packages.
 publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 
-version: 0.0.0+13
+version: 0.0.0+14
 
 environment:
   sdk: ">=2.7.0 <3.0.0"