Flutter не может запустить приложение
Решил сделать навигацию по приложению через BottomNavigationBar, а в 'body' указываю индекс той страницы, на которой находится пользователь. Если запустить код так, то будет пустой белый лист. Если же убрать body, код запускается, но пользователь не сможет перемещаться по страницам. Не понимаю в чём ошибка
import 'package:incelynn_todo/pages/home.dart';
class MyCompany extends StatefulWidget {
const MyCompany({Key? key}) : super(key: key);
@override
State<MyCompany> createState() => _MyCompanyState();
}
class _MyCompanyState extends State<MyCompany> {
int currentIndex = 0;
final screens = [
const Home(),
const MyCompany(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black87,
appBar: AppBar(
title: Text('StartUp!'),
backgroundColor: Colors.white12,
centerTitle: true,
),
body: IndexedStack(
index: currentIndex,
children: screens,
),
bottomNavigationBar: BottomNavigationBar(
backgroundColor: Colors.white12,
fixedColor: Colors.white70,
unselectedItemColor: Colors.white30,
currentIndex: currentIndex,
onTap: (index) => setState(() => currentIndex = index),
items: const [
BottomNavigationBarItem(label: ('Home'), icon: Icon(Icons.home)),
BottomNavigationBarItem(
label: ('Company'), icon: Icon(Icons.business)),
],
),
);
}
}```
Ответы (1 шт):
Автор решения: Денис Пикс
→ Ссылка
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
splashFactory: InkRipple.splashFactory,
),
debugShowCheckedModeBanner: false,
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int pageIndex = 0;
List<Widget> pageList = [
const Center(child: Text('menu')),
const Center(child: Text('settings')),
const Center(child: Text('search'))
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: pageList[pageIndex],
bottomNavigationBar: bottomAppBar(),
);
}
Widget bottomAppBar() {
return BottomNavigationBar(
elevation: 3,
type: BottomNavigationBarType.fixed,
showSelectedLabels: false,
showUnselectedLabels: false,
currentIndex: pageIndex,
onTap: (int i) {
setState(() => pageIndex = i);
},
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.menu),
activeIcon: Icon(Icons.menu_outlined),
label: 'Menu',
),
BottomNavigationBarItem(
icon: Icon(Icons.settings),
activeIcon: Icon(Icons.settings_outlined),
label: 'Settings',
),
BottomNavigationBarItem(
icon: Icon(Icons.search),
activeIcon: Icon(Icons.search_outlined),
label: 'Search',
),
],
);
}
}