Flutter 颤振中的按钮问题,如何解决?

Flutter 颤振中的按钮问题,如何解决?,flutter,android-studio,dart,Flutter,Android Studio,Dart,我有一个颤振按钮的问题,因为按下它不会产生任何事件,我想不出任何方法来修复它 代码: 代码: 进口“包装:颤振/材料.省道”; 导入“/quick.dart”; 导入“/result.dart”; 导入“main.dart”; 类MyAppsds扩展了StatefulWidget{ _MyAppState createState(){ 返回_MyAppState(); } } 类MyAppState扩展了状态{ 最终问题=常数[ { “问题文本”:“1.联合国路由器控制系统运行于阿拉木图配置档

我有一个颤振按钮的问题,因为按下它不会产生任何事件,我想不出任何方法来修复它

代码:

代码:


进口“包装:颤振/材料.省道”;
导入“/quick.dart”;
导入“/result.dart”;
导入“main.dart”;
类MyAppsds扩展了StatefulWidget{
_MyAppState createState(){
返回_MyAppState();
}
}
类MyAppState扩展了状态{
最终问题=常数[
{
“问题文本”:“1.联合国路由器控制系统运行于阿拉木图配置档案馆。设备配置档案馆与设备管理档案馆之间,无任何冲突。”,
“答案”:[
{'text':'Modo de configuración global','score':-2},
{'text':'Modo de ejeucción privilegiado','score':-2},
{'text':'Modo EXEC usuario','score':10},
{'text':'Modo de configuración','score':-2},
],
},
{
‘问题文本’:‘2.‘2号Capa必要的IP交换机是什么?’,
“答案”:[
{'text':'Para permitir que el switch envíe tramas de broadcast a los PCs conectados','score':-2},
{'text':'Para permitir que el switch function of como una puerta de enlace por defecto','score':-2},
{'text':'Para permitir que el switch reciba tramas de los PCs conectados','score':-2},
{
“文本”:
“海上管理局应保持一定距离”,
分数:10分
},
],
},
{
“问题文本”:“3.思科公司是否存在缺陷?”,
“答案”:[
{'text':'VLAN999','score':-2},
{'text':'VLAN1','score':10},
{'text':'VLAN99','score':-2},
{'text':'VLAN100','score':-2},
],
},
{
‘问题文本’:‘4.En el-comando’show running config’,‘quéparte de la sintaxis estárepresentada por‘running config’?’,
“答案”:[
{'text':'Una palabra clave','score':10},
{'text':'El comando','score':-2},
{'text':'Una variable','score':-2},
{'text':'Un aviso','score':-2},
],
},
{
“问题文本”:“5.红色要求的质量”,
“答案”:[
{'text':'Video conferencia','score':10},
{'text':'compa en línea','score':-2},
{'text':'Wiki','score':-2},
{'text':'Correo electroónico','score':-2},
],
},
{
“问题文本”:“6.你是不是想知道我们的工作是什么?”,
“答案”:[
{'text':'Capa física','score':-2},
{'text':'Capa de enlace de datos','score':-2},
{'text':'capadered','score':10},
{'text':'Capa de transporte','score':-2},
],
},
];
var _指数=0;
var _totalScore=0;
void_resetquick(){
设置状态(){
_问题指数=0;
_总分=0;
});
}
无效回答问题(整数分数){
_总分+=总分;
设置状态(){
_问题索引=_问题索引+1;
});
打印(索引);
如果(问题索引<问题长度){
打印(“我们还有更多问题!”);
}否则{
打印('不再有问题!');
}
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:文本(“测验”),
flexibleSpace:图像(
图片:AssetImage('assets/banner.jpg'),
适合:BoxFit.cover,
),
背景颜色:颜色。透明,
),
主体:填充物(
填充:常数边集全部(30.0),
孩子:_questionIndex<_questions.length
?测验(
回答问题:\回答问题,
问题索引:_questionIndex,
问题:_问题,
)//测验
:结果(_总分,_重置测验),
),//填充
),//脚手架
debugShowCheckedModeBanner:false,
);//材料pp
}
}
错误:

用手势捕捉异常 处理手势时引发了以下断言: 使用不包含导航器的上下文请求的导航器操作

用于从导航器推送或弹出路由的上下文必须是导航器小部件的后代小部件的上下文。 引发异常时,这是堆栈: #0.of。(包:flatter/src/widgets/navigator.dart:2711:9) #1 Navigator.of(包:flatter/src/widgets/Navigator.dart:2718:6) #2 Navigator.push(包:flatter/src/widgets/Navigator.dart:2116:22) #3 MyAppState.build。(套餐:quick_cisco1_0/main.省道:37:29) #4_FButton.on按下(包装:FButton/FButton.dart:561:23) ... 处理程序:“onTap” 识别器:TapGestureRecognizer#665d0 debugOwner:GestureDetector 国家:可能 赢得竞技场 最终位置:偏移量(184.2566.6) 最终位置:偏移量(96.7,6.1) 按钮:1
MyAppState
中,您正在使用的
context
无法找到
MaterialApp
(其中包括默认的
Navigator
小部件)。要使用
材料应用程序创建
上下文
,请将
支架
分离到不同的
无状态小部件

