flutter - 如何在flutter中传递上下文或静态类中的任何参数?

标签 flutter dart static-methods

我目前正在使用pagewise包实现分页。但是要使用pagecontroller,我必须定义一个静态 Controller 和一个静态的future函数,它们将使用http连接到我的api。我的问题是,在使用提供程序检索的API请求中,我还需要当前用户ID作为参数。而且我还需要BuildContext在API请求返回时显示对话框。是否可以像下面的示例代码那样在全局或类外部保存id和上下文?请教我如何正确执行此操作。

int id;
BuildContext currentContext;

class MyWidgetView extends StatefulWidget {
  @override
  _MyWidgetViewState createState() => _MyWidgetViewState();
}

class _MyWidgetViewState extends State<MyWidgetView> {
  bool _empty = false;

  @override
  void initState() {
    super.initState();
    currentContext = context;
    id = Provider.of<User>(context, listen: false).id;
    this._pageLoadController.addListener(() {
      if (this._pageLoadController.noItemsFound) {
        setState(() {
          this._empty = this._pageLoadController.noItemsFound;
        });
      }
    });
  }

  final _pageLoadController = PagewiseLoadController(
      pageSize: PAGE_SIZE, pageFuture: (pageIndex) => getPage(pageIndex));
      
  static Future<List<page>> getPage(int pageIndex) async {
    final APIService _pageService = APIService();
    final pages = await _pageService.getPage(id: id);
    if (pages.error == false) {
      return pages.data;
    } else {
      dialogBox(
          title: 'Error',
          message: pages.errorMessage,
          context: currentContext,
          isModal: true,
          function: () => Navigator.pop(currentContext));
    }
  }

最佳答案

那个static是一个兔子洞,您不应该遵循。只是首先不要使其成为static

PagewiseLoadController _pageLoadController; 

@override
void initState() {
  super.initState();

  _pageLoadController = PagewiseLoadController(pageSize: PAGE_SIZE, pageFuture: (pageIndex) => getPage(pageIndex));

  // rest of your method here    
}
现在,您的getPage方法可以是普通的非静态类方法。

关于flutter - 如何在flutter中传递上下文或静态类中的任何参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64274672/

相关文章:

flutter - 如何访问 ListView.builder 中每个类中具有多个项目的 List 类型的模型数据

flutter - 如何限制 flutter 流的结果计数

dart - 你如何在 Polymer 中调度和监听自定义事件?

c# - 静态类优缺点

c# - 在该类的静态方法中创建该类的实例是否干净?

Java对子类的静态反射

dart - 使用Flutter导航和路线时如何保持BottomNavigationBar

Flutter 构建函数返回 null

kotlin - Dart 相当于 Kotlin 的 let 是什么?

flutter setstate 只重建一个 child