Visual studio 在if结构中定义时被视为未定义的变量
我是个新手,我面临一个小问题。受官方网站上颤振教程第二部分的启发,我想在数组为空时显示一条错误消息 错误代码如下:Visual studio 在if结构中定义时被视为未定义的变量,visual-studio,flutter,Visual Studio,Flutter,我是个新手,我面临一个小问题。受官方网站上颤振教程第二部分的启发,我想在数组为空时显示一条错误消息 错误代码如下: Undefined name 'divided'. Try correcting the name to one that is defined, or defining the name. 代码是: void _showSaved() { Navigator.of(context).push( MaterialPageRoute<void>(
Undefined name 'divided'.
Try correcting the name to one that is defined, or defining the name.
代码是:
void _showSaved() {
Navigator.of(context).push(
MaterialPageRoute<void>(
builder: (BuildContext context) {
if (_saved.isEmpty) {
final Text divided = Text('List is empty');
} else {
final Iterable<ListTile> tiles = _saved.map(
(WordPair pair) {
return ListTile(
title: Text(
pair.asPascalCase,
style: _biggerFont,
),
);
},
);
final ListView divided = ListView(
children: ListTile.divideTiles(
context: context,
tiles: tiles,
).toList());
}
return Scaffold(
appBar: AppBar(
title: Text('Saved Suggestions'),
),
//body: _saved.isEmpty ? Text('List is empty') : ListView(children: divided),
body: divided);
},
),
);
}
变量是在if条件下定义的,但VSCode仍然显示变量未定义的错误。有什么我不明白的吗
请注意,使用内联条件在代码示例中的注释行中确实有效
谢谢大家! 所划分的变量范围仅限于if和else块的大括号之间 这样定义可以解决问题:
void _showSaved() {
Navigator.of(context).push(
MaterialPageRoute<void>(
builder: (BuildContext context) {
var divided;
if (_saved.isEmpty) {
divided = Text('List is empty');
} else {
final Iterable<ListTile> tiles = _saved.map(
(WordPair pair) {
return ListTile(
title: Text(
pair.asPascalCase,
style: _biggerFont,
),
);
},
);
divided = ListView(
children: ListTile.divideTiles(
context: context,
tiles: tiles,
).toList());
}
return Scaffold(
appBar: AppBar(
title: Text('Saved Suggestions'),
),
//body: _saved.isEmpty ? Text('List is empty') : ListView(children: divided),
body: divided);
},
),
);
}
这么简单。我确实尝试过定义它,但我没有使用关键字var。谢谢。如果你来自java bg,dart可能会让人困惑,但稍后它会很有趣