【发布时间】:2020-05-26 13:36:51
【问题描述】:
根据 flutter_html 包中的示例,我正在尝试添加 customTextStyle(字体的当前大小太小)。 每次我从示例中添加代码时,我都会得到一条红色波浪线(使用 Android Studio),告诉我它没有定义。然而它在示例中:
customTextStyle: (dom.Node node, TextStyle baseStyle) {
if (node is dom.Element) {
switch (node.localName) {
case "p":
return baseStyle.merge(TextStyle(height: 2, fontSize: 20));
}
}
return baseStyle;
},
示例代码(注释)中提到:
//Must have useRichText set to false for this to work.
这很好,但是如何将其设置为 false?我试图将它添加到相同代码中的各个位置,但它不起作用,它会告诉我它没有定义。我需要一些额外的包裹吗?这个不清楚。
感谢您对此提供的帮助。
这是一个 single_news_screen.dart 文件,我在其中使用了这个包。该文件的代码在这里:
import 'package:flutter/material.dart';
import 'package:date_format/date_format.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:thw_network/utilities/constants.dart';
import 'package:thw_network/screens/main_screen.dart';
class SingleNewsScreen extends StatefulWidget {
SingleNewsScreen({ this.dataNews });
final dataNews;
@override
_SingleNewsScreenState createState() => _SingleNewsScreenState();
}
class _SingleNewsScreenState extends State<SingleNewsScreen> {
dynamic news;
@override
void initState() {
super.initState();
news = widget.dataNews;
}
cardTitle(String title) {
if(title.length > 120) {
return title.substring(0,120) + '...';
}
return title;
}
cardDate(String date) {
int year = int.parse(date.substring(0,4));
int month = int.parse(date.substring(5,7));
int day = int.parse(date.substring(8,10));
return formatDate(DateTime(year, month, day), [d, ' ', M,', ', yyyy]);
}
@override
Widget build(BuildContext context) {
double contentHeight = MediaQuery.of(context).size.height - 338;
return Scaffold(
body: Container(
decoration: BoxDecoration(
color: Color(0xFFf5f5f5),
),
constraints: BoxConstraints.expand(),
child: SafeArea(
child: Column(
children: <Widget>[
Container(
height: 260.0,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
news['jetpack_featured_media_url'],
),
fit: BoxFit.cover,
colorFilter: ColorFilter.mode(
Colors.black.withOpacity(0.7),
BlendMode.darken
),
),
color: Color(0xFF1F1F98),
gradient: LinearGradient(
begin: Alignment.topCenter,
colors: [Colors.black, Colors.black],
stops: [0.0, 0.5]
),
),
child: Column(
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width * 0.85,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 20, right:20, bottom: 10, left: 20),
child: Text(
'THE HIGHWIRE',
style: kSingleOverlayAuthorTextStyle
)
), /* add child content here */
Padding(
padding: const EdgeInsets.only(top: 10, right:20, bottom: 10, left: 20),
child: Text(
cardTitle(news['title']['rendered']),
style: kSingleOverlayTitleTextStyle
)
), /* add child content here */
Padding(
padding: const EdgeInsets.only(top: 10, right:20, bottom: 20, left: 20),
child: Text(
cardDate(news['date']),
style: kSingleOverlayDateTextStyle
)
),
],
)
),
Container(
width: MediaQuery.of(context).size.width * 0.15,
child: Align(
alignment: Alignment.topRight,
child: Padding(
padding: EdgeInsets.all(10.0),
child: FloatingActionButton(
backgroundColor: Colors.white,
elevation: 0,
onPressed: () {
Navigator.pop(context, MaterialPageRoute(builder: (context) {
return MainScreen();
}),);
},
child: Icon(
Icons.close,
size: 25.0,
color: Colors.deepPurpleAccent
),
),
),
),
)
],
),
],
),
),
Container(
height: contentHeight,
child: SingleChildScrollView(
child: Html(
data: news['content']['rendered'],
padding: EdgeInsets.all(30.0),
onLinkTap: (url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
},
),
),
),
],
),
),
),
);
}
}
【问题讨论】:
标签: flutter flutter-dependencies