Git Product home page Git Product logo

vocabulary-trainer-app's Introduction

Vocabulary Trainer

An app to learn vocabularies, developed with flutter.

Screenshot of Vocabulary Trainer

Build

First you need to download all dart packages.

flutter pub get

Before you can run the normal flutter build command, please run the following command to generate the required database code:

flutter packages pub run build_runner build

After that just the normal build command:

flutter build

Database Structure

Database structure looks like this as ERM-Diagram:

Database structure as erm diagram

Transformed to a RDBMS-Diagram (text form) the structure looks like this:

VocabularyCollection(id, title, languageA, languageB)
Vocabulary(id, languageA, languageARegex, languageB, languageBRegex, collectionID(FK))

To find out more about the meanings of the attributes look at the file "assets/vocabulary-collection.schema.json".
Note: The Vocabulary object (mentioned here) is the equivalent to the "vocabularies" key in the schema file.

vocabulary-trainer-app's People

Contributors

funprogramer avatar

Stargazers

ghostboy.dev avatar

Watchers

 avatar

vocabulary-trainer-app's Issues

After activity restart: the next button is not shown

Devices where the problem occurred

  • Pixel 3a API 33 x86 64 (Virtual Device)
  • Samsung Galaxy A70 (SM-A705FN)

Steps to reproduce

  1. Open a collection (Start training)
  2. Restart Activity (Toggle dark mode, rotate screen or something else)
  3. Type the correct answer
  4. Click on 'Check answer'

Expected behavior

'Next' Button is shown

Actual behavior

'Next' Button is not shown

File import does not work (maybe only on some devices)"

An problem appeared in the android emulator (Pixel 3a API 33 x86_64).

If I try to import a file the following dialog is shown.
grafik

It looks like the file chooser activity returns not the actual filename and because of the this exception happens.

App crashes on Samsung Device

If I try to run the app on a Samsung smartphone, the following exception occurred:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: privat.funprogramer.vocabularytrainer, PID: 13776
    android.view.InflateException: Binary XML file line #16 in privat.funprogramer.vocabularytrainer:layout/vocabulary_collections_list_entry: Binary XML file line #16 in privat.funprogramer.vocabularytrainer:layout/vocabulary_collections_list_entry: Error inflating class <unknown>
    Caused by: android.view.InflateException: Binary XML file line #16 in privat.funprogramer.vocabularytrainer:layout/vocabulary_collections_list_entry: Error inflating class <unknown>
    Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:852)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:657)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at privat.funprogramer.vocabularytrainer.main_activity.CollectionsAdapter.onCreateViewHolder(CollectionsAdapter.java:105)
        at privat.funprogramer.vocabularytrainer.main_activity.CollectionsAdapter.onCreateViewHolder(CollectionsAdapter.java:25)
        at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
        at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
        at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
        at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
        at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:689)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
E/AndroidRuntime:     at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at com.android.internal.policy.DecorView.onLayout(DecorView.java:1227)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:4260)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3695)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2618)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9971)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
        at android.view.Choreographer.doCallbacks(Choreographer.java:809)
        at android.view.Choreographer.doFrame(Choreographer.java:744)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:246)
        at android.app.ActivityThread.main(ActivityThread.java:8653)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
     Caused by: android.content.res.Resources$NotFoundException: Drawable privat.funprogramer.vocabularytrainer:drawable/item_background with resource ID #0x7f07009c
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/item_background.xml from drawable resource ID #0x7f07009c
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:1110)
        at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:729)
        at android.content.res.Resources.loadDrawable(Resources.java:1096)
        at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:1006)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:981)
        at android.view.View.<init>(View.java:5954)
        at android.view.ViewGroup.<init>(ViewGroup.java:715)
        at android.view.ViewGroup.<init>(ViewGroup.java:711)
        at android.view.ViewGroup.<init>(ViewGroup.java:707)
        at androidx.constraintlayout.widget.ConstraintLayout.<init>(ConstraintLayout.java:587)
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:852)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:657)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at privat.funprogramer.vocabularytrainer.main_activity.CollectionsAdapter.onCreateViewHolder(CollectionsAdapter.java:105)
        at privat.funprogramer.vocabularytrainer.main_activity.CollectionsAdapter.onCreateViewHolder(CollectionsAdapter.java:25)
        at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
        at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
        at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
        at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
        at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
        at android.view.View.layout(View.java:24475)
E/AndroidRuntime:     at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:689)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at com.android.internal.policy.DecorView.onLayout(DecorView.java:1227)
        at android.view.View.layout(View.java:24475)
        at android.view.ViewGroup.layout(ViewGroup.java:7383)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:4260)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3695)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2618)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9971)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
        at android.view.Choreographer.doCallbacks(Choreographer.java:809)
        at android.view.Choreographer.doFrame(Choreographer.java:744)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:246)
        at android.app.ActivityThread.main(ActivityThread.java:8653)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
     Caused by: java.lang.UnsupportedOperationException: Can't convert to ComplexColor: type=0x1
        at android.content.res.ResourcesImpl.loadComplexColorForCookie(ResourcesImpl.java:1371)
        at android.content.res.ResourcesImpl.loadComplexColorFromName(ResourcesImpl.java:1247)
        at android.content.res.ResourcesImpl.loadColorStateList(ResourcesImpl.java:1326)
        at android.content.res.Resources.loadColorStateList(Resources.java:1249)
        at android.content.res.TypedArray.getColorStateList(TypedArray.java:600)
        at android.graphics.drawable.RippleDrawable.updateStateFromTypedArray(RippleDrawable.java:497)
        at android.graphics.drawable.RippleDrawable.inflate(RippleDrawable.java:445)
        at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:148)
        at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1429)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1418)
        at android.graphics.drawable.LayerDrawable.inflateLayers(LayerDrawable.java:284)
        at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:199)
        at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:148)
E/AndroidRuntime:     at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1429)
        at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1388)
        at android.content.res.ResourcesImpl.loadXmlDrawable(ResourcesImpl.java:1173)
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:1070)
        	... 75 more

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.