【发布时间】:2019-01-31 02:29:02
【问题描述】:
我是 Flutter/dart 的新手,正在学习本教程。我正在尝试设置 ListView 的文本样式,但它没有被应用。
class RandomWordsState extends State<RandomWords> {
final _suggestions = <WordPair>[];
final _font = TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold, color: Colors.blueAccent);
Widget _buildSuggestions() {
return ListView.builder(
itemBuilder: (context, i) {
if (i.isOdd) return Divider();
final index = i ~/ 2;
if (index >= _suggestions.length) {
_suggestions.addAll(generateWordPairs().take(10));
}
return _buildRow(_suggestions[index]);
}
);
}
Widget _buildRow(WordPair w) {
print(_font);
return ListTile(
title: Text(
WordPair.random().asPascalCase,
style: _font)
);
}
@override
Widget build(BuildContext context) {
return _buildSuggestions();
}
}
如果我直接在 Text Widget 中创建一个新的 TextStyle,它会起作用,但是当我提供 State 类本身提供的最终 ivar 时不起作用,我想知道为什么?
所以这行得通:
Widget _buildRow(WordPair w) {
print(_font);
return ListTile(
title: Text(
WordPair.random().asPascalCase,
style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold, color: Colors.blueAccent))
);
}
但这不是:
Widget _buildRow(WordPair w) {
print(_font);
return ListTile(
title: Text(
WordPair.random().asPascalCase,
style: _font)
);
}
【问题讨论】:
-
这似乎只是热重载的问题。更改 TextStyle 不会更新视图,但重新启动应用程序会更新。仍然很奇怪,为什么它没有收到变化?我正在使用 VSCode。