Linearly interpolate between two themes.
Source
static ThemeData lerp(ThemeData begin, ThemeData end, double t) { return new ThemeData.raw( brightness: t < 0.5 ? begin.brightness : end.brightness, primaryColor: Color.lerp(begin.primaryColor, end.primaryColor, t), primaryColorBrightness: t < 0.5 ? begin.primaryColorBrightness : end.primaryColorBrightness, canvasColor: Color.lerp(begin.canvasColor, end.canvasColor, t), scaffoldBackgroundColor: Color.lerp(begin.scaffoldBackgroundColor, end.scaffoldBackgroundColor, t), cardColor: Color.lerp(begin.cardColor, end.cardColor, t), dividerColor: Color.lerp(begin.dividerColor, end.dividerColor, t), highlightColor: Color.lerp(begin.highlightColor, end.highlightColor, t), splashColor: Color.lerp(begin.splashColor, end.splashColor, t), selectedRowColor: Color.lerp(begin.selectedRowColor, end.selectedRowColor, t), unselectedWidgetColor: Color.lerp(begin.unselectedWidgetColor, end.unselectedWidgetColor, t), disabledColor: Color.lerp(begin.disabledColor, end.disabledColor, t), buttonColor: Color.lerp(begin.buttonColor, end.buttonColor, t), secondaryHeaderColor: Color.lerp(begin.secondaryHeaderColor, end.secondaryHeaderColor, t), textSelectionColor: Color.lerp(begin.textSelectionColor, end.textSelectionColor, t), textSelectionHandleColor: Color.lerp(begin.textSelectionHandleColor, end.textSelectionHandleColor, t), backgroundColor: Color.lerp(begin.backgroundColor, end.backgroundColor, t), accentColor: Color.lerp(begin.accentColor, end.accentColor, t), accentColorBrightness: t < 0.5 ? begin.accentColorBrightness : end.accentColorBrightness, indicatorColor: Color.lerp(begin.indicatorColor, end.indicatorColor, t), hintColor: Color.lerp(begin.hintColor, end.hintColor, t), errorColor: Color.lerp(begin.errorColor, end.errorColor, t), textTheme: TextTheme.lerp(begin.textTheme, end.textTheme, t), primaryTextTheme: TextTheme.lerp(begin.primaryTextTheme, end.primaryTextTheme, t), accentTextTheme: TextTheme.lerp(begin.accentTextTheme, end.accentTextTheme, t), iconTheme: IconThemeData.lerp(begin.iconTheme, end.iconTheme, t), primaryIconTheme: IconThemeData.lerp(begin.primaryIconTheme, end.primaryIconTheme, t), accentIconTheme: IconThemeData.lerp(begin.accentIconTheme, end.accentIconTheme, t), platform: t < 0.5 ? begin.platform : end.platform ); }