由于各种原因,有时会build再次调用我的小部件的方法.
我知道这是因为父母更新了.但这会导致不良影响.导致问题的典型情况是使用FutureBuilder这种方式:
@override
Widget build(BuildContext context) {
  return FutureBuilder(
    future: httpCall(),
    builder: (context, snapshot) {
      // create some layout here
    },
  );
}
在此示例中,如果再次调用构建方法,则会触发另一个http请求.这是不受欢迎的.
考虑到这一点,如何处理不需要的构建?有什么方法可以阻止构建调用?
我注意到构建函数在无状态小部件中被调用了两次。
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")),
    );
  }
}
控制台结果
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): …flutter ×2