@@ -108,6 +108,47 @@ class GSYMarkdownWidget extends StatelessWidget {
108108 return styleSheet;
109109 }
110110
111+ _getMarkDownData (String markdownData) {
112+ ///优化图片显示
113+ RegExp exp = new RegExp (r'!\[.*\]\((.+)\)' );
114+ Iterable <Match > tags = exp.allMatches (markdownData);
115+ String mdDataCode = markdownData;
116+ if (tags != null && tags.length > 0 ) {
117+ for (Match m in tags) {
118+ String imageMatch = m.group (0 );
119+ if (imageMatch != null ) {
120+ String match = m.group (0 ).replaceAll ("\) " , "?raw=true)" );
121+ mdDataCode = mdDataCode.replaceAll (m.group (0 ), match);
122+ }
123+ }
124+ }
125+
126+ ///优化img标签的src资源
127+ RegExp expImg = new RegExp ("<img.*?(?:>|\/ >)" );
128+ RegExp expSrc = new RegExp ("src=[\'\" ]?([^\'\" ]*)[\'\" ]?" );
129+ tags = expImg.allMatches (markdownData);
130+ if (tags != null && tags.length > 0 ) {
131+ for (Match m in tags) {
132+ String imageTag = m.group (0 );
133+ String match = imageTag;
134+ if (imageTag != null ) {
135+ Iterable <Match > srcTags = expSrc.allMatches (imageTag);
136+ for (Match srcMatch in srcTags) {
137+ String srcString = srcMatch.group (0 );
138+ if (srcString != null && srcString.contains ("http" )) {
139+ String newSrc = srcString.substring (srcString.indexOf ("http" ), srcString.length - 1 ) + "?raw=true" ;
140+ match = "" ;
141+ }
142+ }
143+ }
144+ mdDataCode = mdDataCode.replaceAll (imageTag, match);
145+ }
146+ }
147+
148+
149+ return mdDataCode;
150+ }
151+
111152 @override
112153 Widget build (BuildContext context) {
113154 return Container (
@@ -117,7 +158,7 @@ class GSYMarkdownWidget extends StatelessWidget {
117158 child: new MarkdownBody (
118159 styleSheet: _getStyle (context),
119160 syntaxHighlighter: new GSYHighlighter (),
120- data: markdownData,
161+ data: _getMarkDownData ( markdownData) ,
121162 onTapLink: (String source) {
122163 CommonUtils .launchUrl (context, source);
123164 },
0 commit comments