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:14:32 +0600
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
1e64a85e6a5ba7fa009ac103d18af8413fe63502
1e64a85e
1 parent
f92a04d7
codeBuilder argument passed to MdWidget
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
123 additions
and
34 deletions
gpt_markdown/example/macos/Runner.xcodeproj/project.pbxproj
gpt_markdown/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
gpt_markdown/example/pubspec.lock
gpt_markdown/lib/markdown_component.dart
gpt_markdown/example/macos/Runner.xcodeproj/project.pbxproj
View file @
1e64a85
...
...
@@ -259,7 +259,7 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0920;
LastUpgradeCheck = 1
43
0;
LastUpgradeCheck = 1
51
0;
ORGANIZATIONNAME = "";
TargetAttributes = {
331C80D4294CF70F00263BE5 = {
...
...
gpt_markdown/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
View file @
1e64a85
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion =
"1
43
0"
LastUpgradeVersion =
"1
51
0"
version =
"1.3"
>
<BuildAction
parallelizeBuildables =
"YES"
...
...
gpt_markdown/example/pubspec.lock
View file @
1e64a85
...
...
@@ -215,6 +215,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.6.7"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "2.0.1"
lints:
dependency: transitive
description:
...
...
@@ -227,26 +251,26 @@ packages:
dependency: transitive
description:
name: matcher
sha256:
"1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
sha256:
d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16"
version: "0.12.16
+1
"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "
9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41
"
sha256: "
0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a
"
url: "https://pub.dev"
source: hosted
version: "0.
5
.0"
version: "0.
8
.0"
meta:
dependency: transitive
description:
name: meta
sha256:
a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
sha256:
d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev"
source: hosted
version: "1.1
0
.0"
version: "1.1
1
.0"
nested:
dependency: transitive
description:
...
...
@@ -259,10 +283,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "
8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917
"
sha256: "
087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af
"
url: "https://pub.dev"
source: hosted
version: "1.
8.3
"
version: "1.
9.0
"
path_parsing:
dependency: transitive
description:
...
...
@@ -588,6 +612,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
version: "13.0.0"
web:
dependency: transitive
description:
...
...
gpt_markdown/lib/markdown_component.dart
View file @
1e64a85
...
...
@@ -41,7 +41,8 @@ abstract class MarkdownComponent {
final
Widget
Function
(
BuildContext
context
,
String
tex
)?
codeBuilder
,
)
{
List
<
InlineSpan
>
spans
=
[];
List
<
String
>
regexes
=
components
.
map
<
String
>((
e
)
=>
e
.
exp
.
pattern
).
toList
();
List
<
String
>
regexes
=
components
.
map
<
String
>((
e
)
=>
e
.
exp
.
pattern
).
toList
();
final
combinedRegex
=
RegExp
(
regexes
.
join
(
"|"
),
multiLine:
true
,
...
...
@@ -215,12 +216,30 @@ class HTag extends BlockMd {
context
,
"
${match?[2]}
"
,
[
Theme
.
of
(
context
).
textTheme
.
headlineLarge
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
).
textTheme
.
headlineMedium
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
).
textTheme
.
headlineSmall
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
).
textTheme
.
titleLarge
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
).
textTheme
.
titleMedium
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
).
textTheme
.
titleSmall
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
)
.
textTheme
.
headlineLarge
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
)
.
textTheme
.
headlineMedium
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
)
.
textTheme
.
headlineSmall
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
)
.
textTheme
.
titleLarge
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
)
.
textTheme
.
titleMedium
?.
copyWith
(
color:
style
?.
color
),
Theme
.
of
(
context
)
.
textTheme
.
titleSmall
?.
copyWith
(
color:
style
?.
color
),
][
match
![
1
]!.
length
-
1
],
textDirection
,
(
url
,
title
)
{},
...
...
@@ -321,6 +340,7 @@ class CheckBoxMd extends BlockMd {
style:
style
,
latexWorkaround:
latexWorkaround
,
latexBuilder:
latexBuilder
,
codeBuilder:
codeBuilder
,
),
);
}
...
...
@@ -354,6 +374,7 @@ class RadioButtonMd extends BlockMd {
style:
style
,
latexWorkaround:
latexWorkaround
,
latexBuilder:
latexBuilder
,
codeBuilder:
codeBuilder
,
),
);
}
...
...
@@ -390,7 +411,15 @@ class IndentMd extends BlockMd {
textDirection:
textDirection
,
child:
RichText
(
text:
TextSpan
(
children:
MarkdownComponent
.
generate
(
context
,
"
${match?[2]}
"
,
style
,
textDirection
,
onLinkTab
,
latexWorkaround
,
latexBuilder
,
codeBuilder
),
children:
MarkdownComponent
.
generate
(
context
,
"
${match?[2]}
"
,
style
,
textDirection
,
onLinkTab
,
latexWorkaround
,
latexBuilder
,
codeBuilder
),
)),
);
}
...
...
@@ -426,6 +455,7 @@ class UnOrderedList extends BlockMd {
style:
style
,
latexWorkaround:
latexWorkaround
,
latexBuilder:
latexBuilder
,
codeBuilder:
codeBuilder
,
),
);
}
...
...
@@ -461,6 +491,7 @@ class OrderedList extends BlockMd {
style:
style
,
latexWorkaround:
latexWorkaround
,
latexBuilder:
latexBuilder
,
codeBuilder:
codeBuilder
,
),
);
}
...
...
@@ -522,14 +553,16 @@ class BoldMd extends InlineMd {
children:
MarkdownComponent
.
generate
(
context
,
"
${match?[1]}
"
,
style
?.
copyWith
(
fontWeight:
FontWeight
.
bold
)
??
const
TextStyle
(
fontWeight:
FontWeight
.
w900
),
style
?.
copyWith
(
fontWeight:
FontWeight
.
bold
)
??
const
TextStyle
(
fontWeight:
FontWeight
.
w900
),
textDirection
,
onLinkTab
,
latexWorkaround
,
latexBuilder
,
codeBuilder
,
),
style:
style
?.
copyWith
(
fontWeight:
FontWeight
.
bold
)
??
const
TextStyle
(
fontWeight:
FontWeight
.
bold
),
style:
style
?.
copyWith
(
fontWeight:
FontWeight
.
bold
)
??
const
TextStyle
(
fontWeight:
FontWeight
.
bold
),
);
}
}
...
...
@@ -571,7 +604,8 @@ class LatexMathMultyLine extends BlockMd {
options:
MathOptions
(
sizeUnderTextStyle:
MathSize
.
large
,
color:
style
?.
color
??
Theme
.
of
(
context
).
colorScheme
.
onSurface
,
fontSize:
style
?.
fontSize
??
Theme
.
of
(
context
).
textTheme
.
bodyMedium
?.
fontSize
,
fontSize:
style
?.
fontSize
??
Theme
.
of
(
context
).
textTheme
.
bodyMedium
?.
fontSize
,
mathFontOptions:
FontOptions
(
fontFamily:
"Main"
,
fontWeight:
style
?.
fontWeight
??
FontWeight
.
normal
,
...
...
@@ -588,7 +622,9 @@ class LatexMathMultyLine extends BlockMd {
return
Text
(
workaround
(
mathText
),
textDirection:
textDirection
,
style:
style
?.
copyWith
(
color:
Theme
.
of
(
context
).
colorScheme
.
error
)
??
TextStyle
(
color:
Theme
.
of
(
context
).
colorScheme
.
error
),
style:
style
?.
copyWith
(
color:
Theme
.
of
(
context
).
colorScheme
.
error
)
??
TextStyle
(
color:
Theme
.
of
(
context
).
colorScheme
.
error
),
);
},
);
...
...
@@ -638,7 +674,8 @@ class LatexMath extends InlineMd {
options:
MathOptions
(
sizeUnderTextStyle:
MathSize
.
large
,
color:
style
?.
color
??
Theme
.
of
(
context
).
colorScheme
.
onSurface
,
fontSize:
style
?.
fontSize
??
Theme
.
of
(
context
).
textTheme
.
bodyMedium
?.
fontSize
,
fontSize:
style
?.
fontSize
??
Theme
.
of
(
context
).
textTheme
.
bodyMedium
?.
fontSize
,
mathFontOptions:
FontOptions
(
fontFamily:
"Main"
,
fontWeight:
style
?.
fontWeight
??
FontWeight
.
normal
,
...
...
@@ -655,7 +692,9 @@ class LatexMath extends InlineMd {
return
Text
(
workaround
(
mathText
),
textDirection:
textDirection
,
style:
style
?.
copyWith
(
color:
Theme
.
of
(
context
).
colorScheme
.
error
)
??
TextStyle
(
color:
Theme
.
of
(
context
).
colorScheme
.
error
),
style:
style
?.
copyWith
(
color:
Theme
.
of
(
context
).
colorScheme
.
error
)
??
TextStyle
(
color:
Theme
.
of
(
context
).
colorScheme
.
error
),
);
},
),
...
...
@@ -762,7 +801,8 @@ class ImageMd extends InlineMd {
double
?
height
;
double
?
width
;
if
(
match
?[
1
]
!=
null
)
{
var
size
=
RegExp
(
r"^([0-9]+)?x?([0-9]+)?"
).
firstMatch
(
match
![
1
].
toString
().
trim
());
var
size
=
RegExp
(
r"^([0-9]+)?x?([0-9]+)?"
)
.
firstMatch
(
match
![
1
].
toString
().
trim
());
width
=
double
.
tryParse
(
size
?[
1
]?.
toString
().
trim
()
??
'a'
);
height
=
double
.
tryParse
(
size
?[
2
]?.
toString
().
trim
()
??
'a'
);
}
...
...
@@ -775,12 +815,16 @@ class ImageMd extends InlineMd {
image:
NetworkImage
(
"
${match?[2]}
"
,
),
loadingBuilder:
(
BuildContext
context
,
Widget
child
,
ImageChunkEvent
?
loadingProgress
)
{
loadingBuilder:
(
BuildContext
context
,
Widget
child
,
ImageChunkEvent
?
loadingProgress
)
{
if
(
loadingProgress
==
null
)
{
return
child
;
}
return
CustomImageLoading
(
progress:
loadingProgress
.
expectedTotalBytes
!=
null
?
loadingProgress
.
cumulativeBytesLoaded
/
loadingProgress
.
expectedTotalBytes
!
:
1
,
progress:
loadingProgress
.
expectedTotalBytes
!=
null
?
loadingProgress
.
cumulativeBytesLoaded
/
loadingProgress
.
expectedTotalBytes
!
:
1
,
);
},
fit:
BoxFit
.
fill
,
...
...
@@ -809,7 +853,11 @@ class TableMd extends BlockMd {
final
List
<
Map
<
int
,
String
>>
value
=
text
.
split
(
'
\n
'
)
.
map
<
Map
<
int
,
String
>>(
(
e
)
=>
e
.
split
(
'|'
).
where
((
element
)
=>
element
.
isNotEmpty
).
toList
().
asMap
(),
(
e
)
=>
e
.
split
(
'|'
)
.
where
((
element
)
=>
element
.
isNotEmpty
)
.
toList
()
.
asMap
(),
)
.
toList
();
bool
heading
=
RegExp
(
...
...
@@ -840,7 +888,9 @@ class TableMd extends BlockMd {
(
entry
)
=>
TableRow
(
decoration:
(
heading
)
?
BoxDecoration
(
color:
(
entry
.
key
==
0
)
?
Theme
.
of
(
context
).
colorScheme
.
surfaceVariant
:
null
,
color:
(
entry
.
key
==
0
)
?
Theme
.
of
(
context
).
colorScheme
.
surfaceVariant
:
null
,
)
:
null
,
children:
List
.
generate
(
...
...
@@ -848,13 +898,15 @@ class TableMd extends BlockMd {
(
index
)
{
var
e
=
entry
.
value
;
String
data
=
e
[
index
]
??
""
;
if
(
RegExp
(
r"^--+$"
).
hasMatch
(
data
.
trim
())
||
data
.
trim
().
isEmpty
)
{
if
(
RegExp
(
r"^--+$"
).
hasMatch
(
data
.
trim
())
||
data
.
trim
().
isEmpty
)
{
return
const
SizedBox
();
}
return
Center
(
child:
Padding
(
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
8
,
vertical:
4
),
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
8
,
vertical:
4
),
child:
MdWidget
(
(
e
[
index
]
??
""
).
trim
(),
textDirection:
textDirection
,
...
...
@@ -862,6 +914,7 @@ class TableMd extends BlockMd {
style:
style
,
latexWorkaround:
latexWorkaround
,
latexBuilder:
latexBuilder
,
codeBuilder:
codeBuilder
,
),
),
);
...
...
@@ -902,7 +955,9 @@ class CodeBlockMd extends BlockMd {
codes
=
codes
.
replaceAll
(
r"```"
,
""
).
trim
();
return
Padding
(
padding:
const
EdgeInsets
.
all
(
16.0
),
child:
codeBuilder
!=
null
?
codeBuilder
(
context
,
codes
)
:
CodeField
(
name:
name
,
codes:
codes
),
child:
codeBuilder
!=
null
?
codeBuilder
(
context
,
codes
)
:
CodeField
(
name:
name
,
codes:
codes
),
);
}
}
...
...
@@ -931,7 +986,8 @@ class _CodeFieldState extends State<CodeField> {
Row
(
children:
[
Padding
(
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
16.0
,
vertical:
8
),
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
16.0
,
vertical:
8
),
child:
Text
(
widget
.
name
),
),
const
Spacer
(),
...
...
@@ -943,7 +999,8 @@ class _CodeFieldState extends State<CodeField> {
),
),
onPressed:
()
async
{
await
Clipboard
.
setData
(
ClipboardData
(
text:
widget
.
codes
)).
then
((
value
)
{
await
Clipboard
.
setData
(
ClipboardData
(
text:
widget
.
codes
))
.
then
((
value
)
{
setState
(()
{
_copied
=
true
;
});
...
...
Please
register
or
login
to post a comment