Flutter 文本未显示在颤振上的有状态小部件中
我正在尝试创建一个非常简单的应用程序,当单击中心小部件时,将显示列表中的元素 这是我的代码:Flutter 文本未显示在颤振上的有状态小部件中,flutter,dart,Flutter,Dart,我正在尝试创建一个非常简单的应用程序,当单击中心小部件时,将显示列表中的元素 这是我的代码: import 'package:flutter/material.dart'; import 'dart:math'; void main() => runApp( MaterialApp(home: MyApp()), ); class MyApp extends StatelessWidget { @override Widget build(BuildCont
import 'package:flutter/material.dart';
import 'dart:math';
void main() => runApp(
MaterialApp(home: MyApp()),
);
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: Text('Welcome to Flutter'),
),
body: Center(),
),
);
}
}
class picker extends StatefulWidget {
@override
_pickerState createState() => _pickerState();
}
class _pickerState extends State<picker> {
List yourList = ["Yes", "No", "Maybe"];
int randomIndex;
_pickerState() {
int randomIndex = Random().nextInt(yourList.length);
}
@override
Widget build(BuildContext context) {
return Center(
child: TextButton(
onPressed: () {
setState(() {
print(yourList[randomIndex]);
});
},
child: Text('$randomIndex'),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“dart:math”;
void main()=>runApp(
MaterialApp(主页:MyApp()),
);
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“欢迎来到弗利特”,
家:脚手架(
背景颜色:Colors.white,
appBar:appBar(
标题:文本(“欢迎光临颤振”),
),
主体:中心(),
),
);
}
}
类选择器扩展StatefulWidget{
@凌驾
_pickerState createState();
}
类_pickerState扩展状态{
列出你的清单=[“是”、“否”、“可能”];
int随机指数;
_pickerState(){
int randomIndex=Random().nextInt(yourList.length);
}
@凌驾
小部件构建(构建上下文){
返回中心(
孩子:文本按钮(
已按下:(){
设置状态(){
打印(您的列表[随机索引]);
});
},
子项:文本(“$randomIndex”),
),
);
}
}
没有显示任何错误,但同时,由于没有显示任何文本,因此没有达到我的目标,即使我添加了此代码打印(yourList[randomIndex]),终端中也不会打印任何内容;。如何显示文本并显示打印内容
尝试使用
this.randomIndex=Random().nextInt(yourList.length)当初始化构造函数体中的变量时,改为code>
否则,在初始化类时将声明不同的局部变量
下次尝试调试此错误时,请在初始化之外设置一个默认值,以检查是否存在类似问题,例如初始化未进入状态
我还建议您将类名更改为CamelCase以避免混淆,这样人们就可以在类初始化时看到这是代码。这是一篇关于dart的文章。尝试使用this.randomIndex=Random().nextInt(yourList.length)当初始化构造函数体中的变量时,改为code>
否则,在初始化类时将声明不同的局部变量
下次尝试调试此错误时,请在初始化之外设置一个默认值,以检查是否存在类似问题,例如初始化未进入状态
我还建议您将类名更改为CamelCase以避免混淆,这样人们就可以在类初始化时看到这是代码。这是一篇关于dart的文章。两个错误:
您没有为实际要在此处使用的变量赋值:
没有调用方法\u pickerState()
,这就是为什么TextButton
中存在null
值的原因
这是工作代码,您只需复制粘贴即可:
class _PickerState extends State<Picker> {
List yourList = ["Yes", "No", "Maybe"];
int randomIndex;
_pickerState() {
randomIndex = Random().nextInt(yourList.length);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: TextButton(
onPressed: () {
_pickerState();
setState(() {
print(yourList[randomIndex]);
});
},
child: Text('$randomIndex'),
),
),
);
}
}
class\u PickerState扩展状态{
列出你的清单=[“是”、“否”、“可能”];
int随机指数;
_pickerState(){
randomIndex=Random().nextInt(yourList.length);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:文本按钮(
已按下:(){
_pickerState();
设置状态(){
打印(您的列表[随机索引]);
});
},
子项:文本(“$randomIndex”),
),
),
);
}
}
快速提示:尝试使用大写
命名类
或任何自定义小部件
其更方便的方式两个错误:
您没有为实际要在此处使用的变量赋值:
没有调用方法\u pickerState()
,这就是为什么TextButton
中存在null
值的原因
这是工作代码,您只需复制粘贴即可:
class _PickerState extends State<Picker> {
List yourList = ["Yes", "No", "Maybe"];
int randomIndex;
_pickerState() {
randomIndex = Random().nextInt(yourList.length);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: TextButton(
onPressed: () {
_pickerState();
setState(() {
print(yourList[randomIndex]);
});
},
child: Text('$randomIndex'),
),
),
);
}
}
class\u PickerState扩展状态{
列出你的清单=[“是”、“否”、“可能”];
int随机指数;
_pickerState(){
randomIndex=Random().nextInt(yourList.length);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:文本按钮(
已按下:(){
_pickerState();
设置状态(){
打印(您的列表[随机索引]);
});
},
子项:文本(“$randomIndex”),
),
),
);
}
}
快速提示:尝试使用大写
来命名类
或任何自定义小部件
其更方便的方法是设置
randomIndex = Random().nextInt(yourList.length);
在setState((){如下所示
import 'package:flutter/material.dart';
import 'dart:math';
void main() => runApp(
MaterialApp(home: MyApp()),
);
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: Text('Welcome to Flutter'),
),
body: picker(),
),
);
}
}
class picker extends StatefulWidget {
@override
_pickerState createState() => _pickerState();
}
class _pickerState extends State<picker> {
List yourList = ["Yes", "No", "Maybe"];
int randomIndex = 0;
@override
Widget build(BuildContext context) {
return Center(
child: TextButton(
onPressed: () {
setState(() {
randomIndex = Random().nextInt(yourList.length);
});
},
child: Text(yourList[randomIndex]),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“dart:math”;
void main()=>runApp(
MaterialApp(主页:MyApp()),
);
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“欢迎来到弗利特”,
家:脚手架(
背景颜色:Colors.white,
appBar:appBar(
标题:文本(“欢迎光临颤振”),
),
主体:选择器(),
),
);
}
}
类选择器扩展StatefulWidget{
@凌驾
_pickerState createState();
}
类_pickerState扩展状态{
列出你的清单=[“是”、“否”、“可能”];
int随机指数=0;
@凌驾
小部件构建(构建上下文){
返回中心(
孩子:文本按钮(
已按下:(){
设置状态(){
randomIndex=Random().nextInt(yourList.length);
});
},
child:Text(您的列表[随机索引]),
),
);
}
}
要获得起始文本,需要在单独的函数中取出setState,如:
class _pickerState extends State<picker> {
List yourList = ["Yes", "No", "Maybe"];
String buttonText = "Initial Text";
int randomIndex = 0;
void _newRandomIndex() {
setState(() {
randomIndex = Random().nextInt(yourList.length);
buttonText = yourList[randomIndex];
});
}
@override
Widget build(BuildContext context) {
return Center(
child: TextButton(
onPressed: _newRandomIndex,
child: Text(buttonText),
),
);
}
}
class\u pickerState扩展状态{
列出你的清单=[“是”、“否”、“可能”];
字符串buttonText=“初始文本”;
int随机指数=0;
无效的