为什么此启动画面代码无法正常运行?

时间:2019-10-27 05:40:37

标签: flutter dart

main.dart ----

import 'package:flutter/material.dart';
import 'package:flutter_app/splashscreen.dart';
import 'package:flutter_app/homepage.dart';
import 'package:flutter_app/constants.dart';

void main() => runApp(MaterialApp(
  title: 'GridView Demo',
  home: SplashScreen(),
  debugShowCheckedModeBanner: false,
  theme: ThemeData(
    primarySwatch: Colors.red,
    accentColor: Color(0xFF761322),
  ),
  routes: <String, WidgetBuilder>{
    SPLASH_SCREEN: (BuildContext context) => SplashScreen(),
    HOME_SCREEN: (BuildContext context) => HomeScreen(),
    //GRID_ITEM_DETAILS_SCREEN: (BuildContext context) => GridItemDetails(),
  },
));


slashscreen.dart ------


import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app/constants.dart';



class SplashScreen extends StatefulWidget {
  @override
  SplashScreenState createState() => new SplashScreenState();
}

class SplashScreenState extends State<SplashScreen>
    with SingleTickerProviderStateMixin {
  var _visible = true;

  AnimationController animationController;
  Animation<double> animation;

  startTime() async {
    var _duration = new Duration(seconds: 3);
    return new Timer(_duration, navigationPage);
  }

  void navigationPage() {
    Navigator.of(context).pushReplacementNamed(HOME_SCREEN);
  }

  @override
  void initState() {
    super.initState();
    animationController = new AnimationController(
      vsync: this,
      duration: new Duration(seconds: 2),
    );
    animation =
    new CurvedAnimation(parent: animationController, curve: Curves.easeOut);

    animation.addListener(() => this.setState(() {}));
    animationController.forward();

    setState(() {
      _visible = !_visible;
    });
    startTime();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        fit: StackFit.expand,
        children: <Widget>[
          new Column(
            mainAxisAlignment: MainAxisAlignment.end,
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Padding(
                padding: EdgeInsets.only(bottom: 30.0),
                child: new Image.asset(
                  'assets/r1.png',
                  height: 25.0,
                  fit: BoxFit.scaleDown,
                ),
              )
            ],
          ),
          new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              new Image.asset(
                'assets/r2.png',
                width: animation.value * 250,
                height: animation.value * 250,
              ),
            ],
          ),
        ],
      ),
    );
  }
}



homepage.dart --------

import 'package:flutter/material.dart';


class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Table Widget")),
      body: Center(child:Text('jai sri ram ')
      ) 
    );
  }
}

constants.dart -----

String SPLASH_SCREEN='SPLASH_SCREEN';
String HOME_SCREEN='HOME_SCREEN';


1。错误的未定义名称'SPLASH_SCREEN'

2。错误的未定义名称'HOME_SCREEN'

3。如何解决此错误?

我不知道为什么这些未定义的名称错误会出现在屏幕上。我也不知道如何解决这些错误。

如何解决未定义名称SPLASH_SCREEN和HOME_SCREEN错误?

请帮助我。。谢谢

2 个答案:

答案 0 :(得分:1)

我看到您没有在MaterialApp中指定reader@hacking:~/booksrc $ cp a.out a reader@hacking:~/booksrc $ ./a SLEDLESS SLEDLESS is at 0xbfffff4e reader@hacking:~/booksrc $ cp a.out bb reader@hacking:~/booksrc $ ./bb SLEDLESS SLEDLESS is at 0xbfffff4c reader@hacking:~/booksrc $ cp a.out ccc reader@hacking:~/booksrc $ ./ccc SLEDLESS SLEDLESS is at 0xbfffff4a reader@hacking:~/booksrc $ ./a.out SLEDLESS SLEDLESS is at 0xbfffff46 reader@hacking:~/booksrc $ gdb -q (gdb) p 0xbfffff4e - 0xbfffff46 $1 = 8 (gdb) quit reader@hacking:~/booksrc $ 。像这样-

initialRoute

能解决您的问题吗?但这并不能解决未定义的问题。代码看起来不错(我想)

答案 1 :(得分:1)

我尝试了您的代码,它运行正常。

您可以尝试以下操作:

  • 在项目目录中运行flutter clean
  • 重新启动/重新安装应用程序,而不是使用热重载