我是flutter世界的新手。我正在使用底部導航欄,但我不知道如何將資料從底部導航欄頁面傳遞到主頁,因為主頁期望有一個引數。我在其他頁面之間傳遞資料,但我找不到在底部導航欄和主頁之間傳遞資料的方法。 謝謝你的幫助
這是我的導航頁代碼
import 'package:chat_app/models/user_model.dart' ;
import 'package:chat_app/screens/call_log_screen.dart';
import 'package:chat_app/screens/chat_screen.dart';
import 'package:chat_app/screens/home_screen.dart';
import 'package:chat_app/screens/search_screen.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class CustomBottomNavigationBar extends StatefulWidget{
UserModel用戶。
CustomBottomNavigationBar(this.user)。
.
_CustomBottomNavigationBarState createState() =>
_CustomBottomNavigationBarState()。
}
class _CustomBottomNavigationBarState extends State< CustomBottomNavigationBar> {
int _selectedIndex = 0;
late final screens = [
HomeScreen(widget.user)。
CallLog()。
CallLog()。
CallLog()。
];
void onTapped(int index) {
print(widget.user.name)。
setState(() {
_selectedIndex = index;
});
}
Widget build(BuildContext context) {
return Scaffold(
body: screens[_selectedIndex],
bottomNavigationBar: BottomNavigationBar(
backgroundColor: Colors.black,
selectedIconTheme: IconThemeData(color: Colors.blue),
currentIndex: 2。
專案。[
BottomNavigationBarItem(
圖示。Icon(
CupertinoIcons.settings,
color: Colors.gray,
),
標簽。'hi'。
),
底部導航欄專案(
圖示。Icon(
CupertinoIcons.home,
color: Colors.gray,
),
標簽。'hi'。
),
底部導航欄專案(
圖示。Icon(
CupertinoIcons.phone,
color: Colors.gray,
),
標簽。'hi'。
),
底部導航欄專案(
圖示。Icon(
CupertinoIcons.chat_bubble_text,
color: Colors.gray,
),
標簽。'hi'。
),
],
onTap: onTapped,
),
);
}
}
而這是我的主頁代碼
import 'package:cached_network_image/cached_network_image.dart'/span>;
import 'package:chat_app/models/user_model.dart'。
import 'package:chat_app/screens/chat_screen.dart';
import 'package:chat_app/screens/search_screen.dart';
import 'package:chat_app/widgets/bottom_navigation_bar.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:intl/intl.dart';
import 'auth_screen.dart';
class HomeScreen extends StatefulWidget{
UserModel user。
HomeScreen(this.user)。
_HomeScreenState createState() => _HomeScreenState()。
}
class _HomeScreenState extends State< HomeScreen> with WidgetsBindingObserver{
void initState() {
// TODO: implement initState
super.initState()。
WidgetsBinding.instance!.addObserver(this)。
setStatus('online')。
}
void setStatus(String status) async {
await FirebaseFirestore.instance
.collection('users')
.doc(widget.user.uid)
.update({"userStatus": status}) 。
}
//MaterialPageRoute()
// builder: (context) => SearchScreen(widget.user),
// ),
// (route) => false);
},
孩子。Icon(CupertinoIcons.search)。
),
bottomNavigationBar: CustomBottomNavigationBar(widget.user)。
);
}
}
uj5u.com熱心網友回復:
你不能在初始化器中訪問實體成員widget。
試試這個
class _CustomBottomNavigationBarState extends State< CustomBottomNavigationBar> {
int _selectedIndex = 0;
late final List 螢屏。
void initState() {
super.initState()。
螢屏 = [
HomeScreen(widget.user),
CallLog()。
CallLog()。
CallLog()。
];
}
...
//其余的代碼。
uj5u.com熱心網友回復:
嘗試使用這個包底部導航欄
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/308583.html
標籤:
