Created
September 14, 2019 05:06
-
-
Save daohoangson/9fa6ae66431048ee11f085edb50ffdcd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:convert'; | |
import 'package:flutter/material.dart'; | |
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; | |
import 'package:html/dom.dart' as dom; | |
const html = """<p><span style=\"color: rgb(255, 0, 0);\">الوكيل الاخباري</span></p><p> </p><p>يترقب عشاق النجمة العالمية أنجلينا جولي، عرض الجزء الثاني من فيلم \"مالفيسينت\"، الذي تم عرض أول أجزائه عام 2014.</p><p><br>وذكرت الصفحة الرسمية لاستوديوهات والت ديزني، على موقع التواصل الاجتماعي \"تويتر\"، أن عرض الفيلم، سيتم في يوم 18 أكتوبر/ تشرين الأول المقبل. </p><p><br>ونشرت الصفحة فيديو جديدا، يرصد تحضيرات الممثلة العالمية أنجلينا جولي لشخصية \"مالفيسينت\"، خلال الجزء الثاني من الفيلم الذي يحمل اسم \"مالفيسينت ميستريس أوف إيفل\".</p><p> </p><p>ويرصد الفيديو تحول أنجلينا جولي إلى الشخصية الشريرة من خلال تغيير بعض ملامح وجهها، في الجزء الثاني من الفيلم، الذي شاركت في الجزء الأول منه عام 2014. </p><p><br>ويشارك عدد كبير من نجوم هوليوود، مع الفنانة العالمية أنجلينا جولي، في الجزء الثاني من الفيلم، وأبرزهم آيلي فانينج وشويتال أجيوفور وجونو تامبل وتيريزا ماهوني وهاريس ديكنسون.</p><p><br>ومن المقرر طرح الفيلم في دور العديد من دور العرض العالمية، كما نشر الحساب بعض من الصور لأنجلينا جولي في أثناء إزالة ماكياج الشخصية.</p><p> </p><p><blockquote class=\"twitter-tweet\" data-lang=\"en\"><div lang=\"en\" dir=\"ltr\">She’s back in black! Go behind the horns as Angelina Jolie transforms into <a href=\"https://twitter.com/hashtag/Maleficent?src=hash&ref_src=twsrc%5Etfw\">#Maleficent</a>: Mistress of Evil. See the film in theaters October 18! <a href=\"https://t.co/9IcFONTvk2\">pic.twitter.com/9IcFONTvk2</a></div>— Walt Disney Studios (@DisneyStudios) <a href=\"https://twitter.com/DisneyStudios/status/1171604522797543425?ref_src=twsrc%5Etfw\">September 11, 2019</a></blockquote>\n<script async=\"\" src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script></p><p> </p><p>المصدر:<a href=\"https://arabic.sputniknews.com/mosaic/201909121042861998-%25D9%2581%25D9%258A%25D8%25AF%25D9%258A%25D9%2588-%25D9%2585%25D8%25B1%25D8%25B9%25D8%25A8-%25D9%2584%25D8%25AA%25D8%25AD%25D9%2588%25D9%2584-%25D8%25A3%25D9%2586%25D8%25AC%25D9%2584%25D9%258A%25D9%2586%25D8%25A7-%25D8%25AC%25D9%2588%25D9%2584%25D9%258A-%25D9%2581%25D9%258A-%25D9%2581%25D9%258A%25D9%2584%25D9%2585-%25D9%2585%25D8%25A7%25D9%2584%25D9%2581%25D9%258A%25D8%25B3%25D9%258A%25D9%2586%25D8%25AA/\" target=\"_blank\"> عربي</a></p><p><customurllink><p class=\"hint-admin\" style=\"border: 1px solid #ccc; padding: 10px; font-size: 16px; text-align:center; color: #ccc;\">اظهار أخبار متعلقة</p></customurllink><br><customurllink><p class=\"hint-admin\" style=\"border: 1px solid #ccc; padding: 10px; font-size: 16px; text-align:center; color: #ccc;\">اظهار أخبار متعلقة</p></customurllink><br><customurllink><p class=\"hint-admin\" style=\"border: 1px solid #ccc; padding: 10px; font-size: 16px; text-align:center; color: #ccc;\">اظهار أخبار متعلقة</p></customurllink><br><customurllink><p class=\"hint-admin\" style=\"border: 1px solid #ccc; padding: 10px; font-size: 16px; text-align:center; color: #ccc;\">اظهار أخبار متعلقة</p></customurllink><br><customurllink><p class=\"hint-admin\" style=\"border: 1px solid #ccc; padding: 10px; font-size: 16px; text-align:center; color: #ccc;\">اظهار أخبار متعلقة</p></customurllink><br></p>"""; | |
void main() => runApp(MyApp()); | |
class MyApp extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) => MaterialApp( | |
home: Scaffold( | |
appBar: AppBar(), | |
body: SingleChildScrollView( | |
child: HtmlWidget( | |
html, | |
webView: true, | |
factoryBuilder: (c, hw) => _BlockquoteWebViewWf(c, hw), | |
), | |
), | |
), | |
); | |
} | |
class _BlockquoteWebViewWf extends WidgetFactory { | |
final buildOp = BuildOp( | |
onWidgets: (meta, _) => [ | |
WebView( | |
Uri.dataFromString( | |
"""<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
</head> | |
<body> | |
${meta.domElement.outerHtml} | |
<script async src="https://www.instagram.com/embed.js"></script> | |
<script async src="https://platform.twitter.com/widgets.js"></script> | |
</body> | |
</html>""", | |
mimeType: 'text/html', | |
encoding: Encoding.getByName('utf-8'), | |
).toString(), | |
aspectRatio: 16 / 9, | |
getDimensions: true, | |
) | |
], | |
); | |
_BlockquoteWebViewWf(BuildContext context, HtmlWidget htmlWidget) | |
: super(context, htmlWidget); | |
@override | |
NodeMetadata parseElement(NodeMetadata meta, dom.Element e) { | |
switch (e.localName) { | |
case 'blockquote': | |
return lazySet(null, buildOp: buildOp); | |
} | |
return super.parseElement(meta, e); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment