我被困在我的项目中,我有两个有状态的小部件在颤动中创建为两个不同的dart文件.现在,我必须访问第二个小部件中第一个小部件中创建的对象的实例,但我不确定在创建小部件时如何在颤动时执行此操作.
我想到的一个可能的解决方案是在一个dart文件中声明两个小部件而不是两个布局的两个dart文件,但我很好奇我们是否可以通过在两个单独的dart文件中声明来完成它.
我发布文件只是为了重新创建问题.
main.dart
import 'package:flutter/material.dart';
import 'package:untitled2/models.dart';
import 'package:untitled2/secondwidget.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
),);
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
final TextEditingController _nameController = new TextEditingController();
final TextEditingController _emailIdController = new
TextEditingController();
final TextEditingController _passwordController = new
TextEditingController();
final TextEditingController _confirmPasswordController = new
TextEditingController();
MyModel myModel = new MyModel();
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
body: new ListView( …Run Code Online (Sandbox Code Playgroud) 1.请允许有人告诉我如何创建一行文本框,这些文本框可以在ListView内向左或向右滚动.我可以看到我试图在有限宽度ListView中定义无限宽度.但是,无法弄清楚这个的任何解决方法.
如果只是在customscrollview中注释scrolldirection属性(即,将scrolldirection更改为vertical),下面提到的代码就可以正常工作.但是,我正在寻找一个横向滚动.我试图解决这个问题,但没有运气.
有人可以帮忙,让我知道我做错了什么.

我已经发布了下面的代码来重现相同的错误;
此致,Mahi
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
void main(){
runApp(new AddNewBlock());
}
class AddNewBlock extends StatefulWidget{
@override
State<StatefulWidget> createState() {
return new _AddNewBlockState();
}
}
class _AddNewBlockState extends State<AddNewBlock>{
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Add New Block',
debugShowCheckedModeBanner: false,
home: new Scaffold(
body: new ListView(
shrinkWrap: true,
children: <Widget>[
new Container(
margin: const EdgeInsets.only(
left: 16.0,top: 24.0, bottom: 8.0,
),
child: new Text(
'Add New Block',
style: new TextStyle(
fontSize: 18.0, …Run Code Online (Sandbox Code Playgroud) 我再次回到与我已经在堆栈溢出错误中发布的问题相关的问题:'_elements.contains(element)': is not true
这个问题一直困扰着我,但我无法重现同样的问题,现在我以某种方式再次尝试重现,我已经发布了代码让每个人弄清楚我做错了什么导致了这个断言错误和使应用程序崩溃。
我是编程新手,任何帮助将不胜感激。我已经精简了代码,我知道一些错误。但是,唯一的主要问题是Failed assertion: line 3927 pos 14: '_dependents.isEmpty': is not true.和Failed assertion: line 1766 pos 12: '_elements.contains(element)': is not true.
重现步骤。
main.dart
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_database/firebase_database.dart';
import 'package:untitled1/addnewbranch.dart';
void main() {
runApp(
new MaterialApp(
home: new Branches(),
),
);
}
class ProjectModel {
BranchSetUpModelData branchesModel;
ProjectModel(this.branchesModel);
}
class BranchSetUpModelData {
String branchName;
String hostelType;
String area;
String city;
BranchSetUpModelData(this.branchName, this.hostelType, this.area, this.city); …Run Code Online (Sandbox Code Playgroud) 有没有办法可以将地图对象保存到共享首选项中,以便我们可以从共享首选项中获取数据,而不是一直监听数据库.实际上我想减少从firebase下载的数据量.所以我正在考虑一个解决方案,让共享prefs的监听器和从共享的prefs读取数据.
但是,我没有看到一种方法来实现这一点,不仅仅是飞舞或飞镖.
如果有解决方法,有人可以帮助我实现这一目标.
非常感谢,Mahi
我实际上是在尝试将拍摄的图像转换ImagePicker为base64图像.我总是得到错误.
FileSystemException: Cannot open file, path =
'file:///storage/emulated/0/Download/Abid_Wipro_neemuchwala1-
770x433.jpg' (OS Error: No such file or directory, errno = 2)
E/flutter ( 5042): #0 _File.throwIfError
(dart:io/file_impl.dart:628)
E/flutter ( 5042): #1 _File.openSync
(dart:io/file_impl.dart:472)
E/flutter ( 5042): #2 _File.readAsBytesSync
(dart:io/file_impl.dart:532)
Run Code Online (Sandbox Code Playgroud)
我正在使用的代码是这个.
File fileData;
/////////////...........
new Container(
child: new FutureBuilder<File>(
future: imageFile,
builder: (BuildContext context, AsyncSnapshot<File> snapshot) {
if (snapshot.connectionState == ConnectionState.done &&
snapshot.data != null) {
fileData = snapshot.data;
return new Container(
height: MediaQuery.of(context).size.height / 2,
width: MediaQuery.of(context).size.width,
margin: …Run Code Online (Sandbox Code Playgroud) 我在构建中使用了DropDownButton,但我希望箭头显示在最后,而下拉项目将从箭头显示,但在我的应用程序中,它们从顶部显示.我附上截图供您参考.
请告诉我如何改变这个或者是否还有其他方法可以简单地创建一个下拉菜单.
一个例子将非常感激.
请原谅我的代码,因为我是编程新手,欢迎提出任何意见或建议.
非常感谢,Mahi.
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'dart:ui';
void main(){
runApp(new BranchSetup());
}
class BranchSetup extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new _BranchSetupState();
}
}
class _BranchSetupState extends State<BranchSetup> with
WidgetsBindingObserver {
@override
Widget build(BuildContext context){
return new MaterialApp(
theme: new ThemeData(
primaryColor: const Color(0xFF229E9C),
),
title: 'Branch Setup',
home: new Scaffold(
body: new Container(
child: new ListView(
children: <Widget>[
new Container(
margin: const EdgeInsets.all(16.0),
child: new Row(
children: <Widget>[
new Expanded(
child: new TextFormField( …Run Code Online (Sandbox Code Playgroud) 我实际上是试图从我的扑动应用程序发送短信,而无需用户的互动.我知道我可以使用url_launcher启动短信应用程序但我实际上想要在没有用户交互的情况下发送短信或从我的颤动应用程序启动短信.
有人可以告诉我这是否可行.
非常感谢,Mahi
我实际上是想弄清楚该应用程序是在我的flutter应用程序中是在智能手机还是平板电脑上运行,但包装device_info只能显示有关设备的信息,而不能告知该设备是智能手机还是平板电脑。有没有一种方法可以通过检查设备的大小来做到这一点。
非常感谢Mahi
'_elements.contains(element)': is not true.过去两天我在我的颤振项目中看到了这个错误,从一开始就工作得很好。我很抱歉这么说,但我对这个错误一无所知,但我想我错过了导致这个错误的东西。此外,当我热重新加载同一页面时,布局已填充,但会引发异常。
间歇性地,这也显示检测到 Duplicate GlobalKeys(),但一开始并非如此。
如果他们之前偶然发现这些错误,请有人帮助我。我真的不能写一个例子来重现同样的问题。非常感谢。
我已经给出了错误的详细信息如下:
Performing hot reload...
I/flutter (22248): ??? EXCEPTION CAUGHT BY WIDGETS LIBRARY
????????????????????????????????????????????????????????????
I/flutter (22248): The following assertion was thrown building
TickerMode(mode: disabled):
I/flutter (22248): 'package:flutter/src/widgets/framework.dart': Failed
assertion: line 1766 pos 12:
I/flutter (22248): '_elements.contains(element)': is not true.
I/flutter (22248):
I/flutter (22248): Either the assertion indicates an error in the framework
itself, or we should provide substantially
I/flutter (22248): more information in this error message to help you
determine and fix …Run Code Online (Sandbox Code Playgroud) 我connectivity在我的 flutter 中使用插件来检查连接状态,但PlatForm Exception(No active stream to cancel, null)即使我已经处理了空情况,偶尔也会遇到错误。我已订阅流initState并取消订阅dispose状态
我的代码看起来像这样。
StreamSubscription streamConnectionStatus;
------------
//remaining code
------------
@override
void initState() {
getConnectionStatus();
}
getConnectionStatus() async {
streamConnectionStatus = new Connectivity()
.onConnectivityChanged
.listen((ConnectivityResult result) {
// Got a new connectivity status!
if (result == ConnectivityResult.mobile ||
result == ConnectivityResult.wifi) {
setState(() {
boolHasConnection = true;
});
} else {
setState(() {
boolHasConnection = false;
});
}
});
@override
void dispose() {
try {
streamConnectionStatus?.cancel(); …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我为什么我的应用程序根本没有安装,并以错误消息结束
天文台连接从未准备好.
该应用程序工作完全正常,直到昨天.
我已经在命令提示符中将频道更改为昨天,然后应用程序永远不会运行.
我甚至切换回频道alpha但仍然没用.
我附上了命令提示符的屏幕截图,其中安装永远被卡住了.
我不太确定我是否需要重新安装颤振器.我担心如果我卸载颤振,它现在可能无法正确配置,我可能永远打破它.
请有人能告诉我究竟可能出了什么问题.
非常感谢,Mahi
我实际上map在 Dart 中使用s 并且我无法弄清楚为什么map我的示例中的变量表现得很奇怪,或者我在我的代码中做错了什么。
请有人帮我调试代码,我已经发布了代码来重现问题。
例子.dart
void main() {
var data2 = {};
var data1 = {};
var floorDetails = new Map();
floorDetails.clear();
for (int i = 0; i < 2; i++) {
data2.clear();
data1.clear();
for (int j = 0; j < 2; j++) {
data1 = {
'flat${(i + 1) * 100 + (j + 1)}': {'flattype': "flat"},
};
data2.addAll(data1);
}
print('data2=$data2');
floorDetails['floor${(i+1)}'] = data2;
print('floorDetails = $floorDetails');
}
print(floorDetails.keys);
}
Run Code Online (Sandbox Code Playgroud)
代码的输出是:
floorDetails = { …Run Code Online (Sandbox Code Playgroud)