hasan korkut
hasan korkut

Reputation: 1

Field _user has not been initialized - Flutter

import "package:flutter/material.dart";
import 'package:firebase_auth/firebase_auth.dart';
import 'package:tezuygulamasi/home_page.dart';
import 'package:tezuygulamasi/sign_in_page.dart';



class LandingPage extends StatefulWidget {
  @override
  _LState createState() => _LState();
}
class _LState extends State<LandingPage> {

  late User _user;

  @override
  void initState() {
    super.initState();
    _checkUser();
  }

  @override
  Widget build(BuildContext context) {
    if(_user == null){
      return SignInPage();
    } else {
      return HomePage(
        user: _user,
      );
    }
  }

  Future<void> _checkUser() async{
    _user = (await FirebaseAuth.instance.currentUser)!;
  }
}

Since the code is written in this way, it gives the error I mentioned in the title. I know the reason for this error is the use of "late". When I delete it, I run into a problem like this.**

enter image description here

Another Page Code

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {

  final User user;
  HomePage({Key? key, required this.user}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Anasayfa"),
      ),
      body: Center(
        child: Text("Hoşgeldiniz ${user.uid}"),
      ),
    );
  }
}

The "_user" or "User" parameters are causing problems. Thank you for helping.

Upvotes: 0

Views: 487

Answers (1)

Eishon
Eishon

Reputation: 1324

Dart now supports null safety by default. The problem here is you declared a variable _user which can't be null but checking it is null or not. You can declare the variable as User? _user or call the future code inside a FutureBuilder widget.

Upvotes: 1

Related Questions