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-03-12 23:01:27 +0600
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
1d9ec5f5a6c760a5e00a93378b6ba7af893f7dea
1d9ec5f5
1 parent
d4946ef3
textStle added to the latexBuilder
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
109 additions
and
114 deletions
gpt_markdown/CHANGELOG.md
gpt_markdown/example/lib/main.dart
gpt_markdown/example/pubspec.lock
gpt_markdown/lib/gpt_markdown.dart
gpt_markdown/lib/markdown_component.dart
gpt_markdown/lib/md_widget.dart
gpt_markdown/pubspec.yaml
gpt_markdown/CHANGELOG.md
View file @
1d9ec5f
## 0.1.1
*
Fixed hitTest essue.
## 0.1.0
*
Inline Latex Builder added and Link are now Clickable and Latex Error Color changed to null for debug mode.
...
...
gpt_markdown/example/lib/main.dart
View file @
1d9ec5f
...
...
@@ -169,81 +169,83 @@ Markdown and LaTeX can be powerful tools for formatting text and mathematical ex
// titleSmall: TextStyle(fontSize: 10),
// ),
// ),
child: TexMarkdown(
_controller.text,
textDirection: _direction,
onLinkTab: (url, title) {
debugPrint(url);
debugPrint(title);
},
textAlign: TextAlign.justify,
// textScaler: const TextScaler.linear(1.3),
textScaler: const TextScaler.linear(1),
style: const TextStyle(
// Regular text font size here.
fontSize: 15,
),
latexWorkaround: (tex) => tex.replaceAllMapped(
RegExp(r"align
\
*"), (match) => "aligned"),
latexBuilder: (contex, tex, inline) {
if (tex.contains(r"
\
begin{tabular}")) {
// return table.
String tableString = "|
${(RegExp(
r"^\\begin\{tabular\}
\
{.*?
\
}(.*?)
\\
end
\
{tabular
\
}
$
",
multiLine: true,
dotAll: true,
).firstMatch(tex)?[1] ?? "").trim()}|";
tableString = tableString
.replaceAll(r"
\\
", "|
\n
|")
.replaceAll(r"
\
hline", "")
.replaceAll(RegExp(r"(?<!
\\
)&"), "|");
var tableStringList = tableString
.split("
\n
")
..insert(1, "|---|");
tableString = tableStringList.join("
\n
");
return TexMarkdown(tableString);
}
var controller = ScrollController();
Widget child = Math.tex(
tex,
textStyle: const TextStyle(
fontSize: 17,
),
);
if (!inline) {
child = Padding(
padding: const EdgeInsets.all(0.0),
child: Material(
color: Theme.of(context)
.colorScheme
.onInverseSurface,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Scrollbar(
controller: controller,
child: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: TexMarkdown(
_controller.text,
textDirection: _direction,
onLinkTab: (url, title) {
debugPrint(url);
debugPrint(title);
},
textAlign: TextAlign.justify,
// textScaler: const TextScaler.linear(1.3),
textScaler: const TextScaler.linear(1),
style: const TextStyle(
// Regular text font size here.
fontSize: 15,
),
latexWorkaround: (tex) =>
tex.replaceAllMapped(RegExp(r"align
\
*"),
(match) => "aligned"),
latexBuilder:
(contex, tex, textStyle, inline) {
if (tex.contains(r"
\
begin{tabular}")) {
// return table.
String tableString = "|
${(RegExp(
r"^\\begin\{tabular\}
\
{.*?
\
}(.*?)
\\
end
\
{tabular
\
}
$
",
multiLine: true,
dotAll: true,
).firstMatch(tex)?[1] ?? "").trim()}|";
tableString = tableString
.replaceAll(r"
\\
", "|
\n
|")
.replaceAll(r"
\
hline", "")
.replaceAll(RegExp(r"(?<!
\\
)&"), "|");
var tableStringList = tableString
.split("
\n
")
..insert(1, "|---|");
tableString = tableStringList.join("
\n
");
return TexMarkdown(tableString);
}
var controller = ScrollController();
Widget child = Math.tex(
tex,
textStyle: textStyle,
);
if (!inline) {
child = Padding(
padding: const EdgeInsets.all(0.0),
child: Material(
color: Theme.of(context)
.colorScheme
.onInverseSurface,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Scrollbar(
controller: controller,
scrollDirection: Axis.horizontal,
child: Math.tex(
tex,
textStyle: const TextStyle(
fontSize: 17,
child: SingleChildScrollView(
controller: controller,
scrollDirection:
Axis.horizontal,
child: Math.tex(
tex,
textStyle: textStyle,
),
),
),
),
),
),
);
}
child = InkWell(
onTap: () {
debugPrint("Hello world");
},
child: child,
);
}
child = InkWell(
onTap: () {
debugPrint("Hello world");
},
child: child,
);
return child;
},
return child;
},
),
),
// child: const Text("Hello"),
);
...
...
gpt_markdown/example/pubspec.lock
View file @
1d9ec5f
...
...
@@ -182,7 +182,7 @@ packages:
path: ".."
relative: true
source: path
version: "0.1.
0
"
version: "0.1.
1
"
http:
dependency: transitive
description:
...
...
gpt_markdown/lib/gpt_markdown.dart
View file @
1d9ec5f
...
...
@@ -26,7 +26,8 @@ class TexMarkdown extends StatelessWidget {
final
TextScaler
?
textScaler
;
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
;
final
String
Function
(
String
tex
)?
latexWorkaround
;
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
style
,
bool
inline
)?
latexBuilder
;
final
bool
followLinkColor
;
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
...
...
gpt_markdown/lib/markdown_component.dart
View file @
1d9ec5f
...
...
@@ -38,7 +38,7 @@ abstract class MarkdownComponent {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -128,7 +128,7 @@ abstract class MarkdownComponent {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -151,7 +151,7 @@ abstract class InlineMd extends MarkdownComponent {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -170,7 +170,7 @@ abstract class BlockMd extends MarkdownComponent {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -197,7 +197,7 @@ abstract class BlockMd extends MarkdownComponent {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -216,7 +216,7 @@ class HTag extends BlockMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -290,7 +290,7 @@ class NewLines extends InlineMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -317,7 +317,7 @@ class HrLine extends BlockMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -343,7 +343,7 @@ class CheckBoxMd extends BlockMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -379,7 +379,7 @@ class RadioButtonMd extends BlockMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -415,7 +415,7 @@ class IndentMd extends BlockMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -462,7 +462,7 @@ class UnOrderedList extends BlockMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -501,7 +501,7 @@ class OrderedList extends BlockMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -536,7 +536,7 @@ class HighlightedText extends InlineMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -574,7 +574,7 @@ class BoldMd extends InlineMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -613,7 +613,7 @@ class LatexMathMultyLine extends BlockMd {
TextDirection
textDirection
,
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
String
Function
(
String
tex
)?
latexWorkaround
,
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -624,11 +624,9 @@ class LatexMathMultyLine extends BlockMd {
var
workaround
=
latexWorkaround
??
(
String
tex
)
=>
tex
;
var
builder
=
latexBuilder
??
(
BuildContext
context
,
String
tex
,
bool
inline
)
=>
Math
.
tex
(
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)
=>
Math
.
tex
(
tex
,
textStyle:
style
?.
copyWith
(
fontFamily:
"SansSerif"
,
),
textStyle:
textStyle
,
mathStyle:
MathStyle
.
display
,
textScaleFactor:
1
,
settings:
const
TexParserSettings
(
...
...
@@ -655,18 +653,14 @@ class LatexMathMultyLine extends BlockMd {
return
Text
(
workaround
(
mathText
),
textDirection:
textDirection
,
style:
style
?.
copyWith
(
color:
(!
kDebugMode
)
?
null
:
Theme
.
of
(
context
).
colorScheme
.
error
)
??
TextStyle
(
style:
textStyle
.
copyWith
(
color:
(!
kDebugMode
)
?
null
:
Theme
.
of
(
context
).
colorScheme
.
error
),
);
},
);
return
builder
(
context
,
workaround
(
mathText
),
false
);
return
builder
(
context
,
workaround
(
mathText
),
style
??
const
TextStyle
(),
false
);
}
}
...
...
@@ -689,7 +683,7 @@ class LatexMath extends InlineMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -699,11 +693,9 @@ class LatexMath extends InlineMd {
String
mathText
=
p0
?[
1
]?.
toString
()
??
""
;
var
workaround
=
latexWorkaround
??
(
String
tex
)
=>
tex
;
var
builder
=
latexBuilder
??
(
BuildContext
context
,
String
tex
,
bool
inline
)
=>
Math
.
tex
(
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)
=>
Math
.
tex
(
tex
,
textStyle:
style
?.
copyWith
(
fontFamily:
"SansSerif"
,
),
textStyle:
textStyle
,
mathStyle:
MathStyle
.
display
,
textScaleFactor:
1
,
settings:
const
TexParserSettings
(
...
...
@@ -730,11 +722,7 @@ class LatexMath extends InlineMd {
return
Text
(
workaround
(
mathText
),
textDirection:
textDirection
,
style:
style
?.
copyWith
(
color:
(!
kDebugMode
)
?
null
:
Theme
.
of
(
context
).
colorScheme
.
error
)
??
TextStyle
(
style:
textStyle
.
copyWith
(
color:
(!
kDebugMode
)
?
null
:
Theme
.
of
(
context
).
colorScheme
.
error
),
...
...
@@ -744,7 +732,7 @@ class LatexMath extends InlineMd {
return
WidgetSpan
(
alignment:
PlaceholderAlignment
.
baseline
,
baseline:
TextBaseline
.
alphabetic
,
child:
builder
(
context
,
workaround
(
mathText
),
true
),
child:
builder
(
context
,
workaround
(
mathText
),
style
??
const
TextStyle
(),
true
),
);
}
}
...
...
@@ -762,7 +750,7 @@ class ItalicMd extends InlineMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -797,7 +785,7 @@ class ATagMd extends InlineMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -845,7 +833,7 @@ class ImageMd extends InlineMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -900,7 +888,7 @@ class TableMd extends BlockMd {
TextDirection
textDirection
,
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
@@ -1010,7 +998,7 @@ class CodeBlockMd extends BlockMd {
TextDirection
textDirection
,
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
,
final
String
Function
(
String
tex
)?
latexWorkaround
,
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
,
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
codeBuilder
,
...
...
gpt_markdown/lib/md_widget.dart
View file @
1d9ec5f
...
...
@@ -25,7 +25,7 @@ class MdWidget extends StatelessWidget {
final
TextScaler
?
textScaler
;
final
void
Function
(
String
url
,
String
title
)?
onLinkTab
;
final
String
Function
(
String
tex
)?
latexWorkaround
;
final
Widget
Function
(
BuildContext
context
,
String
tex
,
bool
inline
)?
final
Widget
Function
(
BuildContext
context
,
String
tex
,
TextStyle
textStyle
,
bool
inline
)?
latexBuilder
;
final
bool
followLinkColor
;
final
Widget
Function
(
BuildContext
context
,
String
name
,
String
code
)?
...
...
gpt_markdown/pubspec.yaml
View file @
1d9ec5f
name
:
gpt_markdown
description
:
"
The
purpose
of
this
package
is
to
render
the
response
of
ChatGPT
into
a
Flutter
app."
version
:
0.1.
0
version
:
0.1.
1
homepage
:
https://github.com/saminsohag/flutter_packages/tree/main/gpt_markdown
environment
:
...
...
Please
register
or
login
to post a comment