Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
gpt_markdown
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
saminsohag
2024-02-22 08:29:06 +0600
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
45d1e49f7e9244169d9cb78f36c88bb89adf384a
45d1e49f
1 parent
1e64a85e
Table is now scrollable
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
84 additions
and
74 deletions
gpt_markdown/lib/gpt_markdown.dart
gpt_markdown/lib/markdown_component.dart
gpt_markdown/lib/md_widget.dart
gpt_markdown/lib/gpt_markdown.dart
View file @
45d1e49
...
...
@@ -28,7 +28,8 @@ class TexMarkdown extends StatelessWidget {
final
String
Function
(
String
tex
)?
latexWorkaround
;
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
;
final
bool
followLinkColor
;
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
;
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
;
@override
Widget
build
(
BuildContext
context
)
{
...
...
gpt_markdown/lib/markdown_component.dart
View file @
45d1e49
...
...
@@ -38,7 +38,7 @@ abstract class MarkdownComponent {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
List
<
InlineSpan
>
spans
=
[];
List
<
String
>
regexes
=
...
...
@@ -126,7 +126,7 @@ abstract class MarkdownComponent {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
);
RegExp
get
exp
;
...
...
@@ -147,7 +147,7 @@ abstract class InlineMd extends MarkdownComponent {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
);
}
...
...
@@ -164,7 +164,7 @@ abstract class BlockMd extends MarkdownComponent {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
return
WidgetSpan
(
child:
build
(
...
...
@@ -189,7 +189,7 @@ abstract class BlockMd extends MarkdownComponent {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
);
}
...
...
@@ -206,7 +206,7 @@ class HTag extends BlockMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
.
trim
());
return
Text
.
rich
(
...
...
@@ -278,7 +278,7 @@ class NewLines extends InlineMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
return
TextSpan
(
text:
"
\n\n\n\n
"
,
...
...
@@ -303,7 +303,7 @@ class HrLine extends BlockMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
return
CustomDivider
(
height:
2
,
...
...
@@ -327,7 +327,7 @@ class CheckBoxMd extends BlockMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
.
trim
());
return
CustomCb
(
...
...
@@ -361,7 +361,7 @@ class RadioButtonMd extends BlockMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
.
trim
());
return
CustomRb
(
...
...
@@ -395,7 +395,7 @@ class IndentMd extends BlockMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
[
r"\\\[(.*?)\\\]"
,
...
...
@@ -440,7 +440,7 @@ class UnOrderedList extends BlockMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
);
return
UnorderedListView
(
...
...
@@ -477,7 +477,7 @@ class OrderedList extends BlockMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
.
trim
());
return
OrderedListView
(
...
...
@@ -510,7 +510,7 @@ class HighlightedText extends InlineMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
return
TextSpan
(
text:
text
,
...
...
@@ -546,7 +546,7 @@ class BoldMd extends InlineMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
.
trim
());
return
TextSpan
(
...
...
@@ -583,7 +583,7 @@ class LatexMathMultyLine extends BlockMd {
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
String
Function
(
String
tex
)?
latexWorkaround
,
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
p0
=
exp
.
firstMatch
(
text
.
trim
());
p0
?.
group
(
0
);
...
...
@@ -652,7 +652,7 @@ class LatexMath extends InlineMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
p0
=
exp
.
firstMatch
(
text
.
trim
());
p0
?.
group
(
0
);
...
...
@@ -716,7 +716,7 @@ class ItalicMd extends InlineMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
.
trim
());
return
TextSpan
(
...
...
@@ -749,7 +749,7 @@ class ATagMd extends InlineMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
.
trim
());
if
(
match
?[
1
]
==
null
&&
match
?[
2
]
==
null
)
{
...
...
@@ -795,7 +795,7 @@ class ImageMd extends InlineMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
var
match
=
exp
.
firstMatch
(
text
.
trim
());
double
?
height
;
...
...
@@ -848,7 +848,7 @@ class TableMd extends BlockMd {
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
final
List
<
Map
<
int
,
String
>>
value
=
text
.
split
(
'
\n
'
)
...
...
@@ -873,56 +873,64 @@ class TableMd extends BlockMd {
if
(
maxCol
==
0
)
{
return
Text
(
""
,
style:
style
);
}
return
Table
(
textDirection:
textDirection
,
defaultColumnWidth:
CustomTableColumnWidth
(),
defaultVerticalAlignment:
TableCellVerticalAlignment
.
middle
,
border:
TableBorder
.
all
(
width:
1
,
color:
Theme
.
of
(
context
).
colorScheme
.
onSurface
,
final
controller
=
ScrollController
();
return
Scrollbar
(
controller:
controller
,
child:
SingleChildScrollView
(
controller:
controller
,
scrollDirection:
Axis
.
horizontal
,
child:
Table
(
textDirection:
textDirection
,
defaultColumnWidth:
CustomTableColumnWidth
(),
defaultVerticalAlignment:
TableCellVerticalAlignment
.
middle
,
border:
TableBorder
.
all
(
width:
1
,
color:
Theme
.
of
(
context
).
colorScheme
.
onSurface
,
),
children:
value
.
asMap
()
.
entries
.
map
<
TableRow
>(
(
entry
)
=>
TableRow
(
decoration:
(
heading
)
?
BoxDecoration
(
color:
(
entry
.
key
==
0
)
?
Theme
.
of
(
context
).
colorScheme
.
surfaceVariant
:
null
,
)
:
null
,
children:
List
.
generate
(
maxCol
,
(
index
)
{
var
e
=
entry
.
value
;
String
data
=
e
[
index
]
??
""
;
if
(
RegExp
(
r"^--+$"
).
hasMatch
(
data
.
trim
())
||
data
.
trim
().
isEmpty
)
{
return
const
SizedBox
();
}
return
Center
(
child:
Padding
(
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
8
,
vertical:
4
),
child:
MdWidget
(
(
e
[
index
]
??
""
).
trim
(),
textDirection:
textDirection
,
onLinkTab:
onLinkTab
,
style:
style
,
latexWorkaround:
latexWorkaround
,
latexBuilder:
latexBuilder
,
codeBuilder:
codeBuilder
,
),
),
);
},
),
),
)
.
toList
(),
),
),
children:
value
.
asMap
()
.
entries
.
map
<
TableRow
>(
(
entry
)
=>
TableRow
(
decoration:
(
heading
)
?
BoxDecoration
(
color:
(
entry
.
key
==
0
)
?
Theme
.
of
(
context
).
colorScheme
.
surfaceVariant
:
null
,
)
:
null
,
children:
List
.
generate
(
maxCol
,
(
index
)
{
var
e
=
entry
.
value
;
String
data
=
e
[
index
]
??
""
;
if
(
RegExp
(
r"^--+$"
).
hasMatch
(
data
.
trim
())
||
data
.
trim
().
isEmpty
)
{
return
const
SizedBox
();
}
return
Center
(
child:
Padding
(
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
8
,
vertical:
4
),
child:
MdWidget
(
(
e
[
index
]
??
""
).
trim
(),
textDirection:
textDirection
,
onLinkTab:
onLinkTab
,
style:
style
,
latexWorkaround:
latexWorkaround
,
latexBuilder:
latexBuilder
,
codeBuilder:
codeBuilder
,
),
),
);
},
),
),
)
.
toList
(),
);
}
...
...
@@ -948,7 +956,7 @@ class CodeBlockMd extends BlockMd {
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
)
{
String
codes
=
exp
.
firstMatch
(
text
)?[
2
]
??
""
;
String
name
=
exp
.
firstMatch
(
text
)?[
1
]
??
""
;
...
...
@@ -956,7 +964,7 @@ class CodeBlockMd extends BlockMd {
return
Padding
(
padding:
const
EdgeInsets
.
all
(
16.0
),
child:
codeBuilder
!=
null
?
codeBuilder
(
context
,
codes
)
?
codeBuilder
(
context
,
name
,
codes
)
:
CodeField
(
name:
name
,
codes:
codes
),
);
}
...
...
gpt_markdown/lib/md_widget.dart
View file @
45d1e49
...
...
@@ -27,7 +27,8 @@ class MdWidget extends StatelessWidget {
final
String
Function
(
String
tex
)?
latexWorkaround
;
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
latexBuilder
;
final
bool
followLinkColor
;
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
;
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
;
@override
Widget
build
(
BuildContext
context
)
{
...
...
Please
register
or
login
to post a comment