A simple Flutter app to Read and Download eBooks.

Overview

πŸ“– πŸ“– Flutter eBook App Codemagic build status

Twitter Follow

A simple Flutter app to Read and Download books. The Books included in the app are from the Public Domain (Expired Copyright and completely free).


The Feedbooks API was used to fetch books.

App icon

To download this app, click here to see the codemagic builds. You can choose to install the apk or the ipa(ios).


Please star ⭐ the repo if you like what you see πŸ˜‰ .

πŸ’» Requirements

  • Any Operating System (ie. MacOS X, Linux, Windows)
  • Any IDE with Flutter SDK installed (ie. IntelliJ, Android Studio, VSCode etc)
  • A little knowledge of Dart and Flutter

✨ Features

  • Download eBooks.
  • Read eBooks.
  • Favorites.
  • Dark Mode
  • Swipe to delete downloads.

πŸ“Έ ScreenShots

Light Dark

πŸ”Œ Plugins

Name Usage
Provider State Management
Object DB NoSQL database to store Favorites & Downloads
XML2JSON Convert XML to JSON
DIO Network calls and File Download
EPub Viewer A flutter plugin for Folioreader to read ePub files

πŸ€“ Author(s)

Olusegun Festus Babajide Twitter Follow

πŸ”– LICENCE

Apache-2.0

