简体   繁体   English

将变量传递给Stateful类之外的Widget

[英]Pass variable to a Widget outside Stateful class

What is the best way to pass variable (photoUrl) to a Widget? 将变量(photoUrl)传递到小部件的最佳方法是什么? Adding widget inside state class it says: Only static members can be accessed in initializers. 在状态类中添加小部件时,它说:在初始化器中只能访问静态成员。

Changing method to static neither solves my issue. 将方法更改为static不能解决我的问题。

class _ABState extends State<AB> {
  int _selectedPage = 0;
  String photoUrl; /* Value set in initState()*/

  /* To switch between pages */
  final _pageOptions = [
    Text('Page 1'),
    accountPage(), /* Page 2 */
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pageOptions[_selectedPage],
    );
  }
}

/* Widget outside class requires photoUrl */
Widget accountPage() {
  return Container(
    decoration: BoxDecoration(
      image: DecorationImage(
        image: NetworkImage(photoUrl),
      ),
    ),
  );
}

You are calling accountPage() at the initializer, but photoUrl is set only on initState() , so even if accountPage() had access to photoUrl , it would get the wrong value. 您正在初始化器上调用accountPage() ,但是photoUrl仅在initState()上设置,因此,即使accountPage()可以访问photoUrl ,它也会得到错误的值。

I suggest the following: 我建议以下内容:

class _ABState extends State<AB> {
  int _selectedPage = 0;
  String photoUrl;
  List<Widget>_pageOptions;

  @override
  void initState() {
    super.initState();
    photoUrl = "<PLACE_YOUR_VALUE>";
    _pageOptions = [
      Text('Page 1'),
      accountPage(photoUrl),
    ];
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pageOptions[_selectedPage],
    );
  }
}

Widget accountPage(String photoUrl) {
  return Container(
    decoration: BoxDecoration(
      image: DecorationImage(
        image: NetworkImage(photoUrl),
      ),
    ),
  );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在类/有状态小部件之外调用 setState? - How to call setState outside class/stateful widget? "如何在构建方法之外访问 State 类中的 Stateful 小部件变量?" - How to access Stateful widget variable inside State class outside the build method? 如何通过引用状态小部件传递数据? 我想在有状态的小部件内更改变量并更新原始变量 - How to pass data by reference to stateful widget? I want to change a variable inside a stateful widget and update original variable 有没有办法在 flutter 中的有状态 class 之外重新渲染小部件 - Is there any way to re-render a widget outside Stateful class in flutter 从另一个小部件/ class 更新有状态 class 内的变量 - Update a variable inside stateful class from another widget / class 如何将数据从 Singleton 传递到 Stateful Widget class? - How to pass data from Singleton to Stateful Widget class? 将有状态 class 的 state 的值传递给不同的小部件? - Pass value from state of stateful class to different widget? 当 stream 在小部件树之外的 class 中获得新值时,如何在有状态 class 中重建小部件? - How to rebuild widget in stateful class when stream gets new value in a class outside of widget tree? 如何在flutter中访问有状态小部件中的类变量? - How do access a class variable in stateful widget in flutter? 如何将数据传递给有状态的小部件 - How to pass data to stateful widget
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM