我正在构建一个 Flutter 应用程序并且我已经集成了 Firebase,但是当我点击一个按钮来注册、登录或注销时,我不断收到这个错误。我见过其他人问过同样的问题,但似乎没有一个对我有用。我正在使用 Flutter 和Android Studio。我该如何解决这个问题?
这是我的代码的摘录
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.red,
body: Center(
child: Container(
child: RaisedButton(
onPressed: () {
FirebaseAuth.instance.signOut().then((value) {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) =>
LoginScreen()));
});
},
child: Text("Logout"),
)
)
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
下面是抛出的异常
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> { …Run Code Online (Sandbox Code Playgroud) 所以我是颤振的新手,并尝试在我的应用程序上执行小部件测试,但我不断收到这个奇怪的错误。下面是我的测试文件
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:folk_team_app/provider/auth_provider.dart';
import 'package:folk_team_app/screens/phone_login.dart';
import 'package:provider/provider.dart';
void main() async {
TestWidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
Widget loginScreen = ChangeNotifierProvider<AuthProvider>(
create: (context) => AuthProvider(),
builder: (context, child) {
return MaterialApp(
home: PhoneLogineScreen(),
);
});
testWidgets('Phone Authetication Page', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(loginScreen);
await tester.pump(const Duration(seconds: 10));
final titleText = find.text('Screen Title');
// Verify that our counter starts at 0.
expect(titleTextt, findsOneWidget);
});
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试测试我的firebase auth方法。身份验证方法包括登录、注销、注册等。这是我想要执行单元测试的方法。
我收到错误No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
我尝试Firebase.initializeApp在测试main方法中初始化它也不起作用。
class MockUserRepository extends Mock implements AuthService {
final MockFirebaseAuth auth;
MockUserRepository({this.auth});
}
class MockFirebaseAuth extends Mock implements FirebaseAuth{}
class MockFirebaseUser extends Mock implements FirebaseUser{}
class MockFirebase extends Mock implements Firebase{}
void main() {
MockFirebase firebase=MockFirebase();
MockFirebaseAuth _auth = MockFirebaseAuth();
BehaviorSubject<MockFirebaseUser> _user = BehaviorSubject<MockFirebaseUser>();
when(_auth.onAuthStateChanged).thenAnswer((_){
return _user;
});
AuthService _repo = AuthService.instance(auth: _auth);
group('user repository test', (){
when(_auth.signInWithEmailAndPassword(email: "email",password: "password")).thenAnswer((_)async{
_user.add(MockFirebaseUser()); …Run Code Online (Sandbox Code Playgroud) android unit-testing firebase firebase-authentication flutter