Comments
  • Can't open any of the books

    Can't open any of the books

    Hey I'm running the code in Intelli J with Flutter Plugin. Everything works great, except I can't open any of the books. Here's the issue that I get. What do you think could be the issue?

    image

    opened by kevindalvi 18
  • Provider setState() or markNeedsBuild() called during build

    Provider setState() or markNeedsBuild() called during build

    I want to update a book state from a page, but I got this error.

    flutter: ══║ EXCEPTION CAUGHT BY FOUNDATION LIBRARY β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
            flutter: The following assertion was thrown while dispatching notifications for Book:
            flutter: setState() or markNeedsBuild() called during build.
    
    class BookCard extends StatelessWidget {
      final String img, filename, url;
      Book book;
      BookCard(
          {Key key,
          @required this.img,
          @required this.url,
          this.filename,
          this.book})
          : super(key: key);
    
    @override
      Widget build(BuildContext context) {
        final BookProvider = Provider.of<BookProvider>(context);
        BookProvider.setEntry(book);
        return Container(
        child:  BookProvider.downloaded
                        ? GestureDetector(
                            onTap: () => {
                                         //Read the book without trying to download it*
                                          }
                        : GestureDetector(
                            onTap: () => {
                                           //Download it*
                                          }
    

    And in the Provider Class

    class BookProvider extends ChangeNotifier {
      final database = DownloadsDB.instance;
      bool downloaded = false;
      Book book;
    
    void setEntry(value) {
        book = value;
        notifyListeners();
      }
    ...
    }
    
    opened by kebsont 17
  • Can't run this app first time

    Can't run this app first time

    Target of URI doesn't exist: 'package:flutter/material.dart'. Try creating the file referenced by the URI, or Try using a URI for a file that does exist.

    opened by elite1002 6
  • Permission denied creating path (on simulator, Android)

    Permission denied creating path (on simulator, Android)

    E/flutter (21181): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FileSystemException: Creation failed, path = '/storage/emulated/0/Flutter Ebook App' (OS Error: Permission denied, errno = 13)

    opened by sgehrman 6
  • eBook cannot be read in Release Mode

    eBook cannot be read in Release Mode

    After downloading any book, clicking on the read now button to read the epub causes the app to instantly crash, it works fine in debug mode but crashes in release mode.

    opened by cmd-dev 5
  • Local directory is not created if we used targetSdkVersion 29 and 30 on build.gradle file.

    Local directory is not created if we used targetSdkVersion 29 and 30 on build.gradle file.

    Local directory (In android device, so download is not working) not created if we used targetSdkVersion 29 and 30 on build.gradle file. We need set minimum 29 and 30 for playstore console.

    opened by Bal82 4
  • Book section Container overflow error

    Book section Container overflow error

    An overflow error caused due to harcoding size of the book-section-container .

    image

    Pull request addressing this issue : https://github.com/JideGuru/FlutterEbookApp/pull/41

    opened by parthpanchal123 2
  • Fix book-section overflow error

    Fix book-section overflow error

    The Container size was hardcoded as 200 therfore it would overflow in many devices as shown below.

    image

    Image demonstrating the fix :

    image

    • Simply removing the hardcoded size, the container would automatically adjust itself according to its children's size, thus fixing the overflow issue .
    opened by parthpanchal123 2
  • three dots are shown even there are no more texts to be shown.

    three dots are shown even there are no more texts to be shown.

    I think there is a problem with the description_text.dart component where for description with less than 300 texts it still shows ... at the end without the show more.

    opened by mrifni 2
  • I run the app on Flutter but can not test it on my android phone

    I run the app on Flutter but can not test it on my android phone

    Hello I really i am lost here, i downloaded the app source files, added them to Flutter, dart is enabled, flutter is fine, but when i just try to run it on my android for testing with flutter i got this error :

    Launching lib\main.dart on SM G930F in debug mode...
    Running Gradle task 'assembleDebug'...
    C:\Users\1-ER-Ahmed\.gradle\caches\transforms-1\files-1.1\core-1.1.0.aar\271a77d3aa980dd428fe07e8ec61a064\res\values\values.xml:7:5-70: AAPT: error: resource android:attr/fontVariationSettings not found.
        
    C:\Users\1-ER-Ahmed\.gradle\caches\transforms-1\files-1.1\core-1.1.0.aar\271a77d3aa980dd428fe07e8ec61a064\res\values\values.xml:7:5-70: AAPT: error: resource android:attr/ttcIndex not found.
        
    C:\Users\1-ER-Ahmed\Desktop\flutter-book-app-master\build\app\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:20: error: resource android:attr/fontVariationSettings not found.
    C:\Users\1-ER-Ahmed\Desktop\flutter-book-app-master\build\app\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:20: error: resource android:attr/ttcIndex not found.
    error: failed linking references.
    
    Failed to execute aapt
    com.android.ide.common.process.ProcessException: Failed to execute aapt
    	at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796)
    	at com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551)
    	at com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285)
    	at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:173)
    	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
    	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
    	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
    	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
    	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
    	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
    	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
    	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
    	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
    	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
    	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
    	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
    	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)
    	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80)
    	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105)
    	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
    	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)
    	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    	at java.lang.Thread.run(Thread.java:748)
    Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    	at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
    	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
    	at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
    	at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794)
    	... 48 more
    Caused by: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    	at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
    	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
    	at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
    	at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:179)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	... 1 more
    Caused by: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    	at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:463)
    	at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:415)
    	at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:332)
    	at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':app:processDebugResources'.
    > Failed to execute aapt
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 1m 12s
    Exception: Gradle task assembleDebug failed with exit code 1
    
    opened by cherifff 2
  • folio reader highlight functionality is unable to work with table content .

    folio reader highlight functionality is unable to work with table content .

    folio reader highlight functionality is unable to work with table content. No matter where the highlight is marked but it will always take to the 1st page of the table.

    opened by shiwangsagar 1
  • Restyle add windows,linux,macos,web platform experimental

    Restyle add windows,linux,macos,web platform experimental

    A duplicate of #82 with additional commits that automatically address incorrect style, created by Restyled.

    :warning: Even though this PR is not a Fork, it contains outside contributions. Please review accordingly.

    Since the original Pull Request was opened as a fork in a contributor's repository, we are unable to create a Pull Request branching from it with only the style fixes.

    The following Restylers made fixes:

    To incorporate these changes, you can either:

    1. Merge this Pull Request instead of the original, or

    2. Ask your contributor to locally incorporate these commits and push them to the original Pull Request

      Expand for example instructions
      ```console
      git remote add upstream https://github.com/JideGuru/FlutterEbookApp.git
      git fetch upstream pull/<this PR number>/head
      git merge --ff-only FETCH_HEAD
      git push
      ```
      

    NOTE: As work continues on the original Pull Request, this process will re-run and update (force-push) this Pull Request with updated style fixes as necessary. If the style is fixed manually at any point (i.e. this process finds no fixes to make), this Pull Request will be closed automatically.

    Sorry if this was unexpected. To disable it, see our documentation.

    opened by restyled-io[bot] 0
  • [ImgBot] Optimize images

    [ImgBot] Optimize images

    Beep boop. Your images are optimized!

    Your image file size has been reduced by 26% πŸŽ‰

    Details

    | File | Before | After | Percent reduction | |:--|:--|:--|:--| | /packages/iridium/components/shared/test_resources/util/archive/epub/EPUB/images/cover.png | 40.17kb | 15.47kb | 61.49% | | /packages/iridium/reader_widget/assets/images/app-icon.png | 23.30kb | 9.75kb | 58.18% | | /packages/iridium/reader_widget/example/web/icons/Icon-maskable-512.png | 20.51kb | 10.54kb | 48.61% | | /web/icons/Icon-maskable-512.png | 20.51kb | 10.54kb | 48.61% | | /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png | 100.58kb | 57.80kb | 42.53% | | /packages/iridium/reader_widget/assets/images/cover.png | 7.83kb | 4.75kb | 39.35% | | /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png | 35.55kb | 23.23kb | 34.66% | | /packages/iridium/reader_widget/example/web/icons/Icon-maskable-192.png | 5.46kb | 3.66kb | 33.05% | | /web/icons/Icon-maskable-192.png | 5.46kb | 3.66kb | 33.05% | | /packages/iridium/reader_widget/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png | 14.45kb | 9.69kb | 32.93% | | /packages/iridium/reader_widget/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png | 45.89kb | 31.58kb | 31.18% | | /packages/iridium/reader_widget/assets/images/icon_drm.png | 3.08kb | 2.13kb | 30.74% | | /packages/iridium/reader_widget/assets/images/icon_settings.png | 3.05kb | 2.15kb | 29.60% | | /packages/iridium/reader_widget/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png | 1.40kb | 1.00kb | 28.62% | | /packages/iridium/reader_widget/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png | 5.79kb | 4.27kb | 26.23% | | /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png | 13.81kb | 10.22kb | 25.97% | | /packages/iridium/components/navigator/assets/xpub-assets/bookmark.svg | 0.57kb | 0.42kb | 25.30% | | /packages/iridium/reader_widget/assets/images/icon_menu.png | 1.87kb | 1.43kb | 23.38% | | /packages/iridium/reader_widget/assets/images/app-play-feature-image.png | 40.76kb | 31.35kb | 23.09% | | /packages/iridium/reader_widget/assets/images/icon_plus_white.png | 1.88kb | 1.45kb | 23.00% | | /packages/iridium/reader_widget/assets/images/icon_increse.png | 1.88kb | 1.50kb | 20.47% | | /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png | 5.55kb | 4.43kb | 20.19% | | /packages/iridium/reader_widget/assets/images/icon_audio.png | 0.84kb | 0.68kb | 19.47% | | /packages/iridium/reader_widget/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png | 3.20kb | 2.60kb | 18.77% | | /packages/iridium/reader_widget/assets/images/icon_decrease.png | 1.63kb | 1.40kb | 13.75% | | /packages/iridium/reader_widget/assets/images/icon_plus.png | 1.29kb | 1.16kb | 10.20% | | /packages/iridium/reader_widget/assets/images/icon_minus.png | 1.19kb | 1.10kb | 7.41% | | /packages/iridium/reader_widget/assets/images/icon_left.png | 1.78kb | 1.66kb | 6.70% | | /packages/iridium/components/streamer/test_resources/image/futuristic_tales.jpg | 146.68kb | 140.52kb | 4.20% | | /packages/iridium/reader_widget/assets/images/cnl.png | 19.82kb | 19.04kb | 3.96% | | /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png | 2.17kb | 2.09kb | 3.29% | | /packages/iridium/components/shared/test_resources/publication/services/cover.jpg | 67.89kb | 66.56kb | 1.96% | | /packages/iridium/reader_widget/assets/images/icon_justify.png | 1.59kb | 1.56kb | 1.96% | | /packages/iridium/reader_widget/assets/images/icon_left_white.png | 0.79kb | 0.77kb | 1.37% | | | | | | | Total : | 648.22kb | 480.17kb | 25.93% |


    πŸ“ docs | :octocat: repo | πŸ™‹πŸΎ issues | πŸͺ marketplace

    ~Imgbot - Part of Optimole family

    opened by imgbot[bot] 0
  • Restyle Minor upgrades and fixes

    Restyle Minor upgrades and fixes

    A duplicate of #75 with additional commits that automatically address incorrect style, created by Restyled.

    :warning: Even though this PR is not a Fork, it contains outside contributions. Please review accordingly.

    Since the original Pull Request was opened as a fork in a contributor's repository, we are unable to create a Pull Request branching from it with only the style fixes.

    The following Restylers made fixes:

    To incorporate these changes, you can either:

    1. Merge this Pull Request instead of the original, or

    2. Ask your contributor to locally incorporate these commits and push them to the original Pull Request

      Expand for example instructions
      ```console
      git remote add upstream https://github.com/JideGuru/FlutterEbookApp.git
      git fetch upstream pull/<this PR number>/head
      git merge --ff-only FETCH_HEAD
      git push
      ```
      

    NOTE: As work continues on the original Pull Request, this process will re-run and update (force-push) this Pull Request with updated style fixes as necessary. If the style is fixed manually at any point (i.e. this process finds no fixes to make), this Pull Request will be closed automatically.

    Sorry if this was unexpected. To disable it, see our documentation.

    opened by restyled-io[bot] 0
  • Read Book not working

    Read Book not working

    i tested with Android 9 real device. Forexample if we run with release mode then if you set targetSdkVersion is 25 it is working but if you install and uninstall app or manually deleting the data then downloads section shows only 1 book.

    In targetSdkVersion 28 and 29 it is not working. I also upgraded the "cached_network_image to 2.5.1" because of the error. But i tested many times reading book and the download page not working. Reading book shows blank page after reloading and download page shows only the latest book.

    On terminal it print "Unknown chunk type '200' " and also "Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.WindowInsetsAnimation$Callback" on path:"

    if we run with debug mode then extra error invalid image data but same things not working also in debug mode.

    opened by azerturk 1
  • flutter web support

    flutter web support

    hi buddy thanks for such a good library. I have to release a flutter app which can read epub books on android and web. I want to know if you have any plan for new update on this library for supporting flutter web application also or not? I could not find any flutter epub reader library for supporting web applications.

    opened by vaaniiaa 1
