当前位置: 首页 > 知识库问答 >
问题:

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

傅朝
2023-03-14

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

代码:


    import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:fbutton/fbutton.dart';
import 'package:quiz_cisco1_0/quizprincipal.dart';

void main() => runApp(MyAppState());


class MyAppState extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Cisco Quiz",
      home: Scaffold(
        extendBodyBehindAppBar:  true,
        body: SafeArea(
          child: Column(
            children: [
              Center(
                child: Image.asset("assets/cisco_logo.png", width: 200, height: 200,),
              ),
              Center(
                child: Image.asset("assets/quizz.png", width: 200, height: 200,),
              ),
              Text("La App Perfecta para prepararte", style: TextStyle(fontSize: 19.0,fontWeight: FontWeight.bold)),
              Text("en Cisco CCNA 1,2 y 3", style: TextStyle(fontSize: 19.0, fontWeight: FontWeight.bold),),
              SizedBox(height: 85.0),
              FButton(
                width: 185,
                height: 60,
                alignment: Alignment.center,
                text: "Empezar",
                style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold,fontSize: 20.0),
                color: Colors.blue,
                onPressed: (){
                  Navigator.push(context,
                  MaterialPageRoute(builder:(context) => MyAppsds()));
                },
                clickEffect: true,
                corner: FCorner(
                  leftBottomCorner: 40,
                  leftTopCorner: 6,
                  rightTopCorner: 40,
                  rightBottomCorner: 6
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

代码:


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
  }
}

错误:

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

用于从导航器推送或弹出路由的上下文必须是导航器小部件的后代小部件的上下文。当抛出异常时,这是堆栈:#0 Navigator.of.(包: flutter/src/小部件/navigator.dart:2711: 9)#1 Navigator.of(包: flutter/src/小部件/navigator.dart:2718: 6)#2 N<--plhd--4/#3 MyAppState.build.(包:quiz_cisco1_0/main.dart:37: 29)#4_FButton.on按下(包: fButts/fbutton.dart:561: 23)...处理程序:“onTap”识别器: TapGesture识别器#665d0调试所有者: GestureDetector状态:可能赢得竞技场决赛位置:偏移(184.2, 566.6)finalLocalPoplace:偏移(96.7,6.1)按钮: 1发送轻敲

共有1个答案

李弘光
2023-03-14

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类的建议名称为_

示例:_MyAppsdsState

 类似资料:
  • 所以我的问题是我该怎么做?这似乎是一个非常简单的需求,但我在文档中找不到任何关于如何执行的内容。 多谢了。

  • 我想从'get codepage'传递2个参数到'mainpage',然后我出现了这个错误。这是我的getCodePage我传递参数的部分: 当我想将参数作为对象时,这是我的主页: 那么这里有一个错误:没有为类型“object”flutter error定义运算符“[]”

  • van-search 点击清除不生效。 官方说安装 @vant/touch-emulator,但是安装后还是不行。怎么弄呢? 试过安装 @vant/touch-emulator 插件,但是没有生效

  • 我正在尝试使用Flutter中的进度状态按钮。在pub.dev文档中,小部件的设置如下

  • 问题内容: 我一直在为FF写我的脚本,但希望他们所做的工作很少,它们也可以在其他浏览器上运行,但是IE驱动程序似乎存在按钮问题? 我在按钮上有一个简单的webelement.click(),不会引发错误,但不单击按钮。在FF它的罚款。我可以获取文本,获取价值,所以我知道find语句是可以的,只是不会单击它。 想法或帮助会很棒 只是做 HTML-控件上有3个按钮,我现在只对登录感兴趣 问题答案: 遇