Git Product home page Git Product logo

xkcdviewer's Introduction

xkcdViewer

Codemagic build status Stargazers Forks Issues License

xkcdViewer is a simple comic viewer for the infamous xkcd webcomic built with Flutter ๐Ÿฆ and ScopedModel for state management.

Features

๐Ÿ‘€ Get the latest xkcd comic

๐Ÿ“– Randomly browse comics

๐Ÿ”– Add comics to your favorites

๐Ÿ’ฌ Swipe up for alt text

๐Ÿ“ฒ Share the fun

๐ŸŒ Read the explanation on explainxkcd

๐Ÿ“ถ Data saver option

Get it on IzzyOnDroid

The comics displayed in this app are licensed under a Creative Commons Attribution-NonCommercial 2.5 License. Visit xkcd for additional information.

Contributors

Contributions are always welcome! ๐Ÿ‘

xkcdviewer's People

Contributors

ahmdaeyz avatar aircoookie avatar britannio avatar deatheguard avatar guastallaigor avatar hemirime avatar himanshuranjan30 avatar icetee avatar jafetbntz avatar jerold avatar poussinou avatar rakvium avatar ruudhaya avatar wakahuula avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

xkcdviewer's Issues

Add a list view as an alternative browsing method

Is your feature request related to a problem? Please describe.
Finding comics or quickly browsing through may be a hassle if you just want to find a specific comic.

Describe the solution you'd like
A separate list view reachable through bottom tabs (?) which lists every comic in a reversed chronological list.

Browse comics

Some users requested a browse feature which would probably just load all comics (in a list like the favorites page?).
Additionally this view should have options for searching for comics.

Error With Override

Same issue as Baseflow/flutter_cached_network_image#270

Compiler message:
../../../DEV/flutter/.pub-cache/hosted/pub.dartlang.org/cached_network_image-1.1.3/lib/src/cached_network_image_provider.dart:42:24: Error: The method
'CachedNetworkImageProvider.load' has fewer positional arguments than those of overridden method 'ImageProvider.load'.
ImageStreamCompleter load(CachedNetworkImageProvider key) {
^
../../../DEV/flutter/packages/flutter/lib/src/painting/image_provider.dart:574:24: Context: This is the overridden method ('load').
ImageStreamCompleter load(T key, DecoderCallback decode);
^

Double tap to like

Add double tap to like to the comic view.
This should disable double tap to zoom so those two features don't conflict with each other.

Explain the features

There should be a short, skippable introductory intro after the user opens the app for the first time.
A slidable intro or some material reveal animations would be pretty nice.

Features that may need an explanation:

  • long press the comic for an explanation
  • heart icon is for favorites, long press to open the favorites page
  • the menu button houses the secondary actions like explain, favorites etc.
  • other features I forgot or may come in the future

jump to comic

Is your feature request related to a problem? Please describe.
Sometimes, using the app I'd like to be able to open a specific comic, either by typing in the comic number/name like on the explainxkcd wiki or by searching for it in google then opening using the app.

Describe the solution you'd like
I think a "search" or "jump to comic" feature in the app would work, as well as support for opening xkcd links.

Swipe gestures

Swipe gestures to left and right in the comic view should browse to the previous/next comic.

Clearing favorites

Clearing the favorites list in the settings page doesn't seem to do anything.

Add `offline` mode

Add an option to automatically download every viewed comic and a corresponding page which lists these comics.
This page should be the main entry point if:

  • the user opens the app with a slow connection
  • or the user has no connection at all
  • and there is at least one comic saved

Theming support

The app should come with a dark theme, which automatically inverts the images (when no color is detected).
A simple primary/accent color picker would be nice too.

Add an automatic night mode if possible.

Zoom is broken in new update

Describe the bug
Zoom is broken.

When trying to pan the comic, it keeps swiping

To Reproduce
Steps to reproduce the behavior:

  1. View comic
  2. Zoom
  3. Try pan the comic
  4. It just swipes left or right

Expected behavior
Expected I could pan the image

Smartphone (please complete the following information):

  • Device: OnePlus 5T
  • OS: Latest OOS
  • Version: Latest versoin

Add proper license information

The current AboutDialog lacks proper licensing information.
The AboutDialog may include:

  • The app's license
  • xkcd's license
  • plugin licenses and links
  • other interesting information like GitHub etc.

Unable to build with Flutter 2.2.2

I'm unable to build the application on Flutter version 2.2.2. This is my first time working with Flutter, so I could be doing something wrong.

flutter pub get isn't able to resolve dependencies due to a conflict in dependency requirements between image and integration_test:

Running "flutter pub get" in xkcdviewer_...
Because every version of integration_test from sdk depends on archive 3.1.2 and image 2.1.19 depends on archive ^2.0.0, integration_test from sdk is incompatible with image 2.1.19.

And because no versions of image match >2.1.19 <3.0.0, integration_test from sdk is incompatible with image ^2.1.19.

So, because xkcd depends on both image ^2.1.19 and integration_test any from sdk, version solving failed.
pub get failed (1; So, because xkcd depends on both image ^2.1.19 and integration_test any from sdk, version solving
failed.)

Upgrading image to the latest version, 3.0.2 seems to resolve this, but there are tons of build errors after that: https://hastebin.com/raw/onaciwixut

flutter pub upgrade seems to fix everything, except an error in dynamic_theme:

Running Gradle task 'assembleRelease'...
Picked up _JAVA_OPTIONS: -Djava.util.prefs.userRoot="/home/dophin2009/.config"/java

../../../.cache/flutter/pub-cache/hosted/pub.dartlang.org/dynamic_theme-1.0.1/lib/dynamic_theme.dart:25:46: Error: Method not found: 'TypeMatcher'.

    return context.ancestorStateOfType(const TypeMatcher<DynamicThemeState>());

                                             ^^^^^^^^^^^

../../../.cache/flutter/pub-cache/hosted/pub.dartlang.org/dynamic_theme-1.0.1/lib/dynamic_theme.dart:25:20: Error: The method 'ancestorStateOfType' isn't defined for the class 'BuildContext'.

 - 'BuildContext' is from 'package:flutter/src/widgets/framework.dart' ('/opt/flutter/packages/flutter/lib/src/widgets/framework.dart').

Try correcting the name to the name of an existing method, or defining a method named 'ancestorStateOfType'.

    return context.ancestorStateOfType(const TypeMatcher<DynamicThemeState>());

                   ^^^^^^^^^^^^^^^^^^^





FAILURE: Build failed with an exception.



* Where:

Script '/opt/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1035



* What went wrong:

Execution failed for task ':app:compileFlutterBuildRelease'.

> Process 'command '/opt/flutter/bin/flutter'' finished with non-zero exit value 1



* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.



* Get more help at https://help.gradle.org



BUILD FAILED in 31s
Running Gradle task 'assembleRelease'...                           32.2s
Gradle task assembleRelease failed with exit code 1

This seems to be related to dynamic_theme #52? There is an unmerged PR that addresses this issue.

Downloading of images failing

The simple permissions plugin causes some exceptions which prevent downloads.
Fix this by reimplementing it (or using another approach) and optionally add a simple directory picker to let the user choose the download target. This directory has to be editable within the app's settings.

Replace saving to shared prefs

Switch from shared preferences to SQLite or Hive.
Adding a comic to the favorites should then also store the image, title, alt text and URL for sharing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.