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

Overview

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)
You might also like...

A Simple Todo app design in Flutter to keep track of your task on daily basis. Its build on BLoC Pattern. You can add a project, labels, and due-date to your task also you can sort your task on the basis of project, label, and dates

A Simple Todo app design in Flutter to keep track of your task on daily basis. Its build on BLoC Pattern. You can add a project, labels, and due-date to your task also you can sort your task on the basis of project, label, and dates

WhatTodo Life can feel overwhelming. But it doesn’t have to. A Simple To-do app design in flutter to keep track of your task on daily basis. You can a

Jan 6, 2023

This app is a minimal TodoList app that functions like a whiteboard. You can add new tasks, keep track of your tasks to make your day more productive, and then delete it after it is done.

My First Mobile App _ Minimal TodoList Flutter A new Flutter project. Getting Started This project is a starting point for a Flutter application. A fe

Nov 23, 2021

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

Nov 9, 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

Nov 12, 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

Jan 1, 2023

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 task manager app made with flutter where you can mark your tasks for specific days and keep your life organized!

A task manager app made with flutter where you can mark your tasks for specific days and keep your life organized!

task_manager_app A task manager app made with flutter where you can mark your tasks for specific days and keep your life organized! Getting Started Th

Sep 1, 2021
Comments
  • v1.0.0

    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.
    enhancement 
    opened by ncvescera 1
  • Semplificazione passaggio di funzioni

    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 !
    enhancement 
    opened by ncvescera 0
Releases(v1.0.0)
  • v1.0.0(Jun 8, 2022)

    On this version there are UI improvement and a better PDF rendering/management 🍝 The builds are made with CodeMagic ✨ !

    App News

    • Easy Manual Selection 📁 : now you can choose your own manual from the phone storage ! No more need to build the app manually. The PDF will be saved on the private phone storage, so you can remove the original one (no useless duplicated files 🚀 ). You can also remove the file and choose a new one (basic file management features are provided).

    • Update System ❗ : a basic update system is introduced with this version. You can check if an update is available in every moment with a specific button and there is an Automatic update checking on startup (only once when the app is opened). This update systems is based on the GitHub Releases, when a new release is available you will be redirected on the Last Release page and you can download the latest app version.

    • Better PDF reading experience 👀 : in the past version there was some lags when you were reading the PDF, jumping from a page to another causes some delay and you had to wait until the page was rendered. Now the pages are pre-rendered when the app is opened, that means you have to wait more time to see your PDF but when it is fully loaded the are no more lags ore delays !

    Known Issues

    • 🔴 The user is no able to stop the PDF pre-loading ! If you select a wrong manual you have to wait until it is fully loaded and then you can delete it and choose the correct one
    • 🔴 When the pages are pre-loading there is a HUGE UI lag (it is mostly hidden by the fact that only static items are shown) because this problem pdf-rendere Isolate issue
    Source code(tar.gz)
    Source code(zip)
    KeepReading_v1-0-0.apk(18.44 MB)
    KeepReading_v1-0-0.app.zip(79.84 MB)
  • v0.5.0(May 14, 2022)

    KeepReading v0.5.0

    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 🚀 !

    This is the first working release.

    Features

    • PDF Viewer
    • Quick jump to a specific section of the manual
    • Material Theme

    N.B.: only source code, you have to manually build your App !!

    Source code(tar.gz)
    Source code(zip)
Owner
Nicolò Vescera
Just a retarded Monkey Typer :gorilla: who knows: Python 🐍 Kotlin 🤓 Java ☕
Nicolò Vescera
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

Akshat Tripathi 14 Nov 4, 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

JeanNicolasdeLamballerie 0 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 (Mac/Windows/Linux/Android/IOS).

null 324 Dec 29, 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

Régis 6 Sep 19, 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 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.

Drishti Nepal 23 Oct 8, 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

ACM Projects 6 Jun 22, 2022
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

Mark Motliuk 844 Jan 1, 2023
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

Woodemi Co., Ltd 39 Oct 1, 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.

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

Scythe 12 May 2, 2022
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

Mahmud Ahsan 61 Dec 29, 2022