Я регистрируюсь/регистрируюсь, и прямо сейчас я застрял на странице регистрации на flutter

#flutter #flutter-layout

Вопрос:

Итак, это код для файла register.dart:

 import 'dart:convert';  import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'list.dart'; import 'main.dart';  class Register extends StatefulWidget {  const Register({Key? key}) : super(key: key);   @override  _RegisterState createState() =gt; _RegisterState(); }  class _RegisterState extends Statelt;Registergt; {  TextEditingController user = TextEditingController();  TextEditingController pass = TextEditingController();   Future register() async {  var url = 'https://weplant.zanhrastnik.com/register.php';  var response = await http.post(Uri.parse(url), body: {  "email": user.text,  "password": pass.text,  });  var data = json.decode(response.body);  if (data == "Success") {  Navigator.pushReplacement(  context, MaterialPageRoute(builder: (context) =gt; const AllPlants()));  } else {  showDialog(  context: context,  builder: (BuildContext context) =gt; _buildPopupDialog(context),  );  }  }   @override  Widget build(BuildContext context) {  return Scaffold(  appBar: AppBar(  title: const Text(  'Login SignUp',  style: TextStyle(fontWeight: FontWeight.bold),  ),  ),  body: Container(  height: 300,  child: Card(  color: Colors.amber,  child: Column(  children: lt;Widgetgt;[  const Padding(  padding: EdgeInsets.all(8.0),  child: Text(  'Register',  style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold),  ),  ),  Padding(  padding: const EdgeInsets.all(8.0),  child: TextField(  decoration: InputDecoration(  labelText: 'Username',  prefixIcon: const Icon(Icons.person),  border: OutlineInputBorder(  borderRadius: BorderRadius.circular(8)),  ),  controller: user,  ),  ),  Padding(  padding: const EdgeInsets.all(8.0),  child: TextField(  obscureText: true,  decoration: InputDecoration(  labelText: 'Password',  prefixIcon: const Icon(Icons.lock),  border: OutlineInputBorder(  borderRadius: BorderRadius.circular(8)),  ),  controller: pass,  ),  ),  Row(  children: lt;Widgetgt;[  Expanded(  child: ElevatedButton(  child: const Text('Register',  style: TextStyle(  fontSize: 20,  fontWeight: FontWeight.bold,  color: Colors.white)),  onPressed: () {  register();  },  ),  ),  Expanded(  child: MaterialButton(  color: Colors.amber[100],  child: const Text('Login',  style: TextStyle(  fontSize: 20,  fontWeight: FontWeight.bold,  color: Colors.black)),  onPressed: () {  Navigator.push(  context,  MaterialPageRoute(  builder: (context) =gt; const MyApp(),  ),  );  },  ),  ),  ],  )  ],  ),  ),  ),  );  }  Widget _buildPopupDialog(BuildContext context) {  return AlertDialog(  title: const Text('Error'),  content: Column(  mainAxisSize: MainAxisSize.min,  crossAxisAlignment: CrossAxisAlignment.start,  children: const lt;Widgetgt;[  Text("Email or password are incorrect!"),  ],  ),  actions: lt;Widgetgt;[  TextButton(  onPressed: () {  Navigator.of(context).pop();  },  child: const Text('Close'),  ),  ],  );  }  }  

