Flutter Widgets – 访问父流

我的主屏幕上有一个flutter中的Streambuilder,是这样的。

然后我有一个SilverListDelegate 它有一个小部件列表

class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    final auth = AuthProvider.of(context).auth;
    return Scaffold(
        body: StreamBuilder<User>(
            stream: auth.user,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                User user = snapshot.data;
                return CustomScrollView(
                  slivers: <Widget>[
                    SliverList(
                      delegate: SliverChildListDelegate([
                        SizedBox(height: 40),
                        userImageWidget,
                        userNameWidget,
                        ....,

小组件是这样定义在 HomeScreenState 类中的。

  Widget userNameWidget = Text('Show Username',
      textAlign: TextAlign.center,
      style: TextStyle(
        fontSize: 28,
        fontWeight: FontWeight.bold,
        color: Colors.white,
      ));

在这种情况下,我如何从流中获取用户名?

我知道如果我把 Text 我可以说是直接在SliverList中使用代码。Text(user.firstName) 但如果我把它放到上面的widget中就不行了,因为它会抛出 “undefined name: user”。

谅谅

解决方案:

你必须为Text Widget提取一个自己的widget,然后你可以把值传给它。然后你可以把值传给它。

class UserTextWidget extends StatelessWidget {
  final String username;

  const UserTextWidget({Key key, this.username}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Text('Show $username',
        textAlign: TextAlign.center,
        style: TextStyle(
          fontSize: 28,
          fontWeight: FontWeight.bold,
          color: Colors.white,
        ));
  }
}

或者你可以创建一个方法来返回文本部件,而不是一个变量。

  Widget userNameWidget(String username){
    return Text('Show $username',
      textAlign: TextAlign.center,
      style: TextStyle(
        fontSize: 28,
        fontWeight: FontWeight.bold,
        color: Colors.white,
      ));

https:/codepen.iomd-weberpenLYpWWdr)。

给TA打赏
共{{data.count}}人
人已打赏
未分类

键盘处理 swiftui

2022-9-9 3:18:17

未分类

在DynamoDB中设计表

2022-9-9 3:18:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索