最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

超過百萬的StackOverflow Flutter 20大問題(推薦)

 更新時(shí)間:2020年04月17日 10:05:24   作者:老孟程序員  
這篇文章主要介紹了超過百萬的StackOverflow Flutter 問題,有的問題在stackoverflow上有幾十萬的閱讀量,說明很多人都遇到了這些問題,把這些問題整理分享給大家需要的朋友可以參考下

今天分享StackOverflow上高訪問量的20大問題,這些問題給我一種特別熟悉的感覺,我想你一定或多或少的遇到過,有的問題在stackoverflow上有幾十萬的閱讀量,說明很多人都遇到了這些問題,把這些問題整理分享給大家,每期20個(gè),每隔2周分享一次。

如何實(shí)現(xiàn)Android平臺(tái)的wrap_content 和match_parent

你可以按照如下方式實(shí)現(xiàn):

1、Width = Wrap_content Height=Wrap_content:

Wrap(
 children: <Widget>[your_child])

2、Width = Match_parent Height=Match_parent:

Container(
  height: double.infinity,
 width: double.infinity,child:your_child)

3、Width = Match_parent ,Height = Wrap_conten:

Row(
 mainAxisSize: MainAxisSize.max,
 children: <Widget>[*your_child*],
);

4、Width = Wrap_content ,Height = Match_parent:

Column(
 mainAxisSize: MainAxisSize.max,
 children: <Widget>[your_child],
);

如何避免FutureBuilder頻繁執(zhí)行future方法

錯(cuò)誤用法:

@override
Widget build(BuildContext context) {
 return FutureBuilder(
 future: httpCall(),
 builder: (context, snapshot) {
  
 },
 );
}

正確用法:

class _ExampleState extends State<Example> {
 Future<int> future;

 @override
 void initState() {
 future = Future.value(42);
 super.initState();
 }

 @override
 Widget build(BuildContext context) {
 return FutureBuilder(
  future: future,
  builder: (context, snapshot) {
  
  },
 );
 }
}

底部導(dǎo)航切換導(dǎo)致重建問題

在使用底部導(dǎo)航時(shí)經(jīng)常會(huì)使用如下寫法:

Widget _currentBody;

@override
Widget build(BuildContext context) {
 return Scaffold(
 body: _currentBody,
 bottomNavigationBar: BottomNavigationBar(
  items: <BottomNavigationBarItem>[
  	...
  ],
  onTap: (index) {
  _bottomNavigationChange(index);
  },
 ),
 );
}

_bottomNavigationChange(int index) {
 switch (index) {
 case 0:
  _currentBody = OnePage();
  break;
 case 1:
  _currentBody = TwoPage();
  break;
 case 2:
  _currentBody = ThreePage();
  break;
 }
 setState(() {});
}

此用法導(dǎo)致每次切換時(shí)都會(huì)重建頁面。

解決辦法,使用IndexedStack

int _currIndex;

@override
Widget build(BuildContext context) {
 return Scaffold(
 body: IndexedStack(
  index: _currIndex,
  children: <Widget>[OnePage(), TwoPage(), ThreePage()],
  ),
 bottomNavigationBar: BottomNavigationBar(
  items: <BottomNavigationBarItem>[
  	...
  ],
  onTap: (index) {
  _bottomNavigationChange(index);
  },
 ),
 );
}

_bottomNavigationChange(int index) {
 setState(() {
  _currIndex = index;
 });
}

TabBar切換導(dǎo)致重建(build)問題

通常情況下,使用TabBarView如下:

TabBarView(
 controller: this._tabController,
 children: <Widget>[
 _buildTabView1(),
 _buildTabView2(),
 ],
)

此時(shí)切換tab時(shí),頁面會(huì)重建,解決方法設(shè)置PageStorageKey

var _newsKey = PageStorageKey('news');
var _technologyKey = PageStorageKey('technology');

