rrousselGit / state_notifier

ValueNotifier, but outside Flutter and with some extra perks
MIT License
311 stars 28 forks source link

Conflicts `Locator` import inside flutter_state_notifier in 0.6.0 #34

Closed Kurogoma4D closed 4 years ago

Kurogoma4D commented 4 years ago

Describe the bug When I try to use flutter_state_notifier v0.6.0 with provider v4.1.x, console outputs the following error.

Launching lib/main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...

Compiler message:
../../.pub-cache/hosted/pub.dartlang.org/flutter_state_notifier-0.6.0/lib/flutter_state_notifier.dart:8:1: Error: 'Locator' is imported from both 'package:state_notifier/state_notifier.dart' and 'package:provider/src/provider.dart'.
import 'package:provider/provider.dart';
^^^^^^^

To Reproduce

Very simple app that I tested

import 'package:flutter/material.dart';
import 'package:flutter_state_notifier/flutter_state_notifier.dart';
import 'package:provider/provider.dart';
import 'package:state_notifier/state_notifier.dart';

class Count {
  final int count;

  Count(this.count);
}

class CountController extends StateNotifier {
  CountController() : super(Count(0));

  void increment() {
    state = Count(state.count + 1);
  }
}

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        StateNotifierProvider(
          create: (context) => CountController(),
        )
      ],
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
          visualDensity: VisualDensity.adaptivePlatformDensity,
        ),
        home: const MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final count = context.select((Count c) => c.count);
    return Scaffold(
      appBar: AppBar(
        title: Text('SAMPLE'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$count',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => context.read().increment(),
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

pubspec.yaml


environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  state_notifier: ^0.6.0
  flutter_state_notifier: ^0.6.0
  provider: 4.1.0
rrousselGit commented 4 years ago
import 'package:provider/provider.dart' hide Locator;
Kurogoma4D commented 4 years ago

I tried, but still didn't work...

tbm98 commented 4 years ago

@Kurogoma4D v0.6.0 has compiler bug. downgrade or wait for new version publish :D

Kurogoma4D commented 4 years ago

@tbm98 OK, I just noticed that v0.6.0 and the master branch are different. I just make trial code, so I will use dependency override for now. Thanks !

rrousselGit commented 4 years ago

Eh, sorry I didn't realize there was such problem. It should be fixed