Implements a plain-text editor with reversible actions & Hero transitions
This is the second story of the series: "Build a note-taking app with Flutter + Firebase".
In part I, we've built the first screen for the notebook app, Flutter Keep.
In this article, we're going to create a note editor, with reversible operations supported, and explore the magical Hero animations.
全文
Build a note-taking app with Flutter + Firebase — Part I
Create a simplified 'clone' of Google Keep from scratch
I'm a fan of both Flutter & Google Keep. In the series, I introduce the process of how to make a simple notebook app like Keep from scratch using Flutter & Firebase.
In this first part of the series, we're going to set up a Flutter project, provide an authentication process, and a simple screen to show the note list.
全文
Generic Type Variance in Dart
在泛型(generics)编程中,复杂的父/子类型关系判断常常带来困惑,比如何时List<String>可以被看作List<Object>的子类型?往一个List<Object>类型的列表插入字符串对象是否总是被允许的?
从C#到Kotlin,很多编程语言都支持类型「变体」(或型变,variance) 的特性,Dart在未来的版本中也会加入「声明处型变」的支持。在这篇学习笔记中,梳理了几种变体的含义,以及它们在Dart中的实现情况。
全文
Build your own (GitHub) actions
Using TypeScript & Yarn
GitHub Actions, the CI/CD service provided by GitHub, with which you can create custom software development life cycle (SDLC) workflows directly in your GitHub repository. In this article, I share the approach of building custom actions to fit your unique workflow.
全文
Defining Dependencies in Gradle Kotlin DSL
A concise syntax to define reusable dependencies
In a multi-module Gradle project like most Android projects, you may want to manage all the dependencies in one place, keeping them consistent across the whole project.
In this article, we'll archive this goal by defining a simple DSL (domain-specific language) using Kotlin extensions.
全文
Promises风格的异步编程
在Node.js中,Promise可用于简化异步处理过程的复杂度,解决Callback Hell问题,除了说明这个问题之外,本文还从另一个不常被提及的场景切入,来说明Promise给我们提供了更高的自由度,有效地把函数的内在逻辑和它的调度方式(同步/异步)分离开来,从而帮助我们编写重用度更高的函数。
全文