| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | import 'package:app_flowy/plugins/doc/presentation/style_widgets.dart';import 'package:flutter/material.dart';import 'package:flutter_quill/flutter_quill.dart';import 'package:provider/provider.dart';import 'package:tuple/tuple.dart';import 'package:flowy_infra/theme.dart';DefaultStyles customStyles(BuildContext context) {  const baseSpacing = Tuple2<double, double>(6, 0);  final theme = context.watch<AppTheme>();  final themeData = theme.themeData;  final fontFamily = makeFontFamily(themeData);  final defaultTextStyle = DefaultTextStyle.of(context);  final baseStyle = defaultTextStyle.style.copyWith(    fontSize: 18,    height: 1.3,    fontWeight: FontWeight.w300,    letterSpacing: 0.6,    fontFamily: fontFamily,  );  return DefaultStyles(      h1: DefaultTextBlockStyle(          defaultTextStyle.style.copyWith(            fontSize: 34,            color: defaultTextStyle.style.color!.withOpacity(0.70),            height: 1.15,            fontWeight: FontWeight.w300,          ),          const Tuple2(16, 0),          const Tuple2(0, 0),          null),      h2: DefaultTextBlockStyle(          defaultTextStyle.style.copyWith(            fontSize: 24,            color: defaultTextStyle.style.color!.withOpacity(0.70),            height: 1.15,            fontWeight: FontWeight.normal,          ),          const Tuple2(8, 0),          const Tuple2(0, 0),          null),      h3: DefaultTextBlockStyle(          defaultTextStyle.style.copyWith(            fontSize: 20,            color: defaultTextStyle.style.color!.withOpacity(0.70),            height: 1.25,            fontWeight: FontWeight.w500,          ),          const Tuple2(8, 0),          const Tuple2(0, 0),          null),      paragraph: DefaultTextBlockStyle(          baseStyle, const Tuple2(10, 0), const Tuple2(0, 0), null),      bold: const TextStyle(fontWeight: FontWeight.bold),      italic: const TextStyle(fontStyle: FontStyle.italic),      small: const TextStyle(fontSize: 12, color: Colors.black45),      underline: const TextStyle(decoration: TextDecoration.underline),      strikeThrough: const TextStyle(decoration: TextDecoration.lineThrough),      inlineCode: TextStyle(        color: Colors.blue.shade900.withOpacity(0.9),        fontFamily: fontFamily,        fontSize: 13,      ),      link: TextStyle(        color: themeData.colorScheme.secondary,        decoration: TextDecoration.underline,      ),      color: theme.textColor,      placeHolder: DefaultTextBlockStyle(          defaultTextStyle.style.copyWith(            fontSize: 20,            height: 1.5,            color: Colors.grey.withOpacity(0.6),          ),          const Tuple2(0, 0),          const Tuple2(0, 0),          null),      lists: DefaultListBlockStyle(baseStyle, baseSpacing, const Tuple2(0, 6),          null, StyleWidgetBuilder.checkbox(theme)),      quote: DefaultTextBlockStyle(          TextStyle(color: baseStyle.color!.withOpacity(0.6)),          baseSpacing,          const Tuple2(6, 2),          BoxDecoration(            border: Border(              left: BorderSide(width: 4, color: theme.shader5),            ),          )),      code: DefaultTextBlockStyle(          TextStyle(            color: Colors.blue.shade900.withOpacity(0.9),            fontFamily: fontFamily,            fontSize: 13,            height: 1.15,          ),          baseSpacing,          const Tuple2(0, 0),          BoxDecoration(            color: Colors.grey.shade50,            borderRadius: BorderRadius.circular(2),          )),      indent: DefaultTextBlockStyle(          baseStyle, baseSpacing, const Tuple2(0, 6), null),      align: DefaultTextBlockStyle(          baseStyle, const Tuple2(0, 0), const Tuple2(0, 0), null),      leading: DefaultTextBlockStyle(          baseStyle, const Tuple2(0, 0), const Tuple2(0, 0), null),      sizeSmall: const TextStyle(fontSize: 10),      sizeLarge: const TextStyle(fontSize: 18),      sizeHuge: const TextStyle(fontSize: 22));}String makeFontFamily(ThemeData themeData) {  String fontFamily;  switch (themeData.platform) {    case TargetPlatform.iOS:    case TargetPlatform.macOS:      fontFamily = 'Mulish';      break;    case TargetPlatform.android:    case TargetPlatform.fuchsia:    case TargetPlatform.windows:    case TargetPlatform.linux:      fontFamily = 'Roboto Mono';      break;    default:      throw UnimplementedError();  }  return fontFamily;}
 |