首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据从StatefulWidget传递到StatefulWidget (错误)

如何将数据从StatefulWidget传递到StatefulWidget (错误)
EN

Stack Overflow用户
提问于 2020-07-16 22:29:52
回答 1查看 64关注 0票数 0

我完全是个新手。

我想要做的是(通过TextController)将数据从StatefulWidget传递给另一个数据。

这是我的代码(被动Widget)

代码语言:javascript
复制
import 'package:flutter/material.dart';

class VocabularyText extends StatefulWidget {
  final String text;

  // ignore: sort_constructors_first
  const VocabularyText ({ Key key, this.text }): super(key: key);

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

class _VocabularyTextState extends State<VocabularyText> {
  Offset offset = Offset.zero;

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Positioned(
        left: offset.dx,
        top: offset.dy,
        child: GestureDetector(
            onPanUpdate: (details) {
              setState(() {
                offset = Offset(
                    offset.dx + details.delta.dx, offset.dy + details.delta.dy);
              });
            },
            child: const SizedBox(
              width: 300,
              height: 300,
              child: Padding(
                padding: EdgeInsets.all(8),
                child: Center(
                  child: Text(
                      'a',
                      textAlign: TextAlign.center,
                      style: TextStyle(
                          fontWeight: FontWeight.bold,
                          fontSize: 28,
                          color: Colors.red
                      )
                  ),
                ),
              ),
            )),
      ),
    );
  }
}

东西就在这里

代码语言:javascript
复制
                  child: Text(
//
                      widget.text,
//
                      textAlign: TextAlign.center,
                      style: TextStyle(
                          fontWeight: FontWeight.bold,
                          fontSize: 28,
                          color: Colors.red
                      )
                  ),

根据我的研究,这应该是可行的,但它不起作用。为什么我会犯错?

以下是参考资料

提前谢谢你。

编辑

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-16 23:43:44

我回答说,在看到图像之前,它没有在那里,在看到图像之后,是什么导致了这个问题

代码语言:javascript
复制
widget.text

在文本小部件中使用它的正确方法如下

代码语言:javascript
复制
Text('${widget.text}'),

我建议你做下面的事

要首先将数据发送到,您可以使用Navigator或任何其他方法向用户打开这个小部件,如下所示

代码语言:javascript
复制
               return GestureDetector(
                           onTap: () => {
                             Navigator.push(
                               context,
                               MaterialPageRoute(builder: (context) => 
                               //note here between the () you pass the variable
                              Categories(companies[index].id, companies[index].name)),
                             )},

然后,为了接收它们,您会这样做,在我的例子中,它的类别类

代码语言:javascript
复制
class Categories extends StatefulWidget {
  //getting company id from home page
  final int companyId;
  final companyName;
  Categories(this.companyId , this.companyName);
  @override
  _CategoriesState createState() => _CategoriesState();
}



class _CategoriesState extends State<Categories> {
  @override
  Widget build(BuildContext context) {
...... rest of the code

现在,要使用像这样的数据,例如

代码语言:javascript
复制
widget.companyId

这是我的代码中的一个示例,现在让我们跳到您的代码

若要从文本编辑控制器接收文本,请执行以下操作

代码语言:javascript
复制
class TextReceiver extends StatefulWidget {
  //getting company id from home page
  final String userInput;
  TextReceiver(this.userInput);
  @override
  TextReceiver createState() => _TextReceiver();
}
//to use it
widget.userInput

现在要发送它,您通过发送它

代码语言:javascript
复制
                       onTap: () => {
                         Navigator.push(
                           context,
                           MaterialPageRoute(builder: (context) => TextReceiver(TextEditingController.text)),
                         )},

注意,您应该将它作为TextEditingController.text传递,因为TextReceiver中的构造函数指定要字符串的类型,如果您传递了TextEditingController,那么类型将不是String,而是TextEditingController类型

例如,所有这些代码都不像您的代码,但是它会给您提供这样的想法

参考官方文档https://flutter.dev/docs/cookbook/navigation/passing-data

编辑:从该行中删除const

代码语言:javascript
复制
child: const SizedBox(
  rest of the code
)

to this

 child: SizedBox(
   rest of the code
 )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62944452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档