All language subtitles for 4. Working with Assets in Flutter & the Pubspec file

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French Download
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 0 1 00:00:00,450 --> 00:00:05,010 Now in the last lesson, we've already created the main structure of our app. 1 2 00:00:05,100 --> 00:00:11,610 But in this lesson, I want to show you how you can work with image assets that you load into your app, 2 3 00:00:11,940 --> 00:00:16,500 so you don't have to fetch it from the Internet and you'll be able to use it anywhere inside your app 3 4 00:00:16,620 --> 00:00:19,770 without needing an internet connection. 4 5 00:00:19,770 --> 00:00:25,470 So first things first, we're going to click on the project folder so you can see our project here is 5 6 00:00:25,470 --> 00:00:31,740 called 'I Am Rich' and it's the root of all of our other folders. And we're going to right click on that, 6 7 00:00:31,830 --> 00:00:35,300 and we're going to create a new directory. 7 8 00:00:35,460 --> 00:00:41,460 We're going to call this directory, images. Inside this folder is where we're gonna put all of the images 8 9 00:00:41,460 --> 00:00:44,410 that we're going to use to work with our app. 9 10 00:00:44,430 --> 00:00:50,880 And if you look inside this current lesson you should be able to see a downloadable file called diamond 10 11 00:00:50,940 --> 00:00:52,720 .png 11 12 00:00:52,890 --> 00:01:01,140 And once you've downloaded that image, I want you to click and drag that image into that images folder 12 13 00:01:01,140 --> 00:01:06,090 that we created just now. And it'll have a little red line around the folder so that you know that it's 13 14 00:01:06,090 --> 00:01:15,280 going into the right one. And then we're going to go ahead and click OK to move that file into there. 14 15 00:01:15,330 --> 00:01:22,350 So now that we've incorporated that image into our project, it's time to tell Flutter that the image 15 16 00:01:22,440 --> 00:01:28,670 exists. And to do that, we're going to go into the configuration file, which is our pubspec.yaml 16 17 00:01:28,680 --> 00:01:35,880 file. And if you scroll down, you'll see that it even tells you in a comment, that this is how you add 17 18 00:01:36,030 --> 00:01:38,420 assets to your application. 18 19 00:01:38,480 --> 00:01:41,690 We have to create an asset section like this. 19 20 00:01:41,790 --> 00:01:47,280 So let's go ahead and uncomment this by holding down COMMAND + /. 20 21 00:01:48,300 --> 00:01:53,800 And we now have a assets section. Now inside our assets section, 21 22 00:01:53,910 --> 00:01:59,040 we're going to add our image. Instead of a.burr.jpeg 22 23 00:01:59,070 --> 00:02:01,890 we're going to add images/ 23 24 00:02:01,890 --> 00:02:09,340 So that refers to our images folder, and then /diamond. png 24 25 00:02:09,360 --> 00:02:14,430 And this tells our Flutter project about this particular asset. 25 26 00:02:14,550 --> 00:02:20,160 And once it knows about it, we'll be have to use it inside our main.dart or any other code files that's 26 27 00:02:20,160 --> 00:02:22,440 in our Flutter project. 27 28 00:02:22,440 --> 00:02:26,330 Now you'll notice that inside this pubspec.yaml 28 29 00:02:26,430 --> 00:02:30,440 the comments don't start with two forward slashes. 29 30 00:02:30,570 --> 00:02:31,990 And in fact you tried that, 30 31 00:02:32,070 --> 00:02:33,280 it doesn't actually work. 31 32 00:02:33,300 --> 00:02:36,770 That's not treated as a comment. 32 33 00:02:37,080 --> 00:02:40,900 And this is because this is a special type of file. 33 34 00:02:40,920 --> 00:02:46,750 It's a YAML file, and YAML stands for YAML Ain't Markup Language. 34 35 00:02:47,280 --> 00:02:55,920 It's meant to be this very human readable type of language that machines can also understand, to interpret 35 36 00:02:55,980 --> 00:03:00,960 how you want to configure certain things, such as our Flutter project. 36 37 00:03:00,960 --> 00:03:05,310 Now that's all very well and good but there's just one problem. 37 38 00:03:05,310 --> 00:03:08,910 It relies really heavily on indentations. 38 39 00:03:08,910 --> 00:03:18,060 So for example every section inside this configuration file is right next to an up to the margin or 39 40 00:03:18,060 --> 00:03:19,650 the gutter right in the left. 40 41 00:03:19,650 --> 00:03:24,460 You can see that the name of our project or the description for our project, 41 42 00:03:24,480 --> 00:03:25,840 they don't have any spaces 42 43 00:03:25,860 --> 00:03:26,920 next to the left. 43 44 00:03:27,150 --> 00:03:33,840 And if they did, they wouldn't be treated as a new section. They would be treated as a child embedded 44 45 00:03:33,870 --> 00:03:36,450 in another section. Like this. 45 46 00:03:36,450 --> 00:03:46,770 So if you have two spaces next to something, then this is treated as a child inside this thing. 46 47 00:03:46,770 --> 00:03:53,520 So that means we have to be really careful when we're writing code in our pubspec.yaml because 47 48 00:03:53,670 --> 00:04:00,690 as it is, this doesn't work. So well we can do to make our lives just a little bit easier is to actually 48 49 00:04:00,690 --> 00:04:08,280 delete all of these comments that came in the configuration file. And a lot of these comments are useful 49 50 00:04:08,310 --> 00:04:14,430 because the Flutter team is trying to tell us what we can do with the configurations here, but it also 50 51 00:04:14,430 --> 00:04:19,760 clutters up the page and makes it really hard to see at a glance, what's actually going on. 51 52 00:04:19,860 --> 00:04:26,640 And so if we take a look now, you can see that we've got several top level properties such as the name 52 53 00:04:26,670 --> 00:04:33,570 of the project, description or version. And then we've got other things which are children of these top 53 54 00:04:33,570 --> 00:04:38,610 level items. Over here, we've got a couple of settings for our Flutter app. 54 55 00:04:38,610 --> 00:04:44,420 One is that it uses material design and the other are the assets that it wants to use. 55 56 00:04:44,430 --> 00:04:50,940 Now you can see that this asset is kind of out of sync with the indentation. It's currently indented by 56 57 00:04:51,180 --> 00:04:59,280 one, two, three spaces, and that doesn't actually mean anything in YAML because each indentation level, 57 58 00:04:59,460 --> 00:05:01,060 is two spaces. 58 59 00:05:01,060 --> 00:05:08,020 So if we hit backspace and move it back just by one, so that it's now indented by two spaces, from the 59 60 00:05:08,020 --> 00:05:13,630 top level Flutter key, then this is now pretty much valid YAML code. 60 61 00:05:14,220 --> 00:05:19,990 And this tells our configuration file that our assets are children of our Flutter project. 61 62 00:05:20,380 --> 00:05:25,780 So here's a top tip. When you're working with the pubspec.yaml file, your configuration file for 62 63 00:05:25,780 --> 00:05:27,190 your Flutter project, 63 64 00:05:27,310 --> 00:05:35,070 be really careful about the indentation. And remember that every indent is two spaces. 64 65 00:05:35,200 --> 00:05:42,680 So when your coding along with me, make sure that you have the same indentation levels as you see on 65 66 00:05:42,680 --> 00:05:43,270 screen. 66 67 00:05:43,660 --> 00:05:47,520 Otherwise you might get into trouble that you don't really need. 67 68 00:05:47,560 --> 00:05:54,190 Now that we've set up our configuration file to tell our project that we want to use assets, and our 68 69 00:05:54,190 --> 00:06:01,330 assets live in a folder called images, and the file is called diamond.png then we're ready to incorporate 69 70 00:06:01,330 --> 00:06:04,720 these files into our project, ready for use. 70 71 00:06:04,720 --> 00:06:10,540 So we're going to hit save with COMMAND + S or CONTROL + S. Aand we're going to click on this link here 71 72 00:06:10,540 --> 00:06:17,410 where it says 'Packages get' and that will incorporate the images that's inside our project ready for 72 73 00:06:17,410 --> 00:06:22,330 use within our main.dart or any of our other project files. 73 74 00:06:22,360 --> 00:06:30,550 So now, we can head back to our main.dart file, and instead of using a network image, we're going to 74 75 00:06:30,550 --> 00:06:33,000 use a different type of image. 75 76 00:06:33,100 --> 00:06:40,810 We're going to use an asset image. And as you can imagine, an asset image comes from our assets, which 76 77 00:06:40,810 --> 00:06:42,910 are defined in our configuration file. 77 78 00:06:43,420 --> 00:06:51,280 So we're now able to provide the name of the asset which is going to be exactly what we specified in 78 79 00:06:51,280 --> 00:06:52,470 here. 79 80 00:06:52,480 --> 00:06:58,480 So now let's head back into our main.dart file and we can specify the name of our image. And it's 80 81 00:06:58,480 --> 00:07:03,490 going to be images/diamond.png 81 82 00:07:03,730 --> 00:07:09,820 And that is all we need to do to be to use the image that we've incorporated under the images folder 82 83 00:07:10,180 --> 00:07:17,380 with the name of diamond.png and it will know what images/diamond.png is, because we added 83 84 00:07:17,380 --> 00:07:20,730 it to the configuration pubspec.yaml file. 84 85 00:07:20,890 --> 00:07:24,900 So now all we have to do is run our app and test it. 85 86 00:07:24,910 --> 00:07:33,400 So let's click the play button, and you can see our app now has our image asset that comes from our images 86 87 00:07:33,400 --> 00:07:42,280 folder namely the diamond.png image incorporated into our image placeholder in the center of the body 87 88 00:07:42,430 --> 00:07:43,510 of our app. 88 89 00:07:43,540 --> 00:07:47,800 Now for the cute minds amongst you, you might realize a slight problem. 89 90 00:07:47,800 --> 00:07:53,240 What if you had a 20 or 30 or 40 images inside your images folder? 90 91 00:07:53,260 --> 00:07:58,570 Are you really going to write them out line by line making sure that you've indented the correct number 91 92 00:07:58,570 --> 00:07:59,620 of spaces? 92 93 00:07:59,650 --> 00:08:01,030 That's quite painful right. 93 94 00:08:01,450 --> 00:08:09,820 What you can also do, is instead of specifying the precise file name, you can also just specify the folder 94 95 00:08:09,880 --> 00:08:15,970 where all of your image files are located, and then add a '/' to say that I want to incorporate 95 96 00:08:16,210 --> 00:08:20,740 everything that's inside that folder into my project. 96 97 00:08:20,740 --> 00:08:27,880 And if you go ahead and run 'Packages get' again, and you run your app then absolutely nothing should have 97 98 00:08:27,880 --> 00:08:28,430 changed. 98 99 00:08:28,480 --> 00:08:34,240 Everything should have been exactly the same because we're saying now we are adding everything inside 99 100 00:08:34,240 --> 00:08:42,660 the images folder as an asset that we're going to use inside our app. So as long as your images go into 100 101 00:08:42,660 --> 00:08:48,030 the folder that's called images, and not inside say a sub folder or you know, a folder of a folder. 101 102 00:08:48,180 --> 00:08:54,640 As long as they're inside the images folder, then you will be able to use it like so. 102 103 00:08:54,640 --> 00:08:59,330 And that also means you won't have to touch these indents after the first time you make them. 103 104 00:08:59,400 --> 00:09:02,330 So makes you life a little bit easier. 104 105 00:09:02,520 --> 00:09:10,140 Now this just one last thing that we need to fix which is when we take a look at our app icon. It still 105 106 00:09:10,140 --> 00:09:16,770 has the Flutter default app icon. And this will get placed for every single app that you create with 106 107 00:09:16,770 --> 00:09:19,960 Flutter, unless we update the app icon. 107 108 00:09:20,010 --> 00:09:23,700 So to learn how to do that and more, I will see you on the next lesson. 12352

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.