Уже возможно:
- Навигация по экранам с помощью BottomNavigationBar + BottomNavigationBarItem
- Навигация с помощью Navigator.push(context,MaterialPageRoute(builder: (context) => Screen4()),);
- Наличие подэкранов на экранах BottomNavigationBar
Я хочу, чтобы три основных экрана Screen1(), Screen2() и Screen3() были доступны из BottomNavigationBar. В Screen1() есть кнопка для перехода к другому экрану, назовем ее Screen4(), где пользователь может выбирать элементы из списка. Затем вы можете добавить все выбранные элементы в список и вернуться обратно к Screen1().
Для этого я создал код ниже. Основной виджет тела будет изменен в соответствии с текущим индексом выбранного BottomNavigationItem.
main.dart
Код: Выделить всё
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
static const String _title = 'Code Sample';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: MyApp(),
);
}
}
class MyApp extends StatefulWidget {
MyApp({Key key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State {
int _selectedIndex = 0;
static const List _widgetOptions = [
Screen1(),
Screen2(),
Screen3(),
];
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Stackoverflow Example'),
),
body: Center(
child: _widgetOptions.elementAt(_selectedIndex),
),
bottomNavigationBar: BottomNavigationBar(
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.home),
title: Text('Screen1'),
),
BottomNavigationBarItem(
icon: Icon(Icons.business),
title: Text('Screen2'),
),
BottomNavigationBarItem(
icon: Icon(Icons.school),
title: Text('Screen3'),
),
],
currentIndex: _selectedIndex,
selectedItemColor: Colors.amber[800],
onTap: _onItemTapped,
),
);
}
}
Код: Выделить всё
Navigator.push(context,MaterialPageRoute(builder: (context) => Screen4()),);
Если у кого-то есть пример, где это достигается, я буду очень рад.
Спасибо за чтение.
Подробнее здесь: https://stackoverflow.com/questions/587 ... in-flutter
Мобильная версия