代码之家  ›  专栏  ›  技术社区  ›  Zero Kim

我如何通过streambuilder获得价值?

  •  0
  • Zero Kim  · 技术社区  · 1 年前

    语言:飞镖(Flutter)

    问题:无法获取Streambuilder的值

    您好,通过restapi通过web套接字接收的实时数据。 我想在应用程序屏幕上实时显示收到的数据 我使用了Streambuilder,快照变为空。我该怎么办?欢迎提供建议。

    // home_screen.dart (Files to Run)
    import 'dart:async';
    import 'package:flutter/material.dart';
    import 'package:kis/services/domestic_fo/real_time/future_hoka.dart';
    
    class HomeScreen extends StatelessWidget {
      HomeScreen({super.key});
    
      Stream realfuture = realFutureHoka();
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: StreamBuilder(
            stream: realfuture,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                return Text('${snapshot.data}');
                // I want is this line
              }
              return Center(child: CircularProgressIndicator());
              // but result this line
            },
          ),
          backgroundColor: Colors.white,
        );
      }
    }
    
    
    

    我可以通过WebSocket通道接收值.print 结果类型为字符串 在使用streambuilder之前没有问题

    // future_hoka.dart (Data Files Received by WebSocket)
    Stream realFutureHoka() async* {
      final channel = WebSocketChannel.connect(
          Uri.parse("ws://ops.koreainvestment.com:21000/tryitout/H0IFASP0"));
      await channel.ready;
      channel.sink.add(
        jsonEncode(
          {
            "header": {
              "appkey": appkey,
              "appsecret": appsecret,
              'custtype': 'P',
              'tr_type': '1',
              'content-type': 'utf-8'
            },
            "body": {
              "input": {"tr_id": "H0IFASP0", "tr_key": FUTURE_CODE}
            }
          },
        ),
      );
      channel.stream.listen(
        (data) {
          print(data);
          return data;
        },
      );
    }
    
    
    0 回复  |  直到 1 年前