gpt4 book ai didi

dart - 使用 bloc 框架时如何为文本字段提供默认值

转载 作者:IT王子 更新时间:2023-10-29 06:38:04 25 4
gpt4 key购买 nike

我编写了一些简单的 Flutter 应用程序,它们使用有状态的小部件/表单/文本表单字段来输入和管理数据。现在我正在尝试了解如何使用 BLoC 和流构建器来完成类似的工作。但我不知道如何为我的字段设置初始值。

我尝试创建一个我能想出的最简单的示例,即使用 bloc 的微型应用程序。这只是采用输入到 TextField 中的名称并将其回显到下一行。

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

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

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Bloc Example',
home: MyHomePage(),
);
}
}

class MyHomePage extends StatelessWidget {
MyHomePage();

String initialData = 'Fred';

@override
Widget build(BuildContext context) {

TextEditingController _controller = new TextEditingController();

return Scaffold(
appBar: AppBar(title: Text('Bloc Example')),
body: Center(
child: Column(
children: <Widget>[
StreamBuilder(
initialData: initialData,
stream: bloc.nameStream,
builder: (context, snapshot) {
if ( snapshot.connectionState == ConnectionState.waiting)
_controller.text = snapshot.data;
return TextField(
controller: _controller,
onChanged: bloc.nameChangedStream,
decoration: InputDecoration(labelText: 'Enter name' ),
);
}
),
StreamBuilder(
initialData: initialData,
stream: bloc.nameStream, //
builder: (context, snapshot) {
return Text('Name is ${snapshot.hasData ? snapshot.data : 'unknown'}');
}
),
],
),
),
);
}
}

class Bloc
{
final nameStreamController = BehaviorSubject<String>();
Stream<String> get nameStream => nameStreamController.stream;
Function(String) get nameChangedStream => nameStreamController.sink.add ;
}

final Bloc bloc = new Bloc();

我不知道如何为我的姓名字段指定初始值。

我必须承认,来自旧式编程背景,我花了一些时间才让我的思想进入响应式编程 - 但向前和向上!

编辑 - 感谢给出的评论 - 更新代码以使用 TextEditingController 和 StreamBuilder initialData 的组合并且似乎工作正常。如果有更好的解决方案,很乐意接受进一步的评论:)

最佳答案

你可以给你的 behaviorSubject 一个种子值,通过这样做将用作它的初始值。

final nameStreamController = BehaviorSubject<String>.seeded('InitialName');  

对于旧版本的 rxDart,使用

final nameStreamController = BehaviorSubject<String>(seedValue:'InitialName'); 

关于dart - 使用 bloc 框架时如何为文本字段提供默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com