如何将列表链接到 if else?扑
Posted
技术标签:
【中文标题】如何将列表链接到 if else?扑【英文标题】:how can I link a list to if else? Flutter 【发布时间】:2020-09-18 02:44:58 【问题描述】:我不明白为什么我总是在这里出错。我已经建立了一个(if else)语句,在一个简短的版本中。每当函数不再找到值时,即在数组中找到 3 时,我会收到错误,即数组/列表中没有更多数据。但我确实安装了一个(ELSE),它应该显示文本(“HELLO”)。我不知道确切的错误在哪里。也许有人可以帮助我,谢谢。
import 'package:flutter/material.dart';
import 'package:tasktolean/body.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget
@override
_MyAppState createState() => _MyAppState();
class _MyAppState extends State<MyApp>
var bodyTextIndex = 0;
var bodytext = [
'Hello FIRST Text!',
'Hello SECOND Text!',
'Hello THIRD Text!',
];
void buttonPress()
setState(()
bodyTextIndex = bodyTextIndex + 1;
);
@override
Widget build(BuildContext context)
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text(
'TASK',
),
),
body: bodyTextIndex <= bodytext.length
? Column(
children: [
BodyTextChance(
bodytext[bodyTextIndex],
),
FlatButton(
onPressed: buttonPress,
child: Text(
'CLICK ME',
),
),
],
)
: Center(
child: Text('HELLO'),
),
),
);
> import 'package:flutter/material.dart';
>
>
> class BodyTextChance extends StatelessWidget String bodytext;
>
> BodyTextChance(this.bodytext);
>
> @override Widget build(BuildContext context)
> return Text(bodytext);
【问题讨论】:
【参考方案1】:简答
此行使用了错误的比较运算符:
body: bodyTextIndex <= bodytext.length
它应该像这样使用<
运算符:
body: bodyTextIndex < bodytext.length
更多细节
当bodyTextIndex
变为3时,仍满足以下条件:
bodyTextIndex <= bodytext.length
然后它引用了bodytext[3]
,但该元素不存在,因为它的范围是0到2。
【讨论】:
你怎么知道你可以使用哪个运算符? 这真的取决于,但我通常会使用 的可读性以上是关于如何将列表链接到 if else?扑的主要内容,如果未能解决你的问题,请参考以下文章
涉及 e.preventDefault 的 if/else 语句