[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:17.92,Default,,0000,0000,0000,,{\i1}wikipaka intro music{\i0} Dialogue: 0,0:00:17.92,0:00:25.60,Default,,0000,0000,0000,,Hello and welcome to this first talk.\NToday I'm going to give... into cross Dialogue: 0,0:00:25.60,0:00:33.44,Default,,0000,0000,0000,,platform development using Flutter. What\Nis Flutter? Flutter is a cross platform Dialogue: 0,0:00:33.44,0:00:48.40,Default,,0000,0000,0000,,development kit. Here. Fancy logo you can\Nsee over there. OK, we will talk about how Dialogue: 0,0:00:48.40,0:00:55.20,Default,,0000,0000,0000,,to install Flutter. We will talk about the\Nspecial features of Flutter, hence, Dialogue: 0,0:00:55.20,0:01:01.52,Default,,0000,0000,0000,,widgets, which will have a look on their\Nplugins. We will have a look on two Dialogue: 0,0:01:01.52,0:01:08.48,Default,,0000,0000,0000,,different kinds of these widgets, stateful\Nand stateless widgets. And at the end, we Dialogue: 0,0:01:08.48,0:01:16.32,Default,,0000,0000,0000,,will talk about the main feature,\NFlutter's part of the code, so you do not Dialogue: 0,0:01:16.32,0:01:25.84,Default,,0000,0000,0000,,have seperate style files or seperate\Nlayout files. OK, how would you install Dialogue: 0,0:01:25.84,0:01:31.84,Default,,0000,0000,0000,,Flutter? Well, if you are used to Git,\Nit's actually quite easy. You simply clone Dialogue: 0,0:01:31.84,0:01:39.68,Default,,0000,0000,0000,,their git repository, update the path and\Nyou have the flutter tool installed. That Dialogue: 0,0:01:39.68,0:01:48.14,Default,,0000,0000,0000,,installs two things: The library Flutter\Nand the programming language Dart, Dart the Dialogue: 0,0:01:48.14,0:01:53.68,Default,,0000,0000,0000,,programing language you use with Flutter.\NOf course you could use Dart without Dialogue: 0,0:01:53.68,0:02:00.16,Default,,0000,0000,0000,,Flutter, but Dart is usually used with\NFlutter and Flutter only works with Dart. Dialogue: 0,0:02:02.72,0:02:09.92,Default,,0000,0000,0000,,OK. Well, if you are not interested in\Ncloning git repositories, if you are not Dialogue: 0,0:02:09.92,0:02:17.76,Default,,0000,0000,0000,,that used to command prompts, you could\Neasily install Flutter using the plugin of Dialogue: 0,0:02:18.56,0:02:24.64,Default,,0000,0000,0000,,your development environment. For example,\NVisual Studio Code or Android studio so Dialogue: 0,0:02:24.64,0:02:31.68,Default,,0000,0000,0000,,intellij, they offer very user friendly\Nplugins with a quick installation guide Dialogue: 0,0:02:31.68,0:02:40.72,Default,,0000,0000,0000,,for Flutter, automating all these\Nsteps. OK, what is Flutter like? If we Dialogue: 0,0:02:40.72,0:02:44.96,Default,,0000,0000,0000,,have a look on Flutter, we talk about\Ndifferent things. We have the framework Dialogue: 0,0:02:44.96,0:02:52.48,Default,,0000,0000,0000,,within Dart, we have the engine and we\Nhave platform specific code. Flutter Dialogue: 0,0:02:52.48,0:02:56.80,Default,,0000,0000,0000,,consists of something called the "Flutter\Ntool". That's not listed in the graphic Dialogue: 0,0:02:56.80,0:03:03.12,Default,,0000,0000,0000,,you can see there. That's what you use to\Ncreate an application. For example, if you Dialogue: 0,0:03:03.12,0:03:09.52,Default,,0000,0000,0000,,type "flutter create mynewapplication" in\Nthe command prompt, that's the Flutter Dialogue: 0,0:03:09.52,0:03:17.76,Default,,0000,0000,0000,,tool you use. But as soon as you've done an\Napplication, you have this... it works the Dialogue: 0,0:03:17.76,0:03:23.68,Default,,0000,0000,0000,,way the graphic presents it: You have this\Nframework consisting of everything you can Dialogue: 0,0:03:23.68,0:03:33.24,Default,,0000,0000,0000,,see and everything you can do. You have\Nbuttons, for example "Material" buttons, Dialogue: 0,0:03:33.24,0:03:36.32,Default,,0000,0000,0000,,these are the two main theme styles, so Dialogue: 0,0:03:36.32,0:03:44.64,Default,,0000,0000,0000,,"Material" is the Android and Chrome OS\None and "Cupertino" is the iOS-style user Dialogue: 0,0:03:44.64,0:03:52.72,Default,,0000,0000,0000,,interface. The framework takes also care\Nof the rendering animations, interactions Dialogue: 0,0:03:52.72,0:03:58.40,Default,,0000,0000,0000,,with users. So gestures, if you tap a\Nbutton or if you move around something on Dialogue: 0,0:03:58.40,0:04:08.96,Default,,0000,0000,0000,,the UI, that's something the framework\Ntakes care of. And under the framework, Dialogue: 0,0:04:08.96,0:04:16.96,Default,,0000,0000,0000,,there's the engine. The engine operates\Neverything which is not specific to your Dialogue: 0,0:04:16.96,0:04:24.16,Default,,0000,0000,0000,,application, so the general stuff of\NFlutter. It takes care of the interaction Dialogue: 0,0:04:24.16,0:04:29.28,Default,,0000,0000,0000,,with the Dart virtual machine. It takes\Ncare of platform channels. For example, if Dialogue: 0,0:04:29.28,0:04:37.92,Default,,0000,0000,0000,,you want to access native code, takes care\Nof accessibility, it interacts with the Dialogue: 0,0:04:37.92,0:04:46.80,Default,,0000,0000,0000,,operating system and so on. And beside of\Nthose two, there's still the embedder. The Dialogue: 0,0:04:46.80,0:04:54.72,Default,,0000,0000,0000,,embedder is, what is, yeah, typic for one\Nkind of device, for example, or for one Dialogue: 0,0:04:54.72,0:05:01.92,Default,,0000,0000,0000,,platform, for example, for Android. The\Nembedder takes care of threads of process Dialogue: 0,0:05:01.92,0:05:07.92,Default,,0000,0000,0000,,management, takes care of the event loop\Nof the operating system, and it takes care Dialogue: 0,0:05:07.92,0:05:16.00,Default,,0000,0000,0000,,of interaction with native plugins. And\Nmost importantly, it's responsible for Dialogue: 0,0:05:16.00,0:05:20.48,Default,,0000,0000,0000,,packing the application. For example, if\Nyou have raw Dart code, no device would be Dialogue: 0,0:05:20.48,0:05:27.68,Default,,0000,0000,0000,,able to execute it. So the embedder is\Nresponsible for hacking this code into an Dialogue: 0,0:05:30.56,0:05:40.64,Default,,0000,0000,0000,,executable on Windows, into a JavaScript\Nfile on the Web or into an APK file on Dialogue: 0,0:05:40.64,0:05:51.84,Default,,0000,0000,0000,,Android. OK, well, now I already\Nintroduced these widgets, I talked about Dialogue: 0,0:05:51.84,0:05:59.60,Default,,0000,0000,0000,,Material and Cupertino widgets, but what\Nis a widget? Yeah, a widget is pretty much Dialogue: 0,0:05:59.60,0:06:08.00,Default,,0000,0000,0000,,everything you can see in a flutter app. A\Nwidget is any user interface element, Dialogue: 0,0:06:09.10,0:06:12.96,Default,,0000,0000,0000,,sometimes allowing interaction, sometimes\Nnot. But everything you can see in an Dialogue: 0,0:06:12.96,0:06:21.60,Default,,0000,0000,0000,,application is called widget. You can\Nimagine a widget like, for example, HTML Dialogue: 0,0:06:21.60,0:06:30.64,Default,,0000,0000,0000,,elements. You simply put them into each\Nother and create a document tree. But Dialogue: 0,0:06:30.64,0:06:40.48,Default,,0000,0000,0000,,unlike if you use HTML, you do not have\NHTML for the layout, CSS for the style and Dialogue: 0,0:06:40.48,0:06:45.84,Default,,0000,0000,0000,,JavaScript for the interaction. If you\Nhave Flutter, these widgets provide all Dialogue: 0,0:06:45.84,0:06:56.64,Default,,0000,0000,0000,,these three parts. So the widget performs\Nthe layout, the widget offers style and Dialogue: 0,0:06:56.64,0:07:02.96,Default,,0000,0000,0000,,offers interaction with the user. Hence you\Ndo not have any separation between style Dialogue: 0,0:07:02.96,0:07:10.64,Default,,0000,0000,0000,,and content of the application. That's a\Nvery good feature for development and Dialogue: 0,0:07:10.64,0:07:20.40,Default,,0000,0000,0000,,makes many things such as refactoring\Ncode. But there are different types of Dialogue: 0,0:07:20.40,0:07:26.16,Default,,0000,0000,0000,,Stateless widgets without any kind of\Nfeedback they can provide. They are once Dialogue: 0,0:07:26.16,0:07:32.16,Default,,0000,0000,0000,,rendered and afterwards they are present.\NOr if the parenting widget decides, well, Dialogue: 0,0:07:32.16,0:07:37.60,Default,,0000,0000,0000,,I no longer want to show this, for\Nexample, text, that is just being removed Dialogue: 0,0:07:37.60,0:07:44.32,Default,,0000,0000,0000,,without any interaction of this widget.\NAnother point are stateful widgets, they Dialogue: 0,0:07:44.32,0:07:53.84,Default,,0000,0000,0000,,allow interaction. So for example, if you\Nhave a text as a stateful widget, it can Dialogue: 0,0:07:55.52,0:08:01.84,Default,,0000,0000,0000,,tell - it is able to tell the application\Nafter a couple of seconds: OK, now I want Dialogue: 0,0:08:01.84,0:08:10.08,Default,,0000,0000,0000,,to change my own color or I want to change\Nmy font size, so it has an own event loop Dialogue: 0,0:08:10.08,0:08:17.68,Default,,0000,0000,0000,,and can decide based on things happening\Ninside this widget. That's usually a bit, Dialogue: 0,0:08:18.24,0:08:25.12,Default,,0000,0000,0000,,yeah... not these low level widgets like\Ntext, but all these high level widgets Dialogue: 0,0:08:25.12,0:08:34.88,Default,,0000,0000,0000,,like list views consisting of several\Nchildren and so on, menus, they consist of Dialogue: 0,0:08:34.88,0:08:41.04,Default,,0000,0000,0000,,a menu button and drop down menu and\Nwhatever, or even the whole page of an Dialogue: 0,0:08:41.04,0:08:49.44,Default,,0000,0000,0000,,application. All these are widgets,\Nstateful widgets. OK, time to provide some Dialogue: 0,0:08:49.44,0:08:56.32,Default,,0000,0000,0000,,code samples. That was a bit of\Nintroduction into the architecture. Let's Dialogue: 0,0:08:56.32,0:09:04.08,Default,,0000,0000,0000,,have a look on code. Well,\Ncongratulations. That's a simple Flutter Dialogue: 0,0:09:04.08,0:09:09.60,Default,,0000,0000,0000,,program. If you write it and you provide a\Ndeclaration of homepage, you should be Dialogue: 0,0:09:09.60,0:09:16.32,Default,,0000,0000,0000,,able to run an application on your mobile\Nphone. Yeah. What does it? It executes the Dialogue: 0,0:09:16.32,0:09:23.28,Default,,0000,0000,0000,,main function, calling a method call,\Ncalling a function called runApp, which Dialogue: 0,0:09:23.28,0:09:28.88,Default,,0000,0000,0000,,runs a Material app. So following the\NMaterial design you know from Android or Dialogue: 0,0:09:28.88,0:09:40.16,Default,,0000,0000,0000,,Chrome OS. OK, but of course, we need to\Nimplement homepage. Well, let's have a Dialogue: 0,0:09:40.16,0:09:49.94,Default,,0000,0000,0000,,look at a bit more difficult widget. Dialogue: 0,0:09:49.94,0:10:26.66,Default,,0000,0000,0000,,{\i1}silence{\i0} Dialogue: 0,0:10:26.66,0:10:32.92,Default,,0000,0000,0000,,...tell the widget everything it needs to\Nknow for building, in our case, we simply Dialogue: 0,0:10:32.92,0:10:41.43,Default,,0000,0000,0000,,return a list type, consisting of an icon\Nand an outline button. The outline button Dialogue: 0,0:10:41.43,0:10:48.92,Default,,0000,0000,0000,,can do anything. It can share a text. So you\Nwould see your share prompt on your mobile Dialogue: 0,0:10:48.92,0:10:57.41,Default,,0000,0000,0000,,phone or on the web it would download the\Ntext. OK. But why is it stateless and not Dialogue: 0,0:10:57.41,0:11:05.92,Default,,0000,0000,0000,,stateful? Simply because it cannot\Ninteract with itself, the widget is unable Dialogue: 0,0:11:05.92,0:11:13.77,Default,,0000,0000,0000,,to change one of its variables, the widget\Ncannot set a timer, it simply could not... Dialogue: 0,0:11:13.77,0:11:20.50,Default,,0000,0000,0000,,if you would tell the widget, well, wait\Nfive seconds and do whatever, it would not Dialogue: 0,0:11:20.50,0:11:27.07,Default,,0000,0000,0000,,change the appearance of the widget,\Nbecause it is once built and afterwards, Dialogue: 0,0:11:27.07,0:11:34.87,Default,,0000,0000,0000,,it has no more... it no longer has the\Nability to change its appearance or Dialogue: 0,0:11:34.87,0:11:41.44,Default,,0000,0000,0000,,behavior. Only the parenting widget - so,\Nfor example, the list we put this Dialogue: 0,0:11:41.44,0:11:47.48,Default,,0000,0000,0000,,scoredetail inside - it could trigger a\Nrebuild of this widget, but not the widget Dialogue: 0,0:11:47.48,0:11:58.81,Default,,0000,0000,0000,,itself. To clarify this point, we'll have\Na look at a stateful widget. It is a bit Dialogue: 0,0:11:58.81,0:12:03.40,Default,,0000,0000,0000,,shorter, because the stateful widget\Nconsists of two classes, state class, Dialogue: 0,0:12:03.40,0:12:09.80,Default,,0000,0000,0000,,that's what you can see over there. And,\Nwell, the actual declaration that it is a Dialogue: 0,0:12:09.80,0:12:18.62,Default,,0000,0000,0000,,widget. But the state is much more\Ninteresting if we look at it. OK, you Dialogue: 0,0:12:18.62,0:12:25.52,Default,,0000,0000,0000,,first see there are... we first\Ninitialized some variables. Afterwards, we Dialogue: 0,0:12:25.52,0:12:30.24,Default,,0000,0000,0000,,have a method called initState. That's\Nsomething which is being triggered the Dialogue: 0,0:12:30.24,0:12:37.08,Default,,0000,0000,0000,,first time the widget is built, afterwards\Nwe declare another method. And at Dialogue: 0,0:12:37.08,0:12:44.52,Default,,0000,0000,0000,,the end we have our build-method. Yeah,\Nwhat does or what's the difference from Dialogue: 0,0:12:44.52,0:12:51.77,Default,,0000,0000,0000,,this build-method to the build-method we\Nhad in our stateless widget... I hope you Dialogue: 0,0:12:51.77,0:12:58.63,Default,,0000,0000,0000,,can see my pointer, yeah. We have here, we\Nhave an if statement here, a short if Dialogue: 0,0:12:58.63,0:13:06.04,Default,,0000,0000,0000,,statement. So the build method checks\Nwhether a variable called testLoaded - Dialogue: 0,0:13:06.04,0:13:15.93,Default,,0000,0000,0000,,that's being declared at the top here -\Nwhether it is false or true. And it Dialogue: 0,0:13:15.93,0:13:23.81,Default,,0000,0000,0000,,correspondingly reacts. So if it's true,\Na list view is being displayed and Dialogue: 0,0:13:23.81,0:13:32.63,Default,,0000,0000,0000,,otherwhise a progressindicator is being\Nshown. OK, but well, that's something we Dialogue: 0,0:13:32.63,0:13:38.84,Default,,0000,0000,0000,,could still implement in a stateless\Nwidget, but there's another big difference Dialogue: 0,0:13:38.84,0:13:45.41,Default,,0000,0000,0000,,here. We have something which changes\Nsomething as soon as something happens. Dialogue: 0,0:13:45.41,0:13:52.12,Default,,0000,0000,0000,,Well make some things. It's an expansion\Ntile, so a list tile which can be Dialogue: 0,0:13:52.12,0:13:58.88,Default,,0000,0000,0000,,expanded. It's a builtin widget of\NFlutter. And as soon as it is being Dialogue: 0,0:13:58.88,0:14:05.38,Default,,0000,0000,0000,,opened, it's... a local method is\Ntriggered: Here we have this loadScore Dialogue: 0,0:14:05.38,0:14:13.39,Default,,0000,0000,0000,,method and that is being triggered. We do\Nnot know what it does, but I can tell you, Dialogue: 0,0:14:13.39,0:14:19.76,Default,,0000,0000,0000,,it will load some data from wheresoever\Nand it will change this variable. So Dialogue: 0,0:14:19.76,0:14:27.58,Default,,0000,0000,0000,,afterwards, after this method is being\Ntriggered, the test data here will be Dialogue: 0,0:14:27.58,0:14:32.92,Default,,0000,0000,0000,,something different. It will no longer show \Nthe progress, but it will show this inside Dialogue: 0,0:14:32.92,0:14:39.25,Default,,0000,0000,0000,,a single widget without any communication,\Nwithout any external stuff, without any Dialogue: 0,0:14:39.25,0:14:47.49,Default,,0000,0000,0000,,JavaScript, getElementById or something\Nlike that. The widget simply decides on Dialogue: 0,0:14:47.49,0:14:58.35,Default,,0000,0000,0000,,its own behavior. That's very comfortable,\Nbelieve me. OK, now we already talked a Dialogue: 0,0:14:58.35,0:15:05.28,Default,,0000,0000,0000,,bit on JavaScript, it's somehow different.\NWell, Flutter is often being compared to Dialogue: 0,0:15:05.28,0:15:13.20,Default,,0000,0000,0000,,JavaScript using React native and\NElectron. So what's the difference? Dialogue: 0,0:15:13.20,0:15:15.61,Default,,0000,0000,0000,,Well, let's first look on Dialogue: 0,0:15:15.61,0:15:24.04,Default,,0000,0000,0000,,JavaScript. You write an application in\NJavaScript, you actually have JavaScript Dialogue: 0,0:15:24.04,0:15:29.87,Default,,0000,0000,0000,,and JavaScript is a Web language. Hence,\Nyou need a web view or something similar Dialogue: 0,0:15:29.87,0:15:39.51,Default,,0000,0000,0000,,to render anything of your app. That means\Nit consumes an immense amount of memory Dialogue: 0,0:15:39.51,0:15:46.08,Default,,0000,0000,0000,,and CPU power because, well, if you ever\Nused chromium or Firefox on the low-end Dialogue: 0,0:15:46.08,0:15:53.84,Default,,0000,0000,0000,,device, you know that JavaScript can be,\Nwell, quite painful. Well, there are Dialogue: 0,0:15:53.84,0:15:59.99,Default,,0000,0000,0000,,highend mobile devices. But if you develop\Nan app, you should always keep in mind Dialogue: 0,0:15:59.99,0:16:05.55,Default,,0000,0000,0000,,that there are mobile devices with much\Nless power and less than two gigabyte of Dialogue: 0,0:16:05.55,0:16:17.35,Default,,0000,0000,0000,,RAM. OK. And if you have Flutter in\Nopposite, you create a native app and you Dialogue: 0,0:16:17.35,0:16:24.05,Default,,0000,0000,0000,,have native code which is being executed\Nbeside the Dart virtual machine with Dialogue: 0,0:16:24.05,0:16:30.04,Default,,0000,0000,0000,,almost the same look and feel, you know,\Nfrom your platform. If you have JavaScript Dialogue: 0,0:16:30.04,0:16:35.78,Default,,0000,0000,0000,,and opposite, you usually have a fancy\Ndesign you made, which is actually good Dialogue: 0,0:16:35.78,0:16:41.00,Default,,0000,0000,0000,,for web development. But it's usually not\Nexactly the design packed from a mobile Dialogue: 0,0:16:41.00,0:16:46.40,Default,,0000,0000,0000,,device. There are very strict guidelines.\NIf you ask Apple or if you ever published Dialogue: 0,0:16:46.40,0:16:52.22,Default,,0000,0000,0000,,an app to the App Store, you know, there\Nare very strict guidelines at Apple. And Dialogue: 0,0:16:52.22,0:16:58.36,Default,,0000,0000,0000,,at Google there are guidelines as well,\Nbut they're not that strict. But if you Dialogue: 0,0:16:58.36,0:17:04.24,Default,,0000,0000,0000,,use Flutter, you automatically obey\Nthese guidelines and produce apps with a Dialogue: 0,0:17:04.24,0:17:12.30,Default,,0000,0000,0000,,native look and feel. And another\Nadvantage of Flutter, it's more an Dialogue: 0,0:17:12.30,0:17:19.39,Default,,0000,0000,0000,,advantage in comparison to native native\Napps, you have the same data and the same Dialogue: 0,0:17:19.39,0:17:27.81,Default,,0000,0000,0000,,code on the same on all your platforms.\NYeah, because if you write native Dialogue: 0,0:17:27.81,0:17:30.26,Default,,0000,0000,0000,,applications, well, you have two code\Nbases and the applications behaves Dialogue: 0,0:17:30.26,0:17:34.63,Default,,0000,0000,0000,,differently on all platforms. And if you\Nhave Flutter, you have one code base for Dialogue: 0,0:17:34.63,0:17:39.38,Default,,0000,0000,0000,,all your platforms and obviously it\Nbehaves the same way on all platforms. Dialogue: 0,0:17:39.38,0:17:47.51,Default,,0000,0000,0000,,That's much easier for your users if she\Nshould ever change their device. Yeah, and Dialogue: 0,0:17:47.51,0:17:54.27,Default,,0000,0000,0000,,the major point I already mentioned at the\Nfirst point, there is almost no loss of Dialogue: 0,0:17:54.27,0:18:03.54,Default,,0000,0000,0000,,performance. Yeah. So Flutter is actually\Na very good framework for creating apps for Dialogue: 0,0:18:03.54,0:18:12.44,Default,,0000,0000,0000,,Android, IOS, desktops such as Windows, \NMac OS or Linux, Free BSD is unfortunately Dialogue: 0,0:18:12.44,0:18:23.35,Default,,0000,0000,0000,,not supported - or even webpages. OK.\NYeah. And at that point, I want to thank Dialogue: 0,0:18:23.35,0:18:31.18,Default,,0000,0000,0000,,you for your the attention of this talk.\NFeel free to attend my next talk on Dialogue: 0,0:18:31.18,0:18:36.40,Default,,0000,0000,0000,,Flutter. Tomorrow I will give an advanced\Nview on cross-platform development using Dialogue: 0,0:18:36.40,0:18:43.08,Default,,0000,0000,0000,,Flutter. We will focus on animations and\Nthe way Flutter works under the hood. Now Dialogue: 0,0:18:43.08,0:18:54.12,Default,,0000,0000,0000,,there should be an online Q&A. Thank you\Nfor your attention! Dialogue: 0,0:18:59.52,0:19:04.72,Default,,0000,0000,0000,,Herald: Hello, this was the lecture by the\None with the braid about Flutter and we Dialogue: 0,0:19:04.72,0:19:10.88,Default,,0000,0000,0000,,are now switching to a small Q&A session\Nhere. There has been exactly one question Dialogue: 0,0:19:10.88,0:19:19.28,Default,,0000,0000,0000,,in the IRC. You can ask questions by the\Nhashtag rC3Wikipaka and in the rC3Wikipaka Dialogue: 0,0:19:19.28,0:19:23.84,Default,,0000,0000,0000,,IRC channel on hackint. There's been one\Nquestion, which is: What is the main Dialogue: 0,0:19:23.84,0:19:29.52,Default,,0000,0000,0000,,feature of Flutter, which lets me decide\Nfor it instead of, for example, react Dialogue: 0,0:19:29.52,0:19:34.86,Default,,0000,0000,0000,,native? Could you answer that question? Dialogue: 0,0:19:34.86,0:20:01.44,Default,,0000,0000,0000,,{\i1}(incomprehensible){\i0} Dialogue: 0,0:20:01.44,0:20:06.48,Default,,0000,0000,0000,,Herald: The one with the braid, we've got\Nproblems with your sound. We can't receive Dialogue: 0,0:20:06.48,0:20:14.59,Default,,0000,0000,0000,,you via ninja, only via our backchannel. Dialogue: 0,0:20:14.59,0:20:24.61,Default,,0000,0000,0000,,{\i1}(incomprehensible){\i0} Dialogue: 0,0:20:24.61,0:20:27.62,Default,,0000,0000,0000,,Herald: And now they're gone. Dialogue: 0,0:20:27.62,0:20:28.11,Default,,0000,0000,0000,,The one with the braid: Can you hear me\Nagain? Dialogue: 0,0:20:28.11,0:20:29.09,Default,,0000,0000,0000,,Herald: Here we are again. Dialogue: 0,0:20:29.09,0:20:32.59,Default,,0000,0000,0000,,Herald: Yeah, we can hear you now.\NThe one with the braid: OK, perfect. Dialogue: 0,0:20:32.59,0:20:37.87,Default,,0000,0000,0000,,Well, the question was, what could\Nconvince someone to use Flutter? I would Dialogue: 0,0:20:37.87,0:20:44.26,Default,,0000,0000,0000,,say the main advantage, the principal\Nadvantage of Flutter is the performance Dialogue: 0,0:20:44.26,0:20:51.32,Default,,0000,0000,0000,,and the native-like applications you get.\NIf you use Flutter, you get native design Dialogue: 0,0:20:51.32,0:20:57.11,Default,,0000,0000,0000,,of the operating system you run on and you\Nhave no lack of performance. That's the Dialogue: 0,0:20:57.11,0:21:05.19,Default,,0000,0000,0000,,main difference to JavaScript, for\Nexample. So you act native. Dialogue: 0,0:21:05.19,0:21:08.91,Default,,0000,0000,0000,,Herald: Would you consider yourself to be\Na flutter fan or aficionado? Dialogue: 0,0:21:08.91,0:21:12.88,Default,,0000,0000,0000,,The one with the braid: Oh, yeah, I'm a\Nhuge fan of Flutter. Dialogue: 0,0:21:12.88,0:21:17.60,Default,,0000,0000,0000,,Herald: OK, we can tell that. You do have\Nother talks about Flutter in the coming Dialogue: 0,0:21:17.60,0:21:21.20,Default,,0000,0000,0000,,days, don't you?\NThe one with the braid: Yes, tomorrow at Dialogue: 0,0:21:22.40,0:21:29.36,Default,,0000,0000,0000,,12 o'clock, there is a second talk on\NFlutter - advanced cross-platform Dialogue: 0,0:21:29.36,0:21:35.68,Default,,0000,0000,0000,,development using Flutter. We will focus\Non Animations and on the way the engine, Dialogue: 0,0:21:36.40,0:21:43.12,Default,,0000,0000,0000,,so the underlying engine of Flutter works.\NHerald: Alright, there's been another Dialogue: 0,0:21:43.12,0:21:47.76,Default,,0000,0000,0000,,question in the meantime here, again by\Nhanswurst10. React native also gives you Dialogue: 0,0:21:47.76,0:21:50.40,Default,,0000,0000,0000,,native components and design, etc. Isn't\Nthat true? Dialogue: 0,0:21:50.40,0:21:54.96,Default,,0000,0000,0000,,The one with the braid: Yeah, it's true.\NBut well, I would call the Flutter Dialogue: 0,0:21:54.96,0:22:01.60,Default,,0000,0000,0000,,components more native. They are built 100\Npercent according to the style-guidelines Dialogue: 0,0:22:02.16,0:22:09.28,Default,,0000,0000,0000,,of the operating systems. If you use\NMaterial patterns, they are 100 percent Dialogue: 0,0:22:10.32,0:22:17.20,Default,,0000,0000,0000,,Material. So as you know them from your\NAndroid phone, for example. And I noticed Dialogue: 0,0:22:17.20,0:22:23.36,Default,,0000,0000,0000,,in react native, you sometimes have\Nissues... not issues, but some components Dialogue: 0,0:22:23.36,0:22:31.20,Default,,0000,0000,0000,,do not properly look exactly the way they\Nshould look, and they often do not look Dialogue: 0,0:22:31.20,0:22:38.48,Default,,0000,0000,0000,,the way the users expect them to look.\NHerald: Alright, thanks for the answers to Dialogue: 0,0:22:38.48,0:22:43.04,Default,,0000,0000,0000,,the questions, there have been some more\Ndetailed questions as a follow up on the Dialogue: 0,0:22:43.04,0:22:50.32,Default,,0000,0000,0000,,IRC, but I've posted in the IRC a link\Nwhere you can all join into for a little Dialogue: 0,0:22:50.32,0:22:54.40,Default,,0000,0000,0000,,BigBlueButton session, where you can go\Ninto more detail exchange. The one with Dialogue: 0,0:22:54.40,0:22:58.48,Default,,0000,0000,0000,,the braid, thank you so much for your\Ninput. This has been the first broadcast Dialogue: 0,0:22:58.48,0:23:04.16,Default,,0000,0000,0000,,of the day and of RC3, and we will\Ncontinue to follow up with a little break Dialogue: 0,0:23:04.16,0:23:09.44,Default,,0000,0000,0000,,and continue our program at Sixteen\NHundred Central European Time. Thank you. Dialogue: 0,0:23:09.44,0:23:13.85,Default,,0000,0000,0000,,The one with the braid: OK, see you.\NHerald: Bye bye. Dialogue: 0,0:23:13.85,0:23:17.93,Default,,0000,0000,0000,,{\i1}wikipaka outro music{\i0} Dialogue: 0,0:23:17.93,0:23:24.00,Default,,0000,0000,0000,,Subtitles created by c3subtitles.de\Nin the year 2021. Join, and help us!