И это код файла, который я пытаюсь протолкнуть в aka list.dart

 import 'dart:convert';  import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:http/http.dart' as http; import 'package:weplant/entities/plant.dart'; import 'package:line_awesome_flutter/line_awesome_flutter.dart'; import 'package:weplant/detail_plant.dart'; import 'package:google_fonts/google_fonts.dart';   void main() {  runApp(const AllPlants()); }  class AllPlants extends StatelessWidget {  const AllPlants({Key? key}) : super(key: key);   // This widget is the root of your application.  @override  Widget build(BuildContext context) {  return MaterialApp(  title: 'WePlant',  theme: ThemeData(  textTheme: GoogleFonts.robotoTextTheme(  Theme.of(context).textTheme,  ),  scaffoldBackgroundColor: const Color(0xFFFEFFEE)  ),  );  } }  class MyHomePage extends StatefulWidget {  const MyHomePage({Key? key, required this.title}) : super(key: key);   final String title;   @override  Statelt;MyHomePagegt; createState() =gt; _MyHomePageState(); }  class _MyHomePageState extends Statelt;MyHomePagegt; {   final Listlt;Plantgt; _plants = lt;Plantgt;[];   Future fetchPlants() async {  var url = 'https://weplant.zanhrastnik.com/plants/';  var response = await http.get(Uri.parse(url));   var plants = lt;Plantgt;[];   if (response.statusCode == 200){  var plantsJson = jsonDecode(response.body);  for (var plantJson in plantsJson){  plants.add(Plant.fromJson(plantJson));  }  }  return plants;  }   @override  void initState() {  fetchPlants().then((value) {  setState(() {  _plants.addAll(value);  });  });  super.initState();  }   @override  Widget build(BuildContext context) {   return Scaffold(  appBar: AppBar(  leading: const Icon(  LineAwesomeIcons.bars,  color: Color.fromRGBO(254, 255, 238, 1.0)  ),  title: Image.asset(  'assets/weplant_logo.png',  height: 50,  ),  centerTitle: true,  actions: const [  Padding(  padding: EdgeInsets.symmetric(horizontal: 16),  child: Icon(  LineAwesomeIcons.search,  color: Color.fromRGBO(254, 255, 238, 1.0)  ),  ),  ],  backgroundColor: const Color.fromRGBO(156, 175, 136, 1.0),  ),    body: Padding(  child: ListView.builder(  itemBuilder: (context, index) {  return Card(  color: const Color.fromRGBO(254, 255, 238, 1.0),  shape: RoundedRectangleBorder(  borderRadius: BorderRadius.circular(16),  side: const BorderSide(color: Color.fromRGBO(230, 227, 211, 1.0), width: 1)  ),  child: Padding(  padding: const EdgeInsets.only(top: 8.0, bottom: 8.0, left:4.0, right: 4.0),  child: Column(  crossAxisAlignment: CrossAxisAlignment.start,  children: lt;Widgetgt;[  ListTile(  leading: ClipRRect(  borderRadius: BorderRadius.circular(8.0),  child: Image.network(  _plants[index].pImage,  width: 50,  ),  ),  shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),  trailing: const Icon(  LineAwesomeIcons.angle_right,  color: Color.fromRGBO(156, 175, 136, 1.0),  ),  title: Text(  _plants[index].pName,  ),  subtitle: Text(  _plants[index].pLatinName  ),  onTap: () {  Navigator.push(  context, MaterialPageRoute(builder: (context) =gt; DetailPage(plant: _plants[index],)));  },  ),  ],  ),  ));  },  itemCount: _plants.length,  ),  padding: const EdgeInsets.only(top:4.0)  ),  );  } }  

Он показывает пустой экран только тогда, когда я нажимаю, и я понятия не имею, как кто-нибудь может знать, почему он это делает? Я попытался добавить Героя, так как это было единственное решение, которое я нашел в Интернете, но оно тоже не сработало.

пустой экран

Комментарии:

1. Это происходит потому, что вы вызываете несуществующую страницу: (MyApp()) на странице регистрации. Это должна быть моя страница()

2. @Дэвис, Как я это пропустил, извините за беспокойство. И спасибо, что помогли мне

Ответ №1:

Вам нужно вызвать класс в MaterialApp вот так,

 void main() {  runApp(const AllPlants()); }  class AllPlants extends StatelessWidget {  const AllPlants({Key? key}) : super(key: key);   // This widget is the root of your application.  @override  Widget build(BuildContext context) {  return MaterialApp(  title: 'WePlant',  theme: ThemeData(  textTheme: GoogleFonts.robotoTextTheme(  Theme.of(context).textTheme,  ),  scaffoldBackgroundColor: const Color(0xFFFEFFEE)  ),  home: Register()  // you call any class here as per your requirement  );  } }