KeepReading - a Mobile (Android/IOS) Cross-Platform App wrapper for the Keep Talking and Nobody Explodes manual

Last update: May 16, 2022

dart flutter android ios

KeepReading

KeepReading is a Mobile (Android/IOS) Cross-Platform App wrapper for the Keep Talking and Nobody Explodes manual. It helps you to jump directly to a specific section of the manual with just a tap 🚀 !

Features 🚀

  • Select and Import PDFs from phone storage
  • Auto update check with GitHub Releases
  • Quick Jump to PDFs section via buttons
  • Pre-rendering PDF's pages to avoid lag when using the app

Install ⬇️

Codemagic build status

Download the APK/APP.ZIP file from this link Latest Release and just install it !

Builds are made with ❤️ by CodeMagic!

Build from Source ⚙️

  1. Clone the repo:
    git clone https://github.com/ncvescera/KeepReading.git
    cd KeepReading/KeepReading
    
  2. Get all required packages:
    flutter pub get
    
  3. Build the apk/ipa with
    flutter build apk
    flutter build ipa
    

For more info see:

Future Updates 💪

  • IOS release
  • Page Helpers, some tools that help you with specific blocks e.g. pre-calculated intersections in complex cables, ecc
  • Desktop version ??
  • Better performance when PDF is pre-rendering pages (there is a problems with Isolate module and PDF reader: issue)

GitHub

https://github.com/ncvescera/KeepReading
You might also like...

The Fuse Wallet is a cross platform Ethereum wallet written in Dart and built on Flutter.

Fuse Wallet The Fuse Wallet is a cross platform Ethereum wallet written in Dart and built on Flutter. It's runninng on the Fuse network, but can be pl

May 19, 2022

A cross platform application written in flutter to help people stick to their routines and achieve their goals

A cross platform application written in flutter to help people stick to their routines and achieve their goals

Scheduler Scheduler is a cross platform application written in flutter to help people stick to their routines and achieve their goals. Our service inc

Jan 21, 2022

Cross-platform GitHub client in Flutter and BLoC clean architecture

FlutterHub Cross-platform GitHub client in Flutter and BLoC clean architecture. SwiftHub - Swift version is available Try Web version Get Started To g

Aug 14, 2022

Private, cross-platform package tracking app

Private, cross-platform package tracking app

LibreTrack Private, cross-platform package tracking app. Track postal items directly on your device using accounts of postal services. The app respect

Jul 30, 2022

Encord's cross-platform chat app similar to Discord

Encord-Chat Encord's cross-platform chat app similar to Discord Getting Started This project is a starting point for a Flutter application. A few reso

May 17, 2022

A simple, cross-platform password manager created with Flutter.

A simple, cross-platform password manager created with Flutter.

PassMan PassMan Logo © 2021 by Yash Ahir is licensed under CC BY-NC 4.0 A simple, cross-platform password manager created with Flutter. How to run thi

Jan 23, 2022

Cross-platform Twitch Chat application with 3rd-party addon support!

Cross-platform Twitch Chat application with 3rd-party addon support!

Chatsen Chatsen is a cross-platform application that allows you to chat on Twitch with support for 3rd-party services such as 7TV, BTTV and FFZ. It al

Jul 31, 2022

A cross platform GUI, soon to be the official GUI.

CCExtractor Flutter GUI The new cross platform interface is all you need, as it includes all the options. After installing GUI you will have a shortcu

Mar 10, 2022
Comments
  • 1. v1.0.0

    Terminato sviluppo della versione 1.0.0 ! Ricontrollare tutto e correggere possibili errori ortografici e rimuovere cartelle inutili.

    Novità App

    • Selezione/Rimozione PDF: aggiunta la possibilità di selezionare un pdf dalla memoria del cellulare. Non serve più aggiungerlo tra gli asset e poi generare la build. Il PDF può anche essere rimosso per poterne scegliere un altro. Il PDF viene salvato nella memoria interna dell'app quindi l'originale può anche essere rimosso. C'è una pagina apposta per la selezione del PDF.
    • Sistema di Aggiornamenti: Introdotto sistema di aggiornamenti che all'avvio dell'app controlla se c'è una nuova release nella repo di GitHub (controlla se la versione dell'ultima release è più aggiornata della versione in locale). Il controllo della nuova versione viene fatto all'avvio dell'app ma può essere ripetuto in qualsiasi momento tramite un bottone. Il sistema di aggiornamento rimanda alla pagina GitHub della repo.
    • Migliorata performance PDF: è stato migliorato il modo in cui viene visualizzato il PDF. Ora il PDF viene pre-caricato e solo quando tutte le pagine sono renderizzate vengono mostrate. Questo per evitare qualunque tipo di lag durante la lettura del PDF. È meglio aspettare un po di tempo e avere tutto che funziona che poter vedere subito le prime pagine ma aspettare tempo quando devo saltare da una sezione all'altra. Questa fase può richiedere abbastanza tempo e non può essere interrotta. Lagga tutto ma ho cercato di fare in modo di non farlo notare 🦧 .

    Novità Repo

    • Aggiunte gif che mostrano il funzionamento delle principali funzioni
    • Aggiunta sezione Features dove vengono elencate le principali funzioni
    • Modificata sezione Build from Source
    • Aggiunte emoji ai tioli
    • Aggiunta sezione Future Updates

    Issues

    • 🟡 Problema con Visualizzatore PDF: il widget che mostra tutte le pagine del PDF ha un problema con la gestione del contesto e dell'albero dei widget. È stata trovata una soluzione temporanea sostituendo una dipendenza con una repo fatta da un utente su Github https://github.com/ncvescera/KeepReading/blob/9dca6ea5a3a440e4cc501a7076db6db1ee63cbab/KeepReading/pubspec.yaml#L46-L50
    • 🔴 Problema con il renderer PDF: renderizzare tutte le pagine prima di mostrarle può risultare un compito molto faticoso e che richiede abbastanza tempo. Non è possibile mettere questa fase in un thread separato (Isolate) dato che sembra esserci un errore nel codice del PDF renderer: issue renderer. Ho fatto di tutto per non far vedere il lag mostruoso che viene generato evitando di mostrare widget con cui l'utente possa interagire. Il problema principale è che questa fase non può essere interrotta ! Se l'utente vuole rimuovere il pdf deve per forza aspettare che venga tutto caricato.
    Reviewed by ncvescera at 2022-05-27 16:02
  • 2. Semplificazione passaggio di funzioni

    Per come è scritto il codie per poter invocare una funzione di un Widget da un altro widget gli va passata come parametro. https://github.com/ncvescera/KeepReading/blob/ad27ef0fa2a72fee6f2ef5a19789cba0b5aabf25/KeepReading/lib/page/home_page.dart#L56-L67 Questa riga mostra questo esempio: la funzione _checkUpdateOnStart viene passata al Widget che poi la usa al suo interno in qualche punto https://github.com/ncvescera/KeepReading/blob/ad27ef0fa2a72fee6f2ef5a19789cba0b5aabf25/KeepReading/lib/page/home_page.dart#L64

    Questo, fin quando si tratta di passare una funzione ad un widget va bene, ma inizia a sorgere un problema di comprensione del codice quando quella funzione deve essere passata ad un Widget che la passa ad un Widget che la passa ad un Widget ecc.

    Ho trovato un modo per semplificare il tutto che permette di invocare una funzione direttamente dal Widget che ne ha bisogno senza dover ricorrere a questo passaggio. Lo svantaggio è che va esposto lo stato del Widget che contiene la funzione in questione e serve quindi una gestione degli attributi e degli altri metodi migliroe (le variabili/metodi che devono essere privati vanno messi privati per bene).

    Il metodo funziona così:

    Espongo lo stato del widget dove è contenuta la funzione che voglio che venga utilizzata da altri widget.

    class HomePage extends StatefulWidget {
      const HomePage({
        Key? key,
        required this.appName,
      }) : super(key: key);
    
      final String appName;
     
      // esposizione dello stato del widget
      static of(BuildContext context, {bool root = false}) => root
          ? context.findRootAncestorStateOfType<_HomePageState>()
          : context.findAncestorStateOfType<_HomePageState>();
      // ------------- //
      @override
      State<HomePage> createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      void myFunction() {
         print('FUNZIONO');
      }
    
      ...
    

    Utilizzo quindi la funzione che voglio all'interno di un altro widget.

    ... 
    
    class _MyAppBarState extends State<MyAppBar> {
    
      void aFunction() {
         HomePage.of(context).myFunction();
      }
     
      ...
    

    TODO:

    • [ ] Testare questo metodo e vedere se migliora effettivamente la lettura del codice e non peggiora le performance
      • [ ] Implementarlo !
    Reviewed by ncvescera at 2022-05-31 18:12

Related

Relive is a cross-platform application that can be used both in Android/IOS and it is made using Flutter
Relive is a cross-platform application that can be used both in Android/IOS and it is made using Flutter

?? Introduction Relive is a cross-platform application that can be used both in Android/IOS and it is made using Flutter. It aims to solve the mental

Jun 30, 2022
Music reader for online data (Google Drive implementation). Cross platform goal : iOS, Android, MacOS, Windows

omusic A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this i

Nov 30, 2021
A beautiful and cross platform NHentai Client, Support desktop and mobile phone
A beautiful and cross platform NHentai Client, Support desktop and mobile phone

A beautiful and cross platform NHentai Client. Support desktop and mobile phone (Mac/Windows/Linux/Android/IOS).

Aug 9, 2022
Quiz App is cross-platform mobile app, that allows you to test your knowledge on various technologies through quizzes. It's built with Flutter & Dart
Quiz App is cross-platform mobile app, that allows you to test your knowledge on various technologies through quizzes. It's built with Flutter & Dart

Quiz App is cross-platform mobile app, that allows you to test your knowledge on various technologies through quizzes. It's built with Flutter & Dart

May 12, 2022
Drishti is an open-source cross-platform mobile application project at Incubate Nepal that incorporates Machine Learning and Artificial Intelligence
Drishti is an open-source cross-platform mobile application project at Incubate Nepal that incorporates Machine Learning and Artificial Intelligence

Drishti is an open-source cross-platform mobile application project at Incubate Nepal that incorporates Machine Learning and Artificial Intelligence to help visually impaired people recognize different currency bills and perform daily cash transactions more effectively. We plan to expand Drishti to other applications like Short Text and Document Reading in the future.

Aug 8, 2022
Sharik is an open-source, cross-platform solution for sharing files via Wi-Fi or Mobile Hotspot
Sharik is an open-source, cross-platform solution for sharing files via Wi-Fi or Mobile Hotspot

Share files across devices with Sharik! It works with Wi-Fi connection or Tethering (Wi-Fi Hotspot). No internet connection needed. Contributing Feel

Aug 4, 2022
A cross-platform (Android/Windows/macOS/Linux) USB plugin for Flutter

quick_usb A cross-platform (Android/Windows/macOS/Linux) USB plugin for Flutter Usage List devices List devices with additional description Get device

Jul 5, 2022
The ultimate baby monitor! This mobile app helps new parents keep track of all their newborn baby's needs, milestones, and reminders in one place!

New Parent The ultimate baby monitor! This mobile app helps new parents keep track of all their newborn baby's needs, milestones, and reminders in one

Jun 22, 2022
This is the new version of my Task app "Tasko" which was done in Java. She is now in Flutter for the HotReload and the native Cross-Platform.
This is the new version of my Task app

tasko_rem The Tasko App is now compatible on iOS, Android and others distribution, because it's made with Flutter ✨ You can now add task, check them o

May 2, 2022
A cross platform todo list app using flutter and dart programming language
A cross platform todo list app using flutter and dart programming language

Flutter Todos A cross platform todo list app using flutter and dart programming language. In this application, I used SQLite3 to persist data. The app

Aug 4, 2022