在我的应用程序中,我有一个搜索页面,当我单击搜索文本字段时,底部导航栏也会随键盘一起向上移动,它应该隐藏在键盘下方。因为当键盘显示时我可以导航到其他页面,这是不良行为。
代码:
class _AppHomeViewState extends State<AppHomeView>
with TickerProviderStateMixin {
TabController tabController;
@override
void initState() {
super.initState();
tabController = TabController(length: 4, vsync: this, initialIndex: 0);
tabController.addListener(handleTabSelection);
}
@override
Widget build(BuildContext context) {
final scaffold = Scaffold(
body: SafeArea(child: _buildBody(context)),
bottomNavigationBar: Container(
height: 48,
decoration: BoxDecoration(
color: StyledColors.BACKGROUND_COLOR,
boxShadow: [
BoxShadow(
color: StyledColors.FORGROUND_COLOR.withOpacity(0.16),
blurRadius: 12,
offset: Offset(0, 0),
),
],
),
child: SafeArea(
child: _buildTabBar(context),
),
),
);
}
Widget _buildBody(BuildContext context) {
return TabBarView(
physics: NeverScrollableScrollPhysics(),
controller: tabController,
children: <Widget>[
HomeView(), …Run Code Online (Sandbox Code Playgroud) 在我的 flutter 应用程序中,我实现了一个入门视图。因为它应该只加载一次,所以我使用共享首选项来存储一个整数来表示已经显示了入职。当我在调试模式下运行应用程序时,一切正常。但是当我构建它的发布版本时,它不起作用。
而且我的应用程序还使用了 firebase 移动身份验证。我之所以提到这一点,是因为这也可能是一个原因。
编码:
case InitializeEvent:
SharedPreferences prefs = await SharedPreferences.getInstance();
int initScreen = prefs.getInt(SharedPrefUtil.INIT_SCREEN);
await prefs.setInt(SharedPrefUtil.INIT_SCREEN, 1);
if (initScreen == 1) {
add(CheckAppConfigEvent());
} else {
yield state.clone(page: RootState.ONBOARDING_PAGE);
}
yield state.clone(loading: false);
break;
Run Code Online (Sandbox Code Playgroud)
因此,在上面的代码中,如果我注释初始化共享首选项,读取和写入行并在 if else 语句中设置 true 或 false,则在发布版本中一切正常。这就是为什么我认为问题在于初始化共享首选项。
而且我只允许互联网。我是否缺少 AndroidManifest.xml 中的任何权限
<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud) 看下面两个代码!
int main() {
int a = 12;
int *p;
*p = a;
}
Run Code Online (Sandbox Code Playgroud)
和这个代码,
int main() {
int a = 12;
int *p;
p = &a;
}
Run Code Online (Sandbox Code Playgroud)
在第一段代码中将指针解引用为 this *p = a,在第二段代码中,变量的地址a被设置为指针变量。
我的问题是这两段代码有什么区别?