我有这个代码:
package main
import (
"fmt"
"reflect"
)
type cmd struct{
Echo func(string) (string,error)
}
func main() {
cmd := cmd{
Echo : func(arg string) (string, error) {
return arg, nil
},
}
result := reflect.ValueOf(cmd).FieldByName("Echo").Call([]reflect.Value{reflect.ValueOf("test")})
if result[1] == nil{
fmt.Println("ok")
}
}
Run Code Online (Sandbox Code Playgroud)
我想检查我的错误是否为零,但在我的代码中,它不起作用,因为它有不同的类型。我试着做这样的:
reflect[1] == reflect.Value(reflect.ValueOf(nil))
Run Code Online (Sandbox Code Playgroud)
所以它具有相同的类型,但 的值reflect.Value(reflect.ValueOf(nil))不是 nil,而是<invalid reflect.Value>。
我正在尝试实现一个用于在页面之间进行导航的 Cubit。我的第一次尝试是在我的背景屏幕上实现它,但在尝试执行此操作时出现此错误:
“错误:在此 BlocBuilder<StateStreamable<Object?>, Object?> Widget 上方找不到正确的 Provider<StateStreamable<Object?>>”
我不明白为什么它找不到正确的上下文,因为我的 BlocBuilder 位于小部件树中的 BlocProvider 之上......
这是代码:
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flexmes_mobile_app/buisness_logic/cubit/internet_cubit.dart';
import 'package:flexmes_mobile_app/buisness_logic/utility/app_bloc_observer.dart';
import 'package:flexmes_mobile_app/config/themes.dart';
import 'package:flexmes_mobile_app/ui/screens/auth_screen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:responsive_sizer/responsive_sizer.dart';
import 'buisness_logic/cubit/navigation_cubit.dart';
import 'config/app_router.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
Firebase.initializeApp();
BlocOverrides.runZoned(
() => runApp(MyApp()),
blocObserver: AppBlocObserver(),
);
}
class MyApp extends StatelessWidget {
final AppRouter _appRouter = AppRouter();
MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MediaQuery(
data: const MediaQueryData(),
child: ResponsiveSizer(
builder: (context, orientation, deviceType) …Run Code Online (Sandbox Code Playgroud)