TabBarView(
 controller: this._tabController,
 children: <Widget>[
 _buildTabView1(_newsKey),
 _buildTabView2(_technologyKey),
 ],
)

Stack 子組件設(shè)置了寬高不起作用

在Stack中設(shè)置100x100紅色盒子,如下:

Center(
 child: Container(
 height: 300,
 width: 300,
 color: Colors.blue,
 child: Stack(
  children: <Widget>[
  Positioned.fill(
   child: Container(
   height: 100,
   width: 100,
   color: Colors.red,
   ),
  )
  ],
 ),
 ),
)

此時(shí)紅色盒子充滿父組件,解決辦法,給紅色盒子組件包裹Center、Align或者UnconstrainedBox,代碼如下:

Positioned.fill(
 child: Align(
 child: Container(
  height: 100,
  width: 100,
  color: Colors.red,
 ),
 ),
)

如何在State類中獲取StatefulWidget控件的屬性

class Test extends StatefulWidget {
 Test({this.data});
 final int data;
 @override
 State<StatefulWidget> createState() => _TestState();
}

class _TestState extends State<Test>{

}

如下,如何在_TestState獲取到Test的data數(shù)據(jù)呢:

  • 在_TestState也定義同樣的參數(shù),此方式比較麻煩,不推薦。
  • 直接使用widget.data(推薦)。

default value of optional parameter must be constant

上面的異常在類構(gòu)造函數(shù)的時(shí)候會(huì)經(jīng)常遇見,如下面的代碼就會(huì)出現(xiàn)此異常:

class BarrageItem extends StatefulWidget {
 BarrageItem(
  { this.text,
  this.duration = Duration(seconds: 3)});

異常信息提示:可選參數(shù)必須為常量,修改如下:

const Duration _kDuration = Duration(seconds: 3);

class BarrageItem extends StatefulWidget {
 BarrageItem(
  {this.text,
  this.duration = _kDuration});

定義一個(gè)常量,Dart中常量通常使用k開頭,_表示私有,只能在當(dāng)前包內(nèi)使用,別問我為什么如此命名,問就是源代碼中就是如此命名的。

如何移除debug模式下右上角“DEBUG”標(biāo)識(shí)

MaterialApp(
 debugShowCheckedModeBanner: false
)

如何使用16進(jìn)制的顏色值

下面的用法是無法顯示顏色的:

Color(0xb74093)

因?yàn)镃olor的構(gòu)造函數(shù)是ARGB,所以需要加上透明度,正確用法:

Color(0xFFb74093)

FF表示完全不透明。

如何改變應(yīng)用程序的icon和名稱

鏈接:https://blog.csdn.net/mengks1987/article/details/95306508

如何給TextField設(shè)置初始值

class _FooState extends State<Foo> {
 TextEditingController _controller;

 @override
 void initState() {
 super.initState();
 _controller = new TextEditingController(text: '初始值');
 }

 @override
 Widget build(BuildContext context) {
 return TextField(
   controller: _controller,
  );
 }
}

Scaffold.of() called with a context that does not contain a Scaffold

Scaffold.of()中的context沒有包含在Scaffold中,如下代碼就會(huì)報(bào)此異常:

class HomePage extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return Scaffold(
  appBar: AppBar(
  title: Text('老孟'),
  ),
  body: Center(
  child: RaisedButton(
   color: Colors.pink,
   textColor: Colors.white,
   onPressed: _displaySnackBar(context),
   child: Text('show SnackBar'),
  ),
  ),
 );
 }
}

_displaySnackBar(BuildContext context) {
 final snackBar = SnackBar(content: Text('老孟'));
 Scaffold.of(context).showSnackBar(snackBar);
}

注意此時(shí)的context是HomePage的,HomePage并沒有包含在Scaffold中,所以并不是調(diào)用在Scaffold中就可以,而是看context,修改如下:

_scaffoldKey.currentState.showSnackBar(snackbar);

或者:

