我正在使用generatedRoutes
和bloc
状态管理库/模式开发一个简单的Flutter应用程序。我有一个简单的cubit
,它生成一个随机数,还有一个Home Screen
,它有一个按钮来生成新的随机数。**在运行应用程序时,一直显示白色屏幕,在调试控制台中,我收到isolate
相关错误和通知,不断显示Xcode build正在运行,如下所示:-**x1c 0d1x
下面是我的代码:
NavigationCubit和NavigationState
class NavigationState {
final int number;
NavigationState(this.number);
}
class NavigationCubit extends Cubit<NavigationState> {
NavigationCubit():super(NavigationState(0));
void onStateChange() {
var r = Random();
emit(NavigationState(r.nextInt(1000)));
}
}
AppRouter类
class AppRouter {
Route generateRoutes(RouteSettings settings) {
switch(settings.name) {
case '/':
return MaterialPageRoute(builder: (context) =>
BlocProvider<NavigationCubit>( create: (context) => NavigationCubit(),
child: const HomeScreen(),
));
default:return MaterialPageRoute(builder: (context) => const ErrorScreen());
}
}
}
主屏幕和错误屏幕
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Welcome to page routes"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
BlocBuilder<NavigationCubit, NavigationState>(
builder: (context, state) => Text(state.number.toString()),),
ElevatedButton(onPressed: () {
context.read<NavigationCubit>().onStateChange();
}, child: const Text("Generate"))
],
)),
);
}
}
class ErrorScreen extends StatelessWidget {
const ErrorScreen({super.key});
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Center(child: Text("Error in routing")),
);
}
}
主文件(main.dart)
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
MyApp({super.key});
final router = AppRouter();
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Generated Routes Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
onGenerateRoute: router.generateRoutes,
initialRoute: '/',
);
}
}
**Flutter_bloc依赖版本:flutter_bloc: ^8.1.2
我尝试了多种解决方案,其中一个是由This提供的,所有的cubits/blocs
都是手动处理的,但没有成功。
如何解决这个问题,我的方法有什么问题。
1条答案
按热度按时间kzipqqlq1#
出现该错误是因为您应用程序不是从main.dart文件运行的。您可以通过将vscode中的launch.json文件添加到项目文件容器中的.vscode文件夹来修复该错误