flutter - 当我尝试运行调试时,屏幕上没有显示任何内容
问题描述
我正在尝试创建一个启动画面,但是每当我在 vs 代码中运行“不调试运行”时,屏幕上除了默认屏幕之外什么都不会出现。我尝试创建一个导航器路线,将 Home 设置为不同的 HomePage 或 SplashScreen,但屏幕中仍然没有输出。我的 VSCode 有问题还是我的代码不够用?没有迹象表明我的代码中有错误,这就是为什么我想知道为什么屏幕上没有输出。
import 'dart:async';
import "package:flutter/material.dart"
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.red),
home: LoginPage(),
);
}
}
class SplashScreen extends StatefulWidget {
const SplashScreen({Key? key}) : super(key: key);
@override
_SplashScreenState createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
@override
void initState() {
// TODO: implement initState
super.initState();
Timer(Duration(seconds: 3), () {
Navigator.of(context)
.pushReplacement(MaterialPageRoute(builder: (_) => HomePage()));
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.lightBlue,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
//logo here
Image.asset(
'assets/images/idkbank_logo.png',
height: 120,
),
SizedBox(
height: 20,
),
],
),
),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.lightBlue,
title: Text("Welcome to IDKBank"),
),
body: Container(child: Text("Home Page")),
);
}
}
解决方案
首先,您在;
第二次导入结束时丢失了。其次,当你尝试在中使用上下文时initState
,尝试使用WidgetsBinding.instance.addPostFrameCallback
在你的情况下,它应该是
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance!.addPostFrameCallback((_) {
Timer(Duration(seconds: 3), () {
Navigator.of(context)
.pushReplacement(MaterialPageRoute(builder: (_) => HomePage()));
});
});
}
在initState
,build
函数还没有执行,context
有点空。这就是您在这里需要WidgetsBinding.instance.addPostFrameCallback的原因。
推荐阅读
- clojure - 如何停止集成系统
- android - Android - 应用程序级 socket.io
- wordpress - Wordpress 管理员无法登录 - 错误:Cookie 被您的浏览器阻止或不支持
- mysql - MySql 查询获取空表
- android - 使用 SwipeRefreshLayout 时 Robo 脚本中止
- swift - Swift中函数重载参数的优先级
- mysql - 比较同一列中的数据 - SQL
- c# - ListView 名称无法在 xaml.cs 中访问
- python - Pandas JSON_Normalize 仅特定列
- javascript - 如何在jquery中获取和拆分输入字段的值