首页 > 解决方案 > Flutter Dart - 如何将数据从一个类获取到另一个类

问题描述

我是颤振框架的新手。我制作了一个应用程序来通过 SF 滑块小部件可视化数据。

这是我的代码,我想以某种方式从widgets.dart文件中的其他类获取main.dart文件中的数据

main.dart 文件

//import 'dart:math';
//import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_blue/flutter_blue.dart';
import 'widgets.dart';
import 'package:syncfusion_flutter_sliders/sliders.dart';
import 'package:syncfusion_flutter_gauges/gauges.dart';
import 'package:intl/intl.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.lightGreen,
      ),
      home: StreamBuilder<BluetoothState>(
          stream: FlutterBlue.instance.state,
          initialData: BluetoothState.unknown,
          builder: (c, snapshot) {
            final state = snapshot.data;
            if (state == BluetoothState.on) {
              return FindDevicesScreen();
            }
            return BluetoothOffScreen(state: state);
          }),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
} 

class _MyHomePageState extends State<MyHomePage> {
  final ScanResultTile jamJam = new ScanResultTile();
  double _value = 40.0;
  double _valueP = 940.0;
  double _valueH = 54.0;

  @override
  Widget build(BuildContext context) {}
}

_MyHomePageState类中,我想从下面的文件类ScanResultTile获取数据结果任何建议,我该怎么做?

小部件.dart 文件

import 'package:flutter_blue/flutter_blue.dart';
//import 'package:firebase_database/firebase_database.dart';
//import 'package:http/http.dart' as http;
//import 'dart:convert';

class ScanResultTile extends StatelessWidget {
  const ScanResultTile({Key key, this.result, this.onTap}) : super(key: key);

  final ScanResult result;
  final VoidCallback onTap;

  Widget _buildTitle(BuildContext context) {
    if (result.device.name.length > 0) {
      return Column(
        mainAxisAlignment: MainAxisAlignment.start,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          Text(
            result.device.name,
            overflow: TextOverflow.ellipsis,
          ),
          Text(
            result.device.id.toString(),
            style: Theme.of(context).textTheme.caption,
          )
        ],
      );
    } else {
      return Text(result.device.id.toString());
    }
  }

  Widget _buildAdvRow(BuildContext context, String title, String value) {
    return Padding(
      padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 4.0),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          Text(title, style: Theme.of(context).textTheme.caption),
          SizedBox(
            width: 12.0,
          ),
          Expanded(
            child: Text(
              value,
              style: Theme.of(context)
                  .textTheme
                  .caption
                  ?.apply(color: Colors.black),
              softWrap: true,
            ),
          ),
        ],
      ),
    );
  }
String getData(String hexData) {
    List<String> myData = hexData.split(',');
    if (myData[0] == '61') {
      String temp = (myData[2] + myData[3] + myData[4] + myData[5]);
      String fTemp = temp.replaceAll(' ', '');
      String tNum = ((int.parse(fTemp, radix: 16)) / 100).toString();

      String pres = (myData[7] + myData[8] + myData[9]);
      String fPres = pres.replaceAll(' ', '');
      String pNum = ((int.parse(fPres, radix: 16)) / 100).toString();

      String rh = (myData[11] + myData[12] + myData[13]);
      String frh = rh.replaceAll(' ', '');
      String rhNum = ((int.parse(frh, radix: 16)) / 1024).toString();

      String result = 'Temp: $tNum deg C, Pres: $pNum hPa, RH $rhNum %';

      return result;
    }return "Garuda"
}

先感谢您!

标签: androidflutterdartmobile-application

解决方案


推荐阅读