原文链接:https://juejin.im/post/5c91a8da5188252db75696c0
1. 路由开启下一个页面的,后退黑屏问题
当Navigator.push开启下一个页面,这个页面Navigator.pop(context)回到上一个页面出现黑屏,把当前页面的MaterialApp去掉就好
2. 弹软键盘,布局随键盘顶上去问题
在Scaffold加属性resizeToAvoidBottomPadding: false
3. 弹软键盘,iOS关闭不了软键盘
在布局外层包裹一层点击事件
-
InkWell( -
onTap: () { -
FocusScope.of(context).requestFocus(FocusNode()); -
}, -
child: child -
) -
复制代码
4. ScrollView 嵌套 ListView 滚动问题
-
ListView.builder( -
shrinkWrap: true, -
physics: NeverScrollableScrollPhysics(),// 主要这个 -
padding: EdgeInsets.fromLTRB(15, 0, 15, 15), -
itemCount: subjects.length, -
itemBuilder: (BuildContext context, int position) { -
return getItem(context, subjects[position]); -
}); -
复制代码
5. Android 嵌套Flutter 后退键返回上一级页面处理
-
override fun onBackPressed() { -
if (flutterView != null) { -
flutterView?.popRoute() -
} else { -
super.onBackPressed() -
} -
} -
复制代码
6. 国际化 当用一些控件时 默认是英文这时候就需要国际化了(例如:选择日期组件)
-
依赖:flutter_localizations: -
sdk: flutter -
import 'package:flutter_localizations/flutter_localizations.dart'; -
return MaterialApp( -
home: child, -
localizationsDelegates: [ -
GlobalMaterialLocalizations.delegate, -
GlobalWidgetsLocalizations.delegate, -
], -
supportedLocales: [ -
const Locale('zh', 'CH'), -
// const Locale('en', 'US'), -
], -
); -
复制代码
7. Rxdart 进行网络请求 例如:
-
ProgressDialog _progressDialog = ProgressDialog(context); -
ApiRepository.resetPassword(_phoneController.text, _codeController.text, -
_newPasswordContrpller.text) -
.doOnDone(() => _progressDialog.hide()) -
.doOnListen(() => _progressDialog.show()) -
.doOnError((error, stacktrace) { -
if (error is DioError) { -
showToast("加载失败,请检查网络连接"); -
} -
}).listen((baseResp) { -
if (baseResp != null && baseResp.isSuccess()) { -
showToast("重置成功"); -
Navigator.pop(context); -
} else { -
showToast(baseResp.msg); -
} -
}); -
复制代码
8. 集成image_pick不回调(Android端集成Flutter)
Android端添加回调代码
-
override fun onActivityResult(requestCode: Int, resultCode:Int, data: Intent?) { -
super.onActivityResult(requestCode, resultCode, data) -
flutterView?.pluginRegistry?.onActivityResult(requestCode, resultCode, data) -
} -
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { -
super.onRequestPermissionsResult(requestCode, permissions, grantResults) -
flutterView?.pluginRegistry?.onRequestPermissionsResult(requestCode, permissions, grantResults) -
} -
复制代码
9. Flutter 在iPhone输入框中长按复制粘贴弹窗报错的问题
有一种方法在iOS中显示Android的风格
-
Theme( -
data: ThemeData(platform: TargetPlatform.android), -
child: TextField( -
*****) -
) -
复制代码
还有一种方法实现iOS本来的风格 参考此文章
本文汇总了Flutter开发中常见的问题及解决办法,包括路由黑屏、软键盘布局冲突、ScrollView与ListView滚动问题、国际化设置、网络请求处理、权限回调、输入框长按报错等,为Flutter开发者提供实用的代码示例。
4757

被折叠的 条评论
为什么被折叠?



