0

アプリに入った後、HomePage() をデフォルトのページとして設定するにはどうすればよいですか? 私のアプリの設計では、ホーム ボタンを下の NavBar の中央に配置しました。

Bottom NavBar は問題なく動作し、中央から開始しますが、ページは常に CameraPage() から開始します

コードは次のようになります

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.cyan,
      ),
      home: Home(),
    );
  }
}

これはホーム()です

class Home extends StatefulWidget {
  Home({Key key}) : super(key: key);

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  PageController _pageController = new PageController();
  List<Widget> _screens = [
    CameraPage(),
    HomePage(),
    InventoryPage(),
  ];

  int _selectedIndex = 0;
  void _onPagedChanged(int index) {
    setState(() {
      _selectedIndex = index;
    });
  }

  void _onItemTapped(int selectedIndex) {
    _pageController.jumpToPage(selectedIndex);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Color(0xfff8f5f1),
      bottomNavigationBar: CurvedNavigationBar(
        index: _selectedIndex,
        onTap: _onItemTapped,
        items: <Widget>[
          ImageIcon(
            AssetImage(''),
            size: 30,
          ),
          ImageIcon(
            AssetImage(''),
            size: 30,
          ),
          ImageIcon(
            AssetImage(''),
            size: 30,
          ),
        ],
      ),
      body: PageView(
        controller: _pageController,
        children: _screens,
        onPageChanged: _onPagedChanged,
      ),
    );
  }
}
4

4 に答える 4

0
class Home extends StatefulWidget {
  Home({Key key}) : super(key: key);

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  PageController _pageController = new PageController();
  List<Widget> _screens = [
    CameraPage(),
    HomePage(),
    InventoryPage(),
  ];

  int _selectedIndex = 1;
  void _onPagedChanged(int index) {
    setState(() {
      _selectedIndex = index;
    });
  }

  void _onItemTapped(int selectedIndex) {
    _pageController.jumpToPage(selectedIndex);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Color(0xfff8f5f1),
      bottomNavigationBar: CurvedNavigationBar(
        index: _selectedIndex,
        onTap: _onItemTapped,
        items: <Widget>[
          ImageIcon(
            AssetImage(''),
            size: 30,
          ),
          ImageIcon(
            AssetImage(''),
            size: 30,
          ),
          ImageIcon(
            AssetImage(''),
            size: 30,
          ),
        ],
      ),
      body: PageView(
        controller: _pageController,
        children: _screens,
        onPageChanged: _onPagedChanged,
      ),
    );
  }
}
于 2021-03-24T18:56:16.940 に答える