Scaffold(
 appBar: AppBar(
  title: Text('老孟'),
 ),
 body: Builder(
  builder: (context) => 
   Center(
   child: RaisedButton(
   color: Colors.pink,
   textColor: Colors.white,
   onPressed: () => _displaySnackBar(context),
   child: Text('老孟'),
   ),
  ),
 ),
);

Waiting for another flutter command to release the startup lock

在執(zhí)行flutter命令時(shí)經(jīng)常遇到上面的問題,

解決辦法一:

1、Mac或者Linux在終端執(zhí)行如下命令:

killall -9 dart

2、Window執(zhí)行如下命令:

taskkill /F /IM dart.exe

解決辦法二:

刪除flutter SDK的目錄下/bin/cache/lockfile文件。

無法調(diào)用setState

不能在StatelessWidget控件中調(diào)用了,需要在StatefulWidget中調(diào)用。

設(shè)置當(dāng)前控件大小為父控件大小的百分比

1、使用FractionallySizedBox控件

2、獲取父控件的大小并乘以百分比:

MediaQuery.of(context).size.width * 0.5

Row直接包裹TextField異常:BoxConstraints forces an infinite width

解決方法:

Row(
	children: <Widget>[
		Flexible(
			child: new TextField(),
		),
 ],
),

TextField 動(dòng)態(tài)獲取焦點(diǎn)和失去焦點(diǎn)

獲取焦點(diǎn):

FocusScope.of(context).requestFocus(_focusNode);

_focusNode為TextField的focusNode:

_focusNode = FocusNode();

TextField(
	focusNode: _focusNode,
	...
)

失去焦點(diǎn):

_focusNode.unfocus();

如何判斷當(dāng)前平臺(tái)

import 'dart:io' show Platform;

if (Platform.isAndroid) {
 // Android-specific code
} else if (Platform.isIOS) {
 // iOS-specific code
}

平臺(tái)類型包括:

Platform.isAndroid
Platform.isFuchsia
Platform.isIOS
Platform.isLinux
Platform.isMacOS
Platform.isWindows

Android無法訪問http

其實(shí)這本身不是Flutter的問題,但在開發(fā)中經(jīng)常遇到,在Android Pie版本及以上和IOS 系統(tǒng)上默認(rèn)禁止訪問http,主要是為了安全考慮。

Android解決辦法:

./android/app/src/main/AndroidManifest.xml配置文件中application標(biāo)簽里面設(shè)置networkSecurityConfig屬性:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
 <application android:networkSecurityConfig="@xml/network_security_config">
		 <!-- ... -->
 </application>
</manifest>

./android/app/src/main/res目錄下創(chuàng)建xml文件夾(已存在不用創(chuàng)建),在xml文件夾下創(chuàng)建network_security_config.xml文件,內(nèi)容如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
 <base-config cleartextTrafficPermitted="true">
  <trust-anchors>
   <certificates src="system" />
  </trust-anchors>
 </base-config>
</network-security-config>

IOS無法訪問http

./ios/Runner/Info.plist文件中添加如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	...
	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
	</dict>
</dict>
</plist>

交流

Github地址:https://github.com/781238222/flutter-do

170+組件詳細(xì)用法:http://laomengit.com

總結(jié)

