【发布时间】:2023-03-29 00:27:01
【问题描述】:
我正在使用 Flutter 学习 Dart,所以今天我正在编写一个小型有状态测验应用程序(您只需点击绿色 TRUE 按钮或红色 FALSE 按钮即可回答一些问题。
基本上每个问题都与一个真假布尔值配对。
代码如下。它仅由 material.dart 和一个名为 QuizBrain.dart 的单独类组成。
QuizBrain 包含问题和问题/布尔对的构造函数。
第一个函数只包含 AppBar、backgroundColor 和 body:SafeArea 并调用 Quizzler2() - 这实际上是重要的函数,它将在 material.dart 下扩展 StatefulWidget p>
值 int 索引只是每个问题/布尔对的计数器索引。
!我是罗马尼亚人,所以一些变量的名称和字符串都是罗马尼亚语的。
我的问题 --- 这个应用程序实际上曾经很好用! 直到我尝试将 int index=0 移动到 QuizBrain.dart 文件中...然后再次退出!
W..T..F !!!
在此之后,每次我尝试运行应用程序时,Android Studio(我在 linux 上运行 Android)都会返回大量错误文本:
======== 小部件库捕获的异常=================================== ===================== 在构建 MediaQuery(MediaQueryData(size: 大小(480.0,1013.3),devicePixelRatio:3.0,textScaleFactor:1.0, 平台亮度:Brightness.light,填充:EdgeInsets.zero, viewPadding:EdgeInsets.zero,viewInsets:EdgeInsets.zero, alwaysUse24HourFormat:假,accessibleNavigation:假, highContrast:假,disableAnimations:假,invertColors:假, 粗体文本:假,导航模式:传统,手势设置: DeviceGestureSettings(touchSlop: 8.0))): 堆栈溢出
当然,我运行了 dart clear cache 和 flutter clean cache...无济于事!
我确实注意到 StackOverFlow 错误的其他用途......但我的情况与他们完全不同!
我有 MaterialApp!
那么……怎么了?!
================================================ ============================
material.dart 代码:
import 'package:flutter/material.dart';
import 'QuizBrain.dart';
void main()
{
runApp(QuizzlerTest());
}
class QuizzlerTest extends StatelessWidget
{
@override
Widget build(BuildContext context)
{
return MaterialApp
(
home: Scaffold
(
appBar: AppBar
(
centerTitle: true,
backgroundColor: Colors.grey,
title: Text('Quizzler TEST', style: TextStyle(
fontSize: 35,
fontWeight: FontWeight.bold,
),),
),
backgroundColor: Colors.black,
body: SafeArea
(
child: Padding
(
padding: EdgeInsets.symmetric(horizontal: 15),
child: Quizzler2(),
),
),
),
);
}
}
class Quizzler2 extends StatefulWidget
{
@override
_Quizzler2State createState() => _Quizzler2State();
}
class _Quizzler2State extends State<Quizzler2>
{
int index = 0;
QuizBrain Creier = QuizBrain();
@override
Widget build(BuildContext context)
{
return Column
(
crossAxisAlignment: CrossAxisAlignment.stretch,
children:<Widget>
[
Expanded
(
flex: 5,
child: Padding
(
padding: EdgeInsets.symmetric(horizontal: 10),
child: Center
(
child: Container
(
child: Text
(
Creier.listaIntrebarilor[index].Intrebarile,
textAlign: TextAlign.center,
style: TextStyle( fontSize: 30, color: Colors.white,),
),
),
),
),
),/
Expanded
(
flex: 1,
child: Container
( /
color: Colors.green,
child:TextButton
(
onPressed:(){
bool dilema = Creier.listaIntrebarilor[index].Evaluarea;
if(dilema == true)
{
print('VERDE 1 --- User got it right!');
}
else if(dilema != true)
{
print('VERDE 2 --- User got it WRONG!');
}
setState((){
index = index++;
});
}, /* onPressed ---- end */
child: Text('TRUE',
textAlign:TextAlign.center,
style: TextStyle( color: Colors.white,),
)
),
),
),
SizedBox(
height: 15,
),
Expanded
(
flex: 1,
child: Container
(
color: Colors.red,
child:TextButton
(
onPressed:(){
bool XXX = Creier.listaIntrebarilor[index].Evaluarea;
if(XXX == false)
{
print('ROSU 1 --- User has it right!');
}
else if (XXX != false)
{
print(' ROSU 2 --- User has it wrong!');
}
setState((){
index = index++;
});
},
child: Text('FALSE',
textAlign:TextAlign.center,
style: TextStyle( color: Colors.white,),
)
),
),
),
SizedBox(
height: 15,
),
]
); /
}
}
================================================ ===============
现在,QuizBrain.dart 文件:
class QuizBrain
{
String Intrebarile = '';
bool Evaluarea = false;
QuizBrain({String intrebari ='', bool evaluare = false})
{
Intrebarile = intrebari;
Evaluarea = evaluare;
}
List<QuizBrain> listaIntrebarilor = [
QuizBrain (intrebari:'Este sangele rosu?', evaluare: true),
QuizBrain(intrebari:'Melcul zboara ?', evaluare: false),
QuizBrain(intrebari:'0 + 1 = 3', evaluare: false),
QuizBrain(intrebari:'Pestele inoata?', evaluare: true),
];
}
===================================
【问题讨论】:
-
另外...Android Studio 检查器检测到代码没有问题!只有当我运行它时,才会出现 StackOverFlow 错误!