Чтобы добавить к ответу Реми, код будет выглядеть примерно так
import 'package:flutter/material.dart';
abstract class BlocBase {
void dispose();
}
class BlocProvider<T extends BlocBase> extends StatefulWidget {
BlocProvider({
Key key,
@required this.child,
@required this.bloc,
}): super(key: key);
final T bloc;
final Widget child;
@override
_BlocProviderState<T> createState() => _BlocProviderState<T>();
static T of<T extends BlocBase>(BuildContext context){
final type = _typeOf<BlocProvider<T>>();
BlocProvider<T> provider = context.ancestorWidgetOfExactType(type);
return provider.bloc;
}
static Type _typeOf<T>() => T;
}
class _BlocProviderState<T> extends State<BlocProvider<BlocBase>>{
@override
void dispose(){
widget.bloc.dispose();
super.dispose();
}
@override
Widget build(BuildContext context){
return widget.child;
}
}
class Bloc implements BlocBase {
final StreamController<bool> _changeColor = PublishSubject<bool>();
Function(bool) get changeColour => _changeColor.sink.add;
Stream<bool> get colour => _changeColor.stream;
@override
void dispose() {
_changeColor.close();
}
}
class _HomePageState extends State<HomePage> {
Bloc bloc;
var colour = false;
@override
void initState() {
super.initState();
bloc = BlocProvider.of<Bloc>(context);
}
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
RaisedButton(
onPressed: () {
if (colour) {
bloc.changeColour(false);
colour = false;
} else {
bloc.changeColour(true);
colour = true;
}
},
child: Text("Change colour"),
),
StreamBuilder(
builder: (context, snapshot) {
var bool = snapshot?.data ?? false;
return Text(
"First text",
style: TextStyle(color: bool ? Colors.red : Colors.green),
);
},
stream: bloc?.colour,
),
],
);
}
@override
void dispose() {
print("Bloc is disposed");
bloc.dispose();
super.dispose();
}
}
Хорошо... после обновления моей машины (Q9550@3.4ghz, 1 ТБ> 100mb/s ищет диск) я не вижу рядом ни с каким различием даже, в то время как наличие этого компьютера делает работы (SQL-сервер MS, IIS) по сравнению с той же страницей, размещенной в GoDaddy. При задавании моего inital вопроса я имел несколько меньшую машину и сравнил его с моими выделенными серверами фирм. Таким образом, anwer к вопросу в основном: они не. Спасибо за все Ваши ответы, хотя!
Если Вы используете FireFox или Safari, и Вы находитесь на Windows Vista затем, необходимо отключить версию 6 IP, так как это смешивает с Vista в сочетании с WebDev и FireFox/Safari...
В типе FF в about:config в строке поиска фильтр для "IPv6" и набора включил ко ЛЖИ!
Это - ошибка с IPv6 в Windows Vista и является очень вероятным кандидатом на Ваши проблемы...
Существует по крайней мере две причины этого:
Во-первых, Ваш локальный сервер, вероятно, выполняет страницы в режиме отладки с присоединенным отладчиком. Это заставляет все работать медленнее
Во-вторых, каждый раз Вы изменяете свой код страниц, или Вы перезапускаете свой сервер, все страницы должны быть перекомпилированы, и это занимает время.
На Вашем рабочем сервере страницы компилируются однажды, и затем скомпилированная версия подается всем пользователям, и Вы, вероятно, не работаете в режиме отладки (я надеюсь!).
Можно также проверить, пытается ли сайт получить доступ к недоступному содержанию (недоступные URL) от машины разработки. У меня была эта проблема пару раз прежде.
Нет никакой причины, что приложение не должно работать быстро локально в Вашей описанной установке - возможно, у Вас есть что-то еще продолжение.
Первая вещь посмотреть на была бы тем, что Вы работаете на своем dev поле: антивирусные или программные брандмауэры могут быть уничтожителем для этих вещей, и можно хотеть протестировать с отключенным.
Я удивлен, что никто еще не упомянул жесткие диски. Жесткий диск часто является типичным узким местом в системе, и настольные жесткие диски часто намного медленнее, чем сервер (SCSI) диски. Настольная рабочяя станция могла также иметь больше процессов, работающих, которые все используют диск одновременно, тогда как машины сервера более оптимизированы для выполнения критических серверных процессов только. Но конечно, все это зависит от того, что точно делает машина.
Вы на самом деле выполняете это через IIS7, или он действительно пробегает Сервер разработки ASP.NET Visual Studio? Если последний, хорошо..., который тут же является огромной причиной. Сервер разработки ASP.NET оптимизирован, чтобы отладить приложения, не выполнить их быстро.
Другая половина проблемы - то, что Вы на самом деле не сказали нам спецификации своей машине, только что "все в порядке аппаратные средства", не обычно метрика когда дело доходит до компьютера. Vista действительно сосет некоторые ресурсы, обоих с ее новым менеджером по оформлению (для Аэро Стеклянного рабочего стола) и ее тенденция предварительно загрузить обычно запускаемые приложения в RAM.
Это также кажется, что Вы могли бы выполнять сервер базы данных от своего рабочего стола также, который сосет вниз больше ресурсов, что машины сервера не будут, так как у них, скорее всего, был бы (a) отдельный сервер (серверы) баз данных.
Вы полагали, что это может быть из-за кэширования? т.е. страницы на рабочем сервере кэшируются, и страницы на localhost, не кэшируются.
Я также соглашаюсь с terjetyl, возможно, что Ваш localhost не может найти связанный файл (например, исходный файл JavaScript), Ваш брандмауэр мог блокировать их....
ЕСЛИ будут вещи, сохраненные на сервере, к которому должно получить доступ приложение, то это значительно замедлит вещи - да, я видел места, где был рабочий сервер, который разместил единственную систему баз данных, доступную целой компании, и для производства и для разработки.
Маленький миллион вещей находится в игре: более быстрая сеть; лучший сервер БД, работающий в течение долгого времени и имеющий все запросы, уже выполненные прежде;..., возможно, происходит из-за Vista :)