<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Roman Ismagilov</title>
    <description>The latest articles on DEV Community by Roman Ismagilov (@pomis172).</description>
    <link>https://dev.to/pomis172</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1502748%2Fead7ae05-72b5-40a3-a738-a08ecabd920f.jpeg</url>
      <title>DEV Community: Roman Ismagilov</title>
      <link>https://dev.to/pomis172</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pomis172"/>
    <language>en</language>
    <item>
      <title>Deconstructing Flutter vol.1: Inherited Widgets</title>
      <dc:creator>Roman Ismagilov</dc:creator>
      <pubDate>Wed, 08 Jan 2025 20:03:47 +0000</pubDate>
      <link>https://dev.to/pomis172/deconstructing-flutter-vol1-inherited-widgets-28i4</link>
      <guid>https://dev.to/pomis172/deconstructing-flutter-vol1-inherited-widgets-28i4</guid>
      <description>&lt;p&gt;Thinking of creating a newsletter in such a format:&lt;/p&gt;

&lt;p&gt;There's a topic selected for the issue, and then there's a list with several links in reading order.&lt;/p&gt;

&lt;p&gt;Good start: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.kodeco.com/41862617-flutter-s-inheritedwidgets-getting-started#toc-anchor-001" rel="noopener noreferrer"&gt;Flutter’s InheritedWidgets: Getting Started&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deeper understanding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://medium.com/@CavinMac/inherited-widgets-in-depth-413794c3b3d9" rel="noopener noreferrer"&gt;Inherited Widgets In-depth&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/@pomis172/understanding-inheritedmodels-on-an-example-of-a-mediaquery-c3645b03bb45" rel="noopener noreferrer"&gt;Understanding InheritedModels on an example of a MediaQuery&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Documentation: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html" rel="noopener noreferrer"&gt;InheritedWidget class&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Related: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dcm.dev/docs/rules/flutter/prefer-dedicated-media-query-methods/" rel="noopener noreferrer"&gt;DCM rule prefer-dedicated-media-query-methods&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://stackoverflow.com/questions/57157823/provider-vs-inheritedwidget" rel="noopener noreferrer"&gt;Provider vs. InheritedWidget&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What do you think of such format?&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
    </item>
    <item>
      <title>Common mistakes in Flutter article series</title>
      <dc:creator>Roman Ismagilov</dc:creator>
      <pubDate>Wed, 08 Jan 2025 11:30:18 +0000</pubDate>
      <link>https://dev.to/pomis172/common-mistakes-in-flutter-article-series-4kj6</link>
      <guid>https://dev.to/pomis172/common-mistakes-in-flutter-article-series-4kj6</guid>
      <description>&lt;p&gt;Part 1 — &lt;a href="https://medium.com/@pomis172/common-mistakes-with-listviews-in-flutter-f22e7dacfaf7?source=dev_to" rel="noopener noreferrer"&gt;ListViews&lt;/a&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shrink wrapping ListView.builder or using NeverScrollableScrollPhysics.&lt;/li&gt;
&lt;li&gt;Letting every item in the list determine height on its own.
&lt;/li&gt;
&lt;li&gt;Wrapping a ListView into a Padding widget. &lt;/li&gt;
&lt;li&gt;Using wrong scroll physics for different platforms. &lt;/li&gt;
&lt;li&gt;Adding keys to every list item and expecting that it will improve the scrolling performance. &lt;/li&gt;
&lt;li&gt;Not using restorationId.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 2 — &lt;a href="https://medium.com/@pomis172/common-mistakes-with-images-in-flutter-aba46288e20d?source=dev_to" rel="noopener noreferrer"&gt;Images&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large image assets. &lt;/li&gt;
&lt;li&gt;Not using WebP assets. &lt;/li&gt;
&lt;li&gt;Using the Opacity widget when not needed. &lt;/li&gt;
&lt;li&gt;Not precaching image assets. &lt;/li&gt;
&lt;li&gt;Not caching network images. &lt;/li&gt;
&lt;li&gt;Not optimizing SVG assets. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 3 — &lt;a href="https://medium.com/@pomis172/avoiding-common-localization-mistakes-in-flutter-best-practices-and-solutions-eeba39fa91ac?source=dev_to" rel="noopener noreferrer"&gt;i18n&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using different string entries to make a single sentence by concatenating. &lt;/li&gt;
&lt;li&gt;Ignoring plurals or writing some custom logic to handle it. &lt;/li&gt;
&lt;li&gt;Manually formatting date and time, hardcoding names of months, days of week. &lt;/li&gt;
&lt;li&gt;Concatenating currency and price strings. &lt;/li&gt;
&lt;li&gt;Using fonts that support only Latin script. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part 4 — &lt;a href="https://medium.com/stackademic/common-mistakes-with-oauth-in-flutter-eed741f02ad8?source=dev_to" rel="noopener noreferrer"&gt;OAuth&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using WebView to handle auth flow. &lt;/li&gt;
&lt;li&gt;Storing access tokens in a non-secure storage. &lt;/li&gt;
&lt;li&gt;Racing refreshing sessions when the refresh token is allowed to be used only once. &lt;/li&gt;
&lt;li&gt;Bundling client secrets in the application. &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flutter</category>
      <category>mobile</category>
      <category>dart</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
