Это мой код для моего приложения Flutter, которое я кодирую на vscdoe: < /p>
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter/foundation.dart';
import '/screens/login_screen.dart';
import '/screens/home_screen.dart';
import '/screens/register_screen.dart';
import '/screens/advice_screen.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
try {
// Load .env file for non-web platforms
if (!kIsWeb) {
await dotenv.load(fileName: ".env");
// Check if the variable is loaded
String? openAiKey = dotenv.env['OPENAI_API_KEY'];
print('Dotenv Loaded: OPENAI_API_KEY = $openAiKey');
} else {
print("Running on Web. Skipping dotenv load.");
}
// Initialize Firebase
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
print("Firebase initialized successfully.");
// Run the app once Firebase is initialized
runApp(const MyApp());
} catch (e) {
print("Error during Firebase initialization: $e");
runApp(const MyAppWithError()); // Show an error screen if Firebase fails to initialize
}
}
// Error screen to show if Firebase initialization fails
class MyAppWithError extends StatelessWidget {
const MyAppWithError({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Task Manager',
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: Text(
'Error initializing Firebase. Please try again later.',
style: TextStyle(fontSize: 18, color: Colors.red),
),
),
),
);
}
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
String? openAiKey = dotenv.env['OPENAI_API_KEY'];
print('OPENAI_API_KEY in MaterialApp: $openAiKey');
return MaterialApp(
title: 'Task Manager',
debugShowCheckedModeBanner: false,
theme: ThemeData(
useMaterial3: true,
scaffoldBackgroundColor: const Color(0xFFEFF2FB),
colorScheme: ColorScheme.fromSeed(
seedColor: const Color(0xFFB8C0FF),
primary: const Color(0xFFB8C0FF),
secondary: const Color(0xFFB8E0FF),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: Colors.white,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.blue.shade200, width: 2),
borderRadius: BorderRadius.circular(12),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.blue.shade100, width: 1),
borderRadius: BorderRadius.circular(12),
),
),
textTheme: const TextTheme(
titleLarge: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
bodyMedium: TextStyle(fontSize: 16),
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFFB8E0FF),
foregroundColor: Colors.black,
padding: const EdgeInsets.symmetric(vertical: 14, horizontal: 24),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
textStyle: const TextStyle(fontWeight: FontWeight.bold),
),
),
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
foregroundColor: const Color(0xFF6C63FF),
textStyle: const TextStyle(decoration: TextDecoration.underline),
),
),
),
home: const AuthWrapper(),
routes: {
'/register': (context) => const RegisterScreen(),
'/home': (context) => const HomeScreen(),
'/login': (context) => const LoginScreen(),
'/advice': (context) => const AdviceScreen(),
},
);
}
}
class AuthWrapper extends StatelessWidget {
const AuthWrapper({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
// Show loading indicator while waiting for auth state
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(
body: Center(child: CircularProgressIndicator()),
);
}
// Show error message if there's an error with the authentication stream
if (snapshot.hasError) {
return const Scaffold(
body: Center(child: Text("Error loading user state")),
);
}
// Navigate to HomeScreen if user is authenticated, else to LoginScreen
return snapshot.hasData ? const HomeScreen() : const LoginScreen();
},
);
}
}
< /code>
Я получаю ошибку: ══╡ Исключение, пойманное библиотекой виджетов. MyApp: file: /// c:/users/abuls/desktop/adhd_task_manager/lib/main.dart: 34: 18
help ???
Подробнее здесь: https://stackoverflow.com/questions/795 ... tly-get-th
Попытка запустить мое приложение Flutter на моем эмуляторе Android Studio и постоянно получает ошибку [закрыто] ⇐ Android
Форум для тех, кто программирует под Android
1745509313
Anonymous
Это мой код для моего приложения Flutter, которое я кодирую на vscdoe: < /p>
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter/foundation.dart';
import '/screens/login_screen.dart';
import '/screens/home_screen.dart';
import '/screens/register_screen.dart';
import '/screens/advice_screen.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
try {
// Load .env file for non-web platforms
if (!kIsWeb) {
await dotenv.load(fileName: ".env");
// Check if the variable is loaded
String? openAiKey = dotenv.env['OPENAI_API_KEY'];
print('Dotenv Loaded: OPENAI_API_KEY = $openAiKey');
} else {
print("Running on Web. Skipping dotenv load.");
}
// Initialize Firebase
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
print("Firebase initialized successfully.");
// Run the app once Firebase is initialized
runApp(const MyApp());
} catch (e) {
print("Error during Firebase initialization: $e");
runApp(const MyAppWithError()); // Show an error screen if Firebase fails to initialize
}
}
// Error screen to show if Firebase initialization fails
class MyAppWithError extends StatelessWidget {
const MyAppWithError({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Task Manager',
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: Text(
'Error initializing Firebase. Please try again later.',
style: TextStyle(fontSize: 18, color: Colors.red),
),
),
),
);
}
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
String? openAiKey = dotenv.env['OPENAI_API_KEY'];
print('OPENAI_API_KEY in MaterialApp: $openAiKey');
return MaterialApp(
title: 'Task Manager',
debugShowCheckedModeBanner: false,
theme: ThemeData(
useMaterial3: true,
scaffoldBackgroundColor: const Color(0xFFEFF2FB),
colorScheme: ColorScheme.fromSeed(
seedColor: const Color(0xFFB8C0FF),
primary: const Color(0xFFB8C0FF),
secondary: const Color(0xFFB8E0FF),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: Colors.white,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.blue.shade200, width: 2),
borderRadius: BorderRadius.circular(12),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.blue.shade100, width: 1),
borderRadius: BorderRadius.circular(12),
),
),
textTheme: const TextTheme(
titleLarge: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
bodyMedium: TextStyle(fontSize: 16),
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFFB8E0FF),
foregroundColor: Colors.black,
padding: const EdgeInsets.symmetric(vertical: 14, horizontal: 24),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
textStyle: const TextStyle(fontWeight: FontWeight.bold),
),
),
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
foregroundColor: const Color(0xFF6C63FF),
textStyle: const TextStyle(decoration: TextDecoration.underline),
),
),
),
home: const AuthWrapper(),
routes: {
'/register': (context) => const RegisterScreen(),
'/home': (context) => const HomeScreen(),
'/login': (context) => const LoginScreen(),
'/advice': (context) => const AdviceScreen(),
},
);
}
}
class AuthWrapper extends StatelessWidget {
const AuthWrapper({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
// Show loading indicator while waiting for auth state
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(
body: Center(child: CircularProgressIndicator()),
);
}
// Show error message if there's an error with the authentication stream
if (snapshot.hasError) {
return const Scaffold(
body: Center(child: Text("Error loading user state")),
);
}
// Navigate to HomeScreen if user is authenticated, else to LoginScreen
return snapshot.hasData ? const HomeScreen() : const LoginScreen();
},
);
}
}
< /code>
Я получаю ошибку: ══╡ Исключение, пойманное библиотекой виджетов. MyApp: file: /// c:/users/abuls/desktop/adhd_task_manager/lib/main.dart: 34: 18
help ???
Подробнее здесь: [url]https://stackoverflow.com/questions/79582855/trying-to-run-my-flutter-app-on-my-android-studio-emulator-and-constantly-get-th[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия