UK Citizenship Test (Life in the UK Test)

The Life in the United Kingdom test is a computer-based test constituting one of the requirements for anyone seeking Indefinite Leave to Remain in the UK or naturalisation as a British citizen. It is meant to prove that the applicant has a sufficient knowledge of British life and sufficient proficiency in the English

This app is an exam preparation aid for this test. It has been implemented in flutter and can be run on both iOS and Android

Attack plan

  1. Start a quiz and complete and attempt all questions
  • [x] scroll back to answered questions and not go forward
  • [x] scroll to the next question automatically when the current one is answered correctly
  • [x] show hint for a questions once you've answered it incorrectly
  • [ ] ~if a user requests for the hint and no answeres selected, mark the question as wrong, then display the hint~
  • [ ] allow the user to save a question in favourites
  • [x] stop users from amending previous questions
  1. Present results page once all questions are answered.
  • [x] show a score in percentage that is correct answers / total questions
  • [x] show a list of answered questions, highlighting questions users have selected overlayed with the correct colors
  1. Allow users to see a list of possible quizes, if a quiz has been attemted, show the score

*** We need a way to persist data, we can use UserPreferences for now, or upgrade to SQLite database ***

  • [ ] Read and parse JSON file containing ~2,000 questions
  • [ ] Create 31 unique tests that the user can take
  • [ ] Each question to have reference to the reading material, this would help with revealing the hit
  1. Allow users to read the revision material (Book)
  • [ ] table of content with progress bar
  • [ ] allow user to dive deeper into the content of the book
  • [ ] track reading progress

Nice to have:

  • Have ability to categorise questions per book chapter
  • Show scores per book section, this could help the user focus on a particular topic
  • Flash card with notes derived from the book.


  • [x] Move all relevant state from the model objects to ExamViewModel and QuestionViewModel, this will allow us to reset an exam
  • [x] Employ the use of Provider package to accomplish the above.