到此這篇關(guān)于超過百萬的StackOverflow Flutter 20大問題的文章就介紹到這了,更多相關(guān)StackOverflow Flutter 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 兩種Android打電話實(shí)現(xiàn)方法

    兩種Android打電話實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了兩種Android打電話實(shí)現(xiàn)方法,具有一定的實(shí)用性,感興趣的小伙伴們可以參考一下
    2016-08-08
  • RxJava 1升級(jí)到RxJava 2過程中踩過的一些“坑”

    RxJava 1升級(jí)到RxJava 2過程中踩過的一些“坑”

    RxJava2相比RxJava1,它的改動(dòng)還是很大的,那么下面這篇文章主要給大家總結(jié)了在RxJava 1升級(jí)到RxJava 2過程中踩過的一些“坑”,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下來要一起看看吧。
    2017-05-05
  • Android AlertDialog六種創(chuàng)建方式案例詳解

    Android AlertDialog六種創(chuàng)建方式案例詳解

    這篇文章主要介紹了Android AlertDialog六種創(chuàng)建方式案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • flutter監(jiān)聽app進(jìn)入前后臺(tái)狀態(tài)的實(shí)現(xiàn)

    flutter監(jiān)聽app進(jìn)入前后臺(tái)狀態(tài)的實(shí)現(xiàn)

    在開發(fā)app的過程中,我們經(jīng)常需要知道app處于前后臺(tái)的狀態(tài),本文主要介紹了flutter監(jiān)聽app進(jìn)入前后臺(tái)狀態(tài)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Android利用MediaRecorder實(shí)現(xiàn)錄音功能

    Android利用MediaRecorder實(shí)現(xiàn)錄音功能

    這篇文章主要為大家詳細(xì)介紹了Android利用MediaRecorder實(shí)現(xiàn)錄音功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解Flutter如何在單個(gè)屏幕上實(shí)現(xiàn)多個(gè)列表

    詳解Flutter如何在單個(gè)屏幕上實(shí)現(xiàn)多個(gè)列表

    這篇文章主要為大家詳細(xì)介紹了Flutter如何在單個(gè)屏幕上實(shí)現(xiàn)多個(gè)列表,這些列表可以水平排列、網(wǎng)格格式、垂直排列,甚至是這些常用布局的組合,感興趣的小伙伴可以了解下
    2023-11-11
  • Android Studio 多層級(jí) Module 對(duì) aar 引用問題解決方法

    Android Studio 多層級(jí) Module 對(duì) aar 引用問題解決方法

    這篇文章主要介紹了Android Studio 多層級(jí) Module 對(duì) aar 引用問題的解決方法,需要的朋友參考下
    2017-12-12
  • Android中ViewPager實(shí)現(xiàn)滑動(dòng)指示條及與Fragment的配合

    Android中ViewPager實(shí)現(xiàn)滑動(dòng)指示條及與Fragment的配合

    這篇文章主要介紹了Android中ViewPager實(shí)現(xiàn)滑動(dòng)指示條及與Fragment的配合,使用Fragment實(shí)現(xiàn)ViewPager的滑動(dòng)是一種比較推薦的做法,需要的朋友可以參考下
    2016-03-03
  • VideoView實(shí)現(xiàn)視頻無縫連續(xù)播放

    VideoView實(shí)現(xiàn)視頻無縫連續(xù)播放

    這篇文章主要為大家詳細(xì)介紹了VideoView實(shí)現(xiàn)視頻無縫連續(xù)播放,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 淺析安卓(Android)的性能優(yōu)化

    淺析安卓(Android)的性能優(yōu)化

    性能優(yōu)化是一個(gè)大的范疇,如果有人問你在Android中如何做性能優(yōu)化的,也許都不知道從哪開始說起。那么這篇文章我們從布局優(yōu)化和內(nèi)存優(yōu)化兩個(gè)方面來展開說如何進(jìn)行Android的性能優(yōu)化。
    2016-08-08

最新評(píng)論

丹江口市| 舞阳县| 广元市| 庆阳市| 抚州市| 万荣县| 阿尔山市| 屏南县| 莱阳市| 炎陵县| 永顺县| 金塔县| 丰都县| 常宁市| 沛县| 蕲春县| 湘阴县| 仁怀市| 正阳县| 华容县| 开化县| 客服| 织金县| 禹城市| 农安县| 山阴县| 锡林郭勒盟| 中西区| 东兰县| 分宜县| 永德县| 高碑店市| 时尚| 扶余县| 梅州市| 房产| 大连市| 临泉县| 邵东县| 达州市| 凯里市|