0

下部のナビゲーション バーを使用し、下部に 3 つのボタンを追加しました。setsate でページを交換していました。これらのボタンは正常に機能します。しかし、これらのボタンで呼び出されたページ内で別のページを呼び出すと、BottomNavigationBar が消えます。私はそれを調査し、これが私をクリックすることを発見しました。Provider を使用してページを呼び出すことは論理的ですか? すべてのページをメモリに保持していると思いますが、RAM を消費しすぎていませんか?

 import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  int selectedPage = 0;

  final _pageOptions = [
    HomeScreen(),
    InboxScreen(),
    SignInScreen()
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white,
        body: _pageOptions[selectedPage],
        bottomNavigationBar: BottomNavigationBar(
          items: [
            BottomNavigationBarItem(icon: Icon(Icons.home, size: 30), title: Text('Home')),
            BottomNavigationBarItem(icon: Icon(Icons.mail, size: 30), title: Text('Inbox')),
            BottomNavigationBarItem(icon: Icon(Icons.account_circle, size: 30), title: Text('Account')),
          ],
          selectedItemColor: Colors.green,
          elevation: 5.0,
          unselectedItemColor: Colors.green[900],
          currentIndex: selectedPage,
          backgroundColor: Colors.white,
          onTap: (index){
            setState(() {
              selectedPage = index;
            });
          },
        )
    );
  }
}

これは私のホームページです。 テキストをクリックすると、BottomNavigationBar が消えます

class _HomePage extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(appBar: AppBar(title: Text('Page2')),body:GestureDetector(
        onTap: () {
    
            Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewScreen()));

        },
        child:Text('clik')));
  }
}

私はこれが好きですが これしたい 、私のコードはこれを実行します これではない

4

1 に答える 1