{"generator":"Jekyll","link":[{"@attributes":{"href":"https:\/\/iiro.dev\/feed.xml","rel":"self","type":"application\/atom+xml"}},{"@attributes":{"href":"https:\/\/iiro.dev\/","rel":"alternate","type":"text\/html"}}],"updated":"2025-10-30T18:52:04+00:00","id":"https:\/\/iiro.dev\/feed.xml","title":"iiro.dev","subtitle":"Dart and Flutter tutorials, articles, tips and tricks. Sometimes other stuff too.\n","author":{"name":"Iiro Krankka"},"entry":[{"title":"Quickie: AdaptiveImageProvider","link":{"@attributes":{"href":"https:\/\/iiro.dev\/adaptive-images\/","rel":"alternate","type":"text\/html","title":"Quickie: AdaptiveImageProvider"}},"published":"2021-10-05T00:00:00+00:00","updated":"2021-10-05T00:00:00+00:00","id":"https:\/\/iiro.dev\/adaptive-images","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"Flutter\u2019s setState() might not be what you think it is","link":{"@attributes":{"href":"https:\/\/iiro.dev\/set-state\/","rel":"alternate","type":"text\/html","title":"Flutter\u2019s setState() might not be what you think it is"}},"published":"2021-03-29T00:00:00+00:00","updated":"2021-03-29T00:00:00+00:00","id":"https:\/\/iiro.dev\/set-state","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"Parsing and editing HTML in Dart - the right way\u2122","link":{"@attributes":{"href":"https:\/\/iiro.dev\/parsing-html-in-dart\/","rel":"alternate","type":"text\/html","title":"Parsing and editing HTML in Dart - the right way\u2122"}},"published":"2020-11-29T00:00:00+00:00","updated":"2020-11-29T00:00:00+00:00","id":"https:\/\/iiro.dev\/parsing-html-in-dart","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"Controlling time in Dart unit tests, the better way","link":{"@attributes":{"href":"https:\/\/iiro.dev\/controlling-time-with-package-clock\/","rel":"alternate","type":"text\/html","title":"Controlling time in Dart unit tests, the better way"}},"published":"2020-11-14T00:00:00+00:00","updated":"2020-11-14T00:00:00+00:00","id":"https:\/\/iiro.dev\/controlling-time-with-package-clock","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"When in doubt, just use Provider","link":{"@attributes":{"href":"https:\/\/iiro.dev\/just-use-provider\/","rel":"alternate","type":"text\/html","title":"When in doubt, just use Provider"}},"published":"2020-07-12T00:00:00+00:00","updated":"2020-07-12T00:00:00+00:00","id":"https:\/\/iiro.dev\/just-use-provider","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"Restricting system textScaleFactor, when you have to","link":{"@attributes":{"href":"https:\/\/iiro.dev\/restricting-system-text-scale-factor\/","rel":"alternate","type":"text\/html","title":"Restricting system textScaleFactor, when you have to"}},"published":"2020-05-18T00:00:00+00:00","updated":"2020-05-18T00:00:00+00:00","id":"https:\/\/iiro.dev\/restricting-system-text-scale-factor","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"Running arbitrary strings as Dart code","link":{"@attributes":{"href":"https:\/\/iiro.dev\/how-to-eval-in-dart\/","rel":"alternate","type":"text\/html","title":"Running arbitrary strings as Dart code"}},"published":"2019-08-15T00:00:00+00:00","updated":"2019-08-15T00:00:00+00:00","id":"https:\/\/iiro.dev\/how-to-eval-in-dart","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"From mobile to web in less than 4 beers","link":{"@attributes":{"href":"https:\/\/iiro.dev\/reflectly-mobile-to-web-with-flutter\/","rel":"alternate","type":"text\/html","title":"From mobile to web in less than 4 beers"}},"published":"2019-05-15T00:00:00+00:00","updated":"2019-05-15T00:00:00+00:00","id":"https:\/\/iiro.dev\/reflectly-mobile-to-web-with-flutter","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"Splitting widgets to methods is an antipattern","link":{"@attributes":{"href":"https:\/\/iiro.dev\/splitting-widgets-to-methods-performance-antipattern\/","rel":"alternate","type":"text\/html","title":"Splitting widgets to methods is an antipattern"}},"published":"2018-12-11T00:00:00+00:00","updated":"2018-12-11T00:00:00+00:00","id":"https:\/\/iiro.dev\/splitting-widgets-to-methods-performance-antipattern","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}},{"title":"Why does using Image.network crash widget tests?","link":{"@attributes":{"href":"https:\/\/iiro.dev\/image-network-widget-tests\/","rel":"alternate","type":"text\/html","title":"Why does using Image.network crash widget tests?"}},"published":"2018-09-16T00:00:00+00:00","updated":"2018-09-16T00:00:00+00:00","id":"https:\/\/iiro.dev\/image-network-widget-tests","content":{"@attributes":{"type":"html"}},"author":{"name":"Iiro Krankka"},"summary":{"@attributes":{"type":"html"}}}]}