Согласно вашему описанию, вы хотите создать проект, зарегистрировать учетную запись, используя учетную запись электронной почты, и зарегистрироваться, чтобы перейти на другую страницу содержимого.
Но я считаю, что ваш код немного запутан, я делаю один простой пример что вы можете посмотреть:
<StackLayout>
<!-- Place new controls here -->
<Entry x:Name="txtemail" Placeholder="Email" />
<Entry x:Name="txtpassword" Placeholder="Enter Password" />
<Entry x:Name="txtstudentId" Placeholder="Enter Student Id" />
<StackLayout HorizontalOptions="CenterAndExpand" Orientation="Horizontal">
<Button
x:Name="btnSign"
Clicked="BtnSign_Clicked"
Text="Sign up"
WidthRequest="200" />
<Button
x:Name="btnRegister"
Clicked="BtnRegister_Clicked"
Text="Retrive"
WidthRequest="200" />
</StackLayout>
</StackLayout>
public partial class MainPage : ContentPage
{
FirebaseHelper firebaseHelper = new FirebaseHelper();
public MainPage()
{
InitializeComponent();
}
private async void BtnSign_Clicked(object sender, EventArgs e)
{
var person = await firebaseHelper.GetPerson(txtemail.Text);
if (person != null)
{
if(person.Email==txtpassword.Text)
{
await Navigation.PushAsync(new Page1());
}
else
{
await DisplayAlert("Fail", "Password is not correct!", "OK");
}
}
else
{
await DisplayAlert("Fail", "No email Available!", "OK");
}
}
private async void BtnRegister_Clicked(object sender, EventArgs e)
{
if(await RegisterAccount())
{
await firebaseHelper.AddPerson(txtemail.Text, txtpassword.Text, txtstudentId.Text);
txtemail.Text = string.Empty;
txtpassword.Text = string.Empty;
txtstudentId.Text = string.Empty;
await DisplayAlert("Success", "Person Added Successfully", "OK");
}
else
{
await DisplayAlert("Fail", "Person Added Fail", "OK");
}
}
private async Task<bool> RegisterAccount()
{
var hasSymbols = new Regex(@"[!@#$%^&*()_+=\[{\]};:<>|./?,-]");
//null or empty field validation, check weather email and password is null or empty
if (string.IsNullOrEmpty(txtemail.Text) || string.IsNullOrEmpty(txtpassword.Text))
{
await DisplayAlert("Empty Values", "Please enter Email and Password", "OK");
return false;
}
else if (!txtemail.Text.Contains("@"))
{
await DisplayAlert("", "Email Address is Invalid", "OK");
return false;
}
else if (txtpassword.Text.Length < 8)
{
await DisplayAlert("", "Password is less than 8 characters", "OK");
return false;
}
else if (!txtpassword.Text.Any(char.IsUpper))
{
await DisplayAlert("", "Password Must Contain at Least 1 Uppcase Letter", "OK");
return false;
}
else if (!hasSymbols.IsMatch(txtpassword.Text))
{
await DisplayAlert("", "Password should contain At least one special case characters", "OK");
return false;
}
else if (string.IsNullOrEmpty(txtstudentId.Text))
{
await DisplayAlert("Empty Values", "Please enter Student ID", "OK");
return false;
}
else
{
var person = await firebaseHelper.GetPerson(txtemail.Text);
if (person != null)
{
await DisplayAlert("fail", "Email already exist", "OK");
return false;
}
}
return true;
}
}
public class Register
{
public string Email { get; set; }
public string Password { get; set; }
public string StudentId { get; set; }
}
public class FirebaseHelper
{
FirebaseClient firebase = new FirebaseClient("https://testapp1-ebb27-6e5ba.firebaseio.com/");
public async Task<List<Register>> GetAllPersons()
{
return (await firebase
.Child("Persons")
.OnceAsync<Register>()).Select(item => new Register
{
Email = item.Object.Email,
Password = item.Object.Password,
StudentId=item.Object.StudentId
}).ToList();
}
public async Task AddPerson(string email, string password, string studentid)
{
await firebase
.Child("Persons")
.PostAsync(new Register() { Email = email, Password = password, StudentId = studentid });
}
public async Task<Register> GetPerson(string email)
{
var allPersons = await GetAllPersons();
await firebase
.Child("Persons")
.OnceAsync<Register>();
return allPersons.Where(a => a.Email == email).FirstOrDefault();
}
}
Это мой пример на github:
https://github.com/CherryBu/RegisterApp