saminsohag

Table is now scrollable

@@ -28,7 +28,8 @@ class TexMarkdown extends StatelessWidget { @@ -28,7 +28,8 @@ class TexMarkdown extends StatelessWidget {
28 final String Function(String tex)? latexWorkaround; 28 final String Function(String tex)? latexWorkaround;
29 final Widget Function(BuildContext context, String tex)? latexBuilder; 29 final Widget Function(BuildContext context, String tex)? latexBuilder;
30 final bool followLinkColor; 30 final bool followLinkColor;
31 - final Widget Function(BuildContext context, String tex)? codeBuilder; 31 + final Widget Function(BuildContext context, String name, String code)?
  32 + codeBuilder;
32 33
33 @override 34 @override
34 Widget build(BuildContext context) { 35 Widget build(BuildContext context) {
@@ -38,7 +38,7 @@ abstract class MarkdownComponent { @@ -38,7 +38,7 @@ abstract class MarkdownComponent {
38 final void Function(String url, String title)? onLinkTab, 38 final void Function(String url, String title)? onLinkTab,
39 final String Function(String tex)? latexWorkaround, 39 final String Function(String tex)? latexWorkaround,
40 final Widget Function(BuildContext context, String tex)? latexBuilder, 40 final Widget Function(BuildContext context, String tex)? latexBuilder,
41 - final Widget Function(BuildContext context, String tex)? codeBuilder, 41 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
42 ) { 42 ) {
43 List<InlineSpan> spans = []; 43 List<InlineSpan> spans = [];
44 List<String> regexes = 44 List<String> regexes =
@@ -126,7 +126,7 @@ abstract class MarkdownComponent { @@ -126,7 +126,7 @@ abstract class MarkdownComponent {
126 final void Function(String url, String title)? onLinkTab, 126 final void Function(String url, String title)? onLinkTab,
127 final String Function(String tex)? latexWorkaround, 127 final String Function(String tex)? latexWorkaround,
128 final Widget Function(BuildContext context, String tex)? latexBuilder, 128 final Widget Function(BuildContext context, String tex)? latexBuilder,
129 - final Widget Function(BuildContext context, String tex)? codeBuilder, 129 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
130 ); 130 );
131 131
132 RegExp get exp; 132 RegExp get exp;
@@ -147,7 +147,7 @@ abstract class InlineMd extends MarkdownComponent { @@ -147,7 +147,7 @@ abstract class InlineMd extends MarkdownComponent {
147 final void Function(String url, String title)? onLinkTab, 147 final void Function(String url, String title)? onLinkTab,
148 final String Function(String tex)? latexWorkaround, 148 final String Function(String tex)? latexWorkaround,
149 final Widget Function(BuildContext context, String tex)? latexBuilder, 149 final Widget Function(BuildContext context, String tex)? latexBuilder,
150 - final Widget Function(BuildContext context, String tex)? codeBuilder, 150 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
151 ); 151 );
152 } 152 }
153 153
@@ -164,7 +164,7 @@ abstract class BlockMd extends MarkdownComponent { @@ -164,7 +164,7 @@ abstract class BlockMd extends MarkdownComponent {
164 final void Function(String url, String title)? onLinkTab, 164 final void Function(String url, String title)? onLinkTab,
165 final String Function(String tex)? latexWorkaround, 165 final String Function(String tex)? latexWorkaround,
166 final Widget Function(BuildContext context, String tex)? latexBuilder, 166 final Widget Function(BuildContext context, String tex)? latexBuilder,
167 - final Widget Function(BuildContext context, String tex)? codeBuilder, 167 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
168 ) { 168 ) {
169 return WidgetSpan( 169 return WidgetSpan(
170 child: build( 170 child: build(
@@ -189,7 +189,7 @@ abstract class BlockMd extends MarkdownComponent { @@ -189,7 +189,7 @@ abstract class BlockMd extends MarkdownComponent {
189 final void Function(String url, String title)? onLinkTab, 189 final void Function(String url, String title)? onLinkTab,
190 final String Function(String tex)? latexWorkaround, 190 final String Function(String tex)? latexWorkaround,
191 final Widget Function(BuildContext context, String tex)? latexBuilder, 191 final Widget Function(BuildContext context, String tex)? latexBuilder,
192 - final Widget Function(BuildContext context, String tex)? codeBuilder, 192 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
193 ); 193 );
194 } 194 }
195 195
@@ -206,7 +206,7 @@ class HTag extends BlockMd { @@ -206,7 +206,7 @@ class HTag extends BlockMd {
206 final void Function(String url, String title)? onLinkTab, 206 final void Function(String url, String title)? onLinkTab,
207 final String Function(String tex)? latexWorkaround, 207 final String Function(String tex)? latexWorkaround,
208 final Widget Function(BuildContext context, String tex)? latexBuilder, 208 final Widget Function(BuildContext context, String tex)? latexBuilder,
209 - final Widget Function(BuildContext context, String tex)? codeBuilder, 209 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
210 ) { 210 ) {
211 var match = exp.firstMatch(text.trim()); 211 var match = exp.firstMatch(text.trim());
212 return Text.rich( 212 return Text.rich(
@@ -278,7 +278,7 @@ class NewLines extends InlineMd { @@ -278,7 +278,7 @@ class NewLines extends InlineMd {
278 final void Function(String url, String title)? onLinkTab, 278 final void Function(String url, String title)? onLinkTab,
279 final String Function(String tex)? latexWorkaround, 279 final String Function(String tex)? latexWorkaround,
280 final Widget Function(BuildContext context, String tex)? latexBuilder, 280 final Widget Function(BuildContext context, String tex)? latexBuilder,
281 - final Widget Function(BuildContext context, String tex)? codeBuilder, 281 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
282 ) { 282 ) {
283 return TextSpan( 283 return TextSpan(
284 text: "\n\n\n\n", 284 text: "\n\n\n\n",
@@ -303,7 +303,7 @@ class HrLine extends BlockMd { @@ -303,7 +303,7 @@ class HrLine extends BlockMd {
303 final void Function(String url, String title)? onLinkTab, 303 final void Function(String url, String title)? onLinkTab,
304 final String Function(String tex)? latexWorkaround, 304 final String Function(String tex)? latexWorkaround,
305 final Widget Function(BuildContext context, String tex)? latexBuilder, 305 final Widget Function(BuildContext context, String tex)? latexBuilder,
306 - final Widget Function(BuildContext context, String tex)? codeBuilder, 306 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
307 ) { 307 ) {
308 return CustomDivider( 308 return CustomDivider(
309 height: 2, 309 height: 2,
@@ -327,7 +327,7 @@ class CheckBoxMd extends BlockMd { @@ -327,7 +327,7 @@ class CheckBoxMd extends BlockMd {
327 final void Function(String url, String title)? onLinkTab, 327 final void Function(String url, String title)? onLinkTab,
328 final String Function(String tex)? latexWorkaround, 328 final String Function(String tex)? latexWorkaround,
329 final Widget Function(BuildContext context, String tex)? latexBuilder, 329 final Widget Function(BuildContext context, String tex)? latexBuilder,
330 - final Widget Function(BuildContext context, String tex)? codeBuilder, 330 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
331 ) { 331 ) {
332 var match = exp.firstMatch(text.trim()); 332 var match = exp.firstMatch(text.trim());
333 return CustomCb( 333 return CustomCb(
@@ -361,7 +361,7 @@ class RadioButtonMd extends BlockMd { @@ -361,7 +361,7 @@ class RadioButtonMd extends BlockMd {
361 final void Function(String url, String title)? onLinkTab, 361 final void Function(String url, String title)? onLinkTab,
362 final String Function(String tex)? latexWorkaround, 362 final String Function(String tex)? latexWorkaround,
363 final Widget Function(BuildContext context, String tex)? latexBuilder, 363 final Widget Function(BuildContext context, String tex)? latexBuilder,
364 - final Widget Function(BuildContext context, String tex)? codeBuilder, 364 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
365 ) { 365 ) {
366 var match = exp.firstMatch(text.trim()); 366 var match = exp.firstMatch(text.trim());
367 return CustomRb( 367 return CustomRb(
@@ -395,7 +395,7 @@ class IndentMd extends BlockMd { @@ -395,7 +395,7 @@ class IndentMd extends BlockMd {
395 final void Function(String url, String title)? onLinkTab, 395 final void Function(String url, String title)? onLinkTab,
396 final String Function(String tex)? latexWorkaround, 396 final String Function(String tex)? latexWorkaround,
397 final Widget Function(BuildContext context, String tex)? latexBuilder, 397 final Widget Function(BuildContext context, String tex)? latexBuilder,
398 - final Widget Function(BuildContext context, String tex)? codeBuilder, 398 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
399 ) { 399 ) {
400 [ 400 [
401 r"\\\[(.*?)\\\]", 401 r"\\\[(.*?)\\\]",
@@ -440,7 +440,7 @@ class UnOrderedList extends BlockMd { @@ -440,7 +440,7 @@ class UnOrderedList extends BlockMd {
440 final void Function(String url, String title)? onLinkTab, 440 final void Function(String url, String title)? onLinkTab,
441 final String Function(String tex)? latexWorkaround, 441 final String Function(String tex)? latexWorkaround,
442 final Widget Function(BuildContext context, String tex)? latexBuilder, 442 final Widget Function(BuildContext context, String tex)? latexBuilder,
443 - final Widget Function(BuildContext context, String tex)? codeBuilder, 443 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
444 ) { 444 ) {
445 var match = exp.firstMatch(text); 445 var match = exp.firstMatch(text);
446 return UnorderedListView( 446 return UnorderedListView(
@@ -477,7 +477,7 @@ class OrderedList extends BlockMd { @@ -477,7 +477,7 @@ class OrderedList extends BlockMd {
477 final void Function(String url, String title)? onLinkTab, 477 final void Function(String url, String title)? onLinkTab,
478 final String Function(String tex)? latexWorkaround, 478 final String Function(String tex)? latexWorkaround,
479 final Widget Function(BuildContext context, String tex)? latexBuilder, 479 final Widget Function(BuildContext context, String tex)? latexBuilder,
480 - final Widget Function(BuildContext context, String tex)? codeBuilder, 480 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
481 ) { 481 ) {
482 var match = exp.firstMatch(text.trim()); 482 var match = exp.firstMatch(text.trim());
483 return OrderedListView( 483 return OrderedListView(
@@ -510,7 +510,7 @@ class HighlightedText extends InlineMd { @@ -510,7 +510,7 @@ class HighlightedText extends InlineMd {
510 final void Function(String url, String title)? onLinkTab, 510 final void Function(String url, String title)? onLinkTab,
511 final String Function(String tex)? latexWorkaround, 511 final String Function(String tex)? latexWorkaround,
512 final Widget Function(BuildContext context, String tex)? latexBuilder, 512 final Widget Function(BuildContext context, String tex)? latexBuilder,
513 - final Widget Function(BuildContext context, String tex)? codeBuilder, 513 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
514 ) { 514 ) {
515 return TextSpan( 515 return TextSpan(
516 text: text, 516 text: text,
@@ -546,7 +546,7 @@ class BoldMd extends InlineMd { @@ -546,7 +546,7 @@ class BoldMd extends InlineMd {
546 final void Function(String url, String title)? onLinkTab, 546 final void Function(String url, String title)? onLinkTab,
547 final String Function(String tex)? latexWorkaround, 547 final String Function(String tex)? latexWorkaround,
548 final Widget Function(BuildContext context, String tex)? latexBuilder, 548 final Widget Function(BuildContext context, String tex)? latexBuilder,
549 - final Widget Function(BuildContext context, String tex)? codeBuilder, 549 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
550 ) { 550 ) {
551 var match = exp.firstMatch(text.trim()); 551 var match = exp.firstMatch(text.trim());
552 return TextSpan( 552 return TextSpan(
@@ -583,7 +583,7 @@ class LatexMathMultyLine extends BlockMd { @@ -583,7 +583,7 @@ class LatexMathMultyLine extends BlockMd {
583 void Function(String url, String title)? onLinkTab, 583 void Function(String url, String title)? onLinkTab,
584 String Function(String tex)? latexWorkaround, 584 String Function(String tex)? latexWorkaround,
585 Widget Function(BuildContext context, String tex)? latexBuilder, 585 Widget Function(BuildContext context, String tex)? latexBuilder,
586 - Widget Function(BuildContext context, String tex)? codeBuilder, 586 + Widget Function(BuildContext context,String name,String code)? codeBuilder,
587 ) { 587 ) {
588 var p0 = exp.firstMatch(text.trim()); 588 var p0 = exp.firstMatch(text.trim());
589 p0?.group(0); 589 p0?.group(0);
@@ -652,7 +652,7 @@ class LatexMath extends InlineMd { @@ -652,7 +652,7 @@ class LatexMath extends InlineMd {
652 final void Function(String url, String title)? onLinkTab, 652 final void Function(String url, String title)? onLinkTab,
653 final String Function(String tex)? latexWorkaround, 653 final String Function(String tex)? latexWorkaround,
654 final Widget Function(BuildContext context, String tex)? latexBuilder, 654 final Widget Function(BuildContext context, String tex)? latexBuilder,
655 - final Widget Function(BuildContext context, String tex)? codeBuilder, 655 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
656 ) { 656 ) {
657 var p0 = exp.firstMatch(text.trim()); 657 var p0 = exp.firstMatch(text.trim());
658 p0?.group(0); 658 p0?.group(0);
@@ -716,7 +716,7 @@ class ItalicMd extends InlineMd { @@ -716,7 +716,7 @@ class ItalicMd extends InlineMd {
716 final void Function(String url, String title)? onLinkTab, 716 final void Function(String url, String title)? onLinkTab,
717 final String Function(String tex)? latexWorkaround, 717 final String Function(String tex)? latexWorkaround,
718 final Widget Function(BuildContext context, String tex)? latexBuilder, 718 final Widget Function(BuildContext context, String tex)? latexBuilder,
719 - final Widget Function(BuildContext context, String tex)? codeBuilder, 719 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
720 ) { 720 ) {
721 var match = exp.firstMatch(text.trim()); 721 var match = exp.firstMatch(text.trim());
722 return TextSpan( 722 return TextSpan(
@@ -749,7 +749,7 @@ class ATagMd extends InlineMd { @@ -749,7 +749,7 @@ class ATagMd extends InlineMd {
749 final void Function(String url, String title)? onLinkTab, 749 final void Function(String url, String title)? onLinkTab,
750 final String Function(String tex)? latexWorkaround, 750 final String Function(String tex)? latexWorkaround,
751 final Widget Function(BuildContext context, String tex)? latexBuilder, 751 final Widget Function(BuildContext context, String tex)? latexBuilder,
752 - final Widget Function(BuildContext context, String tex)? codeBuilder, 752 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
753 ) { 753 ) {
754 var match = exp.firstMatch(text.trim()); 754 var match = exp.firstMatch(text.trim());
755 if (match?[1] == null && match?[2] == null) { 755 if (match?[1] == null && match?[2] == null) {
@@ -795,7 +795,7 @@ class ImageMd extends InlineMd { @@ -795,7 +795,7 @@ class ImageMd extends InlineMd {
795 final void Function(String url, String title)? onLinkTab, 795 final void Function(String url, String title)? onLinkTab,
796 final String Function(String tex)? latexWorkaround, 796 final String Function(String tex)? latexWorkaround,
797 final Widget Function(BuildContext context, String tex)? latexBuilder, 797 final Widget Function(BuildContext context, String tex)? latexBuilder,
798 - final Widget Function(BuildContext context, String tex)? codeBuilder, 798 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
799 ) { 799 ) {
800 var match = exp.firstMatch(text.trim()); 800 var match = exp.firstMatch(text.trim());
801 double? height; 801 double? height;
@@ -848,7 +848,7 @@ class TableMd extends BlockMd { @@ -848,7 +848,7 @@ class TableMd extends BlockMd {
848 void Function(String url, String title)? onLinkTab, 848 void Function(String url, String title)? onLinkTab,
849 final String Function(String tex)? latexWorkaround, 849 final String Function(String tex)? latexWorkaround,
850 final Widget Function(BuildContext context, String tex)? latexBuilder, 850 final Widget Function(BuildContext context, String tex)? latexBuilder,
851 - final Widget Function(BuildContext context, String tex)? codeBuilder, 851 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
852 ) { 852 ) {
853 final List<Map<int, String>> value = text 853 final List<Map<int, String>> value = text
854 .split('\n') 854 .split('\n')
@@ -873,7 +873,13 @@ class TableMd extends BlockMd { @@ -873,7 +873,13 @@ class TableMd extends BlockMd {
873 if (maxCol == 0) { 873 if (maxCol == 0) {
874 return Text("", style: style); 874 return Text("", style: style);
875 } 875 }
876 - return Table( 876 + final controller = ScrollController();
  877 + return Scrollbar(
  878 + controller: controller,
  879 + child: SingleChildScrollView(
  880 + controller: controller,
  881 + scrollDirection: Axis.horizontal,
  882 + child: Table(
877 textDirection: textDirection, 883 textDirection: textDirection,
878 defaultColumnWidth: CustomTableColumnWidth(), 884 defaultColumnWidth: CustomTableColumnWidth(),
879 defaultVerticalAlignment: TableCellVerticalAlignment.middle, 885 defaultVerticalAlignment: TableCellVerticalAlignment.middle,
@@ -923,6 +929,8 @@ class TableMd extends BlockMd { @@ -923,6 +929,8 @@ class TableMd extends BlockMd {
923 ), 929 ),
924 ) 930 )
925 .toList(), 931 .toList(),
  932 + ),
  933 + ),
926 ); 934 );
927 } 935 }
928 936
@@ -948,7 +956,7 @@ class CodeBlockMd extends BlockMd { @@ -948,7 +956,7 @@ class CodeBlockMd extends BlockMd {
948 final void Function(String url, String title)? onLinkTab, 956 final void Function(String url, String title)? onLinkTab,
949 final String Function(String tex)? latexWorkaround, 957 final String Function(String tex)? latexWorkaround,
950 final Widget Function(BuildContext context, String tex)? latexBuilder, 958 final Widget Function(BuildContext context, String tex)? latexBuilder,
951 - final Widget Function(BuildContext context, String tex)? codeBuilder, 959 + final Widget Function(BuildContext context,String name,String code)? codeBuilder,
952 ) { 960 ) {
953 String codes = exp.firstMatch(text)?[2] ?? ""; 961 String codes = exp.firstMatch(text)?[2] ?? "";
954 String name = exp.firstMatch(text)?[1] ?? ""; 962 String name = exp.firstMatch(text)?[1] ?? "";
@@ -956,7 +964,7 @@ class CodeBlockMd extends BlockMd { @@ -956,7 +964,7 @@ class CodeBlockMd extends BlockMd {
956 return Padding( 964 return Padding(
957 padding: const EdgeInsets.all(16.0), 965 padding: const EdgeInsets.all(16.0),
958 child: codeBuilder != null 966 child: codeBuilder != null
959 - ? codeBuilder(context, codes) 967 + ? codeBuilder(context,name, codes)
960 : CodeField(name: name, codes: codes), 968 : CodeField(name: name, codes: codes),
961 ); 969 );
962 } 970 }
@@ -27,7 +27,8 @@ class MdWidget extends StatelessWidget { @@ -27,7 +27,8 @@ class MdWidget extends StatelessWidget {
27 final String Function(String tex)? latexWorkaround; 27 final String Function(String tex)? latexWorkaround;
28 final Widget Function(BuildContext context, String tex)? latexBuilder; 28 final Widget Function(BuildContext context, String tex)? latexBuilder;
29 final bool followLinkColor; 29 final bool followLinkColor;
30 - final Widget Function(BuildContext context, String tex)? codeBuilder; 30 + final Widget Function(BuildContext context, String name, String code)?
  31 + codeBuilder;
31 32
32 @override 33 @override
33 Widget build(BuildContext context) { 34 Widget build(BuildContext context) {