朋友你好,我在flutter应用程序中遇到了一个非常奇怪的问题!当我在调试模式下测试我的应用程序时,在发布模式下它可以正常工作,它显示白屏,实际上此应用程序已经在几天后发布在playstore中,我更改了该应用程序要在尝试构建版本apk时发布第二个版本,其在调试模式下会显示白屏,并且运行正常,为什么会发生抖动版本问题?请在下面检查 两个屏幕截图? image one
查看此图像 image two
这是代码
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:tv/Online.dart';
import 'package:tv/paypal.dart';
import 'package:url_launcher/url_launcher.dart';
class Donateus extends StatefulWidget {
@override
_DonateusState createState() => _DonateusState();
}
class _DonateusState extends State<Donateus> {
bool _isExpandedonline=false;
bool _isExpandedpaypal=false;
bool _isExpandedetransfer=false;
bool _isExpandedtexttogive=false;
void customLaunch(command) async {
if (await canLaunch(command)) {
await launch(command);
} else {
print(' could not launch $command');
}
}
@override
void initState() {
// TODO: implement initState
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
scrollDirection: Axis.vertical,
child:Padding(
padding: EdgeInsets.all(10),
child: Container(
child:Expanded(
child: Column(
children: <Widget>[
Text(
'WAYS TO DONATE',
style: TextStyle(
fontFamily: 'TT NORMS',
fontSize: 20,
fontWeight: FontWeight.w100,
),
),
Padding(
padding: EdgeInsets.only(left: 10),
child: Text(
'All of our Donations are processed through Cornerstone Asian Church.We are a registered Canadian Charity (842869265RR0001). A Canadian Tax-deductible receipt will be issued to you.',
style: TextStyle(
fontSize: 14
),
),
),
Padding(
padding: EdgeInsets.only(left: 10),
child: ExpansionTile(
onExpansionChanged: (value) {
_isExpandedonline=value;
setState(() {});
},
children: <Widget>[
Text(
'Give a single gift, or schedule a recurring amount by using your Credit cards (i.e Mastercard, VISA, AMEX).'
'Note: Cornerstone uses the giving provider, Tithe.ly to securely process online donations from all over the world. Our Church will cover all associated fees for this service which are 2.5% + 15 cents (CAD) for all Credit Cards. AMEX is 3.5% + 30 cents (CAD). However, if you wish to cover the fees as well, you can click on the option to "Cover Fees".',style: TextStyle(
fontSize: 14,
),)
],
title: Row(
children: <Widget>[
Image.asset(
'images/online.png',
),
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Online()),
);
},
child: Text(
'Online Giving',
style: TextStyle(
fontFamily: 'TT NORMS',
fontSize: 18,
fontWeight: FontWeight.w100,
color: _isExpandedonline ? Colors.amber[800] : Colors.black,
),
),
)
],
)),
),
Padding(
padding: EdgeInsets.only(left: 10),
child: ExpansionTile(
onExpansionChanged: (value) {
_isExpandedpaypal=value;
setState(() {});
},
children: <Widget>[
Text(
'You can send your funds through PayPal to email livinghopetv@cornerstoneasianchurch.com',style: TextStyle(
fontSize: 14,
),)
],
title: Row(
children: <Widget>[
Image.asset(
'images/paypal.png',
),
Padding(
padding: EdgeInsets.only(left: 10),
child: Text(
'PAYPAL',
style: TextStyle(
fontFamily: 'TT NORMS',
color:_isExpandedpaypal ? Colors.amber[800] : Colors.black,
fontSize: 18,
fontWeight: FontWeight.w100,
),
),
),
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => paypal()),
);
},
child: Image.asset(
'images/donatebutton.png',
height: 33,
),
)
],
)),
),
Padding(
padding: EdgeInsets.only(left: 10),
child: ExpansionTile(
onExpansionChanged: (value) {
_isExpandedetransfer=value;
setState(() {});
},
children: <Widget>[
Text(
'You can send your funds via Interac E-Transfer to email*',style: TextStyle(
fontSize: 14,
),),
Text(
'
cacoffering@gmail.com',
style: TextStyle(
color: Colors.blue,
fontSize: 18,
),
),
Text(
'
This is an auto-deposit account
so you you do not have to set up any password.
Please do indicate the Purpose for your donation.
This service is only available within Canada.',style: TextStyle(
fontSize: 14,
),),
],
title: Row(
children: <Widget>[
Image.asset(
'images/etransfer.png',
height: 28,
),
Text(
'INTERAC E-TRANSFER',
style: TextStyle(
fontFamily: 'TT NORMS',
fontSize: 18,
fontWeight: FontWeight.w100,
color:_isExpandedetransfer? Colors.amber[800] : Colors.black,
),
),
],
)),
),
Padding(
padding: EdgeInsets.only(left: 10),
child: ExpansionTile(
onExpansionChanged: (value) {
_isExpandedtexttogive=value;
setState(() {});
},
children: <Widget>[
Text('STEP 1: TEXT the word GIVE to',style: TextStyle(
fontSize: 14,
),),
Text(
'(844) 329-1637',
style: TextStyle(
color: Colors.red,
),
),
SizedBox(
height: 20,
),
Text(
'STEP 2: Complete the information on link received via TEXT for the first time only.',style:TextStyle(
fontSize: 14,
),),
SizedBox(
height: 20,
),
Text(
'STEP 3: Once you are setup for TEXT GIVING you can continue to TEXT the amount without having to fill your information again. Simply TEXT the amounti.e 10, 15 etc to the number directly.',style: TextStyle(
fontSize: 14,
),)
],
title: Row(
children: <Widget>[
Image.asset(
'images/text.png',
height: 30,
),
GestureDetector(
onTap: () {
customLaunch('sms:8443291637');
},
child: Padding(
padding: EdgeInsets.only(left: 10),
child: Text(
'TEXT TO GIVE',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.w100,
fontFamily: 'TT NORMS',
color:_isExpandedtexttogive? Colors.amber[800] : Colors.black,
),
),
),
)
],
)),
),
],
),
),
),
),
),
);
}
}
答案 0 :(得分:0)
在android清单中检查android.permission.INTERNET
答案 1 :(得分:0)
如果在发布器或配置文件模式下出现此类空白屏幕,则小部件库例外在哪里?在调试应用程序时,您可以在调试控制台中捕获异常。
在您的代码中,我发现Container
中没有有用的Expanded
和SingleChildScrollView
小部件。考虑删除它们,应该会有所帮助。
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
scrollDirection: Axis.vertical,
child:Padding(
padding: EdgeInsets.all(10),
child: Column(
children: ...
),
),
),
);
}
答案 2 :(得分:0)
删除扩展的这一行代码,问题是您不能在子级中使用扩展,这意味着扩展小部件必须是后代或父级,在调试模式下,您可以清楚地看到Incorrect Usage of Parent Widget
可以在调试模式,但在发布版本中它将显示空白页面,因此请注意上述警告或错误
用法不正确
child: Container(
child:Expanded(
child: Column(
示例
Expanded(
child: Container(),
),
在行/列中
Row(
children: [
Expanded(
child: MyWidget(),
),
Expanded(
child:Text("Text Widget"),
),
],
)
答案 3 :(得分:0)
很遗憾,可能有多个原因导致此问题。我遇到的一个问题是,对于Android构建,minifyEnabled似乎默认情况下处于打开状态。我设置
shrinkResources false
minifyEnabled false
useProguard false
,构建按预期运行。只需将useProguard设置为true,而其他设置false则将代码压缩到以前的程度;因为迷惑。 有关更多信息,请参见https://medium.com/@swav.kulinski/flutter-and-android-obfuscation-8768ac544421
答案 4 :(得分:0)
当我将 gradle 版本从 gradle-5.6.2-all 升级到 gradle-6.1.1-all 并构建 gradle com.android.tools.build:gradle:3.5.0 到 com.android.tools.build:gradle :4.0.1
最后,我得到了在 app/buidl.gradle 文件中添加的解决方案。
buildTypes {
release {
signingConfig signingConfigs.debug
shrinkResources false
minifyEnabled false
useProguard false
}
}
答案 5 :(得分:0)
我遇到了同样的问题,这当然是我的错。我尝试更改 buildconfig.release
配置、不同的 gradle 版本、删除风格,但这是一个简单的异步错误,数据在初始化(获取)之前就开始显示。
调试模式下的应用程序运行良好,但在发布时显示白屏。错误与真正的原因完全不同:如果你在白屏上点击会有这样的消息:
E/flutter ( 6149): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: Null check operator used on a null value
E/flutter ( 6149): #0 RenderBox.hitTest (package:flutter/src/rendering/box.dart:2234)
E/flutter ( 6149): #1 RenderBoxContainerDefaultsMixin.defaultHitTestChildren.<anonymous closure> (package:flutter/src/rendering/box.dart:2596)
E/flutter ( 6149): #2 BoxHitTestResult.addWithPaintOffset (package:flutter/src/rendering/box.dart:787)
E/flutter ( 6149): #3 RenderBoxContainerDefaultsMixin.defaultHitTestChildren (package:flutter/src/rendering/box.dart:2591)
E/flutter ( 6149): #4 RenderCustomMultiChildLayoutBox.hitTestChildren (package:flutter/src/rendering/custom_layout.dart:412)