相关疑难解决方法(0)

如何处理不需要的小部件构建?

由于各种原因,有时会build再次调用我的小部件的方法.

我知道这是因为父母更新了.但这会导致不良影响.导致问题的典型情况是使用FutureBuilder这种方式:

@override
Widget build(BuildContext context) {
  return FutureBuilder(
    future: httpCall(),
    builder: (context, snapshot) {
      // create some layout here
    },
  );
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,如果再次调用构建方法,则会触发另一个http请求.这是不受欢迎的.

考虑到这一点,如何处理不需要的构建?有什么方法可以阻止构建调用?

flutter

77
推荐指数
6
解决办法
1万
查看次数

为什么热启动时构建函数会被调用两次?

我注意到构建函数在无状态小部件中被调用了两次。

import 'package:flutter/material.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  MyApp() {
    print("constructor MyApp class");
  }

  @override
  Widget build(BuildContext context) {
    print("build MyApp");
    return MaterialApp(
      home: HomeWidget(),
    );
  }
}

class HomeWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(child: Text("home widget")),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

控制台结果

Performing hot restart...
Syncing files to device AOSP on IA Emulator...
Restarted application in 755ms.
I/flutter (14765): constructor MyApp class
I/flutter (14765): build MyApp
I/flutter (14765): …
Run Code Online (Sandbox Code Playgroud)

flutter

14
推荐指数
1
解决办法
5319
查看次数

标签 统计

flutter ×2