android - 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"
}
先感谢您!
解决方案
推荐阅读
- c++11 - 关闭文件时出现分段错误(核心转储)(C++)
- python - 不常见的 Numpy 运算符列表(<<、>>、&、|、~、@ 等)以及它们的作用
- python - Qt Designer和PyQt程序中verticalLayout的大小不同
- r - 处理函数 R 中的错误(如 Excel 中的 IFERROR)
- yocto - 由于配方之间的冲突,Yocto 构建失败
- mobile - 如何在 KaiOS 设备上截屏(诺基亚 8110 4G)
- ios - 使用“!”的问题 将在未来的版本中删除
- c# - 访问文件夹被拒绝 C#
- java - javafx 场景构建器控制器单元测试
- c++ - 如何输出向量双精度?并在我的整数之前停止