使用Flutter Provider程序包的Selector小部件可重建不必要的小部件

时间:2019-09-18 15:20:41

标签: flutter flutter-provider

当我使用jQuery(document).ready(function () { openLoginPopup(); }) function openLoginPopup() { FB.getLoginStatus(function (response) { if (response.status == 'connected') { getCurrentUserInfo(response); } else { FB.login(function (response) { if (response.authResponse) { getCurrentUserInfo(response); } else { console.log('Auth cancelled.'); } }, {scope: 'email'}); } }); } function getCurrentUserInfo() { FB.api('/me?fields=id,email,first_name,last_name,name', function (userInfo) { console.log(userInfo.name + ': ' + userInfo.email); }); } window.fbAsyncInit = function () { FB.init({ // appId: 'xxxxxxxxxxxxxxxxxxxxx', //livemode appId: 'xxxxxxxxxxxx', //testmode cookie: true, // Enable cookies to allow the server to access the session. xfbml: true, // Parse social plugins on this webpage. version: 'v4.0' // Use this Graph API version for this call. }); }; (function (d, s, id) { // Load the SDK asynchronously var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); 更新ChangeNotifier类实例变量时,依赖于该类的所有Provider.of<T>(context, listen: true).value小部件都会重新构建(就像我使用Selector而不是{{ 1}}小部件)。如果我使用Consumer更新了一个实例变量,则Selector小部件和相关的Provider.of<T>(context, listen: false).value参数仅根据更改后的数据正确地更新了小部件

Selector

虽然我现在的代码可以工作,但就我对该参数的理解而言,使用selector:参数是违反直觉的。我想了解原因,这样我就可以总体上改善我的代码

0 个答案:

没有答案