Showing
4 changed files
with
53 additions
and
55 deletions
@@ -30,6 +30,7 @@ class _MyAppState extends State<MyApp> { | @@ -30,6 +30,7 @@ class _MyAppState extends State<MyApp> { | ||
30 | builder: (context, child) { | 30 | builder: (context, child) { |
31 | return TexText( | 31 | return TexText( |
32 | _text.text, | 32 | _text.text, |
33 | + alignment: TexAlignment.start, | ||
33 | style: Theme.of(context) | 34 | style: Theme.of(context) |
34 | .textTheme | 35 | .textTheme |
35 | .titleLarge | 36 | .titleLarge |
@@ -2,61 +2,89 @@ library tex_text; | @@ -2,61 +2,89 @@ library tex_text; | ||
2 | 2 | ||
3 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
4 | import 'package:flutter_math_fork/flutter_math.dart'; | 4 | import 'package:flutter_math_fork/flutter_math.dart'; |
5 | -export 'package:flutter_math_fork/flutter_math.dart'; | 5 | +export 'package:flutter_math_fork/flutter_math.dart' show MathStyle; |
6 | + | ||
7 | +enum TexAlignment { | ||
8 | + /// [TexAlignment.start] aligns the words at the start of the text | ||
9 | + start, | ||
10 | + | ||
11 | + /// It aligns the words at the end of the text | ||
12 | + end, | ||
13 | + | ||
14 | + /// It aligns the words at the center of the text | ||
15 | + center, | ||
16 | +} | ||
6 | 17 | ||
7 | /// A LaTex text view. | 18 | /// A LaTex text view. |
19 | +/// | ||
20 | +/// Example: | ||
21 | +/// ```dart | ||
22 | +/// TexText(r"The equation is <m>x^2+y^2=z^2<m>") //Output: The equation is <LaTex formatted equation> | ||
23 | +/// | ||
24 | +/// // <m><m> shows <m> result | ||
25 | +/// TexText(r"The equation is <m><m>") //Output: The equation is <m> | ||
26 | +/// ``` | ||
8 | class TexText extends StatelessWidget { | 27 | class TexText extends StatelessWidget { |
9 | const TexText(this.text, | 28 | const TexText(this.text, |
10 | {super.key, | 29 | {super.key, |
11 | this.style, | 30 | this.style, |
12 | this.mathStyle = MathStyle.display, | 31 | this.mathStyle = MathStyle.display, |
13 | - this.alignment = WrapAlignment.start}); | 32 | + this.alignment = TexAlignment.start}); |
14 | final String text; | 33 | final String text; |
15 | final TextStyle? style; | 34 | final TextStyle? style; |
16 | final MathStyle mathStyle; | 35 | final MathStyle mathStyle; |
17 | - final WrapAlignment alignment; | 36 | + final TexAlignment alignment; |
18 | 37 | ||
19 | @override | 38 | @override |
20 | Widget build(BuildContext context) { | 39 | Widget build(BuildContext context) { |
21 | return Column( | 40 | return Column( |
22 | mainAxisSize: MainAxisSize.min, | 41 | mainAxisSize: MainAxisSize.min, |
23 | - crossAxisAlignment: CrossAxisAlignment.values[alignment.index % 3], | 42 | + crossAxisAlignment: CrossAxisAlignment.values[alignment.index], |
24 | children: text.split('\n').map<Widget>( | 43 | children: text.split('\n').map<Widget>( |
25 | (e) { | 44 | (e) { |
26 | return Wrap( | 45 | return Wrap( |
27 | - alignment: alignment, | 46 | + alignment: WrapAlignment.values[alignment.index], |
28 | crossAxisAlignment: WrapCrossAlignment.center, | 47 | crossAxisAlignment: WrapCrossAlignment.center, |
29 | spacing: 4, | 48 | spacing: 4, |
30 | children: e | 49 | children: e |
31 | .split("<m>") | 50 | .split("<m>") |
32 | .asMap() | 51 | .asMap() |
33 | - .map<int, List<Widget>>( | 52 | + .map<int, Iterable<Widget>>( |
34 | (index, e) { | 53 | (index, e) { |
35 | if (index.isOdd) { | 54 | if (index.isOdd) { |
36 | return MapEntry( | 55 | return MapEntry( |
37 | index, | 56 | index, |
38 | [ | 57 | [ |
39 | - Math.tex( | ||
40 | - e, | ||
41 | - textStyle: style, | ||
42 | - mathStyle: mathStyle, | ||
43 | - ), | 58 | + if (e.isEmpty) |
59 | + Text( | ||
60 | + "<m>", | ||
61 | + textAlign: TextAlign.values[alignment.index], | ||
62 | + style: style, | ||
63 | + ) | ||
64 | + else | ||
65 | + Math.tex( | ||
66 | + e, | ||
67 | + textStyle: style, | ||
68 | + mathStyle: mathStyle, | ||
69 | + ), | ||
44 | ], | 70 | ], |
45 | ); | 71 | ); |
46 | } | 72 | } |
47 | return MapEntry( | 73 | return MapEntry( |
48 | index, | 74 | index, |
49 | - e.split(" ").map<Widget>((e) { | ||
50 | - return Text( | ||
51 | - e, | ||
52 | - style: style, | ||
53 | - ); | ||
54 | - }).toList(), | 75 | + e.split(" ").map<Widget>( |
76 | + (e) { | ||
77 | + return Text( | ||
78 | + e, | ||
79 | + textAlign: TextAlign.values[alignment.index], | ||
80 | + style: style, | ||
81 | + ); | ||
82 | + }, | ||
83 | + ), | ||
55 | ); | 84 | ); |
56 | }, | 85 | }, |
57 | ) | 86 | ) |
58 | .values | 87 | .values |
59 | - .toList() | ||
60 | .expand<Widget>((element) => element) | 88 | .expand<Widget>((element) => element) |
61 | .toList(), | 89 | .toList(), |
62 | ); | 90 | ); |
1 | name: tex_text | 1 | name: tex_text |
2 | description: This package for Flutter allows you to show text on a Flutter app with LaTex math formula and normal text from string. It is vary easy to use and works for all of the platforms. | 2 | description: This package for Flutter allows you to show text on a Flutter app with LaTex math formula and normal text from string. It is vary easy to use and works for all of the platforms. |
3 | -version: 0.0.4 | 3 | +version: 0.0.5 |
4 | homepage: https://github.com/saminsohag/flutter_packages/tree/main/tex_text | 4 | homepage: https://github.com/saminsohag/flutter_packages/tree/main/tex_text |
5 | 5 | ||
6 | environment: | 6 | environment: |
@@ -17,39 +17,4 @@ dev_dependencies: | @@ -17,39 +17,4 @@ dev_dependencies: | ||
17 | sdk: flutter | 17 | sdk: flutter |
18 | flutter_lints: ^2.0.0 | 18 | flutter_lints: ^2.0.0 |
19 | 19 | ||
20 | -# For information on the generic Dart part of this file, see the | ||
21 | -# following page: https://dart.dev/tools/pub/pubspec | ||
22 | - | ||
23 | -# The following section is specific to Flutter packages. | ||
24 | -flutter: | ||
25 | - | ||
26 | - # To add assets to your package, add an assets section, like this: | ||
27 | - # assets: | ||
28 | - # - images/a_dot_burr.jpeg | ||
29 | - # - images/a_dot_ham.jpeg | ||
30 | - # | ||
31 | - # For details regarding assets in packages, see | ||
32 | - # https://flutter.dev/assets-and-images/#from-packages | ||
33 | - # | ||
34 | - # An image asset can refer to one or more resolution-specific "variants", see | ||
35 | - # https://flutter.dev/assets-and-images/#resolution-aware | ||
36 | - | ||
37 | - # To add custom fonts to your package, add a fonts section here, | ||
38 | - # in this "flutter" section. Each entry in this list should have a | ||
39 | - # "family" key with the font family name, and a "fonts" key with a | ||
40 | - # list giving the asset and other descriptors for the font. For | ||
41 | - # example: | ||
42 | - # fonts: | ||
43 | - # - family: Schyler | ||
44 | - # fonts: | ||
45 | - # - asset: fonts/Schyler-Regular.ttf | ||
46 | - # - asset: fonts/Schyler-Italic.ttf | ||
47 | - # style: italic | ||
48 | - # - family: Trajan Pro | ||
49 | - # fonts: | ||
50 | - # - asset: fonts/TrajanPro.ttf | ||
51 | - # - asset: fonts/TrajanPro_Bold.ttf | ||
52 | - # weight: 700 | ||
53 | - # | ||
54 | - # For details regarding fonts in packages, see | ||
55 | - # https://flutter.dev/custom-fonts/#from-packages | 20 | +flutter: |
-
Please register or login to post a comment