Owner
Festus Olusegun
Software Engineer and a Bad GamerπŸ˜…
Festus Olusegun
A Flutter application for Muslims that help them challenge and motivate themselves and their friends to read Azkar in a fun way.

A Flutter application for Muslims that help them challenge and motivate themselves and their friends to read Azkar in a fun way.

null 33 Oct 30, 2022
E-Studying-V1 - Flutter application where you can download files from an api and unarchive them and open them and see their contents

E-Studying-V1 - Flutter application where you can download files from an api and unarchive them and open them and see their contents

Chakib Ammar Aouchiche 0 Jan 20, 2022
Latest and easy-to-read news, all in your pocket πŸ“±

Observer-flutter About Flutter app for getting live news in different categories Tools used Inshorts News API v2 This API's documentation Get the App

null 3 Jul 13, 2022
Firebase Login... And Data Created ,Read, Update, Delete

flutter_application_2 A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you st

Jamirul islam (Joy) 2 Nov 30, 2022
CraftsMan is a middle man between artisans and clients. Download app and call ......

craftsman_refurbished class CraftsMan_Rebranded extends 100project_challenge { video() { return { "title": "Flutter Home Service Applicati

Akindoyin Faruq 5 May 12, 2022
A Flutter plugin to read πŸ”– metadata of 🎡 media files. Supports Windows, Linux & Android.

flutter_media_metadata A Flutter plugin to read metadata of media files. A part of Harmonoid open source project ?? Install Add in your pubspec.yaml.

Harmonoid 60 Dec 2, 2022
Flutter plugin for notification read & reply

Reflex Flutter plugin for notification read & reply. Compatibility βœ… Android ❌ i

Devs On Flutter 14 Dec 20, 2022
This app is used to download whatsapp status photo and videos

This app is used to download whatsapp status photo and videos. you can upload this app in playstore as well. there are lot's of application available like WhatsApp Story Saver, Story Downloader for whatsapp.

Akram Chauhan 51 Nov 28, 2022
Aplikasi download wallpaper Mobile Legends

wallpaper_legends A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you starte

Muhammad Dzul Fikri Khoiruddin 1 Nov 24, 2021
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

Burhanuddin Rashid 1k Jan 6, 2023
A simple app to demonstrate a testable, maintainable, and scalable architecture for flutter. flutter_bloc, hive, and REST API are some of the tech stacks used in this project.

last_fm A simple app to demonstrate a testable, maintainable, and scalable architecture for flutter. flutter_bloc, hive, and REST API are some of the

Elias Andualem 140 Dec 31, 2022
a sample flutter app using Injection, routing and simple authentication follows clean code and best practices

Flutter Clean Project A sample flutter app using Injection, routing and simple authentication follows clean code and best practices Features Cleaned f

Moez Shakeri 12 Jan 2, 2023
Chatting-App - A Simple chat app built with Flutter/Dart and Firebase

Chat App By Flutter & Firebase ?? ✨ A Simple chat app built with Flutter/Dart an

Eng.Shahad 1 May 20, 2022
Weather-app - Simple Weather app with light and dark mode

weatherapp Simple Weather app with light and dark mode All licensed code belongs

Shivam Mishra 2 Jul 30, 2022
Body mass index (BMI) is a measure of body fat based on height and weight that applies to adult men and women. Here is the simple program for BMI calculator in Flutter.

BMI-Calculator Body mass index (BMI) is a measure of body fat based on height and weight that applies to adult men and women. Here is the simple progr

Renganathan 2 Oct 31, 2021
Provide easy and flexible way to show SnackBar. Simple text, undo, and error style are supported.

snack_bar_presenter Provide easy and flexible way to show SnackBar. Simple text, undo, and error style are supported. . . . Usage import 'package:exam

Masayuki Ono (mono) 8 Nov 30, 2020
Simple and modern news app that incorporates REST API (newsapi.org), all built entirely with Flutter.

A simple news app with a minimalistic and clean UI that incorporates the newsapi.org api all built entirely with Flutter. Be sure to leave a star ??

Carlton Aikins 73 Dec 1, 2022
A simple and beautiful animated app bar created with Flutter.

Animated App Bar Flutter application showcasing the creation of an animated app bar. End Result Relevant YouTube Video https://youtu.be/SkkmoT_DZUA Ge

Vihar 23 Jan 15, 2022
This is a simple news app. It created using flutter as front-end and firebase as back end.

This is a simple news app. It created using flutter as front-end and firebase as back end. Only one person (Admin)can upload news. There is SignUp feature. Only one preDefined Admin who can login to account and upload news. It also uses Shared Preference for saving Admin's login inform.

sanal parakkal 2 Aug 5, 2022