Previous episode: 03. Understand Futures
Next episode: 05. Make a Network Call
Get immediate access to this and 4,000+ other videos and books.
Take your career further with a Kodeco Personal Plan. With unlimited access to over 40+ books and
4,000+ professional videos in a single subscription, it's simply the best investment you can make in
your development career.
As you progress in your career in mobile development, you'll gain an appreciation for the architecture of your app project. Architecture in this context means the structure of your code base, how different components in your code are connected and depend on one another. Now, common architectures and software are the MV Architectures. MVC, MVP, MVVM and more. The common M in these architectures stands for Model. The model represents the data or content in your app. It describes how you represent or model that data. All apps have data in content, which is why the model is common amongst all the various different architectures. The MV Architectures are primarily user interface architectures. That is for software that has a user interface component. The user interface corresponds to the V which stands for View. The view is what lets you see and interact with the app model. For more complicated apps, it's common to go beyond the MV Architectures and use architectures that go by the name Clean Architecture and VIPER. Now, a common component in all architectures is called a repository. A repository gives the rest of the app access to the apps data. Other components ask the repository for data when they need it. Now, repository classes typically are defined in terms of an interface, which in dart takes the form of an abstract class. In the future, when you learn more about app architectures, you'll learn that an interface is used because it helps with testing your app and also with ensuring your apps' components are connected in a efficient way. Now, in this episode, you'll get a start in working with architectures by creating a model class and a repository for the RW courses app. The main piece of data for RW courses is a course. So, we'll make a model class for the course. Create a new model folder. Once that's in place, create a new file called course.dart in that folder. Add the following. As you can see, the course just encapsulates some information about the course itself. Next, create a new folder in lib called repository. Then, create a new file in the repository folder called repository.dart. In the folder, add the following. This defines a single method for getting courses. Of course, we're getting an error because we're missing the course import. Add it now. You'll notice that we've defined a future. We're going to make a network request, which can take an unknown amount of time. This future will return a list of courses for us. We will also pass in the domain filter to specify what courses we want. This is just an abstract class. Now, we need a concrete implementation. Create a new course repository file in the repository folder. First, import the repository abstract class. Next, create a course repository class. We're getting an error because we aren't implementing the getCourses method. Don't worry. We'll get to that in a moment. First, let's define an API end point so we can get the course data. Now, to get a method to get our courses. This returns a future that contains a list of courses. Make sure to import the courses from the model folder. We'll need to access our Constants so import that file as well. Set the URL and add a filter parameter. In the next episode, with the repository in place, you'll see how to make a network call in flutter. Then, you'll use the course repository to make the call.
All videos. All books.
One low price.
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.