【发布时间】:2020-12-09 03:26:24
【问题描述】:
我正在尝试使用 async memoizer 对后端进行 url 调用并将值返回到我的屏幕。这是我的代码:
我的数据仓库
import 'package:new_app/data/trainer_repository.dart';
import 'package:new_app/models/trainer.dart';
import 'package:rxdart/rxdart.dart';
import 'dart:async';
import 'package:async/async.dart';
class TrainerBLoc {
final trainerSource = BehaviorSubject<Trainer>();
final AsyncMemoizer _memoizer = AsyncMemoizer();
Stream<Trainer> get trainerStream => trainerSource.stream;
Future<Trainer> fetchTrainer() async {
return _memoizer.runOnce(() async {
final trainer = await trainerRepository.getTrainer();
return trainer;
});
}
void dispose() {
trainerSource?.close();
}
}
final TrainerBLoc trainerBLoc = TrainerBLoc();
培训师模型
import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart';
class Trainer extends Equatable {
final String name;
final String phoneNumber;
final String email;
final String image;
final String state;
final String lg;
Trainer({
@required this.name,
@required this.phoneNumber,
@required this.email,
@required this.image,
@required this.state,
@required this.lg,
});
@override
List<Object> get props => [phoneNumber, name, email, image];
}
我的主要小部件
class _TrainerScreenState extends State<TrainerScreen> {
Future<Trainer> _trainer;
@override
void initState() {
_trainer = trainerBLoc.fetchTrainer();
super.initState();
}
.....
但我得到错误 getter 'name' 调用为 null。没有记忆器,代码运行良好。任何帮助将不胜感激
【问题讨论】:
标签: flutter asynchronous