Flutter中的Provider(五)-异步刷新-FutureProvider

这是一个异步的Provider,效果跟FutureBuild差不多,代码源自于以下:
https://flutterbyexample.com/lesson/future-provider
FutureBuild的使用可以参考以下链接:
https://blog.csdn.net/Mr_Tony/article/details/111572642
经过简单修改,只保留最核心的逻辑用于展示FutureProvider的用法。
FutureProvider是一个状态管理的工具,使用FutureProvider可以做到数据的解耦,而使用FutureBuild最起码也要传递一个构造函数。简单代码如下:

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

void main() => runApp(MyApp());

class Home {
  final String city = "Portland";

  Future<String> get fetchAddress {
    final address = Future.delayed(Duration(seconds: 2), () {
      return '1234 North Commercial Ave.';
    });

    return address;
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Material App Bar'),
        ),
        body:HomeBody(),
      ),
    );
  }
}

class HomeBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: FutureProvider<String>(//外面有一层Center的意思想表达Provider用在那里都行,不一定非要在根布局,当然根布局的范围最广
        initialData: '数据正在初始化...',
        create: (context)=>Home().fetchAddress,
        child:ChildBody(),
      ),
    );
  }
}

class ChildBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text('${context.watch<String>()}'),
    );
  }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值