样本:

FROM
...
home: Scaffold(
...


TO
class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(...);
  }
}
另外,在
\u MyAppState
中,您可以删除
材质app
,只需返回
支架即可。在
MyAppsds
中,不要忘记将
@override
放在
createState()

我还建议更改
\u MyAppState
的名称。
State
类的建议名称为
\u State
。(将其设置为private是可选的)


示例:
\u MyAppsdsState

您有两个
材质App
s i

import 'package:flutter/material.dart';
import './quiz.dart';
import './result.dart';
import 'main.dart';

class MyAppsds extends StatefulWidget{
  _MyAppState createState() {
    return _MyAppState();
  }
}

class _MyAppState extends State<MyAppsds> {
  final _questions = const [
    {
      'questionText': '1. Un router con un sistema operativo válido contiene un archivo de configuración almacenado en la NVRAM. El archivo de configuración tiene una contraseña secreta de habilitación pero no una contraseña de consola. Cuando el router se inicie, ¿qué modo se mostrará?',
      'answers': [
        {'text': 'Modo de configuración global', 'score': -2},
        {'text': 'Modo de ejecución privilegiado', 'score': -2},
        {'text': 'Modo EXEC usuario', 'score': 10},
        {'text': 'Modo de configuración', 'score': -2},
      ],
    },
    {
      'questionText': ' 2.¿Por qué un switch de Capa 2 necesitaría una dirección IP?',
      'answers': [
        {'text': 'Para permitir que el switch envíe tramas de broadcast a los PCs conectados', 'score': -2},
        {'text': 'Para permitir que el switch funcione como una puerta de enlace por defecto', 'score': -2},
        {'text': 'Para permitir que el switch reciba tramas de los PCs conectados', 'score': -2},
        {
          'text':
          'Para permitir que el switch sea administrado a distancia',
          'score': 10
        },
      ],
    },
    {
      'questionText': ' 3.¿Cuál es el SVI por defecto en un switch Cisco?',
      'answers': [
        {'text': 'VLAN999', 'score': -2},
        {'text': 'VLAN1', 'score': 10},
        {'text': 'VLAN99', 'score': -2},
        {'text': 'VLAN100', 'score': -2},
      ],
    },
    {
      'questionText': '4.En el comando ‘show running-config’, ¿qué parte de la sintaxis está representada por ‘running-config’?',
      'answers': [
        {'text': 'Una palabra clave', 'score': 10},
        {'text': 'El comando', 'score': -2},
        {'text': 'Una variable', 'score': -2},
        {'text': 'Un aviso', 'score': -2},
      ],
    },
    {
      'questionText': '5.¿Qué tipo de tráfico de red requiere QoS?',
      'answers': [
        {'text': 'Video conferencia', 'score': 10},
        {'text': 'Compra en línea', 'score': -2},
        {'text': 'Wiki', 'score': -2},
        {'text': 'Correo electrónico', 'score': -2},
      ],
    },
    {
      'questionText': '6.¿En qué capa del modelo OSI se añadiría una dirección lógica durante el encapsulamiento?',
      'answers': [
        {'text': 'Capa física', 'score': -2},
        {'text': 'Capa de enlace de datos', 'score': -2},
        {'text': 'Capa de red', 'score': 10},
        {'text': 'Capa de transporte', 'score': -2},
      ],
    },
  ];

  var _questionIndex = 0;
  var _totalScore = 0;

  void _resetQuiz() {
    setState(() {
      _questionIndex = 0;
      _totalScore = 0;
    });
  }

  void _answerQuestion(int score) {
    _totalScore += score;

    setState(() {
      _questionIndex = _questionIndex + 1;
    });
    print(_questionIndex);
    if (_questionIndex < _questions.length) {
      print('We have more questions!');
    } else {
      print('No more questions!');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Quiz Cisco'),
          flexibleSpace: Image(
            image: AssetImage('assets/banner.jpg'),
            fit: BoxFit.cover,
          ),
          backgroundColor: Colors.transparent,
        ),
        body: Padding(

          padding: const EdgeInsets.all(30.0),
          child: _questionIndex < _questions.length
              ? Quiz(
            answerQuestion: _answerQuestion,
            questionIndex: _questionIndex,
            questions: _questions,
          ) //Quiz
              : Result(_totalScore, _resetQuiz),
        ), //Padding
      ), //Scaffold
      debugShowCheckedModeBanner: false,
    ); //MaterialApp
  }
}
FROM
...
home: Scaffold(
...


TO
class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(...);
  }
}